From: github-actions Date: Mon, 22 Jul 2024 01:31:54 +0000 (+0000) Subject: Publish autogenerated nightly docs X-Git-Url: http://internal-gitweb-vhost/script/%22https:/-sqlite-db-configuration/-sled-db-configuration/static/gitweb.js?a=commitdiff_plain;h=b44b40f10d83bde216061db547dfbcb5f8feac15;p=bitcoindevkit.org Publish autogenerated nightly docs --- diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html index 13bfbcc39d..b88c1a7015 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/changeset/struct.CombinedChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/changeset/struct.CombinedChangeSet.html deleted file mode 100644 index aadbf50160..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/changeset/struct.CombinedChangeSet.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

Redirecting to ../../bdk_chain/struct.CombinedChangeSet.html...

- - - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html index 37344d12c5..ca465e304e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html @@ -1,2 +1,2 @@ -COINBASE_MATURITY in bdk_chain - Rust

Constant bdk_chain::COINBASE_MATURITY

source ·
pub const COINBASE_MATURITY: u32 = 100;
Expand description

How many confirmations are needed f or a coinbase output to be spent.

+COINBASE_MATURITY in bdk_chain - Rust

Constant bdk_chain::COINBASE_MATURITY

source ·
pub const COINBASE_MATURITY: u32 = 100;
Expand description

How many confirmations are needed f or a coinbase output to be spent.

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html index d98cb78af3..14d2ddc55e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html @@ -1,4 +1,4 @@ -ChainPosition in bdk_chain - Rust

Enum bdk_chain::ChainPosition

source ·
pub enum ChainPosition<A> {
+ChainPosition in bdk_chain - Rust

Enum bdk_chain::ChainPosition

source ·
pub enum ChainPosition<A> {
     Confirmed(A),
     Unconfirmed(u64),
 }
Expand description

Represents the observed position of some chain data.

@@ -26,7 +26,9 @@ operator. UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: ?Sized,
source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html index 78896c8a7c..c35fedd281 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html @@ -1,4 +1,4 @@ -ConfirmationTime in bdk_chain - Rust

Enum bdk_chain::ConfirmationTime

source ·
pub enum ConfirmationTime {
+ConfirmationTime in bdk_chain - Rust

Enum bdk_chain::ConfirmationTime

source ·
pub enum ConfirmationTime {
     Confirmed {
         height: u32,
         time: u64,
@@ -28,7 +28,9 @@ operator. Serializer,
Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ConfirmationTime

source§

impl Eq for ConfirmationTime

source§

impl StructuralPartialEq for ConfirmationTime

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: ?Sized,
source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html index 39fd16bd2d..42ac2085ed 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html @@ -1,4 +1,4 @@ -bdk_chain - Rust

Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit.

+bdk_chain - Rust

Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit.

The goal of this crate is to give wallets the mechanisms needed to:

  1. Figure out what data they need to fetch.
  2. @@ -14,6 +14,6 @@ consistently.
  3. Data persistence agnostic – bdk_chain does not care where you cache on-chain data, what you cache or how you retrieve it from persistent storage.
-

Re-exports§

Modules§

Structs§

Enums§

Constants§

Traits§

  • Trait that “anchors” blockchain data to a specific block of height and hash.
  • An Anchor that can be constructed from a given block, block height and transaction position -within the block.
  • Represents a service that tracks the blockchain.
  • A trait to extend the functionality of a miniscript descriptor.
  • Trait that makes an object mergeable.

Type Aliases§

  • A tuple of keychain index and T representing the indexed value.
  • A tuple of keychain K, derivation index (u32) and a T associated with them.
\ No newline at end of file +

Re-exports§

Modules§

Structs§

  • Balance, differentiated into various categories.
  • A reference to a block in the canonical chain.
  • An Anchor implementation that also records the exact confirmation time of the transaction.
  • Represents the unique ID of a descriptor.
  • A TxOut with as much data as we can retrieve about it
  • A wrapper that we use to impl remote traits for types in our crate or dependency crates.
  • Represents a persisted T.
  • An iterator for derived script pubkeys.

Enums§

Constants§

Traits§

  • Trait that “anchors” blockchain data to a specific block of height and hash.
  • An Anchor that can be constructed from a given block, block height and transaction position +within the block.
  • Represents a service that tracks the blockchain.
  • A trait to extend the functionality of a miniscript descriptor.
  • Trait that makes an object mergeable.
  • Trait that persists the type with an async Db.
  • Trait that persists the type with Db.
  • Represents a type that contains staged changes.

Type Aliases§

  • A tuple of keychain index and T representing the indexed value.
  • A tuple of keychain K, derivation index (u32) and a T associated with them.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html index 80da581fd4..6cca9e5bcf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html @@ -1,3 +1,3 @@ -bdk_chain::indexed_tx_graph - Rust

Module bdk_chain::indexed_tx_graph

source ·
Expand description

Contains the IndexedTxGraph and associated types. Refer to the +bdk_chain::indexed_tx_graph - Rust

Module bdk_chain::indexed_tx_graph

source ·
Expand description

Contains the IndexedTxGraph and associated types. Refer to the IndexedTxGraph documentation for more.

Structs§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html index 13a6ca0926..6042b086a1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html @@ -1,18 +1,18 @@ -ChangeSet in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::ChangeSet

source ·
pub struct ChangeSet<A, IA> {
-    pub graph: ChangeSet<A>,
+ChangeSet in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::ChangeSet

source ·
pub struct ChangeSet<A, IA> {
+    pub tx_graph: ChangeSet<A>,
     pub indexer: IA,
 }
Expand description

Represents changes to an IndexedTxGraph.

-

Fields§

§graph: ChangeSet<A>

TxGraph changeset.

+

Fields§

§tx_graph: ChangeSet<A>

TxGraph changeset.

§indexer: IA

Indexer changeset.

-

Trait Implementations§

source§

impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>

source§

fn clone(&self) -> ChangeSet<A, IA>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<A, IA: Default> Default for ChangeSet<A, IA>

source§

fn default() -> Self

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

impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
where +

Trait Implementations§

source§

impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>

source§

fn clone(&self) -> ChangeSet<A, IA>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<A, IA: Default> Default for ChangeSet<A, IA>

source§

fn default() -> Self

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

impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
where A: Ord + Deserialize<'de>, - IA: Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

source§

fn from(graph: ChangeSet<A>) -> Self

Converts to this type from the input type.
source§

impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>

source§

fn from(indexed_tx_graph: ChangeSet<A, ChangeSet<K>>) -> Self

Converts to this type from the input type.
source§

impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>

source§

fn from(indexer: ChangeSet<K>) -> Self

Converts to this type from the input type.
source§

impl<A: Anchor, IA: Merge> Merge for ChangeSet<A, IA>

source§

fn merge(&mut self, other: Self)

Merge another object of the same type onto self.
source§

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
source§

fn take(&mut self) -> Option<Self>

Take the value, replacing it with the default value.
source§

impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>

source§

fn eq(&self, other: &ChangeSet<A, IA>) -> bool

This method tests for self and other values to be equal, and is used + IA: Deserialize<'de>,
source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

source§

fn from(graph: ChangeSet<A>) -> Self

Converts to this type from the input type.
source§

impl<A> From<ChangeSet> for ChangeSet<A, ChangeSet>

source§

fn from(indexer: ChangeSet) -> Self

Converts to this type from the input type.
source§

impl<A: Anchor, IA: Merge> Merge for ChangeSet<A, IA>

source§

fn merge(&mut self, other: Self)

Merge another object of the same type onto self.
source§

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
source§

fn take(&mut self) -> Option<Self>

Take the value, replacing it with the default value.
source§

impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>

source§

fn eq(&self, other: &ChangeSet<A, IA>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<A, IA> Serialize for ChangeSet<A, IA>
where +sufficient, and should not be overridden without very good reason.

source§

impl<A, IA> Serialize for ChangeSet<A, IA>
where A: Ord + Serialize, - IA: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>

Auto Trait Implementations§

§

impl<A, IA> Freeze for ChangeSet<A, IA>
where + IA: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>

Auto Trait Implementations§

§

impl<A, IA> Freeze for ChangeSet<A, IA>
where IA: Freeze,

§

impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>

§

impl<A, IA> Send for ChangeSet<A, IA>
where @@ -25,7 +25,7 @@ sufficient, and should not be overridden without very good reason.
RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: ?Sized,
source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html index 7f37c838d7..1879cabf58 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html @@ -1,41 +1,41 @@ -IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::IndexedTxGraph

source ·
pub struct IndexedTxGraph<A, I> {
+IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::IndexedTxGraph

source ·
pub struct IndexedTxGraph<A, I> {
     pub index: I,
     /* private fields */
 }
Expand description

The IndexedTxGraph combines a TxGraph and an Indexer implementation.

It ensures that TxGraph and Indexer are updated atomically.

Fields§

§index: I

Transaction index.

-

Implementations§

source§

impl<A, I> IndexedTxGraph<A, I>

source

pub fn new(index: I) -> Self

Construct a new IndexedTxGraph with a given index.

-
source

pub fn graph(&self) -> &TxGraph<A>

Get a reference of the internal transaction graph.

-
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>

source

pub fn apply_changeset(&mut self, changeset: ChangeSet<A, I::ChangeSet>)

Applies the ChangeSet to the IndexedTxGraph.

-
source

pub fn initial_changeset(&self) -> ChangeSet<A, I::ChangeSet>

Determines the ChangeSet between self and an empty IndexedTxGraph.

-
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>
where - I::ChangeSet: Default + Merge,

source

pub fn apply_update(&mut self, update: TxGraph<A>) -> ChangeSet<A, I::ChangeSet>

Apply an update directly.

+

Implementations§

source§

impl<A, I> IndexedTxGraph<A, I>

source

pub fn new(index: I) -> Self

Construct a new IndexedTxGraph with a given index.

+
source

pub fn graph(&self) -> &TxGraph<A>

Get a reference of the internal transaction graph.

+
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>

source

pub fn apply_changeset(&mut self, changeset: ChangeSet<A, I::ChangeSet>)

Applies the ChangeSet to the IndexedTxGraph.

+
source

pub fn initial_changeset(&self) -> ChangeSet<A, I::ChangeSet>

Determines the ChangeSet between self and an empty IndexedTxGraph.

+
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>
where + I::ChangeSet: Default + Merge,

source

pub fn apply_update(&mut self, update: TxGraph<A>) -> ChangeSet<A, I::ChangeSet>

Apply an update directly.

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

-
source

pub fn insert_txout( +

source

pub fn insert_txout( &mut self, outpoint: OutPoint, txout: TxOut ) -> ChangeSet<A, I::ChangeSet>

Insert a floating txout of given outpoint.

-
source

pub fn insert_tx(&mut self, tx: Transaction) -> ChangeSet<A, I::ChangeSet>

Insert and index a transaction into the graph.

-
source

pub fn insert_anchor( +

source

pub fn insert_tx(&mut self, tx: Transaction) -> ChangeSet<A, I::ChangeSet>

Insert and index a transaction into the graph.

+
source

pub fn insert_anchor( &mut self, txid: Txid, anchor: A ) -> ChangeSet<A, I::ChangeSet>

Insert an anchor for a given transaction.

-
source

pub fn insert_seen_at( +

source

pub fn insert_seen_at( &mut self, txid: Txid, seen_at: u64 ) -> ChangeSet<A, I::ChangeSet>

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

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

-
source

pub fn batch_insert_relevant<'t>( +

source

pub fn batch_insert_relevant<'t>( &mut self, txs: impl IntoIterator<Item = (&'t Transaction, impl IntoIterator<Item = A>)> ) -> ChangeSet<A, I::ChangeSet>

Batch insert transactions, filtering out those that are irrelevant.

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

-
source

pub fn batch_insert_relevant_unconfirmed<'t>( +

source

pub fn batch_insert_relevant_unconfirmed<'t>( &mut self, unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> ) -> ChangeSet<A, I::ChangeSet>

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

@@ -44,7 +44,7 @@ Irrelevant transactions in txs will be ignored.

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

-
source

pub fn batch_insert_unconfirmed( +

source

pub fn batch_insert_unconfirmed( &mut self, txs: impl IntoIterator<Item = (Transaction, u64)> ) -> ChangeSet<A, I::ChangeSet>

Batch insert unconfirmed transactions.

@@ -52,10 +52,10 @@ conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

To filter out irrelevant transactions, use batch_insert_relevant_unconfirmed instead.

-
source§

impl<A, I: Indexer> IndexedTxGraph<A, I>
where +

source§

impl<A, I: Indexer> IndexedTxGraph<A, I>

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

-
source

pub fn apply_block_relevant( &mut self, block: &Block, height: u32 @@ -65,7 +65,7 @@ irrelevant.

AnchorFromBlockPosition::from_block_position.

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

-

source

pub fn apply_block( +

source

pub fn apply_block( &mut self, block: Block, height: u32 @@ -73,7 +73,7 @@ Irrelevant transactions in txs will be ignored.

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

To only insert relevant transactions, use apply_block_relevant instead.

-

Trait Implementations§

source§

impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I>

source§

fn as_ref(&self) -> &TxGraph<A>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<A, I: Default> Default for IndexedTxGraph<A, I>

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<A, I> Freeze for IndexedTxGraph<A, I>
where +

Trait Implementations§

source§

impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I>

source§

fn as_ref(&self) -> &TxGraph<A>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<A, I: Default> Default for IndexedTxGraph<A, I>

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<A, I> Freeze for IndexedTxGraph<A, I>
where I: Freeze,

§

impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>

§

impl<A, I> Send for IndexedTxGraph<A, I>
where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/constant.DEFAULT_LOOKAHEAD.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/constant.DEFAULT_LOOKAHEAD.html index 98f41003aa..4035710618 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/constant.DEFAULT_LOOKAHEAD.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/constant.DEFAULT_LOOKAHEAD.html @@ -1,2 +1,2 @@ -DEFAULT_LOOKAHEAD in bdk_chain::indexer::keychain_txout - Rust

Constant bdk_chain::indexer::keychain_txout::DEFAULT_LOOKAHEAD

source ·
pub const DEFAULT_LOOKAHEAD: u32 = 25;
Expand description

The default lookahead for a KeychainTxOutIndex

+DEFAULT_LOOKAHEAD in bdk_chain::indexer::keychain_txout - Rust

Constant bdk_chain::indexer::keychain_txout::DEFAULT_LOOKAHEAD

source ·
pub const DEFAULT_LOOKAHEAD: u32 = 25;
Expand description

The default lookahead for a KeychainTxOutIndex

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/enum.InsertDescriptorError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/enum.InsertDescriptorError.html index c93205f046..c394ad3658 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/enum.InsertDescriptorError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/enum.InsertDescriptorError.html @@ -1,4 +1,4 @@ -InsertDescriptorError in bdk_chain::indexer::keychain_txout - Rust
pub enum InsertDescriptorError<K> {
+InsertDescriptorError in bdk_chain::indexer::keychain_txout - Rust
pub enum InsertDescriptorError<K> {
     DescriptorAlreadyAssigned {
         descriptor: Descriptor<DescriptorPublicKey>,
         existing_assignment: K,
@@ -14,9 +14,9 @@
 
§

KeychainAlreadyAssigned

The keychain is already assigned to a descriptor so you can’t reassign it

Fields

§keychain: K

The keychain that you have attempted to reassign

§existing_assignment: Descriptor<DescriptorPublicKey>

The descriptor that the keychain is already assigned to

-

Trait Implementations§

source§

impl<K: Clone> Clone for InsertDescriptorError<K>

source§

fn clone(&self) -> InsertDescriptorError<K>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K: Debug> Debug for InsertDescriptorError<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K: Debug> Display for InsertDescriptorError<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K: Debug> Error for InsertDescriptorError<K>

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

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

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl<K: PartialEq> PartialEq for InsertDescriptorError<K>

source§

fn eq(&self, other: &InsertDescriptorError<K>) -> bool

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

Trait Implementations§

source§

impl<K: Clone> Clone for InsertDescriptorError<K>

source§

fn clone(&self) -> InsertDescriptorError<K>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K: Debug> Debug for InsertDescriptorError<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K: Debug> Display for InsertDescriptorError<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K: Debug> Error for InsertDescriptorError<K>

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

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

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl<K: PartialEq> PartialEq for InsertDescriptorError<K>

source§

fn eq(&self, other: &InsertDescriptorError<K>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<K> StructuralPartialEq for InsertDescriptorError<K>

Auto Trait Implementations§

§

impl<K> !Freeze for InsertDescriptorError<K>

§

impl<K> RefUnwindSafe for InsertDescriptorError<K>
where +sufficient, and should not be overridden without very good reason.

source§

impl<K> StructuralPartialEq for InsertDescriptorError<K>

Auto Trait Implementations§

§

impl<K> !Freeze for InsertDescriptorError<K>

§

impl<K> RefUnwindSafe for InsertDescriptorError<K>
where K: RefUnwindSafe,

§

impl<K> Send for InsertDescriptorError<K>
where K: Send,

§

impl<K> Sync for InsertDescriptorError<K>
where K: Sync,

§

impl<K> Unpin for InsertDescriptorError<K>
where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/index.html index 53b326362f..d37bd56531 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/index.html @@ -1,5 +1,5 @@ -bdk_chain::indexer::keychain_txout - Rust

Module bdk_chain::indexer::keychain_txout

source ·
Expand description

KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains and +bdk_chain::indexer::keychain_txout - Rust

Module bdk_chain::indexer::keychain_txout

source ·
Expand description

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

Structs§

Enums§

Constants§

\ No newline at end of file +indexes [TxOut]s with them.

Enums§

Constants§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/sidebar-items.js index 790dbe68f6..164d889f57 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["DEFAULT_LOOKAHEAD"],"enum":["InsertDescriptorError"],"struct":["ChangeSet","KeychainTxOutIndex","NoSuchKeychain"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DEFAULT_LOOKAHEAD"],"enum":["InsertDescriptorError"],"struct":["ChangeSet","KeychainTxOutIndex"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.ChangeSet.html index 9ce98ef857..eea04adfc9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.ChangeSet.html @@ -1,5 +1,4 @@ -ChangeSet in bdk_chain::indexer::keychain_txout - Rust

Struct bdk_chain::indexer::keychain_txout::ChangeSet

source ·
pub struct ChangeSet<K> {
-    pub keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
+ChangeSet in bdk_chain::indexer::keychain_txout - Rust

Struct bdk_chain::indexer::keychain_txout::ChangeSet

source ·
pub struct ChangeSet {
     pub last_revealed: BTreeMap<DescriptorId, u32>,
 }
Expand description

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

@@ -7,26 +6,22 @@ It maps each keychain K to a descriptor and its last revealed index

The last_revealed field is monotone in that merge will never decrease it. keychains_added is not monotone, once it is set any attempt to change it is subject to the same one-to-one keychain <-> descriptor mapping invariant as KeychainTxOutIndex itself.

-

Fields§

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

Contains the keychains that have been added and their respective descriptor

-
§last_revealed: BTreeMap<DescriptorId, u32>

Contains for each descriptor_id the last revealed index of derivation

-

Trait Implementations§

source§

impl<K: Clone> Clone for ChangeSet<K>

source§

fn clone(&self) -> ChangeSet<K>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K: Debug> Debug for ChangeSet<K>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<K> Default for ChangeSet<K>

source§

fn default() -> Self

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

impl<'de, K> Deserialize<'de> for ChangeSet<K>
where - K: Ord + Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>

source§

fn from(indexer: ChangeSet<K>) -> Self

Converts to this type from the input type.
source§

impl<K, A> From<ChangeSet<K>> for CombinedChangeSet<K, A>

source§

fn from(indexer: ChangeSet<K>) -> Self

Converts to this type from the input type.
source§

impl<K: Ord> Merge for ChangeSet<K>

source§

fn merge(&mut self, other: Self)

Merge another ChangeSet<K> into self.

-

For the keychains_added field this method respects the invariants of -insert_descriptor. last_revealed always becomes the larger of the two.

-
source§

fn is_empty(&self) -> bool

Returns whether the changeset are empty.

-
source§

fn take(&mut self) -> Option<Self>

Take the value, replacing it with the default value.
source§

impl<K: PartialEq> PartialEq for ChangeSet<K>

source§

fn eq(&self, other: &ChangeSet<K>) -> bool

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

Fields§

§last_revealed: BTreeMap<DescriptorId, u32>

Contains for each descriptor_id the last revealed index of derivation

+

Implementations§

source§

impl ChangeSet

source

pub const SCHEMA_NAME: &'static str = "bdk_keychaintxout"

Schema name for the changeset.

+
source

pub const LAST_REVEALED_TABLE_NAME: &'static str = "bdk_descriptor_last_revealed"

Name for table that stores last revealed indices per descriptor id.

+
source

pub fn from_sqlite(db_tx: &Transaction<'_>) -> Result<Self>

Construct KeychainTxOutIndex from sqlite database +and given parameters.

+
source

pub fn persist_to_sqlite(&self, db_tx: &Transaction<'_>) -> Result<()>

Persist changeset to the sqlite database.

+

Trait Implementations§

source§

impl Clone for ChangeSet

source§

fn clone(&self) -> ChangeSet

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ChangeSet

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ChangeSet

source§

fn default() -> ChangeSet

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

impl<'de> Deserialize<'de> for ChangeSet

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A> From<ChangeSet> for ChangeSet<A, ChangeSet>

source§

fn from(indexer: ChangeSet) -> Self

Converts to this type from the input type.
source§

impl Merge for ChangeSet

source§

fn merge(&mut self, other: Self)

Merge another ChangeSet into self.

+
source§

fn is_empty(&self) -> bool

Returns whether the changeset are empty.

+
source§

fn take(&mut self) -> Option<Self>

Take the value, replacing it with the default value.
source§

impl PartialEq for ChangeSet

source§

fn eq(&self, other: &ChangeSet) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<K> Serialize for ChangeSet<K>
where - K: Ord + Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<K> StructuralPartialEq for ChangeSet<K>

Auto Trait Implementations§

§

impl<K> Freeze for ChangeSet<K>

§

impl<K> RefUnwindSafe for ChangeSet<K>
where - K: RefUnwindSafe,

§

impl<K> Send for ChangeSet<K>
where - K: Send,

§

impl<K> Sync for ChangeSet<K>
where - K: Sync,

§

impl<K> Unpin for ChangeSet<K>

§

impl<K> UnwindSafe for ChangeSet<K>
where - K: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where +sufficient, and should not be overridden without very good reason.

source§

impl Serialize for ChangeSet

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for ChangeSet

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.KeychainTxOutIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.KeychainTxOutIndex.html index 88140c0e17..a3f51c369b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.KeychainTxOutIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.KeychainTxOutIndex.html @@ -1,4 +1,4 @@ -KeychainTxOutIndex in bdk_chain::indexer::keychain_txout - Rust

Struct bdk_chain::indexer::keychain_txout::KeychainTxOutIndex

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

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

Struct bdk_chain::indexer::keychain_txout::KeychainTxOutIndex

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

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

A single keychain is a chain of script pubkeys derived from a single Descriptor. Keychains are identified using the K generic. Script pubkeys are identified by the keychain that they @@ -56,7 +56,7 @@ these changes. This should be persisted for future recovery.

let _ = txout_index.insert_descriptor(MyKeychain::MyAppUser { user_id: 42 }, descriptor_42)?; let new_spk_for_user = txout_index.reveal_next_spk(&MyKeychain::MyAppUser{ user_id: 42 });
-

Implementations§

source§

impl<K> KeychainTxOutIndex<K>

source

pub fn new(lookahead: u32) -> Self

Construct a KeychainTxOutIndex with the given lookahead.

+

Implementations§

source§

impl<K> KeychainTxOutIndex<K>

source

pub fn new(lookahead: u32) -> Self

Construct a KeychainTxOutIndex with the given lookahead.

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

Refer to struct-level docs for more about lookahead.

-
source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

Methods that are re-exposed from the internal SpkTxOutIndex.

-
source

pub fn inner(&self) -> &SpkTxOutIndex<(K, u32)>

Return a reference to the internal SpkTxOutIndex.

+
source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

Methods that are re-exposed from the internal SpkTxOutIndex.

+
source

pub fn inner(&self) -> &SpkTxOutIndex<(K, u32)>

Return a reference to the internal SpkTxOutIndex.

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

-
source

pub fn outpoints(&self) -> &BTreeSet<KeychainIndexed<K, OutPoint>>

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

-
source

pub fn txouts( +

source

pub fn outpoints(&self) -> &BTreeSet<KeychainIndexed<K, OutPoint>>

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

+
source

pub fn txouts( &self ) -> impl DoubleEndedIterator<Item = KeychainIndexed<K, (OutPoint, &TxOut)>> + ExactSizeIterator

Iterate over known txouts that spend to tracked script pubkeys.

-
source

pub fn txouts_in_tx( +

source

pub fn txouts_in_tx( &self, txid: Txid ) -> impl DoubleEndedIterator<Item = KeychainIndexed<K, (OutPoint, &TxOut)>>

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

-
source

pub fn txout(&self, outpoint: OutPoint) -> Option<KeychainIndexed<K, &TxOut>>

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

source

pub fn txout(&self, outpoint: OutPoint) -> Option<KeychainIndexed<K, &TxOut>>

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

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

This calls SpkTxOutIndex::txout internally.

-
source

pub fn spk_at_index(&self, keychain: K, index: u32) -> Option<&Script>

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

+
source

pub fn spk_at_index(&self, keychain: K, index: u32) -> Option<&Script>

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

This calls SpkTxOutIndex::spk_at_index internally.

-
source

pub fn index_of_spk(&self, script: &Script) -> Option<&(K, u32)>

Returns the keychain and keychain index associated with the spk.

+
source

pub fn index_of_spk(&self, script: &Script) -> Option<&(K, u32)>

Returns the keychain and keychain index associated with the spk.

This calls SpkTxOutIndex::index_of_spk internally.

-
source

pub fn is_used(&self, keychain: K, index: u32) -> bool

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

+
source

pub fn is_used(&self, keychain: K, index: u32) -> bool

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

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

This calls SpkTxOutIndex::is_used internally.

-
source

pub fn mark_used(&mut self, keychain: K, index: u32) -> bool

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

source

pub fn mark_used(&mut self, keychain: K, index: u32) -> bool

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

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

Returns whether the spk under the given keychain and index is successfully @@ -98,12 +98,12 @@ keychain, or when the spk is already marked as used.

the transaction output using it to the index yet. Other callers will consider index on keychain used until you call unmark_used.

This calls SpkTxOutIndex::mark_used internally.

-
source

pub fn unmark_used(&mut self, keychain: K, index: u32) -> bool

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

source

pub fn unmark_used(&mut self, keychain: K, index: u32) -> bool

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

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

This calls SpkTxOutIndex::unmark_used internally.

-
source

pub fn sent_and_received( +

source

pub fn sent_and_received( &self, tx: &Transaction, range: impl RangeBounds<K> @@ -112,7 +112,7 @@ keychains in range. Value is sent when a script pubkey in received when it is on an output. For sent to be computed correctly, the output being spent must have already been scanned by the index. Calculating received just uses the [Transaction] outputs directly, so it will be correct even if it has not been scanned.

-

source

pub fn net_value( +

source

pub fn net_value( &self, tx: &Transaction, range: impl RangeBounds<K> @@ -120,61 +120,61 @@ spent must have already been scanned by the index. Calculating received just use takes from the transaction outputs in the index. Shorthand for calling sent_and_received and subtracting sent from received.

This calls SpkTxOutIndex::net_value internally.

-

source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

source

pub fn keychains( +

source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

source

pub fn keychains( &self ) -> impl DoubleEndedIterator<Item = (&K, &Descriptor<DescriptorPublicKey>)> + ExactSizeIterator + '_

Return all keychains and their corresponding descriptors.

-
source

pub fn insert_descriptor( +

source

pub fn insert_descriptor( &mut self, keychain: K, descriptor: Descriptor<DescriptorPublicKey> -) -> Result<ChangeSet<K>, InsertDescriptorError<K>>

Insert a descriptor with a keychain associated to it.

+) -> Result<bool, InsertDescriptorError<K>>

Insert a descriptor with a keychain associated to it.

Adding a descriptor means you will be able to derive new script pubkeys under it and the txout index will discover transaction outputs with those script pubkeys (once they’ve been derived and added to the index).

keychain <-> descriptor is a one-to-one mapping that cannot be changed. Attempting to do so will return a InsertDescriptorError<K>.

-

[KeychainTxOutIndex] will prevent you from inserting two descriptors which derive the same +

KeychainTxOutIndex will prevent you from inserting two descriptors which derive the same script pubkey at index 0, but it’s up to you to ensure that descriptors don’t collide at other indices. If they do nothing catastrophic happens at the KeychainTxOutIndex level (one keychain just becomes the defacto owner of that spk arbitrarily) but this may have subtle implications up the application stack like one UTXO being missing from one keychain because it has been assigned to another which produces the same script pubkey.

-
source

pub fn get_descriptor( +

source

pub fn get_descriptor( &self, keychain: &K ) -> Option<&Descriptor<DescriptorPublicKey>>

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

-
source

pub fn lookahead(&self) -> u32

Get the lookahead setting.

+
source

pub fn lookahead(&self) -> u32

Get the lookahead setting.

Refer to new for more information on the lookahead.

-
source

pub fn lookahead_to_target(&mut self, keychain: &K, target_index: u32)

Store lookahead scripts until target_index (inclusive).

+
source

pub fn lookahead_to_target(&mut self, keychain: &K, target_index: u32)

Store lookahead scripts until target_index (inclusive).

This does not change the global lookahead setting.

-
source

pub fn unbounded_spk_iter( +

source

pub fn unbounded_spk_iter( &self, keychain: &K ) -> Option<SpkIterator<Descriptor<DescriptorPublicKey>>>

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

-
source

pub fn all_unbounded_spk_iters( +

source

pub fn all_unbounded_spk_iters( &self ) -> BTreeMap<K, SpkIterator<Descriptor<DescriptorPublicKey>>>

Get unbounded spk iterators for all keychains.

-
source

pub fn revealed_spks( +

source

pub fn revealed_spks( &self, range: impl RangeBounds<K> ) -> impl Iterator<Item = KeychainIndexed<K, &Script>>

Iterate over revealed spks of keychains in range

-
source

pub fn revealed_keychain_spks<'a>( +

source

pub fn revealed_keychain_spks<'a>( &'a self, keychain: &'a K ) -> impl DoubleEndedIterator<Item = Indexed<&Script>> + 'a

Iterate over revealed spks of the given keychain with ascending indices.

This is a double ended iterator so you can easily reverse it to get an iterator where the script pubkeys that were most recently revealed are first.

-
source

pub fn unused_spks( +

source

pub fn unused_spks( &self ) -> impl DoubleEndedIterator<Item = KeychainIndexed<K, &Script>> + Clone

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

-
source

pub fn unused_keychain_spks( +

source

pub fn unused_keychain_spks( &self, keychain: &K ) -> impl DoubleEndedIterator<Item = Indexed<&Script>> + Clone

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

-
source

pub fn next_index(&self, keychain: &K) -> Option<(u32, bool)>

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

source

pub fn next_index(&self, keychain: &K) -> Option<(u32, bool)>

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

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

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

Not checking the second field of the tuple may result in address reuse.

Returns None if the provided keychain doesn’t exist.

-
source

pub fn last_revealed_indices(&self) -> BTreeMap<K, u32>

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

+
source

pub fn last_revealed_indices(&self) -> BTreeMap<K, u32>

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

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

-
source

pub fn last_revealed_index(&self, keychain: &K) -> Option<u32>

Get the last derivation index revealed for keychain. Returns None if the keychain doesn’t +

source

pub fn last_revealed_index(&self, keychain: &K) -> Option<u32>

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

-
source

pub fn reveal_to_target_multi( +

source

pub fn reveal_to_target_multi( &mut self, keychains: &BTreeMap<K, u32> -) -> ChangeSet<K>

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

-
source

pub fn reveal_to_target( +) -> ChangeSet

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

+
source

pub fn reveal_to_target( &mut self, keychain: &K, target_index: u32 -) -> Option<(Vec<Indexed<ScriptBuf>>, ChangeSet<K>)>

Reveals script pubkeys of the keychain’s descriptor up to and including the +) -> Option<(Vec<Indexed<ScriptBuf>>, ChangeSet)>

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

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

ChangeSet, which reports updates to the latest revealed index. If no new script pubkeys are revealed, then both of these will be empty.

Returns None if the provided keychain doesn’t exist.

-
source

pub fn reveal_next_spk( +

source

pub fn reveal_next_spk( &mut self, keychain: &K -) -> Option<(Indexed<ScriptBuf>, ChangeSet<K>)>

Attempts to reveal the next script pubkey for keychain.

+) -> Option<(Indexed<ScriptBuf>, ChangeSet)>

Attempts to reveal the next script pubkey for keychain.

Returns the derivation index of the revealed script pubkey, the revealed script pubkey and a ChangeSet which represents changes in the last revealed index (if any). Returns None if the provided keychain doesn’t exist.

@@ -219,10 +219,10 @@ Returns None if the provided keychain doesn’t exist.

  • The descriptor has already revealed scripts up to the numeric bound.
  • There is no descriptor associated with the given keychain.
  • -
    source

    pub fn next_unused_spk( +

    source

    pub fn next_unused_spk( &mut self, keychain: &K -) -> Option<(Indexed<ScriptBuf>, ChangeSet<K>)>

    Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest +) -> Option<(Indexed<ScriptBuf>, ChangeSet)>

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

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

    If the descriptor has no wildcard and already has a used script pubkey or if a descriptor @@ -230,24 +230,21 @@ has used all scripts up to the derivation bounds, then the last derived script p returned.

    Returns None if there are no script pubkeys that have been used and no new script pubkey could be revealed (see reveal_next_spk for when this happens).

    -
    source

    pub fn keychain_outpoints<'a>( +

    source

    pub fn keychain_outpoints<'a>( &'a self, keychain: &'a K ) -> impl DoubleEndedIterator<Item = Indexed<OutPoint>> + 'a

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

    -
    source

    pub fn keychain_outpoints_in_range<'a>( +

    source

    pub fn keychain_outpoints_in_range<'a>( &'a self, range: impl RangeBounds<K> + 'a ) -> impl DoubleEndedIterator<Item = KeychainIndexed<K, OutPoint>> + 'a

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

    -
    source

    pub fn last_used_index(&self, keychain: &K) -> Option<u32>

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

    source

    pub fn last_used_index(&self, keychain: &K) -> Option<u32>

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

    -
    source

    pub fn last_used_indices(&self) -> BTreeMap<K, u32>

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

    source

    pub fn last_used_indices(&self) -> BTreeMap<K, u32>

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

    -
    source

    pub fn apply_changeset(&mut self, changeset: ChangeSet<K>)

    Applies the ChangeSet<K> to the KeychainTxOutIndex<K>

    -

    Keychains added by the keychains_added field of ChangeSet<K> respect the one-to-one -keychain <-> descriptor invariant by silently ignoring attempts to violate it (but will -panic if debug_assertions are enabled).

    -

    Trait Implementations§

    source§

    impl<K: Clone> Clone for KeychainTxOutIndex<K>

    source§

    fn clone(&self) -> KeychainTxOutIndex<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug> Debug for KeychainTxOutIndex<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K> Default for KeychainTxOutIndex<K>

    source§

    fn default() -> Self

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

    impl<K: Clone + Ord + Debug> Indexer for KeychainTxOutIndex<K>

    §

    type ChangeSet = ChangeSet<K>

    The resultant “changeset” when new transaction data is indexed.
    source§

    fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet

    Scan and index the given outpoint and txout.
    source§

    fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet

    Scans a transaction for relevant outpoints, which are stored and indexed internally.
    source§

    fn initial_changeset(&self) -> Self::ChangeSet

    Determines the ChangeSet between self and an empty Indexer.
    source§

    fn apply_changeset(&mut self, changeset: Self::ChangeSet)

    Apply changeset to itself.
    source§

    fn is_tx_relevant(&self, tx: &Transaction) -> bool

    Determines whether the transaction should be included in the index.

    Auto Trait Implementations§

    §

    impl<K> Freeze for KeychainTxOutIndex<K>

    §

    impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
    where +
    source

    pub fn apply_changeset(&mut self, changeset: ChangeSet)

    Applies the ChangeSet<K> to the KeychainTxOutIndex<K>

    +

    Trait Implementations§

    source§

    impl<K: Clone> Clone for KeychainTxOutIndex<K>

    source§

    fn clone(&self) -> KeychainTxOutIndex<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug> Debug for KeychainTxOutIndex<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K> Default for KeychainTxOutIndex<K>

    source§

    fn default() -> Self

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

    impl<K: Clone + Ord + Debug> Indexer for KeychainTxOutIndex<K>

    §

    type ChangeSet = ChangeSet

    The resultant “changeset” when new transaction data is indexed.
    source§

    fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet

    Scan and index the given outpoint and txout.
    source§

    fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet

    Scans a transaction for relevant outpoints, which are stored and indexed internally.
    source§

    fn initial_changeset(&self) -> Self::ChangeSet

    Determines the ChangeSet between self and an empty Indexer.
    source§

    fn apply_changeset(&mut self, changeset: Self::ChangeSet)

    Apply changeset to itself.
    source§

    fn is_tx_relevant(&self, tx: &Transaction) -> bool

    Determines whether the transaction should be included in the index.

    Auto Trait Implementations§

    §

    impl<K> Freeze for KeychainTxOutIndex<K>

    §

    impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
    where K: RefUnwindSafe,

    §

    impl<K> Send for KeychainTxOutIndex<K>
    where K: Send,

    §

    impl<K> Sync for KeychainTxOutIndex<K>
    where K: Sync,

    §

    impl<K> Unpin for KeychainTxOutIndex<K>
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.NoSuchKeychain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.NoSuchKeychain.html deleted file mode 100644 index 681e3fa149..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/keychain_txout/struct.NoSuchKeychain.html +++ /dev/null @@ -1,23 +0,0 @@ -NoSuchKeychain in bdk_chain::indexer::keychain_txout - Rust

    Struct bdk_chain::indexer::keychain_txout::NoSuchKeychain

    source ·
    pub struct NoSuchKeychain<K>(/* private fields */);
    Expand description

    The keychain doesn’t exist. Most likley hasn’t been inserted with KeychainTxOutIndex::insert_descriptor.

    -

    Trait Implementations§

    source§

    impl<K: Clone> Clone for NoSuchKeychain<K>

    source§

    fn clone(&self) -> NoSuchKeychain<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug> Debug for NoSuchKeychain<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: Debug> Display for NoSuchKeychain<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: PartialEq> PartialEq for NoSuchKeychain<K>

    source§

    fn eq(&self, other: &NoSuchKeychain<K>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<K: Eq> Eq for NoSuchKeychain<K>

    source§

    impl<K> StructuralPartialEq for NoSuchKeychain<K>

    Auto Trait Implementations§

    §

    impl<K> Freeze for NoSuchKeychain<K>
    where - K: Freeze,

    §

    impl<K> RefUnwindSafe for NoSuchKeychain<K>
    where - K: RefUnwindSafe,

    §

    impl<K> Send for NoSuchKeychain<K>
    where - K: Send,

    §

    impl<K> Sync for NoSuchKeychain<K>
    where - K: Sync,

    §

    impl<K> Unpin for NoSuchKeychain<K>
    where - K: Unpin,

    §

    impl<K> UnwindSafe for NoSuchKeychain<K>
    where - K: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/trait.Indexer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/trait.Indexer.html index 3a70aa26bf..6b19c1b47a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/trait.Indexer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexer/trait.Indexer.html @@ -20,4 +20,4 @@ This trait’s methods should rarely be called directly.

    source

    fn apply_changeset(&mut self, changeset: Self::ChangeSet)

    Apply changeset to itself.

    source

    fn initial_changeset(&self) -> Self::ChangeSet

    Determines the ChangeSet between self and an empty Indexer.

    source

    fn is_tx_relevant(&self, tx: &Transaction) -> bool

    Determines whether the transaction should be included in the index.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html index 59d8188ddf..e5188747cc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html @@ -1,12 +1,12 @@ -ApplyHeaderError in bdk_chain::local_chain - Rust

    Enum bdk_chain::local_chain::ApplyHeaderError

    source ·
    pub enum ApplyHeaderError {
    +ApplyHeaderError in bdk_chain::local_chain - Rust

    Enum bdk_chain::local_chain::ApplyHeaderError

    source ·
    pub enum ApplyHeaderError {
         InconsistentBlocks,
         CannotConnect(CannotConnectError),
     }
    Expand description

    Variants§

    §

    InconsistentBlocks

    Occurs when connected_to block conflicts with either the current block or previous block.

    §

    CannotConnect(CannotConnectError)

    Occurs when the update cannot connect with the original chain.

    -

    Trait Implementations§

    source§

    impl Clone for ApplyHeaderError

    source§

    fn clone(&self) -> ApplyHeaderError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ApplyHeaderError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ApplyHeaderError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ApplyHeaderError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for ApplyHeaderError

    source§

    fn eq(&self, other: &ApplyHeaderError) -> bool

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

    Trait Implementations§

    source§

    impl Clone for ApplyHeaderError

    source§

    fn clone(&self) -> ApplyHeaderError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ApplyHeaderError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ApplyHeaderError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ApplyHeaderError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for ApplyHeaderError

    source§

    fn eq(&self, other: &ApplyHeaderError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for ApplyHeaderError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for ApplyHeaderError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html index ef465110f2..8cc6fa517b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html @@ -1,3 +1,3 @@ -bdk_chain::local_chain - Rust

    Module bdk_chain::local_chain

    source ·
    Expand description

    The LocalChain is a local implementation of ChainOracle.

    -

    Structs§

    Enums§

    Type Aliases§

    \ No newline at end of file +bdk_chain::local_chain - Rust

    Module bdk_chain::local_chain

    source ·
    Expand description

    The LocalChain is a local implementation of ChainOracle.

    +

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js index b5fa19087b..d59c2dbddc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["ApplyHeaderError"],"struct":["AlterCheckPointError","CannotConnectError","CheckPoint","CheckPointIter","LocalChain","MissingGenesisError"],"type":["ChangeSet"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["ApplyHeaderError"],"struct":["AlterCheckPointError","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","LocalChain","MissingGenesisError"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html index 09578b5ece..b7e10451a1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html @@ -1,4 +1,4 @@ -AlterCheckPointError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::AlterCheckPointError

    source ·
    pub struct AlterCheckPointError {
    +AlterCheckPointError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::AlterCheckPointError

    source ·
    pub struct AlterCheckPointError {
         pub height: u32,
         pub original_hash: BlockHash,
         pub update_hash: Option<BlockHash>,
    @@ -6,9 +6,9 @@
     

    Fields§

    §height: u32

    The checkpoint’s height.

    §original_hash: BlockHash

    The original checkpoint’s block hash which cannot be replaced/removed.

    §update_hash: Option<BlockHash>

    The attempted update to the original_block hash.

    -

    Trait Implementations§

    source§

    impl Clone for AlterCheckPointError

    source§

    fn clone(&self) -> AlterCheckPointError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AlterCheckPointError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AlterCheckPointError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AlterCheckPointError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for AlterCheckPointError

    source§

    fn eq(&self, other: &AlterCheckPointError) -> bool

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

    Trait Implementations§

    source§

    impl Clone for AlterCheckPointError

    source§

    fn clone(&self) -> AlterCheckPointError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AlterCheckPointError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AlterCheckPointError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AlterCheckPointError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for AlterCheckPointError

    source§

    fn eq(&self, other: &AlterCheckPointError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for AlterCheckPointError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for AlterCheckPointError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html index 05581e8410..e722eb347a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html @@ -1,10 +1,10 @@ -CannotConnectError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CannotConnectError

    source ·
    pub struct CannotConnectError {
    +CannotConnectError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CannotConnectError

    source ·
    pub struct CannotConnectError {
         pub try_include_height: u32,
     }
    Expand description

    Occurs when an update does not have a common checkpoint with the original chain.

    Fields§

    §try_include_height: u32

    The suggested checkpoint to include to connect the two chains.

    -

    Trait Implementations§

    source§

    impl Clone for CannotConnectError

    source§

    fn clone(&self) -> CannotConnectError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CannotConnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CannotConnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CannotConnectError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for CannotConnectError

    source§

    fn eq(&self, other: &CannotConnectError) -> bool

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

    Trait Implementations§

    source§

    impl Clone for CannotConnectError

    source§

    fn clone(&self) -> CannotConnectError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CannotConnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CannotConnectError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CannotConnectError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for CannotConnectError

    source§

    fn eq(&self, other: &CannotConnectError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for CannotConnectError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for CannotConnectError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.ChangeSet.html new file mode 100644 index 0000000000..4ef78651d4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.ChangeSet.html @@ -0,0 +1,28 @@ +ChangeSet in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::ChangeSet

    source ·
    pub struct ChangeSet {
    +    pub blocks: BTreeMap<u32, Option<BlockHash>>,
    +}
    Expand description

    The ChangeSet represents changes to LocalChain.

    +

    Fields§

    §blocks: BTreeMap<u32, Option<BlockHash>>

    Changes to the LocalChain blocks.

    +

    The key represents the block height, and the value either represents added a new CheckPoint +(if Some), or removing a CheckPoint (if None).

    +

    Implementations§

    source§

    impl ChangeSet

    source

    pub const SCHEMA_NAME: &'static str = "bdk_localchain"

    Schema name for the changeset.

    +
    source

    pub const BLOCKS_TABLE_NAME: &'static str = "bdk_blocks"

    Name of sqlite table that stores blocks of LocalChain.

    +
    source

    pub fn from_sqlite(db_tx: &Transaction<'_>) -> Result<Self>

    Construct a LocalChain from sqlite database.

    +
    source

    pub fn persist_to_sqlite(&self, db_tx: &Transaction<'_>) -> Result<()>

    Persist changeset to the sqlite database.

    +

    Trait Implementations§

    source§

    impl Clone for ChangeSet

    source§

    fn clone(&self) -> ChangeSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ChangeSet

    source§

    fn default() -> ChangeSet

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

    impl<'de> Deserialize<'de> for ChangeSet

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<B: IntoIterator<Item = (u32, Option<BlockHash>)>> From<B> for ChangeSet

    source§

    fn from(blocks: B) -> Self

    Converts to this type from the input type.
    source§

    impl FromIterator<(u32, BlockHash)> for ChangeSet

    source§

    fn from_iter<T: IntoIterator<Item = (u32, BlockHash)>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl FromIterator<(u32, Option<BlockHash>)> for ChangeSet

    source§

    fn from_iter<T: IntoIterator<Item = (u32, Option<BlockHash>)>>(iter: T) -> Self

    Creates a value from an iterator. Read more
    source§

    impl Merge for ChangeSet

    source§

    fn merge(&mut self, other: Self)

    Merge another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    source§

    impl PartialEq for ChangeSet

    source§

    fn eq(&self, other: &ChangeSet) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for ChangeSet

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl StructuralPartialEq for ChangeSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html index 2e96677d43..86fa63ea70 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html @@ -1,11 +1,11 @@ -CheckPoint in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CheckPoint

    source ·
    pub struct CheckPoint(/* private fields */);
    Expand description

    A LocalChain checkpoint is used to find the agreement point between two chains and as a +CheckPoint in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CheckPoint

    source ·
    pub struct CheckPoint(/* private fields */);
    Expand description

    A LocalChain checkpoint is used to find the agreement point between two chains and as a transaction anchor.

    Each checkpoint contains the height and hash of a block (BlockId).

    Internally, checkpoints are nodes of a reference-counted linked-list. This allows the caller to cheaply clone a CheckPoint without copying the whole list and to view the entire chain without holding a lock on LocalChain.

    -

    Implementations§

    source§

    impl CheckPoint

    source

    pub fn new(block: BlockId) -> Self

    Construct a new base block at the front of a linked list.

    -
    source

    pub fn from_block_ids( +

    Implementations§

    source§

    impl CheckPoint

    source

    pub fn new(block: BlockId) -> Self

    Construct a new base block at the front of a linked list.

    +
    source

    pub fn from_block_ids( block_ids: impl IntoIterator<Item = BlockId> ) -> Result<Self, Option<Self>>

    Construct a checkpoint from a list of BlockIds in ascending height order.

    §Errors
    @@ -16,36 +16,36 @@ without holding a lock on BlockIds of the same height.

    The error type is the last successful checkpoint constructed (if any).

    -
    source

    pub fn from_header(header: &Header, height: u32) -> Self

    Construct a checkpoint from the given header and block height.

    +
    source

    pub fn from_header(header: &Header, height: u32) -> Self

    Construct a checkpoint from the given header and block height.

    If header is of the genesis block, the checkpoint won’t have a prev node. Otherwise, we return a checkpoint linked with the previous block.

    -
    source

    pub fn push(self, block: BlockId) -> Result<Self, Self>

    Puts another checkpoint onto the linked list representing the blockchain.

    +
    source

    pub fn push(self, block: BlockId) -> Result<Self, Self>

    Puts another checkpoint onto the linked list representing the blockchain.

    Returns an Err(self) if the block you are pushing on is not at a greater height that the one you are pushing on to.

    -
    source

    pub fn extend( +

    source

    pub fn extend( self, blocks: impl IntoIterator<Item = BlockId> ) -> Result<Self, Self>

    Extends the checkpoint linked list by a iterator of block ids.

    Returns an Err(self) if there is block which does not have a greater height than the previous one.

    -
    source

    pub fn block_id(&self) -> BlockId

    Get the BlockId of the checkpoint.

    -
    source

    pub fn height(&self) -> u32

    Get the height of the checkpoint.

    -
    source

    pub fn hash(&self) -> BlockHash

    Get the block hash of the checkpoint.

    -
    source

    pub fn prev(&self) -> Option<CheckPoint>

    Get the previous checkpoint in the chain

    -
    source

    pub fn iter(&self) -> CheckPointIter ⓘ

    Iterate from this checkpoint in descending height.

    -
    source

    pub fn get(&self, height: u32) -> Option<Self>

    Get checkpoint at height.

    +
    source

    pub fn block_id(&self) -> BlockId

    Get the BlockId of the checkpoint.

    +
    source

    pub fn height(&self) -> u32

    Get the height of the checkpoint.

    +
    source

    pub fn hash(&self) -> BlockHash

    Get the block hash of the checkpoint.

    +
    source

    pub fn prev(&self) -> Option<CheckPoint>

    Get the previous checkpoint in the chain

    +
    source

    pub fn iter(&self) -> CheckPointIter ⓘ

    Iterate from this checkpoint in descending height.

    +
    source

    pub fn get(&self, height: u32) -> Option<Self>

    Get checkpoint at height.

    Returns None if checkpoint at height does not exist`.

    -
    source

    pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
    where +

    source

    pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
    where R: RangeBounds<u32>,

    Iterate checkpoints over a height range.

    Note that we always iterate checkpoints in reverse height order (iteration starts at tip height).

    -
    source

    pub fn insert(self, block_id: BlockId) -> Self

    Inserts block_id at its height within the chain.

    +
    source

    pub fn insert(self, block_id: BlockId) -> Self

    Inserts block_id at its height within the chain.

    The effect of insert depends on whether a height already exists. If it doesn’t the block_id we inserted and all pre-existing blocks higher than it will be re-inserted after it. If the height already existed and has a conflicting block hash then it will be purged along with all block followin it. The returned chain will have a tip of the block_id passed in. Of course, if the block_id was already present then this just returns self.

    -

    Trait Implementations§

    source§

    impl Clone for CheckPoint

    source§

    fn clone(&self) -> CheckPoint

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CheckPoint

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoIterator for CheckPoint

    §

    type Item = CheckPoint

    The type of the elements being iterated over.
    §

    type IntoIter = CheckPointIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl PartialEq for CheckPoint

    source§

    fn eq(&self, other: &Self) -> bool

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

    Trait Implementations§

    source§

    impl Clone for CheckPoint

    source§

    fn clone(&self) -> CheckPoint

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CheckPoint

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl IntoIterator for CheckPoint

    §

    type Item = CheckPoint

    The type of the elements being iterated over.
    §

    type IntoIter = CheckPointIter

    Which kind of iterator are we turning this into?
    source§

    fn into_iter(self) -> Self::IntoIter

    Creates an iterator from a value. Read more
    source§

    impl PartialEq for CheckPoint

    source§

    fn eq(&self, other: &Self) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html index 0655afa7df..655c0df96e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html @@ -1,5 +1,5 @@ -CheckPointIter in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CheckPointIter

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

    Iterates over checkpoints backwards.

    -

    Trait Implementations§

    source§

    impl Iterator for CheckPointIter

    §

    type Item = CheckPoint

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( +CheckPointIter in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::CheckPointIter

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

    Iterates over checkpoints backwards.

    +

    Trait Implementations§

    source§

    impl Iterator for CheckPointIter

    §

    type Item = CheckPoint

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where @@ -190,7 +190,14 @@ function. From<T> for U chooses to do.

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html index 034c177a9c..b0d476d474 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html @@ -1,31 +1,31 @@ -LocalChain in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::LocalChain

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

    This is a local implementation of ChainOracle.

    -

    Implementations§

    source§

    impl LocalChain

    source

    pub fn genesis_hash(&self) -> BlockHash

    Get the genesis hash.

    -
    source

    pub fn from_genesis_hash(hash: BlockHash) -> (Self, ChangeSet)

    Construct LocalChain from genesis hash.

    -
    source

    pub fn from_changeset(changeset: ChangeSet) -> Result<Self, MissingGenesisError>

    Construct a LocalChain from an initial changeset.

    -
    source

    pub fn from_tip(tip: CheckPoint) -> Result<Self, MissingGenesisError>

    Construct a LocalChain from a given checkpoint tip.

    -
    source

    pub fn from_blocks( +LocalChain in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::LocalChain

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

    This is a local implementation of ChainOracle.

    +

    Implementations§

    source§

    impl LocalChain

    source

    pub fn genesis_hash(&self) -> BlockHash

    Get the genesis hash.

    +
    source

    pub fn from_genesis_hash(hash: BlockHash) -> (Self, ChangeSet)

    Construct LocalChain from genesis hash.

    +
    source

    pub fn from_changeset(changeset: ChangeSet) -> Result<Self, MissingGenesisError>

    Construct a LocalChain from an initial changeset.

    +
    source

    pub fn from_tip(tip: CheckPoint) -> Result<Self, MissingGenesisError>

    Construct a LocalChain from a given checkpoint tip.

    +
    source

    pub fn from_blocks( blocks: BTreeMap<u32, BlockHash> ) -> Result<Self, MissingGenesisError>

    Constructs a LocalChain from a BTreeMap of height to [BlockHash].

    The BTreeMap enforces the height order. However, the caller must ensure the blocks are all of the same chain.

    -
    source

    pub fn tip(&self) -> CheckPoint

    Get the highest checkpoint.

    -
    source

    pub fn apply_update( +

    source

    pub fn tip(&self) -> CheckPoint

    Get the highest checkpoint.

    +
    source

    pub fn apply_update( &mut self, update: CheckPoint -) -> Result<ChangeSet, CannotConnectError>

    Applies the given update to the chain.

    -

    The method returns ChangeSet on success. This represents the changes applied to self.

    +) -> Result<ChangeSet, CannotConnectError>

    Applies the given update to the chain.

    +

    The method returns ChangeSet on success. This represents the changes applied to self.

    There must be no ambiguity about which of the existing chain’s blocks are still valid and which are now invalid. That is, the new chain must implicitly connect to a definite block in the existing chain and invalidate the block after it (if it exists) by including a block at the same height but with a different hash to explicitly exclude it as a connection point.

    §Errors

    An error will occur if the update does not correctly connect with self.

    -
    source

    pub fn apply_header_connected_to( +

    source

    pub fn apply_header_connected_to( &mut self, header: &Header, height: u32, connected_to: BlockId -) -> Result<ChangeSet, ApplyHeaderError>

    Update the chain with a given [Header] at height which you claim is connected to a existing block in the chain.

    +) -> Result<ChangeSet, ApplyHeaderError>

    Update the chain with a given [Header] at height which you claim is connected to a existing block in the chain.

    This is useful when you have a block header that you want to record as part of the chain but don’t necessarily know that the prev_blockhash is in the chain.

    This will usually insert two new BlockIds into the chain: the header’s block and the @@ -39,50 +39,50 @@ rules are satisfied.

    header or prev_blockhash, but has a different block hash. Or if the connected_to height is greater than the header’s height.

    ApplyHeaderError::CannotConnect occurs if the internal call to apply_update fails.

    -
    source

    pub fn apply_header( +

    source

    pub fn apply_header( &mut self, header: &Header, height: u32 -) -> Result<ChangeSet, CannotConnectError>

    Update the chain with a given [Header] connecting it with the previous block.

    +) -> Result<ChangeSet, CannotConnectError>

    Update the chain with a given [Header] connecting it with the previous block.

    This is a convenience method to call apply_header_connected_to with the connected_to parameter being height-1:prev_blockhash. If there is no previous block (i.e. genesis), we use the current block as connected_to.

    -
    source

    pub fn apply_changeset( +

    source

    pub fn apply_changeset( &mut self, - changeset: &ChangeSet + changeset: &ChangeSet ) -> Result<(), MissingGenesisError>

    Apply the given changeset.

    -
    source

    pub fn insert_block( +

    source

    pub fn insert_block( &mut self, block_id: BlockId -) -> Result<ChangeSet, AlterCheckPointError>

    Insert a BlockId.

    §Errors

    Replacing the block hash of an existing checkpoint will result in an error.

    -
    source

    pub fn disconnect_from( +

    source

    pub fn disconnect_from( &mut self, block_id: BlockId -) -> Result<ChangeSet, MissingGenesisError>

    Removes blocks from (and inclusive of) the given block_id.

    +) -> Result<ChangeSet, MissingGenesisError>

    Removes blocks from (and inclusive of) the given block_id.

    This will remove blocks with a height equal or greater than block_id, but only if block_id exists in the chain.

    §Errors

    This will fail with MissingGenesisError if the caller attempts to disconnect from the genesis block.

    -
    source

    pub fn initial_changeset(&self) -> ChangeSet

    Derives an initial ChangeSet, meaning that it can be applied to an empty chain to +

    source

    pub fn initial_changeset(&self) -> ChangeSet

    Derives an initial ChangeSet, meaning that it can be applied to an empty chain to recover the current chain.

    -
    source

    pub fn iter_checkpoints(&self) -> CheckPointIter ⓘ

    Iterate over checkpoints in descending height order.

    -
    source

    pub fn get(&self, height: u32) -> Option<CheckPoint>

    Get checkpoint at given height (if it exists).

    +
    source

    pub fn iter_checkpoints(&self) -> CheckPointIter ⓘ

    Iterate over checkpoints in descending height order.

    +
    source

    pub fn get(&self, height: u32) -> Option<CheckPoint>

    Get checkpoint at given height (if it exists).

    This is a shorthand for calling CheckPoint::get on the tip.

    -
    source

    pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
    where +

    source

    pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
    where R: RangeBounds<u32>,

    Iterate checkpoints over a height range.

    Note that we always iterate checkpoints in reverse height order (iteration starts at tip height).

    This is a shorthand for calling CheckPoint::range on the tip.

    -

    Trait Implementations§

    Trait Implementations§

    source§

    impl ChainOracle for LocalChain

    §

    type Error = Infallible

    Error type.
    source§

    fn is_block_in_chain( &self, block: BlockId, chain_tip: BlockId -) -> Result<Option<bool>, Self::Error>

    Determines whether block of BlockId exists as an ancestor of chain_tip. Read more
    source§

    fn get_chain_tip(&self) -> Result<BlockId, Self::Error>

    Get the best chain’s chain tip.
    source§

    impl Clone for LocalChain

    source§

    fn clone(&self) -> LocalChain

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LocalChain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for LocalChain

    source§

    fn eq(&self, other: &LocalChain) -> bool

    This method tests for self and other values to be equal, and is used +) -> Result<Option<bool>, Self::Error>
    Determines whether block of BlockId exists as an ancestor of chain_tip. Read more
    source§

    fn get_chain_tip(&self) -> Result<BlockId, Self::Error>

    Get the best chain’s chain tip.
    source§

    impl Clone for LocalChain

    source§

    fn clone(&self) -> LocalChain

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LocalChain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for LocalChain

    source§

    fn eq(&self, other: &LocalChain) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for LocalChain

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for LocalChain

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html index 866dea2d57..fb5ca3e3c3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html @@ -1,7 +1,7 @@ -MissingGenesisError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::MissingGenesisError

    source ·
    pub struct MissingGenesisError;
    Expand description

    An error which occurs when a LocalChain is constructed without a genesis checkpoint.

    -

    Trait Implementations§

    source§

    impl Clone for MissingGenesisError

    source§

    fn clone(&self) -> MissingGenesisError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MissingGenesisError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MissingGenesisError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MissingGenesisError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for MissingGenesisError

    source§

    fn eq(&self, other: &MissingGenesisError) -> bool

    This method tests for self and other values to be equal, and is used +MissingGenesisError in bdk_chain::local_chain - Rust

    Struct bdk_chain::local_chain::MissingGenesisError

    source ·
    pub struct MissingGenesisError;
    Expand description

    An error which occurs when a LocalChain is constructed without a genesis checkpoint.

    +

    Trait Implementations§

    source§

    impl Clone for MissingGenesisError

    source§

    fn clone(&self) -> MissingGenesisError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MissingGenesisError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MissingGenesisError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MissingGenesisError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for MissingGenesisError

    source§

    fn eq(&self, other: &MissingGenesisError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for MissingGenesisError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +sufficient, and should not be overridden without very good reason.

    source§

    impl StructuralPartialEq for MissingGenesisError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html deleted file mode 100644 index 285d475d65..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html +++ /dev/null @@ -1,4 +0,0 @@ -ChangeSet in bdk_chain::local_chain - Rust

    Type Alias bdk_chain::local_chain::ChangeSet

    source ·
    pub type ChangeSet = BTreeMap<u32, Option<BlockHash>>;
    Expand description

    The ChangeSet represents changes to LocalChain.

    -

    The key represents the block height, and the value either represents added a new CheckPoint -(if Some), or removing a CheckPoint (if None).

    -

    Aliased Type§

    struct ChangeSet { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/struct.Persisted.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/struct.Persisted.html new file mode 100644 index 0000000000..9e2420477d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/struct.Persisted.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_chain/struct.Persisted.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistAsyncWith.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistAsyncWith.html new file mode 100644 index 0000000000..4740133b61 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistAsyncWith.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_chain/trait.PersistAsyncWith.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistWith.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistWith.html new file mode 100644 index 0000000000..750eadd8fd --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.PersistWith.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_chain/trait.PersistWith.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.Staged.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.Staged.html new file mode 100644 index 0000000000..8890d4e358 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/persist/trait.Staged.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_chain/trait.Staged.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html new file mode 100644 index 0000000000..d5dfa5d9a0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html @@ -0,0 +1,2 @@ +SCHEMAS_TABLE_NAME in bdk_chain::rusqlite_impl - Rust

    Constant bdk_chain::rusqlite_impl::SCHEMAS_TABLE_NAME

    source ·
    pub const SCHEMAS_TABLE_NAME: &str = "bdk_schemas";
    Expand description

    Table name for schemas.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/fn.migrate_schema.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/fn.migrate_schema.html new file mode 100644 index 0000000000..8902461abe --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/fn.migrate_schema.html @@ -0,0 +1,6 @@ +migrate_schema in bdk_chain::rusqlite_impl - Rust

    Function bdk_chain::rusqlite_impl::migrate_schema

    source ·
    pub fn migrate_schema(
    +    db_tx: &Transaction<'_>,
    +    schema_name: &str,
    +    versioned_scripts: &[&[&str]]
    +) -> Result<()>
    Expand description

    Runs logic that initializes/migrates the table schemas.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/index.html new file mode 100644 index 0000000000..9e9a7a27b8 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/index.html @@ -0,0 +1,2 @@ +bdk_chain::rusqlite_impl - Rust

    Module bdk_chain::rusqlite_impl

    source ·
    Expand description

    Module for stuff

    +

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/sidebar-items.js new file mode 100644 index 0000000000..7711167423 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/rusqlite_impl/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"constant":["SCHEMAS_TABLE_NAME"],"fn":["migrate_schema"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js index 2dd7b98750..fe3a1e3511 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["BIP32_MAX_INDEX","COINBASE_MATURITY"],"enum":["ChainPosition","ConfirmationTime"],"externcrate":["serde"],"mod":["indexed_tx_graph","indexer","local_chain","spk_client","tx_graph"],"struct":["Balance","BlockId","CombinedChangeSet","ConfirmationBlockTime","DescriptorId","FullTxOut","SpkIterator"],"trait":["Anchor","AnchorFromBlockPosition","ChainOracle","DescriptorExt","Merge"],"type":["Indexed","KeychainIndexed"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["BIP32_MAX_INDEX","COINBASE_MATURITY"],"enum":["ChainPosition","ConfirmationTime"],"externcrate":["rusqlite","serde"],"mod":["indexed_tx_graph","indexer","local_chain","rusqlite_impl","spk_client","tx_graph"],"struct":["Balance","BlockId","ConfirmationBlockTime","DescriptorId","FullTxOut","Impl","Persisted","SpkIterator"],"trait":["Anchor","AnchorFromBlockPosition","ChainOracle","DescriptorExt","Merge","PersistAsyncWith","PersistWith","Staged"],"type":["Indexed","KeychainIndexed"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Balance.html index 404556f182..f26c0acfc9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Balance.html @@ -1,4 +1,4 @@ -Balance in bdk_chain - Rust

    Struct bdk_chain::Balance

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

    Struct bdk_chain::Balance

    source ·
    pub struct Balance {
         pub immature: Amount,
         pub trusted_pending: Amount,
         pub untrusted_pending: Amount,
    @@ -12,14 +12,16 @@
     

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

    source

    pub fn total(&self) -> Amount

    Get the whole balance visible to the wallet.

    -

    Trait Implementations§

    source§

    impl Add for Balance

    §

    type Output = Balance

    The resulting type after applying the + operator.
    source§

    fn add(self, other: Self) -> Self

    Performs the + operation. Read more
    source§

    impl Clone for Balance

    source§

    fn clone(&self) -> Balance

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Balance

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Balance

    source§

    fn default() -> Balance

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

    impl<'de> Deserialize<'de> for Balance

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Balance

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for Balance

    source§

    fn eq(&self, other: &Balance) -> bool

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

    Trait Implementations§

    source§

    impl Add for Balance

    §

    type Output = Balance

    The resulting type after applying the + operator.
    source§

    fn add(self, other: Self) -> Self

    Performs the + operation. Read more
    source§

    impl Clone for Balance

    source§

    fn clone(&self) -> Balance

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Balance

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Balance

    source§

    fn default() -> Balance

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

    impl<'de> Deserialize<'de> for Balance

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Balance

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for Balance

    source§

    fn eq(&self, other: &Balance) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for Balance

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Balance

    source§

    impl StructuralPartialEq for Balance

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html index 524e021749..1f8500dc28 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html @@ -1,4 +1,4 @@ -BlockId in bdk_chain - Rust

    Struct bdk_chain::BlockId

    source ·
    pub struct BlockId {
    +BlockId in bdk_chain - Rust

    Struct bdk_chain::BlockId

    source ·
    pub struct BlockId {
         pub height: u32,
         pub hash: BlockHash,
     }
    Expand description

    A reference to a block in the canonical chain.

    @@ -11,7 +11,7 @@ block and anchor block are the same block.

    block_id: BlockId, _tx_pos: usize ) -> Self
    Construct the anchor from a given block, block height and tx_pos within the block.
    source§

    impl Clone for BlockId

    source§

    fn clone(&self) -> BlockId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BlockId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BlockId

    source§

    fn default() -> Self

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

    impl<'de> Deserialize<'de> for BlockId

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl From<(&u32, &BlockHash)> for BlockId

    source§

    fn from((height, hash): (&u32, &BlockHash)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(u32, BlockHash)> for BlockId

    source§

    fn from((height, hash): (u32, BlockHash)) -> Self

    Converts to this type from the input type.
    source§

    impl From<BlockId> for (u32, BlockHash)

    source§

    fn from(block_id: BlockId) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for BlockId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl From<(&u32, &BlockHash)> for BlockId

    source§

    fn from((height, hash): (&u32, &BlockHash)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(u32, BlockHash)> for BlockId

    source§

    fn from((height, hash): (u32, BlockHash)) -> Self

    Converts to this type from the input type.
    source§

    impl From<BlockId> for (u32, BlockHash)

    source§

    fn from(block_id: BlockId) -> Self

    Converts to this type from the input type.
    source§

    impl Hash for BlockId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where H: Hasher, Self: Sized,

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

    impl Ord for BlockId

    source§

    fn cmp(&self, other: &BlockId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where @@ -24,7 +24,9 @@ operator. Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for BlockId

    source§

    impl Eq for BlockId

    source§

    impl StructuralPartialEq for BlockId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.CombinedChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.CombinedChangeSet.html deleted file mode 100644 index e1555a27d4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.CombinedChangeSet.html +++ /dev/null @@ -1,38 +0,0 @@ -CombinedChangeSet in bdk_chain - Rust

    Struct bdk_chain::CombinedChangeSet

    source ·
    pub struct CombinedChangeSet<K, A> {
    -    pub chain: ChangeSet,
    -    pub indexed_tx_graph: ChangeSet<A, ChangeSet<K>>,
    -    pub network: Option<Network>,
    -}
    Expand description

    A changeset containing crate structures typically persisted together.

    -

    Fields§

    §chain: ChangeSet

    Changes to the LocalChain.

    -
    §indexed_tx_graph: ChangeSet<A, ChangeSet<K>>

    Changes to IndexedTxGraph.

    -
    §network: Option<Network>

    Stores the network type of the transaction data.

    -

    Trait Implementations§

    source§

    impl<K: Clone, A: Clone> Clone for CombinedChangeSet<K, A>

    source§

    fn clone(&self) -> CombinedChangeSet<K, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug, A: Debug> Debug for CombinedChangeSet<K, A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K, A> Default for CombinedChangeSet<K, A>

    source§

    fn default() -> Self

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

    impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where - A: Ord + Deserialize<'de>, - K: Ord + Deserialize<'de>,

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>

    source§

    fn from(chain: ChangeSet) -> Self

    Converts to this type from the input type.
    source§

    impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>

    source§

    fn from(indexed_tx_graph: ChangeSet<A, ChangeSet<K>>) -> Self

    Converts to this type from the input type.
    source§

    impl<K, A> From<ChangeSet<K>> for CombinedChangeSet<K, A>

    source§

    fn from(indexer: ChangeSet<K>) -> Self

    Converts to this type from the input type.
    source§

    impl<K: Ord, A: Anchor> Merge for CombinedChangeSet<K, A>

    source§

    fn merge(&mut self, other: Self)

    Merge another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    source§

    impl<K: PartialEq, A: PartialEq> PartialEq for CombinedChangeSet<K, A>

    source§

    fn eq(&self, other: &CombinedChangeSet<K, A>) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<K, A> Serialize for CombinedChangeSet<K, A>
    where - A: Ord + Serialize, - K: Ord + Serialize,

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>

    Auto Trait Implementations§

    §

    impl<K, A> Freeze for CombinedChangeSet<K, A>

    §

    impl<K, A> RefUnwindSafe for CombinedChangeSet<K, A>
    where - K: RefUnwindSafe, - A: RefUnwindSafe,

    §

    impl<K, A> Send for CombinedChangeSet<K, A>
    where - K: Send, - A: Send,

    §

    impl<K, A> Sync for CombinedChangeSet<K, A>
    where - K: Sync, - A: Sync,

    §

    impl<K, A> Unpin for CombinedChangeSet<K, A>

    §

    impl<K, A> UnwindSafe for CombinedChangeSet<K, A>
    where - K: RefUnwindSafe, - A: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where - T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationBlockTime.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationBlockTime.html index 1f88516bef..dbcd7612a4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationBlockTime.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationBlockTime.html @@ -1,4 +1,4 @@ -ConfirmationBlockTime in bdk_chain - Rust

    Struct bdk_chain::ConfirmationBlockTime

    source ·
    pub struct ConfirmationBlockTime {
    +ConfirmationBlockTime in bdk_chain - Rust

    Struct bdk_chain::ConfirmationBlockTime

    source ·
    pub struct ConfirmationBlockTime {
         pub block_id: BlockId,
         pub confirmation_time: u64,
     }
    Expand description

    An Anchor implementation that also records the exact confirmation time of the transaction.

    @@ -19,7 +19,9 @@ operator. Serializer,
    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for ConfirmationBlockTime

    source§

    impl Eq for ConfirmationBlockTime

    source§

    impl StructuralPartialEq for ConfirmationBlockTime

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html index bed0cea074..5e79c81ba3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html @@ -1,34 +1,36 @@ -DescriptorId in bdk_chain - Rust

    Struct bdk_chain::DescriptorId

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

    Represents the unique ID of a descriptor.

    +DescriptorId in bdk_chain - Rust

    Struct bdk_chain::DescriptorId

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

    Represents the unique ID of a descriptor.

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

    Tuple Fields§

    §0: Hash

    Implementations§

    source§

    impl DescriptorId

    source

    pub fn from_raw_hash(inner: Hash) -> DescriptorId

    Creates this wrapper type from the inner hash type.

    source

    pub fn to_raw_hash(self) -> Hash

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

    source

    pub fn as_raw_hash(&self) -> &Hash

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

    -

    Trait Implementations§

    source§

    impl AsRef<[u8]> for DescriptorId

    source§

    fn as_ref(&self) -> &[u8] ⓘ

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl AsRef<[u8; 32]> for DescriptorId

    source§

    fn as_ref(&self) -> &[u8; 32]

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Borrow<[u8]> for DescriptorId

    source§

    fn borrow(&self) -> &[u8] ⓘ

    Immutably borrows from an owned value. Read more
    source§

    impl Clone for DescriptorId

    source§

    fn clone(&self) -> DescriptorId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for DescriptorId

    source§

    fn deserialize<D: Deserializer<'de>>(d: D) -> Result<DescriptorId, D::Error>

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DescriptorId> for Hash

    source§

    fn from(hashtype: DescriptorId) -> Hash

    Converts to this type from the input type.
    source§

    impl From<Hash> for DescriptorId

    source§

    fn from(inner: Hash) -> DescriptorId

    Converts to this type from the input type.
    source§

    impl FromStr for DescriptorId

    §

    type Err = HexToArrayError

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<DescriptorId, Self::Err>

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

    impl Hash for DescriptorId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

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

    impl Hash for DescriptorId

    §

    type Engine = <Hash as Hash>::Engine

    A hashing engine which bytes can be serialized into. It is expected +

    Trait Implementations§

    source§

    impl AsRef<[u8]> for DescriptorId

    source§

    fn as_ref(&self) -> &[u8] ⓘ

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl AsRef<[u8; 32]> for DescriptorId

    source§

    fn as_ref(&self) -> &[u8; 32]

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Borrow<[u8]> for DescriptorId

    source§

    fn borrow(&self) -> &[u8] ⓘ

    Immutably borrows from an owned value. Read more
    source§

    impl Clone for DescriptorId

    source§

    fn clone(&self) -> DescriptorId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for DescriptorId

    source§

    fn deserialize<D: Deserializer<'de>>(d: D) -> Result<DescriptorId, D::Error>

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<DescriptorId> for Hash

    source§

    fn from(hashtype: DescriptorId) -> Hash

    Converts to this type from the input type.
    source§

    impl From<Hash> for DescriptorId

    source§

    fn from(inner: Hash) -> DescriptorId

    Converts to this type from the input type.
    source§

    impl FromStr for DescriptorId

    §

    type Err = HexToArrayError

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<DescriptorId, Self::Err>

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

    impl Hash for DescriptorId

    §

    type Engine = <Hash as Hash>::Engine

    A hashing engine which bytes can be serialized into. It is expected to implement the io::Write trait, and to never return errors under any conditions.
    §

    type Bytes = <Hash as Hash>::Bytes

    The byte array that represents the hash internally.
    source§

    const LEN: usize = 32usize

    Length of the hash, in bytes.
    source§

    const DISPLAY_BACKWARD: bool = false

    Flag indicating whether user-visible serializations of this hash should be backward. For some reason Satoshi decided this should be -true for Sha256dHash, so here we are.
    source§

    fn engine() -> Self::Engine

    Constructs a new engine.
    source§

    fn from_engine(e: Self::Engine) -> Self

    Produces a hash from the current state of a given engine.
    source§

    fn from_slice(sl: &[u8]) -> Result<DescriptorId, FromSliceError>

    Copies a byte slice into a hash object.
    source§

    fn from_byte_array(bytes: Self::Bytes) -> Self

    Constructs a hash from the underlying byte array.
    source§

    fn to_byte_array(self) -> Self::Bytes

    Returns the underlying byte array.
    source§

    fn as_byte_array(&self) -> &Self::Bytes

    Returns a reference to the underlying byte array.
    source§

    fn all_zeros() -> Self

    Returns an all zero hash. Read more
    §

    fn hash(data: &[u8]) -> Self

    Hashes some bytes.
    §

    fn hash_byte_chunks<B, I>(byte_slices: I) -> Self
    where +true for Sha256dHash, so here we are.

    source§

    fn engine() -> Self::Engine

    Constructs a new engine.
    source§

    fn from_engine(e: Self::Engine) -> Self

    Produces a hash from the current state of a given engine.
    source§

    fn from_slice(sl: &[u8]) -> Result<DescriptorId, FromSliceError>

    Copies a byte slice into a hash object.
    source§

    fn from_byte_array(bytes: Self::Bytes) -> Self

    Constructs a hash from the underlying byte array.
    source§

    fn to_byte_array(self) -> Self::Bytes

    Returns the underlying byte array.
    source§

    fn as_byte_array(&self) -> &Self::Bytes

    Returns a reference to the underlying byte array.
    source§

    fn all_zeros() -> Self

    Returns an all zero hash. Read more
    §

    fn hash(data: &[u8]) -> Self

    Hashes some bytes.
    §

    fn hash_byte_chunks<B, I>(byte_slices: I) -> Self
    where B: AsRef<[u8]>, - I: IntoIterator<Item = B>,

    Hashes all the byte slices retrieved from the iterator together.
    source§

    impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId

    §

    type Output = <I as SliceIndex<[u8]>>::Output

    The returned type after indexing.
    source§

    fn index(&self, index: I) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl LowerHex for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for DescriptorId

    source§

    fn cmp(&self, other: &DescriptorId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + I: IntoIterator<Item = B>,

    Hashes all the byte slices retrieved from the iterator together.
    source§

    impl Hash for DescriptorId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

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

    impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId

    §

    type Output = <I as SliceIndex<[u8]>>::Output

    The returned type after indexing.
    source§

    fn index(&self, index: I) -> &Self::Output

    Performs the indexing (container[index]) operation. Read more
    source§

    impl LowerHex for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for DescriptorId

    source§

    fn cmp(&self, other: &DescriptorId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for DescriptorId

    source§

    fn eq(&self, other: &DescriptorId) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for DescriptorId

    source§

    fn partial_cmp(&self, other: &DescriptorId) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl SerdeHash for DescriptorId

    source§

    const N: usize = 32usize

    Size, in bits, of the hash.
    source§

    fn from_slice_delegated(sl: &[u8]) -> Result<Self, FromSliceError>

    Helper function to turn a deserialized slice into the correct hash type.
    §

    fn serialize<S>( +operator. Read more

    source§

    impl SerdeHash for DescriptorId

    source§

    const N: usize = 32usize

    Size, in bits, of the hash.
    source§

    fn from_slice_delegated(sl: &[u8]) -> Result<Self, FromSliceError>

    Helper function to turn a deserialized slice into the correct hash type.
    §

    fn serialize<S>( &self, s: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where - S: Serializer,

    Do serde serialization.
    §

    fn deserialize<'de, D>(d: D) -> Result<Self, <D as Deserializer<'de>>::Error>
    where - D: Deserializer<'de>,

    Do serde deserialization.
    source§

    impl Serialize for DescriptorId

    source§

    fn serialize<S: Serializer>(&self, s: S) -> Result<S::Ok, S::Error>

    Serialize this value into the given Serde serializer. Read more
    source§

    impl UpperHex for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for DescriptorId

    source§

    impl Eq for DescriptorId

    source§

    impl StructuralPartialEq for DescriptorId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + S: Serializer,

    Do serde serialization.
    §

    fn deserialize<'de, D>(d: D) -> Result<Self, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Do serde deserialization.
    source§

    impl Serialize for DescriptorId

    source§

    fn serialize<S: Serializer>(&self, s: S) -> Result<S::Ok, S::Error>

    Serialize this value into the given Serde serializer. Read more
    source§

    impl UpperHex for DescriptorId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for DescriptorId

    source§

    impl Eq for DescriptorId

    source§

    impl StructuralPartialEq for DescriptorId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html index 4adb4b52cf..a266b9e381 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html @@ -1,4 +1,4 @@ -FullTxOut in bdk_chain - Rust

    Struct bdk_chain::FullTxOut

    source ·
    pub struct FullTxOut<A> {
    +FullTxOut in bdk_chain - Rust

    Struct bdk_chain::FullTxOut

    source ·
    pub struct FullTxOut<A> {
         pub chain_position: ChainPosition<A>,
         pub outpoint: OutPoint,
         pub txout: TxOut,
    @@ -35,7 +35,9 @@ operator. UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Impl.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Impl.html new file mode 100644 index 0000000000..9387ad1c8e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Impl.html @@ -0,0 +1,19 @@ +Impl in bdk_chain - Rust

    Struct bdk_chain::Impl

    source ·
    pub struct Impl<T>(pub T);
    Expand description

    A wrapper that we use to impl remote traits for types in our crate or dependency crates.

    +

    Tuple Fields§

    §0: T

    Trait Implementations§

    source§

    impl<T> Deref for Impl<T>

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<T> From<T> for Impl<T>

    source§

    fn from(value: T) -> Self

    Converts to this type from the input type.
    source§

    impl<A: Anchor + DeserializeOwned> FromSql for Impl<A>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<Amount>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<BlockHash>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<Descriptor<DescriptorPublicKey>>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<DescriptorId>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<Network>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<ScriptBuf>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<Transaction>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl FromSql for Impl<Txid>

    source§

    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

    Converts SQLite value into Rust value.
    source§

    impl<A: Anchor + Serialize> ToSql for Impl<A>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<Amount>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<BlockHash>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<Descriptor<DescriptorPublicKey>>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<DescriptorId>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<Network>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<ScriptBuf>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<Transaction>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value
    source§

    impl ToSql for Impl<Txid>

    source§

    fn to_sql(&self) -> Result<ToSqlOutput<'_>>

    Converts Rust value to SQLite value

    Auto Trait Implementations§

    §

    impl<T> Freeze for Impl<T>
    where + T: Freeze,

    §

    impl<T> RefUnwindSafe for Impl<T>
    where + T: RefUnwindSafe,

    §

    impl<T> Send for Impl<T>
    where + T: Send,

    §

    impl<T> Sync for Impl<T>
    where + T: Sync,

    §

    impl<T> Unpin for Impl<T>
    where + T: Unpin,

    §

    impl<T> UnwindSafe for Impl<T>
    where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<!> for T

    source§

    fn from(t: !) -> T

    Converts to this type from the input type.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Persisted.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Persisted.html new file mode 100644 index 0000000000..57b41f239a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.Persisted.html @@ -0,0 +1,57 @@ +Persisted in bdk_chain - Rust

    Struct bdk_chain::Persisted

    source ·
    pub struct Persisted<T> { /* private fields */ }
    Expand description

    Represents a persisted T.

    +

    Implementations§

    source§

    impl<T> Persisted<T>

    source

    pub fn create<Db>( + db: &mut Db, + params: T::CreateParams +) -> Result<Self, T::CreateError>
    where + T: PersistWith<Db>,

    Create a new persisted T.

    +
    source

    pub async fn create_async<Db>( + db: &mut Db, + params: T::CreateParams +) -> Result<Self, T::CreateError>
    where + T: PersistAsyncWith<Db>,

    Create a new persisted T with async Db.

    +
    source

    pub fn load<Db>( + db: &mut Db, + params: T::LoadParams +) -> Result<Option<Self>, T::LoadError>
    where + T: PersistWith<Db>,

    Construct a persisted T from Db.

    +
    source

    pub async fn load_async<Db>( + db: &mut Db, + params: T::LoadParams +) -> Result<Option<Self>, T::LoadError>
    where + T: PersistAsyncWith<Db>,

    Contruct a persisted T from an async Db.

    +
    source

    pub fn persist<Db>(&mut self, db: &mut Db) -> Result<bool, T::PersistError>
    where + T: PersistWith<Db>,

    Persist staged changes of T into Db.

    +

    If the database errors, the staged changes will not be cleared.

    +
    source

    pub async fn persist_async<'a, Db>( + &'a mut self, + db: &'a mut Db +) -> Result<bool, T::PersistError>
    where + T: PersistAsyncWith<Db>,

    Persist staged changes of T into an async Db.

    +

    If the database errors, the staged changes will not be cleared.

    +

    Trait Implementations§

    source§

    impl<T: Debug> Debug for Persisted<T>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<T> Deref for Persisted<T>

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<T> DerefMut for Persisted<T>

    source§

    fn deref_mut(&mut self) -> &mut Self::Target

    Mutably dereferences the value.
    source§

    impl<T: Ord> Ord for Persisted<T>

    source§

    fn cmp(&self, other: &Persisted<T>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl<T: PartialEq> PartialEq for Persisted<T>

    source§

    fn eq(&self, other: &Persisted<T>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<T: PartialOrd> PartialOrd for Persisted<T>

    source§

    fn partial_cmp(&self, other: &Persisted<T>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl<T: Eq> Eq for Persisted<T>

    source§

    impl<T> StructuralPartialEq for Persisted<T>

    Auto Trait Implementations§

    §

    impl<T> Freeze for Persisted<T>
    where + T: Freeze,

    §

    impl<T> RefUnwindSafe for Persisted<T>
    where + T: RefUnwindSafe,

    §

    impl<T> Send for Persisted<T>
    where + T: Send,

    §

    impl<T> Sync for Persisted<T>
    where + T: Sync,

    §

    impl<T> Unpin for Persisted<T>
    where + T: Unpin,

    §

    impl<T> UnwindSafe for Persisted<T>
    where + T: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html index 4b0c3b04b2..c3747e2c2a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html @@ -1,4 +1,4 @@ -SpkIterator in bdk_chain - Rust

    Struct bdk_chain::SpkIterator

    source ·
    pub struct SpkIterator<D> { /* private fields */ }
    Expand description

    An iterator for derived script pubkeys.

    +SpkIterator in bdk_chain - Rust

    Struct bdk_chain::SpkIterator

    source ·
    pub struct SpkIterator<D> { /* private fields */ }
    Expand description

    An iterator for derived script pubkeys.

    SpkIterator is an implementation of the Iterator trait which possesses its own next() and nth() functions, both of which circumvent the unnecessary intermediate derivations required when using their default implementations.

    @@ -214,7 +214,14 @@ function. From<T> for U chooses to do.

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html index d15016d445..6797224fa6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html @@ -20,4 +20,4 @@ is an ancestor of the chain_tip.

    If None is returned, it means the implementation cannot determine whether block exists under chain_tip.

    source

    fn get_chain_tip(&self) -> Result<BlockId, Self::Error>

    Get the best chain’s chain tip.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Merge.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Merge.html index 3602e28ca0..083e328533 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Merge.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Merge.html @@ -75,4 +75,4 @@ T7: Merge, T8: Merge, T9: Merge, - T10: Merge,
    source§

    fn merge(&mut self, _other: Self)

    source§

    fn is_empty(&self) -> bool

    source§

    impl<T> Merge for Vec<T>

    source§

    fn merge(&mut self, other: Self)

    source§

    fn is_empty(&self) -> bool

    source§

    impl<T: Ord> Merge for BTreeSet<T>

    source§

    fn merge(&mut self, other: Self)

    source§

    fn is_empty(&self) -> bool

    Implementors§

    source§

    impl<A: Ord> Merge for bdk_chain::tx_graph::ChangeSet<A>

    source§

    impl<A: Anchor, IA: Merge> Merge for bdk_chain::indexed_tx_graph::ChangeSet<A, IA>

    source§

    impl<K: Ord> Merge for bdk_chain::indexer::keychain_txout::ChangeSet<K>

    source§

    impl<K: Ord, A: Anchor> Merge for CombinedChangeSet<K, A>

    \ No newline at end of file + T10: Merge,
    source§

    fn merge(&mut self, _other: Self)

    source§

    fn is_empty(&self) -> bool

    source§

    impl<T> Merge for Vec<T>

    source§

    fn merge(&mut self, other: Self)

    source§

    fn is_empty(&self) -> bool

    source§

    impl<T: Ord> Merge for BTreeSet<T>

    source§

    fn merge(&mut self, other: Self)

    source§

    fn is_empty(&self) -> bool

    Implementors§

    source§

    impl Merge for bdk_chain::indexer::keychain_txout::ChangeSet

    source§

    impl Merge for bdk_chain::local_chain::ChangeSet

    source§

    impl<A: Ord> Merge for bdk_chain::tx_graph::ChangeSet<A>

    source§

    impl<A: Anchor, IA: Merge> Merge for bdk_chain::indexed_tx_graph::ChangeSet<A, IA>

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistAsyncWith.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistAsyncWith.html new file mode 100644 index 0000000000..3146d4c237 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistAsyncWith.html @@ -0,0 +1,39 @@ +PersistAsyncWith in bdk_chain - Rust

    Trait bdk_chain::PersistAsyncWith

    source ·
    pub trait PersistAsyncWith<Db>: Staged + Sized {
    +    type CreateParams;
    +    type LoadParams;
    +    type CreateError;
    +    type LoadError;
    +    type PersistError;
    +
    +    // Required methods
    +    fn create(
    +        db: &mut Db,
    +        params: Self::CreateParams
    +    ) -> Pin<Box<dyn Future<Output = Result<Self, Self::CreateError>> + Send + '_>>;
    +    fn load(
    +        db: &mut Db,
    +        params: Self::LoadParams
    +    ) -> Pin<Box<dyn Future<Output = Result<Option<Self>, Self::LoadError>> + Send + '_>>;
    +    fn persist<'a>(
    +        db: &'a mut Db,
    +        changeset: &'a <Self as Staged>::ChangeSet
    +    ) -> Pin<Box<dyn Future<Output = Result<(), Self::PersistError>> + Send + 'a>>;
    +}
    Expand description

    Trait that persists the type with an async Db.

    +

    Required Associated Types§

    Required Methods§

    source

    fn create( + db: &mut Db, + params: Self::CreateParams +) -> Pin<Box<dyn Future<Output = Result<Self, Self::CreateError>> + Send + '_>>

    Initialize the Db and create Self.

    +
    source

    fn load( + db: &mut Db, + params: Self::LoadParams +) -> Pin<Box<dyn Future<Output = Result<Option<Self>, Self::LoadError>> + Send + '_>>

    Initialize the Db and load a previously-persisted Self.

    +
    source

    fn persist<'a>( + db: &'a mut Db, + changeset: &'a <Self as Staged>::ChangeSet +) -> Pin<Box<dyn Future<Output = Result<(), Self::PersistError>> + Send + 'a>>

    Persist changes to the Db.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistWith.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistWith.html new file mode 100644 index 0000000000..5df589089d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.PersistWith.html @@ -0,0 +1,40 @@ +PersistWith in bdk_chain - Rust

    Trait bdk_chain::PersistWith

    source ·
    pub trait PersistWith<Db>: Staged + Sized {
    +    type CreateParams;
    +    type LoadParams;
    +    type CreateError;
    +    type LoadError;
    +    type PersistError;
    +
    +    // Required methods
    +    fn create(
    +        db: &mut Db,
    +        params: Self::CreateParams
    +    ) -> Result<Self, Self::CreateError>;
    +    fn load(
    +        db: &mut Db,
    +        params: Self::LoadParams
    +    ) -> Result<Option<Self>, Self::LoadError>;
    +    fn persist(
    +        db: &mut Db,
    +        changeset: &<Self as Staged>::ChangeSet
    +    ) -> Result<(), Self::PersistError>;
    +}
    Expand description

    Trait that persists the type with Db.

    +

    Methods of this trait should not be called directly.

    +

    Required Associated Types§

    Required Methods§

    source

    fn create( + db: &mut Db, + params: Self::CreateParams +) -> Result<Self, Self::CreateError>

    Initialize the Db and create Self.

    +
    source

    fn load( + db: &mut Db, + params: Self::LoadParams +) -> Result<Option<Self>, Self::LoadError>

    Initialize the Db and load a previously-persisted Self.

    +
    source

    fn persist( + db: &mut Db, + changeset: &<Self as Staged>::ChangeSet +) -> Result<(), Self::PersistError>

    Persist changes to the Db.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Staged.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Staged.html new file mode 100644 index 0000000000..464e6c6314 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Staged.html @@ -0,0 +1,9 @@ +Staged in bdk_chain - Rust

    Trait bdk_chain::Staged

    source ·
    pub trait Staged {
    +    type ChangeSet: Merge;
    +
    +    // Required method
    +    fn staged(&mut self) -> &mut Self::ChangeSet;
    +}
    Expand description

    Represents a type that contains staged changes.

    +

    Required Associated Types§

    source

    type ChangeSet: Merge

    Type for staged changes.

    +

    Required Methods§

    source

    fn staged(&mut self) -> &mut Self::ChangeSet

    Get mutable reference of staged changes.

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html index 0862403f0a..70a6f390e2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html @@ -1,15 +1,17 @@ -CalculateFeeError in bdk_chain::tx_graph - Rust

    Enum bdk_chain::tx_graph::CalculateFeeError

    source ·
    pub enum CalculateFeeError {
    +CalculateFeeError in bdk_chain::tx_graph - Rust

    Enum bdk_chain::tx_graph::CalculateFeeError

    source ·
    pub enum CalculateFeeError {
         MissingTxOut(Vec<OutPoint>),
         NegativeFee(SignedAmount),
     }
    Expand description

    Errors returned by TxGraph::calculate_fee.

    Variants§

    §

    MissingTxOut(Vec<OutPoint>)

    Missing TxOut for one or more of the inputs of the tx

    §

    NegativeFee(SignedAmount)

    When the transaction is invalid according to the graph it has a negative fee

    -

    Trait Implementations§

    source§

    impl Debug for CalculateFeeError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CalculateFeeError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CalculateFeeError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for CalculateFeeError

    source§

    fn eq(&self, other: &CalculateFeeError) -> bool

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

    Trait Implementations§

    source§

    impl Debug for CalculateFeeError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CalculateFeeError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CalculateFeeError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl PartialEq for CalculateFeeError

    source§

    fn eq(&self, other: &CalculateFeeError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for CalculateFeeError

    source§

    impl StructuralPartialEq for CalculateFeeError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html index eb8148b7e8..e4d1366463 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html @@ -1,4 +1,4 @@ -CanonicalTx in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::CanonicalTx

    source ·
    pub struct CanonicalTx<'a, T, A> {
    +CanonicalTx in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::CanonicalTx

    source ·
    pub struct CanonicalTx<'a, T, A> {
         pub chain_position: ChainPosition<&'a A>,
         pub tx_node: TxNode<'a, T, A>,
     }
    Expand description

    A transaction that is included in the chain, or is still in mempool.

    @@ -24,7 +24,9 @@ operator. RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html index 0dbbba0caa..f10e592744 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html @@ -1,4 +1,4 @@ -ChangeSet in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::ChangeSet

    source ·
    pub struct ChangeSet<A = ()> {
    +ChangeSet in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::ChangeSet

    source ·
    pub struct ChangeSet<A = ()> {
         pub txs: BTreeSet<Arc<Transaction>>,
         pub txouts: BTreeMap<OutPoint, TxOut>,
         pub anchors: BTreeSet<(A, Txid)>,
    @@ -20,9 +20,16 @@ confirm or exclude these anchors.

    F: FnMut(A) -> A2,

    Transform the ChangeSet to have Anchors of another type.

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

    +
    source§

    impl<A> ChangeSet<A>

    source

    pub const SCHEMA_NAME: &'static str = "bdk_txgraph"

    Schema name for tx_graph::ChangeSet.

    +
    source

    pub const TXS_TABLE_NAME: &'static str = "bdk_txs"

    Name of table that stores full transactions and last_seen timestamps.

    +
    source

    pub const TXOUTS_TABLE_NAME: &'static str = "bdk_txouts"

    Name of table that stores floating txouts.

    +
    source

    pub const ANCHORS_TABLE_NAME: &'static str = "bdk_anchors"

    Name of table that stores Anchors.

    +
    source

    pub fn from_sqlite(db_tx: &Transaction<'_>) -> Result<Self>

    Construct a TxGraph from an sqlite database.

    +
    source

    pub fn persist_to_sqlite(&self, db_tx: &Transaction<'_>) -> Result<()>

    Persist changeset to the sqlite database.

    Trait Implementations§

    source§

    impl<A: Clone> Clone for ChangeSet<A>

    source§

    fn clone(&self) -> ChangeSet<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<A: Debug> Debug for ChangeSet<A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<A> Default for ChangeSet<A>

    source§

    fn default() -> Self

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

    impl<'de, A> Deserialize<'de> for ChangeSet<A>
    where A: Ord + Deserialize<'de>,

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

    source§

    fn from(graph: ChangeSet<A>) -> Self

    Converts to this type from the input type.
    source§

    impl<A: Ord> Merge for ChangeSet<A>

    source§

    fn merge(&mut self, other: Self)

    Merge another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    source§

    impl<A: PartialEq> PartialEq for ChangeSet<A>

    source§

    fn eq(&self, other: &ChangeSet<A>) -> bool

    This method tests for self and other values to be equal, and is used + __D: Deserializer<'de>,
    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

    source§

    fn from(graph: ChangeSet<A>) -> Self

    Converts to this type from the input type.
    source§

    impl<A: Ord> Merge for ChangeSet<A>

    source§

    fn merge(&mut self, other: Self)

    Merge another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    source§

    impl<A: PartialEq> PartialEq for ChangeSet<A>

    source§

    fn eq(&self, other: &ChangeSet<A>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl<A> Serialize for ChangeSet<A>
    where A: Ord + Serialize,

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html index 594baa9aaa..72633935d5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html @@ -1,4 +1,4 @@ -TxAncestors in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxAncestors

    source ·
    pub struct TxAncestors<'g, A, F> { /* private fields */ }
    Expand description

    An iterator that traverses ancestors of a given root transaction.

    +TxAncestors in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxAncestors

    source ·
    pub struct TxAncestors<'g, A, F> { /* private fields */ }
    Expand description

    An iterator that traverses ancestors of a given root transaction.

    The iterator excludes partial transactions.

    Returned by the walk_ancestors method of TxGraph.

    Trait Implementations§

    source§

    impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>
    where @@ -205,7 +205,14 @@ happen it returns None.

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

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html index 98b85b21d9..f3bcb1efd3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html @@ -1,4 +1,4 @@ -TxDescendants in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxDescendants

    source ·
    pub struct TxDescendants<'g, A, F> { /* private fields */ }
    Expand description

    An iterator that traverses transaction descendants.

    +TxDescendants in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxDescendants

    source ·
    pub struct TxDescendants<'g, A, F> { /* private fields */ }
    Expand description

    An iterator that traverses transaction descendants.

    Returned by the walk_descendants method of TxGraph.

    Trait Implementations§

    source§

    impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>
    where F: FnMut(usize, Txid) -> Option<O>,

    §

    type Item = O

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( @@ -204,7 +204,14 @@ happen it returns None.

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

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html index 34080126a2..da9f4ed1ca 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html @@ -279,7 +279,7 @@ used instead.

    trust_predicate: impl FnMut(&OI, &Script) -> bool ) -> Balance

    Get the total balance of outpoints that are in chain of chain_tip.

    This is the infallible version of try_balance.

    -

    Trait Implementations§

    source§

    impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I>

    source§

    fn as_ref(&self) -> &TxGraph<A>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<A> AsRef<TxGraph<A>> for TxGraph<A>

    source§

    fn as_ref(&self) -> &TxGraph<A>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<A: Clone> Clone for TxGraph<A>

    source§

    fn clone(&self) -> TxGraph<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<A: Debug> Debug for TxGraph<A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<A> Default for TxGraph<A>

    source§

    fn default() -> Self

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

    impl<A: PartialEq> PartialEq for TxGraph<A>

    source§

    fn eq(&self, other: &TxGraph<A>) -> bool

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

    Trait Implementations§

    source§

    impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I>

    source§

    fn as_ref(&self) -> &TxGraph<A>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<A> AsRef<TxGraph<A>> for TxGraph<A>

    source§

    fn as_ref(&self) -> &TxGraph<A>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<A: Clone> Clone for TxGraph<A>

    source§

    fn clone(&self) -> TxGraph<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<A: Debug> Debug for TxGraph<A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<A> Default for TxGraph<A>

    source§

    fn default() -> Self

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

    impl<A: PartialEq> PartialEq for TxGraph<A>

    source§

    fn eq(&self, other: &TxGraph<A>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl<A> StructuralPartialEq for TxGraph<A>

    Auto Trait Implementations§

    §

    impl<A> Freeze for TxGraph<A>

    §

    impl<A> RefUnwindSafe for TxGraph<A>
    where A: RefUnwindSafe,

    §

    impl<A> Send for TxGraph<A>
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html index a9ca664ee7..f758fb3287 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html @@ -1,4 +1,4 @@ -TxNode in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxNode

    source ·
    pub struct TxNode<'a, T, A> {
    +TxNode in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxNode

    source ·
    pub struct TxNode<'a, T, A> {
         pub txid: Txid,
         pub tx: T,
         pub anchors: &'a BTreeSet<A>,
    @@ -28,7 +28,9 @@ operator. RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.Indexed.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.Indexed.html index 74c4831fd8..026ade8541 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.Indexed.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.Indexed.html @@ -1,2 +1,2 @@ -Indexed in bdk_chain - Rust

    Type Alias bdk_chain::Indexed

    source ·
    pub type Indexed<T> = (u32, T);
    Expand description

    A tuple of keychain index and T representing the indexed value.

    +Indexed in bdk_chain - Rust

    Type Alias bdk_chain::Indexed

    source ·
    pub type Indexed<T> = (u32, T);
    Expand description

    A tuple of keychain index and T representing the indexed value.

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.KeychainIndexed.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.KeychainIndexed.html index 226a092f0a..71ef812d1b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.KeychainIndexed.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/type.KeychainIndexed.html @@ -1,2 +1,2 @@ -KeychainIndexed in bdk_chain - Rust

    Type Alias bdk_chain::KeychainIndexed

    source ·
    pub type KeychainIndexed<K, T> = ((K, u32), T);
    Expand description

    A tuple of keychain K, derivation index (u32) and a T associated with them.

    +KeychainIndexed in bdk_chain - Rust

    Type Alias bdk_chain::KeychainIndexed

    source ·
    pub type KeychainIndexed<K, T> = ((K, u32), T);
    Expand description

    A tuple of keychain K, derivation index (u32) and a T associated with them.

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html index 54033098a4..15512c8655 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html @@ -1,4 +1,4 @@ -ExcessStrategyKind in bdk_coin_select - Rust

    Enum bdk_coin_select::ExcessStrategyKind

    source ·
    pub enum ExcessStrategyKind {
    +ExcessStrategyKind in bdk_coin_select - Rust

    Enum bdk_coin_select::ExcessStrategyKind

    source ·
    pub enum ExcessStrategyKind {
         ToFee,
         ToRecipient,
         ToDrain,
    @@ -14,7 +14,9 @@ operator. Read more
    source§

    impl Copy for ExcessStrategyKind

    source§

    impl Eq for ExcessStrategyKind

    source§

    impl StructuralPartialEq for ExcessStrategyKind

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html index 3aa459992e..26df5b882c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html @@ -1,4 +1,4 @@ -SelectionConstraint in bdk_coin_select - Rust

    Enum bdk_coin_select::SelectionConstraint

    source ·
    pub enum SelectionConstraint {
    +SelectionConstraint in bdk_coin_select - Rust

    Enum bdk_coin_select::SelectionConstraint

    source ·
    pub enum SelectionConstraint {
         TargetValue,
         TargetFee,
         MinAbsoluteFee,
    @@ -12,7 +12,9 @@ by ==.
    source§

    impl Copy for SelectionConstraint

    source§

    impl Eq for SelectionConstraint

    source§

    impl StructuralPartialEq for SelectionConstraint

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html index 7c99ed6c41..64d7568b36 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html @@ -1,4 +1,4 @@ -BnbIter in bdk_coin_select - Rust

    Struct bdk_coin_select::BnbIter

    source ·
    pub struct BnbIter<'c, 'f, S> { /* private fields */ }

    Trait Implementations§

    source§

    impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S>

    §

    type Item = Option<CoinSelector<'c>>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( +BnbIter in bdk_coin_select - Rust

    Struct bdk_coin_select::BnbIter

    source ·
    pub struct BnbIter<'c, 'f, S> { /* private fields */ }

    Trait Implementations§

    source§

    impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S>

    §

    type Item = Option<CoinSelector<'c>>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where @@ -186,7 +186,14 @@ function. From<T> for U chooses to do.

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html index 8858f44b2f..888e52bff1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html @@ -1,4 +1,4 @@ -SelectionError in bdk_coin_select - Rust

    Struct bdk_coin_select::SelectionError

    source ·
    pub struct SelectionError { /* private fields */ }

    Trait Implementations§

    source§

    impl Clone for SelectionError

    source§

    fn clone(&self) -> SelectionError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelectionError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SelectionError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SelectionError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +SelectionError in bdk_coin_select - Rust

    Struct bdk_coin_select::SelectionError

    source ·
    pub struct SelectionError { /* private fields */ }

    Trait Implementations§

    source§

    impl Clone for SelectionError

    source§

    fn clone(&self) -> SelectionError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelectionError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SelectionError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SelectionError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html index 28bd785283..a5905ec09c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html @@ -7,7 +7,7 @@ }
    Expand description

    Error that occurs due to problems encountered with the file.

    Variants§

    §

    Io(Error)

    IO error, this may mean that the file is too short.

    §

    InvalidMagicBytes

    Magic bytes do not match what is expected.

    -

    Fields

    §got: Vec<u8>
    §expected: Vec<u8>

    Trait Implementations§

    source§

    impl Debug for FileError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for FileError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for FileError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for FileError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Fields

    §got: Vec<u8>
    §expected: Vec<u8>

    Trait Implementations§

    source§

    impl Debug for FileError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for FileError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for FileError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for FileError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html index 2c58c8c765..38a18a3108 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html @@ -4,7 +4,7 @@ }
    Expand description

    Error type for EntryIter.

    Variants§

    §

    Io(Error)

    Failure to read from the file.

    §

    Bincode(ErrorKind)

    Failure to decode data from the file.

    -

    Trait Implementations§

    source§

    impl Debug for IterError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for IterError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for IterError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for IterError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for IterError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for IterError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for IterError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for IterError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html index 84c23d6e0b..1a6586014d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html @@ -4,7 +4,7 @@ }
    Expand description

    Fields§

    §changeset: Option<C>

    The partially-aggregated changeset.

    §iter_error: IterError

    The error returned by EntryIter.

    -

    Trait Implementations§

    source§

    impl<C: Debug> Debug for AggregateChangesetsError<C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<C> Display for AggregateChangesetsError<C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<C: Debug> Error for AggregateChangesetsError<C>

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    §

    impl<C> Freeze for AggregateChangesetsError<C>
    where +

    Trait Implementations§

    source§

    impl<C: Debug> Debug for AggregateChangesetsError<C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<C> Display for AggregateChangesetsError<C>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<C: Debug> Error for AggregateChangesetsError<C>

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    §

    impl<C> Freeze for AggregateChangesetsError<C>
    where C: Freeze,

    §

    impl<C> !RefUnwindSafe for AggregateChangesetsError<C>

    §

    impl<C> Send for AggregateChangesetsError<C>
    where C: Send,

    §

    impl<C> Sync for AggregateChangesetsError<C>
    where C: Sync,

    §

    impl<C> Unpin for AggregateChangesetsError<C>
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html index 7156e4c72e..cfbdb787f5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html @@ -1,4 +1,4 @@ -EntryIter in bdk_file_store - Rust

    Struct bdk_file_store::EntryIter

    source ·
    pub struct EntryIter<'t, T> { /* private fields */ }
    Expand description

    Iterator over entries in a file store.

    +EntryIter in bdk_file_store - Rust

    Struct bdk_file_store::EntryIter

    source ·
    pub struct EntryIter<'t, T> { /* private fields */ }
    Expand description

    Iterator over entries in a file store.

    Reads and returns an entry each time next is called. If an error occurs while reading the iterator will yield a Result::Err(_) instead and then None for the next call to next.

    Implementations§

    source§

    impl<'t, T> EntryIter<'t, T>

    source

    pub fn new(start_pos: u64, db_file: &'t mut File) -> Self

    Trait Implementations§

    source§

    impl<'t, T> Drop for EntryIter<'t, T>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'t, T> Iterator for EntryIter<'t, T>
    where @@ -192,7 +192,14 @@ function. From<T> for U chooses to do.

    source§

    impl<I> IntoIterator for I
    where - I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorExt for I
    where + I: Iterator,

    source§

    fn transpose_into_fallible<T, E>(self) -> Convert<I>
    where + I: Iterator<Item = Result<T, E>>,

    Convert an iterator of Results into FallibleIterator by transposition

    +
    source§

    fn into_fallible<T>(self) -> IntoFallible<I>
    where + I: Iterator<Item = T>,

    Convert an iterator of anything into FallibleIterator by wrapping +into Result<T, Infallible> where Infallible is an error that can never actually +happen.

    +
    source§

    impl<I> IteratorRandom for I
    where I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html index ed4bfd39ac..4c3f6c63e9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html @@ -1,5 +1,5 @@ -bdk_hwi - Rust

    Crate bdk_hwi

    source ·
    Expand description

    HWI Signer

    -

    This crate contains HWISigner, an implementation of a TransactionSigner to be +bdk_hwi - Rust

    Crate bdk_hwi

    source ·
    Expand description

    HWI Signer

    +

    This crate contains HWISigner, an implementation of a TransactionSigner to be used with hardware wallets.

    let mut devices = HWIClient::enumerate()?;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html
    deleted file mode 100644
    index ed12ebe6c8..0000000000
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html
    +++ /dev/null
    @@ -1 +0,0 @@
    -List of all items in this crate

    List of all items

    Structs

    Enums

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html deleted file mode 100644 index 32c2fe81fd..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html +++ /dev/null @@ -1,22 +0,0 @@ -Error in bdk_sqlite - Rust

    Enum bdk_sqlite::Error

    source ·
    pub enum Error {
    -    Network {
    -        expected: Network,
    -        given: Network,
    -    },
    -    Sqlite(Error),
    -}
    Expand description

    Error that occurs while reading or writing change sets with the SQLite database.

    -

    Variants§

    §

    Network

    Invalid network, cannot change the one already stored in the database.

    -

    Fields

    §expected: Network
    §given: Network
    §

    Sqlite(Error)

    SQLite error.

    -

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html deleted file mode 100644 index b7f11fc271..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html +++ /dev/null @@ -1,4 +0,0 @@ -bdk_sqlite - Rust

    Crate bdk_sqlite

    source ·
    Expand description

    §BDK SQLite

    -

    This is a simple SQLite relational database client for persisting bdk_chain changesets.

    -

    The main structure is Store which persists CombinedChangeSet data into a SQLite database file.

    -

    Re-exports§

    • pub use rusqlite;

    Structs§

    • Persists data in to a relational schema based SQLite database file.

    Enums§

    • Error that occurs while reading or writing change sets with the SQLite database.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js deleted file mode 100644 index f6fa423217..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["Error"],"struct":["Store"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html deleted file mode 100644 index 9b86b16482..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to ../../bdk_sqlite/struct.Store.html...

    - - - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html deleted file mode 100644 index 465d8841d4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html +++ /dev/null @@ -1,35 +0,0 @@ -Store in bdk_sqlite - Rust

    Struct bdk_sqlite::Store

    source ·
    pub struct Store<K, A> { /* private fields */ }
    Expand description

    Persists data in to a relational schema based SQLite database file.

    -

    The changesets loaded or stored represent changes to keychain and blockchain data.

    -

    Implementations§

    source§

    impl<K, A> Store<K, A>
    where - K: Ord + for<'de> Deserialize<'de> + Serialize + Send, - A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,

    source

    pub fn new(conn: Connection) -> Result<Self, Error>

    Creates a new store from a [Connection].

    -
    source§

    impl<K, A> Store<K, A>
    where - K: Ord + for<'de> Deserialize<'de> + Serialize + Send, - A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,

    Functions to read and write all [CombinedChangeSet] data.

    -
    source

    pub fn write( - &mut self, - changeset: &CombinedChangeSet<K, A> -) -> Result<(), Error>

    Write the given changeset atomically.

    -
    source

    pub fn read(&mut self) -> Result<Option<CombinedChangeSet<K, A>>, Error>

    Read the entire database and return the aggregate [CombinedChangeSet].

    -

    Trait Implementations§

    source§

    impl<K, A> Debug for Store<K, A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<K, A> !Freeze for Store<K, A>

    §

    impl<K, A> RefUnwindSafe for Store<K, A>
    where - K: RefUnwindSafe, - A: RefUnwindSafe,

    §

    impl<K, A> Send for Store<K, A>
    where - K: Send, - A: Send,

    §

    impl<K, A> Sync for Store<K, A>
    where - K: Sync, - A: Sync,

    §

    impl<K, A> Unpin for Store<K, A>
    where - K: Unpin, - A: Unpin,

    §

    impl<K, A> UnwindSafe for Store<K, A>
    where - K: UnwindSafe, - A: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html index 065e10c348..5463a26adf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html @@ -2,7 +2,7 @@ SigHashP2wpkh(P2wpkhError), SigHashTaproot(TaprootError), DerivationError(Error), -}

    Variants§

    §

    SigHashP2wpkh(P2wpkhError)

    §

    SigHashTaproot(TaprootError)

    §

    DerivationError(Error)

    Trait Implementations§

    source§

    impl Clone for SigningError

    source§

    fn clone(&self) -> SigningError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SigningError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SigningError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SigningError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SigningError

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<P2wpkhError> for SigningError

    source§

    fn from(v: P2wpkhError) -> Self

    Converts to this type from the input type.
    source§

    impl From<TaprootError> for SigningError

    source§

    fn from(v: TaprootError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +}

    Variants§

    §

    SigHashP2wpkh(P2wpkhError)

    §

    SigHashTaproot(TaprootError)

    §

    DerivationError(Error)

    Trait Implementations§

    source§

    impl Clone for SigningError

    source§

    fn clone(&self) -> SigningError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SigningError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SigningError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SigningError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SigningError

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<P2wpkhError> for SigningError

    source§

    fn from(v: P2wpkhError) -> Self

    Converts to this type from the input type.
    source§

    impl From<TaprootError> for SigningError

    source§

    fn from(v: TaprootError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html index f9e253d920..4f77418770 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Aliases

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Aliases

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Error.html new file mode 100644 index 0000000000..f16de0323a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Error.html @@ -0,0 +1,28 @@ +Error in bdk_wallet::coin_selection - Rust

    Enum bdk_wallet::coin_selection::Error

    source ·
    pub enum Error {
    +    InsufficientFunds {
    +        needed: u64,
    +        available: u64,
    +    },
    +    BnBNoExactMatch,
    +    BnBTotalTriesExceeded,
    +}
    Expand description

    Errors that can be thrown by the coin_selection module

    +

    Variants§

    §

    InsufficientFunds

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    +

    Fields

    §needed: u64

    Sats needed for some transaction

    +
    §available: u64

    Sats available for spending

    +
    §

    BnBNoExactMatch

    Branch and bound coin selection tries to avoid needing a change by finding the right inputs for +the desired outputs plus fee, if there is not such combination this error is thrown

    +
    §

    BnBTotalTriesExceeded

    Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow +exponentially, thus a limit is set, and when hit, this error is thrown

    +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Excess.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Excess.html new file mode 100644 index 0000000000..65ca7727d1 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/enum.Excess.html @@ -0,0 +1,30 @@ +Excess in bdk_wallet::coin_selection - Rust

    Enum bdk_wallet::coin_selection::Excess

    source ·
    pub enum Excess {
    +    NoChange {
    +        dust_threshold: u64,
    +        remaining_amount: u64,
    +        change_fee: u64,
    +    },
    +    Change {
    +        amount: u64,
    +        fee: u64,
    +    },
    +}
    Expand description

    Remaining amount after performing coin selection

    +

    Variants§

    §

    NoChange

    It’s not possible to create spendable output from excess using the current drain output

    +

    Fields

    §dust_threshold: u64

    Threshold to consider amount as dust for this particular change script_pubkey

    +
    §remaining_amount: u64

    Exceeding amount of current selection over outgoing value and fee costs

    +
    §change_fee: u64

    The calculated fee for the drain TxOut with the selected script_pubkey

    +
    §

    Change

    It’s possible to create spendable output from excess using the current drain output

    +

    Fields

    §amount: u64

    Effective amount available to create change after deducting the change output fee

    +
    §fee: u64

    The deducted change output fee

    +

    Trait Implementations§

    source§

    impl Debug for Excess

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/fn.decide_change.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/fn.decide_change.html new file mode 100644 index 0000000000..85aeea280d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/fn.decide_change.html @@ -0,0 +1,11 @@ +decide_change in bdk_wallet::coin_selection - Rust

    Function bdk_wallet::coin_selection::decide_change

    source ·
    pub fn decide_change(
    +    remaining_amount: u64,
    +    fee_rate: FeeRate,
    +    drain_script: &Script
    +) -> Excess
    Expand description

    Decide if change can be created

    +
      +
    • remaining_amount: the amount in which the selected coins exceed the target amount
    • +
    • fee_rate: required fee rate for the current selection
    • +
    • drain_script: script to consider change creation
    • +
    +
    \ 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 new file mode 100644 index 0000000000..66ccb2a071 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/index.html @@ -0,0 +1,73 @@ +bdk_wallet::coin_selection - Rust

    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 +TxBuilder. DefaultCoinSelectionAlgorithm aliases the coin selection algorithm that will +be used if it is not explicitly set.

    +

    §Example

    +
    #[derive(Debug)]
    +struct AlwaysSpendEverything;
    +
    +impl CoinSelectionAlgorithm for AlwaysSpendEverything {
    +    fn coin_select(
    +        &self,
    +        required_utxos: Vec<WeightedUtxo>,
    +        optional_utxos: Vec<WeightedUtxo>,
    +        fee_rate: FeeRate,
    +        target_amount: u64,
    +        drain_script: &Script,
    +    ) -> Result<CoinSelectionResult, coin_selection::Error> {
    +        let mut selected_amount = 0;
    +        let mut additional_weight = Weight::ZERO;
    +        let all_utxos_selected = required_utxos
    +            .into_iter()
    +            .chain(optional_utxos)
    +            .scan(
    +                (&mut selected_amount, &mut additional_weight),
    +                |(selected_amount, additional_weight), weighted_utxo| {
    +                    **selected_amount += weighted_utxo.utxo.txout().value.to_sat();
    +                    **additional_weight += TxIn::default()
    +                        .segwit_weight()
    +                        .checked_add(weighted_utxo.satisfaction_weight)
    +                        .expect("`Weight` addition should not cause an integer overflow");
    +                    Some(weighted_utxo.utxo)
    +                },
    +            )
    +            .collect::<Vec<_>>();
    +        let additional_fees = (fee_rate * additional_weight).to_sat();
    +        let amount_needed_with_fees = additional_fees + target_amount;
    +        if selected_amount < amount_needed_with_fees {
    +            return Err(coin_selection::Error::InsufficientFunds {
    +                needed: amount_needed_with_fees,
    +                available: selected_amount,
    +            });
    +        }
    +
    +        let remaining_amount = selected_amount - amount_needed_with_fees;
    +
    +        let excess = decide_change(remaining_amount, fee_rate, drain_script);
    +
    +        Ok(CoinSelectionResult {
    +            selected: all_utxos_selected,
    +            fee_amount: additional_fees,
    +            excess,
    +        })
    +    }
    +}
    +
    +// create wallet, sync, ...
    +
    +let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    .unwrap()
    +    .require_network(Network::Testnet)
    +    .unwrap();
    +let psbt = {
    +    let mut builder = wallet.build_tx().coin_selection(AlwaysSpendEverything);
    +    builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    +    builder.finish()?
    +};
    +
    +// inspect, sign, broadcast, ...
    +
    +

    Structs§

    Enums§

    Traits§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/sidebar-items.js new file mode 100644 index 0000000000..c2cddb4015 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["Error","Excess"],"fn":["decide_change"],"struct":["BranchAndBoundCoinSelection","CoinSelectionResult","LargestFirstCoinSelection","OldestFirstCoinSelection"],"trait":["CoinSelectionAlgorithm"],"type":["DefaultCoinSelectionAlgorithm"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.html new file mode 100644 index 0000000000..3a8d64c7cf --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.html @@ -0,0 +1,23 @@ +BranchAndBoundCoinSelection in bdk_wallet::coin_selection - Rust
    pub struct BranchAndBoundCoinSelection { /* private fields */ }
    Expand description

    Branch and bound coin selection

    +

    Code adapted from Bitcoin Core’s implementation and from Mark Erhardt Master’s Thesis: http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf

    +

    Implementations§

    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    +

    Trait Implementations§

    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.CoinSelectionResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.CoinSelectionResult.html new file mode 100644 index 0000000000..0a4b0b0fc5 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.CoinSelectionResult.html @@ -0,0 +1,22 @@ +CoinSelectionResult in bdk_wallet::coin_selection - Rust

    Struct bdk_wallet::coin_selection::CoinSelectionResult

    source ·
    pub struct CoinSelectionResult {
    +    pub selected: Vec<Utxo>,
    +    pub fee_amount: u64,
    +    pub excess: Excess,
    +}
    Expand description

    Result of a successful coin selection

    +

    Fields§

    §selected: Vec<Utxo>

    List of outputs selected for use as inputs

    +
    §fee_amount: u64

    Total fee amount for the selected utxos in satoshis

    +
    §excess: Excess

    Remaining amount after deducing fees and outgoing outputs

    +

    Implementations§

    source§

    impl CoinSelectionResult

    source

    pub fn selected_amount(&self) -> u64

    The total value of the inputs selected.

    +
    source

    pub fn local_selected_amount(&self) -> u64

    The total value of the inputs selected from the local wallet.

    +

    Trait Implementations§

    source§

    impl Debug for CoinSelectionResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.LargestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.LargestFirstCoinSelection.html new file mode 100644 index 0000000000..355a4887de --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.LargestFirstCoinSelection.html @@ -0,0 +1,23 @@ +LargestFirstCoinSelection in bdk_wallet::coin_selection - Rust
    pub struct LargestFirstCoinSelection;
    Expand description

    Simple and dumb coin selection

    +

    This coin selection algorithm sorts the available UTXOs by value and then picks them starting +from the largest ones until the required amount is reached.

    +

    Trait Implementations§

    source§

    impl Clone for LargestFirstCoinSelection

    source§

    fn clone(&self) -> LargestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for LargestFirstCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for LargestFirstCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for LargestFirstCoinSelection

    source§

    fn default() -> LargestFirstCoinSelection

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

    impl Copy for LargestFirstCoinSelection

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.OldestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.OldestFirstCoinSelection.html new file mode 100644 index 0000000000..86d7b09dc2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/struct.OldestFirstCoinSelection.html @@ -0,0 +1,23 @@ +OldestFirstCoinSelection in bdk_wallet::coin_selection - Rust

    Struct bdk_wallet::coin_selection::OldestFirstCoinSelection

    source ·
    pub struct OldestFirstCoinSelection;
    Expand description

    OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next

    +

    This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting +from the oldest ones until the required amount is reached.

    +

    Trait Implementations§

    source§

    impl Clone for OldestFirstCoinSelection

    source§

    fn clone(&self) -> OldestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for OldestFirstCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for OldestFirstCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OldestFirstCoinSelection

    source§

    fn default() -> OldestFirstCoinSelection

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

    impl Copy for OldestFirstCoinSelection

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/trait.CoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/trait.CoinSelectionAlgorithm.html new file mode 100644 index 0000000000..ccd8957d56 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/trait.CoinSelectionAlgorithm.html @@ -0,0 +1,35 @@ +CoinSelectionAlgorithm in bdk_wallet::coin_selection - Rust

    Trait bdk_wallet::coin_selection::CoinSelectionAlgorithm

    source ·
    pub trait CoinSelectionAlgorithm: Debug {
    +    // Required method
    +    fn coin_select(
    +        &self,
    +        required_utxos: Vec<WeightedUtxo>,
    +        optional_utxos: Vec<WeightedUtxo>,
    +        fee_rate: FeeRate,
    +        target_amount: u64,
    +        drain_script: &Script
    +    ) -> Result<CoinSelectionResult, Error>;
    +}
    Expand description

    Trait for generalized coin selection algorithms

    +

    This trait can be implemented to make the Wallet use a customized coin +selection algorithm when it creates transactions.

    +

    For an example see this module’s documentation.

    +

    Required Methods§

    source

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection

    +
      +
    • database: a reference to the wallet’s database that can be used to lookup additional +details for a specific UTXO
    • +
    • required_utxos: the utxos that must be spent regardless of target_amount with their +weight cost
    • +
    • optional_utxos: the remaining available utxos to satisfy target_amount with their +weight cost
    • +
    • fee_rate: fee rate to use
    • +
    • target_amount: the outgoing amount in satoshis and the fees already +accumulated from added outputs and transaction’s header.
    • +
    • drain_script: the script to use in case of change
    • +
    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html new file mode 100644 index 0000000000..b59eaf35f9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html @@ -0,0 +1,3 @@ +DefaultCoinSelectionAlgorithm in bdk_wallet::coin_selection - Rust

    Type Alias bdk_wallet::coin_selection::DefaultCoinSelectionAlgorithm

    source ·
    pub type DefaultCoinSelectionAlgorithm = BranchAndBoundCoinSelection;
    Expand description

    Default coin selection algorithm used by TxBuilder if not +overridden

    +

    Aliased Type§

    struct DefaultCoinSelectionAlgorithm { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html index 5d471433e3..5dd64e7525 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html @@ -1,4 +1,4 @@ -Descriptor in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Descriptor

    pub enum Descriptor<Pk>
    where +Descriptor in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Descriptor

    pub enum Descriptor<Pk>
    where Pk: MiniscriptKey,
    { Bare(Bare<Pk>), Pkh(Pkh<Pk>), @@ -245,7 +245,7 @@ descriptor at index 0.
    Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl<Pk> Display for Descriptor<Pk>
    where Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl ExtractPolicy for Descriptor<DescriptorPublicKey>

    source§

    fn extract_policy( &self, - signers: &SignersContainer, + signers: &SignersContainer, build_sat: BuildSatisfaction<'_>, secp: &Secp256k1<All> ) -> Result<Option<Policy>, Error>

    Extract the spending policy
    §

    impl<Pk> ForEachKey<Pk> for Descriptor<Pk>
    where @@ -255,12 +255,12 @@ the predicate returned true for every key

    FnMut(&'a Pk) -> bool, Pk: 'a,

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

    impl<Pk> From<Bare<Pk>> for Descriptor<Pk>
    where - Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where - Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where - Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where Pk: MiniscriptKey,

    §

    fn from(inner: Tr<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Wpkh<Pk>> for Descriptor<Pk>
    where - Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where - Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where Pk: FromStrKey,

    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    fn from_str(s: &str) -> Result<Descriptor<Pk>, Error>

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

    impl<Pk> FromTree for Descriptor<Pk>
    where Pk: FromStrKey,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Descriptor<Pk>, Error>

    Parse an expression tree into a descriptor.

    §

    impl<Pk> Hash for Descriptor<Pk>
    where @@ -320,7 +320,9 @@ operator. UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html index 775dde51b2..70b58a65f7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html @@ -1,4 +1,4 @@ -DescriptorPublicKey in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::DescriptorPublicKey

    pub enum DescriptorPublicKey {
    +DescriptorPublicKey in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::DescriptorPublicKey

    pub enum DescriptorPublicKey {
         Single(SinglePub),
         XPub(DescriptorXKey<Xpub>),
         MultiXPub(DescriptorMultiXKey<Xpub>),
    @@ -71,7 +71,9 @@ operator. Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for DescriptorPublicKey

    §

    impl StructuralPartialEq for DescriptorPublicKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    §

    impl<T> FromStrKey for T
    where T: MiniscriptKey + FromStr, <T as MiniscriptKey>::Sha256: FromStr, diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html index 45513d6ff1..a145c84ea1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html @@ -1,4 +1,4 @@ -Legacy in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Legacy

    pub enum Legacy {}
    Expand description

    Legacy ScriptContext +Legacy in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Legacy

    pub enum Legacy {}
    Expand description

    Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under Bare ScriptContext

    @@ -82,7 +82,9 @@ ones for satisfaction
    Pk: MiniscriptKey,

    Check top level consensus rules.
    §

    impl Eq for Legacy

    §

    impl StructuralPartialEq for Legacy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<Ctx> ExtScriptContext for Ctx
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<Ctx> ExtScriptContext for Ctx
    where Ctx: ScriptContext + 'static,

    source§

    fn as_enum() -> ScriptContextEnum

    source§

    fn is_legacy() -> bool

    Returns whether the script context is Legacy
    source§

    fn is_segwit_v0() -> bool

    Returns whether the script context is Segwitv0
    source§

    fn is_taproot() -> bool

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

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html index 4f02256169..3add8e390d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html @@ -1,4 +1,4 @@ -Segwitv0 in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Segwitv0

    pub enum Segwitv0 {}
    Expand description

    Segwitv0 ScriptContext

    +Segwitv0 in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Segwitv0

    pub enum Segwitv0 {}
    Expand description

    Segwitv0 ScriptContext

    Trait Implementations§

    §

    impl Clone for Segwitv0

    §

    fn clone(&self) -> Segwitv0

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl Debug for Segwitv0

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl Hash for Segwitv0

    §

    fn hash<__H>(&self, state: &mut __H)
    where __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where H: Hasher, @@ -79,7 +79,9 @@ ones for satisfaction

    Pk: MiniscriptKey,
    Check top level consensus rules.
    §

    impl Eq for Segwitv0

    §

    impl StructuralPartialEq for Segwitv0

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<Ctx> ExtScriptContext for Ctx
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<Ctx> ExtScriptContext for Ctx
    where Ctx: ScriptContext + 'static,

    source§

    fn as_enum() -> ScriptContextEnum

    source§

    fn is_legacy() -> bool

    Returns whether the script context is Legacy
    source§

    fn is_segwit_v0() -> bool

    Returns whether the script context is Segwitv0
    source§

    fn is_taproot() -> bool

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

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html index f296084e09..78fdeeac98 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html @@ -1,4 +1,4 @@ -Error in bdk_wallet::descriptor::error - Rust

    Enum bdk_wallet::descriptor::error::Error

    source ·
    pub enum Error {
    +Error in bdk_wallet::descriptor::error - Rust

    Enum bdk_wallet::descriptor::error::Error

    source ·
    pub enum Error {
     
    Show 13 variants InvalidHdKeyPath, InvalidDescriptorChecksum, HardenedDerivationXpub, @@ -26,7 +26,9 @@
    §

    Miniscript(Error)

    Miniscript error

    §

    Hex(HexToBytesError)

    Hex decoding error

    §

    ExternalAndInternalAreTheSame

    The provided wallet descriptors are identical

    -

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<HexToBytesError> for Error

    source§

    fn from(err: HexToBytesError) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.
    source§

    impl From<ParsePublicKeyError> for Error

    source§

    fn from(err: ParsePublicKeyError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<HexToBytesError> for Error

    source§

    fn from(err: HexToBytesError) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.
    source§

    impl From<ParsePublicKeyError> for Error

    source§

    fn from(err: ParsePublicKeyError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Error

    source§

    fn eq(&self, other: &Error) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for Error

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html index 27eb1909af..f4701547f7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html @@ -1,4 +1,4 @@ -bdk_wallet::descriptor - Rust

    Module bdk_wallet::descriptor

    source ·
    Expand description

    Descriptors

    +bdk_wallet::descriptor - Rust

    Module bdk_wallet::descriptor

    source ·
    Expand description

    Descriptors

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

    Re-exports§

    Modules§

    Structs§

    • The top-level miniscript abstract syntax tree (AST).

    Enums§

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for PkOrF

    source§

    impl StructuralPartialEq for PkOrF

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html index 2852b2f42c..c42ddaebec 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html @@ -1,4 +1,4 @@ -PolicyError in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::PolicyError

    source ·
    pub enum PolicyError {
    +PolicyError in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::PolicyError

    source ·
    pub enum PolicyError {
         NotEnoughItemsSelected(String),
         IndexOutOfRange(usize),
         AddOnLeaf,
    @@ -12,12 +12,14 @@
     
    §

    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§

    source§

    impl Debug for PolicyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for PolicyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for PolicyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for PolicyError

    source§

    fn eq(&self, other: &PolicyError) -> bool

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

    Trait Implementations§

    source§

    impl Debug for PolicyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for PolicyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for PolicyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for PolicyError

    source§

    fn eq(&self, other: &PolicyError) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for PolicyError

    source§

    impl StructuralPartialEq for PolicyError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html index d015a0d4e5..9aed897a37 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html @@ -1,4 +1,4 @@ -Satisfaction in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::Satisfaction

    source ·
    pub enum Satisfaction {
    +Satisfaction in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::Satisfaction

    source ·
    pub enum Satisfaction {
         Partial {
             n: usize,
             m: usize,
    @@ -40,7 +40,9 @@ sufficient, and should not be overridden without very good reason.
    Serializer,
    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Satisfaction

    source§

    impl StructuralPartialEq for Satisfaction

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html index 33d67c2363..a4fc3eb2f1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html @@ -1,4 +1,4 @@ -SatisfiableItem in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::SatisfiableItem

    source ·
    pub enum SatisfiableItem {
    +SatisfiableItem in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::SatisfiableItem

    source ·
    pub enum SatisfiableItem {
         EcdsaSignature(PkOrF),
         SchnorrSignature(PkOrF),
         Sha256Preimage {
    @@ -56,7 +56,9 @@ sufficient, and should not be overridden without very good reason.
    Serializer,
    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for SatisfiableItem

    source§

    impl StructuralPartialEq for SatisfiableItem

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html index fdce472abe..9abc6232d4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html @@ -1,4 +1,4 @@ -Condition in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::descriptor::policy::Condition

    source ·
    pub struct Condition {
    +Condition in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::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 @@ -16,7 +16,9 @@ operator. Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for Condition

    source§

    impl Eq for Condition

    source§

    impl StructuralPartialEq for Condition

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html index 757f97f9b5..e6b3fe8af7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html @@ -1,4 +1,4 @@ -Policy in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::descriptor::policy::Policy

    source ·
    pub struct Policy {
    +Policy in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::descriptor::policy::Policy

    source ·
    pub struct Policy {
         pub id: String,
         pub item: SatisfiableItem,
         pub satisfaction: Satisfaction,
    @@ -24,7 +24,9 @@ sufficient, and should not be overridden without very good reason.
    Serializer,
    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Policy

    source§

    impl StructuralPartialEq for Policy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html index fb0a16e9e7..5512993ff5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html @@ -1,4 +1,4 @@ -Miniscript in bdk_wallet::descriptor - Rust

    Struct bdk_wallet::descriptor::Miniscript

    pub struct Miniscript<Pk, Ctx>
    where +Miniscript in bdk_wallet::descriptor - Rust

    Struct bdk_wallet::descriptor::Miniscript

    pub struct Miniscript<Pk, Ctx>
    where Pk: MiniscriptKey, Ctx: ScriptContext,
    { pub node: Terminal<Pk, Ctx>, @@ -194,7 +194,7 @@ bitcoin network. This can occur if the miniscript contains:

    Pk: MiniscriptKey, Ctx: ScriptContext,
    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    source§

    impl<Ctx: ScriptContext + 'static> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx>

    source§

    fn extract_policy( &self, - signers: &SignersContainer, + signers: &SignersContainer, build_sat: BuildSatisfaction<'_>, secp: &Secp256k1<All> ) -> Result<Option<Policy>, Error>

    Extract the spending policy
    §

    impl<Pk, Ctx> ForEachKey<Pk> for Miniscript<Pk, Ctx>
    where @@ -300,7 +300,9 @@ for Pk is provided by [Translator]

    Ctx: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html index 89ade38528..8b95f56861 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html @@ -1,4 +1,4 @@ -bdk_wallet::descriptor::template - Rust

    Module bdk_wallet::descriptor::template

    source ·
    Expand description

    Descriptor templates

    +bdk_wallet::descriptor::template - Rust

    Module bdk_wallet::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§

    • 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 sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))
    • BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))
    • BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)
    • BIP84 public template. Expands to wpkh(key/{0,1}/*)
    • BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)
    • BIP86 public template. Expands to tr(key/{0,1}/*)
    • P2PKH template. Expands to a descriptor pkh(key)
    • P2TR template. Expands to a descriptor tr(key)
    • P2WPKH template. Expands to a descriptor wpkh(key)
    • P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    Traits§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html index c75a91ac2d..434568d503 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html @@ -1,19 +1,17 @@ -Bip44 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44

    source ·
    pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
    Expand description

    BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)

    +Bip44 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44

    source ·
    pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
    Expand description

    BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    See Bip44Public for a template that can work with a xpub/tpub.

    §Example

    use bdk_wallet::template::Bip44;
     
     let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -let mut wallet = Wallet::new(
    -    Bip44(key.clone(), KeychainKind::External),
    -    Bip44(key, KeychainKind::Internal),
    -    Network::Testnet,
    -)?;
    +let mut wallet = Wallet::create(Bip44(key.clone(), KeychainKind::External), Bip44(key, KeychainKind::Internal))
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
     
     assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
     assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44<K>

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Legacy>> Clone for Bip44<K>

    source§

    fn clone(&self) -> Bip44<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Legacy>> Debug for Bip44<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip44<K>
    where @@ -35,7 +33,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html index 060d18ba18..1f9bcb4d42 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html @@ -1,4 +1,4 @@ -Bip44Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44Public

    source ·
    pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP44 public template. Expands to pkh(key/{0,1}/*)

    +Bip44Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44Public

    source ·
    pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP44 public template. Expands to pkh(key/{0,1}/*)

    This assumes that the key used has already been derived with m/44'/0'/0' for Mainnet or m/44'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    See Bip44 for a template that does the full derivation, but requires private data @@ -8,15 +8,16 @@ for the key.

    let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?; let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; -let mut wallet = Wallet::new( +let mut wallet = Wallet::create( Bip44Public(key.clone(), fingerprint, KeychainKind::External), Bip44Public(key, fingerprint, KeychainKind::Internal), - Network::Testnet, -)?; + ) + .network(Network::Testnet) +.create_wallet_no_persist()?; assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR"); assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K>

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Legacy>> Clone for Bip44Public<K>

    source§

    fn clone(&self) -> Bip44Public<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Legacy>> Debug for Bip44Public<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip44Public<K>
    where @@ -38,7 +39,8 @@ for the key.

    self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html index d3b0d137e9..10c4786061 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html @@ -1,19 +1,20 @@ -Bip49 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49

    source ·
    pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))

    +Bip49 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49

    source ·
    pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    See Bip49Public for a template that can work with a xpub/tpub.

    §Example

    use bdk_wallet::template::Bip49;
     
     let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -let mut wallet = Wallet::new(
    +let mut wallet = Wallet::create(
         Bip49(key.clone(), KeychainKind::External),
         Bip49(key, KeychainKind::Internal),
    -    Network::Testnet,
    -)?;
    +)
    +.network(Network::Testnet)
    +.create_wallet_no_persist()?;
     
     assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
     assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K>

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49<K>

    source§

    fn clone(&self) -> Bip49<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip49<K>
    where @@ -35,7 +36,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html index 73be1d7099..86ca6a5879 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html @@ -1,4 +1,4 @@ -Bip49Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49Public

    source ·
    pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))

    +Bip49Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49Public

    source ·
    pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))

    This assumes that the key used has already been derived with m/49'/0'/0' for Mainnet or m/49'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    See Bip49 for a template that does the full derivation, but requires private data @@ -8,15 +8,16 @@ for the key.

    let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?; let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; -let mut wallet = Wallet::new( +let mut wallet = Wallet::create( Bip49Public(key.clone(), fingerprint, KeychainKind::External), Bip49Public(key, fingerprint, KeychainKind::Internal), - Network::Testnet, -)?; +) +.network(Network::Testnet) +.create_wallet_no_persist()?; assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt"); assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K>

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49Public<K>

    source§

    fn clone(&self) -> Bip49Public<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49Public<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip49Public<K>
    where @@ -38,7 +39,8 @@ for the key.

    self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html index b13a167e8c..31dcd180db 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html @@ -1,19 +1,20 @@ -Bip84 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84

    source ·
    pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)

    +Bip84 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84

    source ·
    pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    See Bip84Public for a template that can work with a xpub/tpub.

    §Example

    use bdk_wallet::template::Bip84;
     
     let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -let mut wallet = Wallet::new(
    +let mut wallet = Wallet::create(
         Bip84(key.clone(), KeychainKind::External),
         Bip84(key, KeychainKind::Internal),
    -    Network::Testnet,
    -)?;
    +)
    +.network(Network::Testnet)
    +.create_wallet_no_persist()?;
     
     assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
     assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84<K>

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip84<K>

    source§

    fn clone(&self) -> Bip84<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip84<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip84<K>
    where @@ -35,7 +36,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html index 51c17b7564..e1dcb909ec 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html @@ -1,4 +1,4 @@ -Bip84Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84Public

    source ·
    pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP84 public template. Expands to wpkh(key/{0,1}/*)

    +Bip84Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84Public

    source ·
    pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP84 public template. Expands to wpkh(key/{0,1}/*)

    This assumes that the key used has already been derived with m/84'/0'/0' for Mainnet or m/84'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    See Bip84 for a template that does the full derivation, but requires private data @@ -8,15 +8,16 @@ for the key.

    let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?; let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; -let mut wallet = Wallet::new( +let mut wallet = Wallet::create( Bip84Public(key.clone(), fingerprint, KeychainKind::External), Bip84Public(key, fingerprint, KeychainKind::Internal), - Network::Testnet, -)?; +) +.network(Network::Testnet) +.create_wallet_no_persist()?; assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7"); assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84Public<K>

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip84Public<K>

    source§

    fn clone(&self) -> Bip84Public<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip84Public<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84Public<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip84Public<K>
    where @@ -38,7 +39,8 @@ for the key.

    self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html index 125e9d2c95..2a60437a19 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html @@ -1,19 +1,20 @@ -Bip86 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86

    source ·
    pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
    Expand description

    BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)

    +Bip86 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86

    source ·
    pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
    Expand description

    BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    See Bip86Public for a template that can work with a xpub/tpub.

    §Example

    use bdk_wallet::template::Bip86;
     
     let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -let mut wallet = Wallet::new(
    +let mut wallet = Wallet::create(
         Bip86(key.clone(), KeychainKind::External),
         Bip86(key, KeychainKind::Internal),
    -    Network::Testnet,
    -)?;
    +)
    +.network(Network::Testnet)
    +.create_wallet_no_persist()?;
     
     assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
     assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K>

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Tap>> Clone for Bip86<K>

    source§

    fn clone(&self) -> Bip86<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Tap>> Debug for Bip86<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip86<K>
    where @@ -35,7 +36,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html index 71dd9ce435..cf592f7856 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html @@ -1,4 +1,4 @@ -Bip86Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86Public

    source ·
    pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP86 public template. Expands to tr(key/{0,1}/*)

    +Bip86Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86Public

    source ·
    pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP86 public template. Expands to tr(key/{0,1}/*)

    This assumes that the key used has already been derived with m/86'/0'/0' for Mainnet or m/86'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    See Bip86 for a template that does the full derivation, but requires private data @@ -8,15 +8,16 @@ for the key.

    let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?; let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; -let mut wallet = Wallet::new( +let mut wallet = Wallet::create( Bip86Public(key.clone(), fingerprint, KeychainKind::External), Bip86Public(key, fingerprint, KeychainKind::Internal), - Network::Testnet, -)?; +) +.network(Network::Testnet) +.create_wallet_no_persist()?; assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37"); assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<K>

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: Clone + DerivableKey<Tap>> Clone for Bip86Public<K>

    source§

    fn clone(&self) -> Bip86Public<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + DerivableKey<Tap>> Debug for Bip86Public<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<K>

    source§

    fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip86Public<K>
    where @@ -38,7 +39,8 @@ for the key.

    self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html index 9760e74bc7..51ddc1c37e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html @@ -1,4 +1,4 @@ -P2Pkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Pkh

    source ·
    pub struct P2Pkh<K: IntoDescriptorKey<Legacy>>(pub K);
    Expand description

    P2PKH template. Expands to a descriptor pkh(key)

    +P2Pkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Pkh

    source ·
    pub struct P2Pkh<K: IntoDescriptorKey<Legacy>>(pub K);
    Expand description

    P2PKH template. Expands to a descriptor pkh(key)

    §Example

    use bdk_wallet::template::P2Pkh;
     
    @@ -6,7 +6,9 @@
         bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let key_internal =
         bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -let mut wallet = Wallet::new(P2Pkh(key_external), P2Pkh(key_internal), Network::Testnet)?;
    +let mut wallet = Wallet::create(P2Pkh(key_external), P2Pkh(key_internal))
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
     
     assert_eq!(
         wallet
    @@ -14,7 +16,7 @@
             .to_string(),
         "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2Pkh<K>

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: Clone + IntoDescriptorKey<Legacy>> Clone for P2Pkh<K>

    source§

    fn clone(&self) -> P2Pkh<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + IntoDescriptorKey<Legacy>> Debug for P2Pkh<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2Pkh<K>

    source§

    fn build( self, _network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Pkh<K>
    where @@ -36,7 +38,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html index b5561a8441..e8b75469e9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html @@ -1,4 +1,4 @@ -P2TR in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2TR

    source ·
    pub struct P2TR<K: IntoDescriptorKey<Tap>>(pub K);
    Expand description

    P2TR template. Expands to a descriptor tr(key)

    +P2TR in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2TR

    source ·
    pub struct P2TR<K: IntoDescriptorKey<Tap>>(pub K);
    Expand description

    P2TR template. Expands to a descriptor tr(key)

    §Example

    use bdk_wallet::template::P2TR;
     
    @@ -6,7 +6,9 @@
         bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let key_internal =
         bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -let mut wallet = Wallet::new(P2TR(key_external), P2TR(key_internal), Network::Testnet)?;
    +let mut wallet = Wallet::create(P2TR(key_external), P2TR(key_internal))
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
     
     assert_eq!(
         wallet
    @@ -14,7 +16,7 @@
             .to_string(),
         "tb1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xq7hps46"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Tap>> DescriptorTemplate for P2TR<K>

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: Clone + IntoDescriptorKey<Tap>> Clone for P2TR<K>

    source§

    fn clone(&self) -> P2TR<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + IntoDescriptorKey<Tap>> Debug for P2TR<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: IntoDescriptorKey<Tap>> DescriptorTemplate for P2TR<K>

    source§

    fn build( self, _network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2TR<K>
    where @@ -36,7 +38,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html index 3be107bf68..666721ee0f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html @@ -1,4 +1,4 @@ -P2Wpkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh

    source ·
    pub struct P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH template. Expands to a descriptor wpkh(key)

    +P2Wpkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh

    source ·
    pub struct P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH template. Expands to a descriptor wpkh(key)

    §Example

    use bdk_wallet::template::P2Wpkh;
     
    @@ -6,7 +6,9 @@
         bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let key_internal =
         bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -let mut wallet = Wallet::new(P2Wpkh(key_external), P2Wpkh(key_internal), Network::Testnet)?;
    +let mut wallet = Wallet::create(P2Wpkh(key_external), P2Wpkh(key_internal))
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
     
     assert_eq!(
         wallet
    @@ -14,7 +16,7 @@
             .to_string(),
         "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh<K>

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: Clone + IntoDescriptorKey<Segwitv0>> Clone for P2Wpkh<K>

    source§

    fn clone(&self) -> P2Wpkh<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + IntoDescriptorKey<Segwitv0>> Debug for P2Wpkh<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh<K>

    source§

    fn build( self, _network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Wpkh<K>
    where @@ -36,7 +38,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html index b34581c829..aba6dd7cc4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html @@ -1,4 +1,4 @@ -P2Wpkh_P2Sh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh_P2Sh

    source ·
    pub struct P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    +P2Wpkh_P2Sh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh_P2Sh

    source ·
    pub struct P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    §Example

    use bdk_wallet::template::P2Wpkh_P2Sh;
     
    @@ -6,11 +6,9 @@
         bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let key_internal =
         bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -let mut wallet = Wallet::new(
    -    P2Wpkh_P2Sh(key_external),
    -    P2Wpkh_P2Sh(key_internal),
    -    Network::Testnet,
    -)?;
    +let mut wallet = Wallet::create(P2Wpkh_P2Sh(key_external), P2Wpkh_P2Sh(key_internal))
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
     
     assert_eq!(
         wallet
    @@ -18,7 +16,7 @@
             .to_string(),
         "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh_P2Sh<K>

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: Clone + IntoDescriptorKey<Segwitv0>> Clone for P2Wpkh_P2Sh<K>

    source§

    fn clone(&self) -> P2Wpkh_P2Sh<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug + IntoDescriptorKey<Segwitv0>> Debug for P2Wpkh_P2Sh<K>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh_P2Sh<K>

    source§

    fn build( self, _network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Wpkh_P2Sh<K>
    where @@ -40,7 +38,8 @@ self, secp: &Secp256k1<All>, network: Network -) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

    impl<T, U> TryFrom<U> for T

    Convert to wallet descriptor
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html index 86c2a1defa..a50b4e7eb1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html @@ -6,7 +6,7 @@ ) -> Result<DescriptorTemplateOut, DescriptorError>; }
    Expand description

    Trait for descriptor templates that can be built into a full descriptor

    Since IntoWalletDescriptor is implemented for any DescriptorTemplate, they can also be -passed directly to the Wallet constructor.

    +passed directly to the Wallet constructor.

    §Example

    use bdk_wallet::descriptor::error::Error as DescriptorError;
     use bdk_wallet::keys::{IntoDescriptorKey, KeyError};
    @@ -25,4 +25,4 @@ passed directly to the Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html index 927d8c69e6..e5e9c57fd0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html @@ -1,5 +1,5 @@ DescriptorTemplateOut in bdk_wallet::descriptor::template - Rust

    Type Alias bdk_wallet::descriptor::template::DescriptorTemplateOut

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

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

    -

    Trait Implementations§

    source§

    impl IntoWalletDescriptor for DescriptorTemplateOut

    Trait Implementations§

    source§

    impl IntoWalletDescriptor for DescriptorTemplateOut

    source§

    fn into_wallet_descriptor( self, _secp: &Secp256k1<All>, network: Network diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html index 0f63dafda2..5161d36333 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html @@ -1,15 +1,15 @@ -ExtractPolicy in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::ExtractPolicy

    source ·
    pub trait ExtractPolicy {
    +ExtractPolicy in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::ExtractPolicy

    source ·
    pub trait ExtractPolicy {
         // Required method
         fn extract_policy(
             &self,
    -        signers: &SignersContainer,
    +        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§

    Required Methods§

    source

    fn extract_policy( &self, - signers: &SignersContainer, + signers: &SignersContainer, psbt: BuildSatisfaction<'_>, secp: &Secp256k1<All> ) -> Result<Option<Policy>, DescriptorError>

    Extract the spending policy

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html index bdf4daf816..6109fbca49 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html @@ -1,4 +1,4 @@ -IntoWalletDescriptor in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::IntoWalletDescriptor

    source ·
    pub trait IntoWalletDescriptor {
    +IntoWalletDescriptor in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::IntoWalletDescriptor

    source ·
    pub trait IntoWalletDescriptor {
         // Required method
         fn into_wallet_descriptor(
             self,
    @@ -19,10 +19,14 @@
         self,
         secp: &Secp256k1<All>,
         network: Network
    -) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>
    source§

    impl IntoWalletDescriptor for (ExtendedDescriptor, KeyMap)

    source§

    impl IntoWalletDescriptor for (ExtendedDescriptor, KeyMap)

    source§

    fn into_wallet_descriptor( self, secp: &Secp256k1<All>, network: Network -) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Implementors§

    source§

    impl IntoWalletDescriptor for String

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Implementors§

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

    Sh(Sh<DescriptorPublicKey>)

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

    §

    Wsh(Wsh<DescriptorPublicKey>)

    Pay-to-Witness-ScriptHash with Segwitv0 context

    §

    Tr(Tr<DescriptorPublicKey>)

    Pay-to-Taproot

    -

    Trait Implementations§

    Trait Implementations§

    source§

    impl IntoWalletDescriptor for ExtendedDescriptor

    source§

    fn into_wallet_descriptor( self, secp: &Secp256k1<All>, network: Network diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddForeignUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddForeignUtxoError.html new file mode 100644 index 0000000000..a38c6ce9ea --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddForeignUtxoError.html @@ -0,0 +1,26 @@ +AddForeignUtxoError in bdk_wallet - Rust

    Enum bdk_wallet::AddForeignUtxoError

    source ·
    pub enum AddForeignUtxoError {
    +    InvalidTxid {
    +        input_txid: Txid,
    +        foreign_utxo: OutPoint,
    +    },
    +    InvalidOutpoint(OutPoint),
    +    MissingUtxo,
    +}
    Expand description

    Error returned from TxBuilder::add_foreign_utxo.

    +

    Variants§

    §

    InvalidTxid

    Foreign utxo outpoint txid does not match PSBT input txid

    +

    Fields

    §input_txid: Txid

    PSBT input txid

    +
    §foreign_utxo: OutPoint

    Foreign UTXO outpoint

    +
    §

    InvalidOutpoint(OutPoint)

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

    +
    §

    MissingUtxo

    Foreign utxo missing witness_utxo or non_witness_utxo

    +

    Trait Implementations§

    source§

    impl Debug for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddForeignUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddUtxoError.html new file mode 100644 index 0000000000..68cd06b395 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.AddUtxoError.html @@ -0,0 +1,17 @@ +AddUtxoError in bdk_wallet - Rust

    Enum bdk_wallet::AddUtxoError

    source ·
    pub enum AddUtxoError {
    +    UnknownUtxo(OutPoint),
    +}
    Expand description

    Error returned from TxBuilder::add_utxo and TxBuilder::add_utxos

    +

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    +

    Trait Implementations§

    source§

    impl Debug for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ApplyBlockError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ApplyBlockError.html new file mode 100644 index 0000000000..faf91da2dc --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ApplyBlockError.html @@ -0,0 +1,24 @@ +ApplyBlockError in bdk_wallet - Rust

    Enum bdk_wallet::ApplyBlockError

    source ·
    pub enum ApplyBlockError {
    +    CannotConnect(CannotConnectError),
    +    UnexpectedConnectedToHash {
    +        connected_to_hash: BlockHash,
    +        expected_hash: BlockHash,
    +    },
    +}
    Expand description

    An error that may occur when applying a block to Wallet.

    +

    Variants§

    §

    CannotConnect(CannotConnectError)

    Occurs when the update chain cannot connect with original chain.

    +
    §

    UnexpectedConnectedToHash

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

    +

    Fields

    §connected_to_hash: BlockHash

    Block hash of connected_to.

    +
    §expected_hash: BlockHash

    Expected block hash of connected_to, as derived from block.

    +

    Trait Implementations§

    source§

    impl Debug for ApplyBlockError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ApplyBlockError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ApplyBlockError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ChangeSpendPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ChangeSpendPolicy.html new file mode 100644 index 0000000000..ecb7cb8281 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.ChangeSpendPolicy.html @@ -0,0 +1,32 @@ +ChangeSpendPolicy in bdk_wallet - Rust

    Enum bdk_wallet::ChangeSpendPolicy

    source ·
    pub enum ChangeSpendPolicy {
    +    ChangeAllowed,
    +    OnlyChange,
    +    ChangeForbidden,
    +}
    Expand description

    Policy regarding the use of change outputs when creating a transaction

    +

    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§

    source§

    impl Clone for ChangeSpendPolicy

    source§

    fn clone(&self) -> ChangeSpendPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSpendPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ChangeSpendPolicy

    source§

    fn default() -> ChangeSpendPolicy

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

    impl Hash for ChangeSpendPolicy

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

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

    impl Ord for ChangeSpendPolicy

    source§

    fn cmp(&self, other: &ChangeSpendPolicy) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for ChangeSpendPolicy

    source§

    fn eq(&self, other: &ChangeSpendPolicy) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for ChangeSpendPolicy

    source§

    fn partial_cmp(&self, other: &ChangeSpendPolicy) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Copy for ChangeSpendPolicy

    source§

    impl Eq for ChangeSpendPolicy

    source§

    impl StructuralPartialEq for ChangeSpendPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.CreateWithPersistError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.CreateWithPersistError.html new file mode 100644 index 0000000000..e4d6d8ded4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.CreateWithPersistError.html @@ -0,0 +1,25 @@ +CreateWithPersistError in bdk_wallet - Rust

    Enum bdk_wallet::CreateWithPersistError

    source ·
    pub enum CreateWithPersistError<E> {
    +    Persist(E),
    +    Descriptor(DescriptorError),
    +}
    Expand description

    Error type for [PersistedWallet::create].

    +

    Variants§

    §

    Persist(E)

    Error from persistence.

    +
    §

    Descriptor(DescriptorError)

    Occurs when the loaded changeset cannot contruct Wallet.

    +

    Trait Implementations§

    source§

    impl<E: Debug> Debug for CreateWithPersistError<E>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<E: Display> Display for CreateWithPersistError<E>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<E: Debug + Display> Error for CreateWithPersistError<E>

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    §

    impl<E> Freeze for CreateWithPersistError<E>
    where + E: Freeze,

    §

    impl<E> RefUnwindSafe for CreateWithPersistError<E>
    where + E: RefUnwindSafe,

    §

    impl<E> Send for CreateWithPersistError<E>
    where + E: Send,

    §

    impl<E> Sync for CreateWithPersistError<E>
    where + E: Sync,

    §

    impl<E> Unpin for CreateWithPersistError<E>
    where + E: Unpin,

    §

    impl<E> UnwindSafe for CreateWithPersistError<E>
    where + E: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html index 31366dcb5a..69740b6c08 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html @@ -1,4 +1,4 @@ -KeychainKind in bdk_wallet - Rust

    Enum bdk_wallet::KeychainKind

    source ·
    pub enum KeychainKind {
    +KeychainKind in bdk_wallet - Rust

    Enum bdk_wallet::KeychainKind

    source ·
    pub enum KeychainKind {
         External = 0,
         Internal = 1,
     }
    Expand description

    Types of keychains

    @@ -19,7 +19,9 @@ operator. Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for KeychainKind

    source§

    impl Eq for KeychainKind

    source§

    impl StructuralPartialEq for KeychainKind

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadError.html new file mode 100644 index 0000000000..7b5031b706 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadError.html @@ -0,0 +1,27 @@ +LoadError in bdk_wallet - Rust

    Enum bdk_wallet::LoadError

    source ·
    pub enum LoadError {
    +    Descriptor(DescriptorError),
    +    MissingNetwork,
    +    MissingGenesis,
    +    MissingDescriptor(KeychainKind),
    +    Mismatch(LoadMismatch),
    +}
    Expand description

    The error type when loading a Wallet from a ChangeSet.

    +

    Variants§

    §

    Descriptor(DescriptorError)

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

    +
    §

    MissingNetwork

    Data loaded from persistence is missing network type.

    +
    §

    MissingGenesis

    Data loaded from persistence is missing genesis hash.

    +
    §

    MissingDescriptor(KeychainKind)

    Data loaded from persistence is missing descriptor.

    +
    §

    Mismatch(LoadMismatch)

    Data loaded is unexpected.

    +

    Trait Implementations§

    source§

    impl Debug for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LoadError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<LoadMismatch> for LoadError

    source§

    fn from(mismatch: LoadMismatch) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for LoadError

    source§

    fn eq(&self, other: &LoadError) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for LoadError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadMismatch.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadMismatch.html new file mode 100644 index 0000000000..9350c178ca --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadMismatch.html @@ -0,0 +1,39 @@ +LoadMismatch in bdk_wallet - Rust

    Enum bdk_wallet::LoadMismatch

    source ·
    pub enum LoadMismatch {
    +    Network {
    +        loaded: Network,
    +        expected: Network,
    +    },
    +    Genesis {
    +        loaded: BlockHash,
    +        expected: BlockHash,
    +    },
    +    Descriptor {
    +        keychain: KeychainKind,
    +        loaded: ExtendedDescriptor,
    +        expected: ExtendedDescriptor,
    +    },
    +}
    Expand description

    Represents a mismatch with what is loaded and what is expected from LoadParams.

    +

    Variants§

    §

    Network

    Network does not match.

    +

    Fields

    §loaded: Network

    The network that is loaded.

    +
    §expected: Network

    The expected network.

    +
    §

    Genesis

    Genesis hash does not match.

    +

    Fields

    §loaded: BlockHash

    The genesis hash that is loaded.

    +
    §expected: BlockHash

    The expected genesis hash.

    +
    §

    Descriptor

    Descriptor’s DescriptorId does not match.

    +

    Fields

    §keychain: KeychainKind

    Keychain identifying the descriptor.

    +
    §loaded: ExtendedDescriptor

    The loaded descriptor.

    +
    §expected: ExtendedDescriptor

    The expected descriptor.

    +

    Trait Implementations§

    source§

    impl Debug for LoadMismatch

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<LoadMismatch> for LoadError

    source§

    fn from(mismatch: LoadMismatch) -> Self

    Converts to this type from the input type.
    source§

    impl<E> From<LoadMismatch> for LoadWithPersistError<E>

    source§

    fn from(mismatch: LoadMismatch) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for LoadMismatch

    source§

    fn eq(&self, other: &LoadMismatch) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for LoadMismatch

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadWithPersistError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadWithPersistError.html new file mode 100644 index 0000000000..1854a85984 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.LoadWithPersistError.html @@ -0,0 +1,26 @@ +LoadWithPersistError in bdk_wallet - Rust

    Enum bdk_wallet::LoadWithPersistError

    source ·
    pub enum LoadWithPersistError<E> {
    +    Persist(E),
    +    InvalidChangeSet(LoadError),
    +}
    Expand description

    Error type for [PersistedWallet::load].

    +

    Variants§

    §

    Persist(E)

    Error from persistence.

    +
    §

    InvalidChangeSet(LoadError)

    Occurs when the loaded changeset cannot construct Wallet.

    +

    Trait Implementations§

    source§

    impl<E: Debug> Debug for LoadWithPersistError<E>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<E: Display> Display for LoadWithPersistError<E>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<E: Debug + Display> Error for LoadWithPersistError<E>

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl<E> From<LoadMismatch> for LoadWithPersistError<E>

    source§

    fn from(mismatch: LoadMismatch) -> Self

    Converts to this type from the input type.
    source§

    impl<E: PartialEq> PartialEq for LoadWithPersistError<E>

    source§

    fn eq(&self, other: &LoadWithPersistError<E>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<E> StructuralPartialEq for LoadWithPersistError<E>

    Auto Trait Implementations§

    §

    impl<E> !Freeze for LoadWithPersistError<E>

    §

    impl<E> RefUnwindSafe for LoadWithPersistError<E>
    where + E: RefUnwindSafe,

    §

    impl<E> Send for LoadWithPersistError<E>
    where + E: Send,

    §

    impl<E> Sync for LoadWithPersistError<E>
    where + E: Sync,

    §

    impl<E> Unpin for LoadWithPersistError<E>
    where + E: Unpin,

    §

    impl<E> UnwindSafe for LoadWithPersistError<E>
    where + E: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.TxOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.TxOrdering.html new file mode 100644 index 0000000000..c564059883 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.TxOrdering.html @@ -0,0 +1,34 @@ +TxOrdering in bdk_wallet - Rust

    Enum bdk_wallet::TxOrdering

    source ·
    pub enum TxOrdering {
    +    Shuffle,
    +    Untouched,
    +    Custom {
    +        input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>,
    +        output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>,
    +    },
    +}
    Expand description

    Ordering of the transaction’s inputs and outputs

    +

    Variants§

    §

    Shuffle

    Randomized (default)

    +
    §

    Untouched

    Unchanged

    +
    §

    Custom

    Provide custom comparison functions for sorting

    +

    Fields

    §input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>

    Transaction inputs sort function

    +
    §output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>

    Transaction outputs sort function

    +

    Implementations§

    source§

    impl TxOrdering

    source

    pub fn sort_tx(&self, tx: &mut Transaction)

    Sort transaction inputs and outputs by TxOrdering variant.

    +

    Uses the thread-local random number generator (rng).

    +
    source

    pub fn sort_tx_with_aux_rand( + &self, + tx: &mut Transaction, + rng: &mut impl RngCore +)

    Sort transaction inputs and outputs by TxOrdering variant.

    +

    Uses a provided random number generator (rng).

    +

    Trait Implementations§

    source§

    impl Clone for TxOrdering

    source§

    fn clone(&self) -> TxOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TxOrdering

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TxOrdering

    source§

    fn default() -> TxOrdering

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html index 4bbf8e3b62..6989025b21 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html @@ -1,4 +1,4 @@ -Utxo in bdk_wallet - Rust

    Enum bdk_wallet::Utxo

    source ·
    pub enum Utxo {
    +Utxo in bdk_wallet - Rust

    Enum bdk_wallet::Utxo

    source ·
    pub enum Utxo {
         Local(LocalOutput),
         Foreign {
             outpoint: OutPoint,
    @@ -19,7 +19,9 @@ by ==.
    source§

    impl Eq for Utxo

    source§

    impl StructuralPartialEq for Utxo

    Auto Trait Implementations§

    §

    impl Freeze for Utxo

    §

    impl RefUnwindSafe for Utxo

    §

    impl Send for Utxo

    §

    impl Sync for Utxo

    §

    impl Unpin for Utxo

    §

    impl UnwindSafe for Utxo

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.BuildFeeBumpError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.BuildFeeBumpError.html new file mode 100644 index 0000000000..0a627873ce --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.BuildFeeBumpError.html @@ -0,0 +1,25 @@ +BuildFeeBumpError in bdk_wallet::error - Rust

    Enum bdk_wallet::error::BuildFeeBumpError

    source ·
    pub enum BuildFeeBumpError {
    +    UnknownUtxo(OutPoint),
    +    TransactionNotFound(Txid),
    +    TransactionConfirmed(Txid),
    +    IrreplaceableTransaction(Txid),
    +    FeeRateUnavailable,
    +}
    Expand description

    Error returned from Wallet::build_fee_bump

    +

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    +
    §

    TransactionNotFound(Txid)

    Thrown when a tx is not found in the internal database

    +
    §

    TransactionConfirmed(Txid)

    Happens when trying to bump a transaction that is already confirmed

    +
    §

    IrreplaceableTransaction(Txid)

    Trying to replace a tx that has a sequence >= 0xFFFFFFFE

    +
    §

    FeeRateUnavailable

    Node doesn’t have data to estimate a fee rate

    +

    Trait Implementations§

    source§

    impl Debug for BuildFeeBumpError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for BuildFeeBumpError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for BuildFeeBumpError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.CreateTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.CreateTxError.html new file mode 100644 index 0000000000..8af2eed9a0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.CreateTxError.html @@ -0,0 +1,71 @@ +CreateTxError in bdk_wallet::error - Rust

    Enum bdk_wallet::error::CreateTxError

    source ·
    pub enum CreateTxError {
    +
    Show 19 variants Descriptor(DescriptorError), + Policy(PolicyError), + SpendingPolicyRequired(KeychainKind), + Version0, + Version1Csv, + LockTime { + requested: LockTime, + required: LockTime, + }, + RbfSequence, + RbfSequenceCsv { + rbf: Sequence, + csv: Sequence, + }, + FeeTooLow { + required: Amount, + }, + FeeRateTooLow { + required: FeeRate, + }, + NoUtxosSelected, + OutputBelowDustLimit(usize), + CoinSelection(Error), + NoRecipients, + Psbt(Error), + MissingKeyOrigin(String), + UnknownUtxo, + MissingNonWitnessUtxo(OutPoint), + MiniscriptPsbt(MiniscriptPsbtError), +
    }
    Expand description

    Error returned from TxBuilder::finish

    +

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the descriptors passed in

    +
    §

    Policy(PolicyError)

    There was a problem while extracting and manipulating policies

    +
    §

    SpendingPolicyRequired(KeychainKind)

    Spending policy is not compatible with this KeychainKind

    +
    §

    Version0

    Requested invalid transaction version ‘0’

    +
    §

    Version1Csv

    Requested transaction version 1, but at least 2 is needed to use OP_CSV

    +
    §

    LockTime

    Requested LockTime is less than is required to spend from this script

    +

    Fields

    §requested: LockTime

    Requested LockTime

    +
    §required: LockTime

    Required LockTime

    +
    §

    RbfSequence

    Cannot enable RBF with a Sequence >= 0xFFFFFFFE

    +
    §

    RbfSequenceCsv

    Cannot enable RBF with Sequence given a required OP_CSV

    +

    Fields

    §rbf: Sequence

    Given RBF Sequence

    +
    §csv: Sequence

    Required OP_CSV Sequence

    +
    §

    FeeTooLow

    When bumping a tx the absolute fee requested is lower than replaced tx absolute fee

    +

    Fields

    §required: Amount

    Required fee absolute value [Amount]

    +
    §

    FeeRateTooLow

    When bumping a tx the fee rate requested is lower than required

    +

    Fields

    §required: FeeRate

    Required fee rate

    +
    §

    NoUtxosSelected

    manually_selected_only option is selected but no utxo has been passed

    +
    §

    OutputBelowDustLimit(usize)

    Output created is under the dust limit, 546 satoshis

    +
    §

    CoinSelection(Error)

    There was an error with coin selection

    +
    §

    NoRecipients

    Cannot build a tx without recipients

    +
    §

    Psbt(Error)

    Partially signed bitcoin transaction error

    +
    §

    MissingKeyOrigin(String)

    In order to use the TxBuilder::add_global_xpubs option every extended +key in the descriptor must either be a master key itself (having depth = 0) or have an +explicit origin provided

    +
    §

    UnknownUtxo

    Happens when trying to spend an UTXO that is not in the internal database

    +
    §

    MissingNonWitnessUtxo(OutPoint)

    Missing non_witness_utxo on foreign utxo for given OutPoint

    +
    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    +

    Trait Implementations§

    source§

    impl Debug for CreateTxError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CreateTxError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CreateTxError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.MiniscriptPsbtError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.MiniscriptPsbtError.html new file mode 100644 index 0000000000..a0817a27bf --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/enum.MiniscriptPsbtError.html @@ -0,0 +1,22 @@ +MiniscriptPsbtError in bdk_wallet::error - Rust

    Enum bdk_wallet::error::MiniscriptPsbtError

    source ·
    pub enum MiniscriptPsbtError {
    +    Conversion(ConversionError),
    +    UtxoUpdate(UtxoUpdateError),
    +    OutputUpdate(OutputUpdateError),
    +}
    Expand description

    Errors returned by miniscript when updating inconsistent PSBTs

    +

    Variants§

    §

    Conversion(ConversionError)

    Descriptor key conversion error

    +
    §

    UtxoUpdate(UtxoUpdateError)

    Return error type for PsbtExt::update_input_with_descriptor

    +
    §

    OutputUpdate(OutputUpdateError)

    Return error type for PsbtExt::update_output_with_descriptor

    +

    Trait Implementations§

    source§

    impl Clone for MiniscriptPsbtError

    source§

    fn clone(&self) -> MiniscriptPsbtError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MiniscriptPsbtError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MiniscriptPsbtError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MiniscriptPsbtError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/index.html new file mode 100644 index 0000000000..4468cdae25 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/index.html @@ -0,0 +1,2 @@ +bdk_wallet::error - Rust

    Module bdk_wallet::error

    source ·
    Expand description

    Errors that can be thrown by the Wallet

    +

    Enums§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/sidebar-items.js new file mode 100644 index 0000000000..70342e180b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/error/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["BuildFeeBumpError","CreateTxError","MiniscriptPsbtError"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/index.html new file mode 100644 index 0000000000..8420158afe --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/index.html @@ -0,0 +1,27 @@ +bdk_wallet::export - Rust

    Module bdk_wallet::export

    source ·
    Expand description

    Wallet export

    +

    This modules implements the wallet export format used by FullyNoded.

    +

    §Examples

    §Import from JSON

    +
    let import = r#"{
    +    "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    +    "blockheight":1782088,
    +    "label":"testnet"
    +}"#;
    +
    +let import = FullyNodedExport::from_str(import)?;
    +let wallet = Wallet::create(
    +    import.descriptor(),
    +    import.change_descriptor().expect("change descriptor"),
    +)
    +.network(Network::Testnet)
    +.create_wallet_no_persist()?;
    +

    §Export a Wallet

    +
    let wallet = Wallet::create(
    +    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    +    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)",
    +)
    +.network(Network::Testnet)
    +.create_wallet_no_persist()?;
    +let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
    +
    +println!("Exported: {}", export.to_string());
    +

    Structs§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/sidebar-items.js new file mode 100644 index 0000000000..dd0fa93b47 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"struct":["FullyNodedExport"],"type":["WalletExport"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/struct.FullyNodedExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/struct.FullyNodedExport.html new file mode 100644 index 0000000000..1cf8556398 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/struct.FullyNodedExport.html @@ -0,0 +1,38 @@ +FullyNodedExport in bdk_wallet::export - Rust

    Struct bdk_wallet::export::FullyNodedExport

    source ·
    pub struct FullyNodedExport {
    +    pub blockheight: u32,
    +    pub label: String,
    +    /* private fields */
    +}
    Expand description

    Structure that contains the export of a wallet

    +

    For a usage example see this module’s documentation.

    +

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    +
    §label: String

    Arbitrary label for the wallet

    +

    Implementations§

    source§

    impl FullyNodedExport

    source

    pub fn export_wallet( + wallet: &Wallet, + label: &str, + include_blockheight: bool +) -> Result<Self, &'static str>

    Export a wallet

    +

    This function returns an error if it determines that the wallet’s descriptor(s) are not +supported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44 +and others.

    +

    If include_blockheight is true, this function will look into the wallet’s database +for the oldest transaction it knows and use that as the earliest block to rescan.

    +

    If the database is empty or include_blockheight is false, the blockheight field +returned will be 0.

    +
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    +
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    +

    Trait Implementations§

    source§

    impl Debug for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

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

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/type.WalletExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/type.WalletExport.html new file mode 100644 index 0000000000..5d5ac6be0c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/export/type.WalletExport.html @@ -0,0 +1,8 @@ +WalletExport in bdk_wallet::export - Rust

    Type Alias bdk_wallet::export::WalletExport

    source ·
    pub type WalletExport = FullyNodedExport;
    👎Deprecated since 0.18.0: Please use [FullyNodedExport] instead
    Expand description

    Alias for FullyNodedExport

    +

    Aliased Type§

    struct WalletExport {
    +    pub blockheight: u32,
    +    pub label: String,
    +    /* private fields */
    +}

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    +
    §label: String

    Arbitrary label for the wallet

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html index fc425ed658..2dcea93807 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html @@ -1,2 +1,2 @@ -version in bdk_wallet - Rust

    Function bdk_wallet::version

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

    Get the version of BDK at runtime

    +version in bdk_wallet - Rust

    Function bdk_wallet::version

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

    Get the version of bdk_wallet at runtime.

    \ 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 new file mode 100644 index 0000000000..d583b56a8b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.wallet_name_from_descriptor.html @@ -0,0 +1,9 @@ +wallet_name_from_descriptor in bdk_wallet - Rust

    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>
    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 83d163d6f5..2f2822df66 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html @@ -1,4 +1,4 @@ -bdk_wallet - Rust

    Crate bdk_wallet

    source ·
    Expand description
    +bdk_wallet - Rust

    Crate bdk_wallet

    source ·
    Expand description

    BDK

    @@ -46,16 +46,15 @@ that the Wallet can use to update its view of the chain.

  • example-crates/wallet_rpc
  • §Persistence

    -

    To persist Wallet state data use a data store crate that reads and writes [bdk_chain::CombinedChangeSet].

    +

    To persist Wallet state data use a data store crate that reads and writes ChangeSet.

    Implementations

    • bdk_file_store: Stores wallet changes in a simple flat file.
    • -
    • bdk_sqlite: Stores wallet changes in a SQLite relational database file.

    Example

    -
    use bdk_wallet::{bitcoin::Network, KeychainKind, wallet::{ChangeSet, Wallet}};
    +
    use bdk_wallet::{bitcoin::Network, KeychainKind, ChangeSet, Wallet};
     
     // Open or create a new file store for wallet data.
     let mut db =
    @@ -63,21 +62,26 @@ that the Wallet can use to update its view of the chain.

    .expect("create store"); // Create a wallet with initial wallet data read from the file store. -let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)"; +let network = Network::Testnet; +let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)"; let change_descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/1/*)"; -let changeset = db.aggregate_changesets().expect("changeset loaded"); -let mut wallet = - Wallet::new_or_load(descriptor, change_descriptor, changeset, Network::Testnet) - .expect("create or load wallet"); +let wallet_opt = Wallet::load() + .descriptors(descriptor, change_descriptor) + .network(network) + .load_wallet(&mut db) + .expect("wallet"); +let mut wallet = match wallet_opt { + Some(wallet) => wallet, + None => Wallet::create(descriptor, change_descriptor) + .network(network) + .create_wallet(&mut db) + .expect("wallet"), +}; // Get a new address to receive bitcoin. let receive_address = wallet.reveal_next_address(KeychainKind::External); // Persist staged wallet data changes to the file store. -let staged_changeset = wallet.take_staged(); -if let Some(changeset) = staged_changeset { - db.append_changeset(&changeset) - .expect("must commit changes to database"); -} +wallet.persist(&mut db).expect("persist"); println!("Your new receive address is: {}", receive_address.address);
    @@ -101,7 +105,7 @@ that the Wallet can use to update its view of the chain.

    - + @@ -120,7 +124,7 @@ that the Wallet can use to update its view of the chain.

    - + @@ -178,4 +182,7 @@ that the Wallet can use to update its view of the chain.

    submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

    -

    Re-exports§

    • pub extern crate bitcoin;
    • pub extern crate miniscript;
    • 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::Wallet;
    • pub use bdk_chain as chain;

    Modules§

    Macros§

    • Macro to write full descriptors with code
    • Macro to write descriptor fragments with code

    Structs§

    Enums§

    Functions§

    • Get the version of BDK at runtime
    \ No newline at end of file +

    Re-exports§

    • pub extern crate bitcoin;
    • pub extern crate bdk_chain as chain;
    • pub extern crate bdk_file_store as file_store;
    • pub extern crate miniscript;
    • pub extern crate serde;
    • pub extern crate serde_json;
    • pub use descriptor::template;
    • pub use descriptor::HdKeyPaths;
    • pub use signer;
    • pub use bdk_chain::rusqlite;

    Modules§

    Macros§

    • Macro to write full descriptors with code
    • Macro to write descriptor fragments with code

    Structs§

    Enums§

    Traits§

    • 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

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html index 684ad011eb..0f1c36dfea 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html @@ -1,4 +1,4 @@ -DescriptorPublicKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorPublicKey

    pub enum DescriptorPublicKey {
    +DescriptorPublicKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorPublicKey

    pub enum DescriptorPublicKey {
         Single(SinglePub),
         XPub(DescriptorXKey<Xpub>),
         MultiXPub(DescriptorMultiXKey<Xpub>),
    @@ -71,7 +71,9 @@ operator. Serializer,
    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for DescriptorPublicKey

    §

    impl StructuralPartialEq for DescriptorPublicKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    §

    impl<T> FromStrKey for T
    where T: MiniscriptKey + FromStr, <T as MiniscriptKey>::Sha256: FromStr, diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html index 598766547f..29cba9221a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html @@ -1,4 +1,4 @@ -DescriptorSecretKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorSecretKey

    pub enum DescriptorSecretKey {
    +DescriptorSecretKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorSecretKey

    pub enum DescriptorSecretKey {
         Single(SinglePriv),
         XPrv(DescriptorXKey<Xpriv>),
         MultiXPrv(DescriptorMultiXKey<Xpriv>),
    @@ -28,7 +28,9 @@ by ==.

    §

    impl Eq for DescriptorSecretKey

    §

    impl StructuralPartialEq for DescriptorSecretKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html index 7ade5ae9e8..e5b9a45291 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html @@ -1,4 +1,4 @@ -KeyError in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::KeyError

    source ·
    pub enum KeyError {
    +KeyError in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::KeyError

    source ·
    pub enum KeyError {
         InvalidScriptContext,
         InvalidNetwork,
         InvalidChecksum,
    @@ -12,7 +12,9 @@
     
    §

    Message(String)

    Custom error message

    §

    Bip32(Error)

    BIP32 error

    §

    Miniscript(Error)

    Miniscript error

    -

    Trait Implementations§

    source§

    impl Debug for KeyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for KeyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for KeyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for KeyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for KeyError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for KeyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.
    source§

    impl PartialEq for KeyError

    source§

    fn eq(&self, other: &KeyError) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for KeyError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html index 44a688a401..97f3326062 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html @@ -1,4 +1,4 @@ -ScriptContextEnum in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::ScriptContextEnum

    source ·
    pub enum ScriptContextEnum {
    +ScriptContextEnum in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::ScriptContextEnum

    source ·
    pub enum ScriptContextEnum {
         Legacy,
         Segwitv0,
         Tap,
    @@ -14,7 +14,9 @@ by ==.
    source§

    impl Copy for ScriptContextEnum

    source§

    impl Eq for ScriptContextEnum

    source§

    impl StructuralPartialEq for ScriptContextEnum

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html index 717abae767..128cd6a205 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html @@ -1,4 +1,4 @@ -SinglePubKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::SinglePubKey

    pub enum SinglePubKey {
    +SinglePubKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::SinglePubKey

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

    Single public key without any origin or range information.

    @@ -17,7 +17,9 @@ operator. Read more
    §

    impl Eq for SinglePubKey

    §

    impl StructuralPartialEq for SinglePubKey

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html index 8b80c8e3cd..a63e290833 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html @@ -2,14 +2,14 @@

    Implementations§

    source§

    impl<K, Ctx: ScriptContext> GeneratedKey<K, Ctx>

    source

    pub fn into_key(self) -> K

    Consumes self and returns the key

    Trait Implementations§

    source§

    impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>

    source§

    fn clone(&self) -> GeneratedKey<K, Ctx>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>

    §

    type Target = K

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<Ctx, K> DerivableKey<Ctx> for GeneratedKey<K, Ctx>
    where Ctx: ScriptContext, - K: DerivableKey<Ctx>,

    source§

    fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>

    Consume self and turn it into an ExtendedKey
    source§

    fn into_descriptor_key( + K: DerivableKey<Ctx>,

    source§

    fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>

    Consume self and turn it into an ExtendedKey
    source§

    fn into_descriptor_key( self, origin: Option<KeySource>, derivation_path: DerivationPath ) -> Result<DescriptorKey<Ctx>, KeyError>

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

    impl<Ctx, K> IntoDescriptorKey<Ctx> for GeneratedKey<K, Ctx>
    where Ctx: ScriptContext, - K: IntoDescriptorKey<Ctx>,

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    §

    impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where + K: IntoDescriptorKey<Ctx>,

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    §

    impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where K: Freeze,

    §

    impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>

    §

    impl<K, Ctx> Send for GeneratedKey<K, Ctx>
    where diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html index 195bb6203c..2c938f7a01 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html @@ -1,4 +1,4 @@ -SinglePriv in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePriv

    pub struct SinglePriv {
    +SinglePriv in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePriv

    pub struct SinglePriv {
         pub origin: Option<(Fingerprint, DerivationPath)>,
         pub key: PrivateKey,
     }
    Expand description

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

    @@ -9,7 +9,9 @@ by ==.

    §

    impl Eq for SinglePriv

    §

    impl StructuralPartialEq for SinglePriv

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html index 152426bfb6..18097c6467 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html @@ -1,4 +1,4 @@ -SinglePub in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePub

    pub struct SinglePub {
    +SinglePub in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePub

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

    A descriptor SinglePubKey with optional origin information.

    @@ -17,7 +17,9 @@ operator. Read more
    §

    impl Eq for SinglePub

    §

    impl StructuralPartialEq for SinglePub

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html index b4dcea5ac7..d4880fd870 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html @@ -1,4 +1,4 @@ -SortedMultiVec in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SortedMultiVec

    pub struct SortedMultiVec<Pk, Ctx>
    where +SortedMultiVec in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SortedMultiVec

    pub struct SortedMultiVec<Pk, Ctx>
    where Pk: MiniscriptKey, Ctx: ScriptContext,
    { /* private fields */ }
    Expand description

    Contents of a “sortedmulti” descriptor

    Implementations§

    §

    impl<Pk, Ctx> SortedMultiVec<Pk, Ctx>
    where @@ -108,7 +108,9 @@ operator. UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html index 64ac3842ce..d09fe1b818 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html @@ -107,4 +107,4 @@ makes the compiler (correctly) fail.

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for &str

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PrivateKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PublicKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for XOnlyPublicKey

    source§

    impl<Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx> for (T, DerivationPath)

    source§

    impl<Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx> for (T, KeySource, DerivationPath)

    Implementors§

    source§

    impl<Ctx, K> IntoDescriptorKey<Ctx> for GeneratedKey<K, Ctx>
    where Ctx: ScriptContext, K: IntoDescriptorKey<Ctx>,

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx>

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

    -
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorSecretKey

    \ No newline at end of file +
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorSecretKey

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html new file mode 100644 index 0000000000..32580757a4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/constant.SCHEMAS_TABLE_NAME.html @@ -0,0 +1,2 @@ +SCHEMAS_TABLE_NAME in bdk_wallet::rusqlite_impl - Rust

    Constant bdk_wallet::rusqlite_impl::SCHEMAS_TABLE_NAME

    pub const SCHEMAS_TABLE_NAME: &'static str;
    Expand description

    Table name for schemas.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/fn.migrate_schema.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/fn.migrate_schema.html new file mode 100644 index 0000000000..9150d73947 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/fn.migrate_schema.html @@ -0,0 +1,6 @@ +migrate_schema in bdk_wallet::rusqlite_impl - Rust

    Function bdk_wallet::rusqlite_impl::migrate_schema

    pub fn migrate_schema(
    +    db_tx: &Transaction<'_>,
    +    schema_name: &str,
    +    versioned_scripts: &[&[&str]]
    +) -> Result<(), Error>
    Expand description

    Runs logic that initializes/migrates the table schemas.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/index.html new file mode 100644 index 0000000000..0378e2bd17 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/index.html @@ -0,0 +1,2 @@ +bdk_wallet::rusqlite_impl - Rust

    Module bdk_wallet::rusqlite_impl

    Expand description

    Module for stuff

    +

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/sidebar-items.js new file mode 100644 index 0000000000..7711167423 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/rusqlite_impl/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"constant":["SCHEMAS_TABLE_NAME"],"fn":["migrate_schema"]}; \ No newline at end of file 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 f6240a3cb6..882a5d0b1b 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 @@ -window.SIDEBAR_ITEMS = {"enum":["KeychainKind","Utxo"],"externcrate":["bitcoin","miniscript"],"fn":["version"],"macro":["descriptor","fragment"],"mod":["descriptor","keys","psbt","wallet"],"struct":["LocalOutput","WeightedUtxo"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["AddForeignUtxoError","AddUtxoError","ApplyBlockError","ChangeSpendPolicy","CreateWithPersistError","KeychainKind","LoadError","LoadMismatch","LoadWithPersistError","TxOrdering","Utxo"],"externcrate":["bitcoin","chain","file_store","miniscript","serde","serde_json"],"fn":["version","wallet_name_from_descriptor"],"macro":["descriptor","fragment"],"mod":["coin_selection","descriptor","error","export","keys","psbt","rusqlite_impl","signer","tx_builder"],"struct":["AddressInfo","Balance","ChangeSet","CreateParams","LoadParams","LocalOutput","SignOptions","TxBuilder","Update","Wallet","WeightedUtxo"],"trait":["IsDust"],"type":["PersistedWallet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerContext.html new file mode 100644 index 0000000000..3db875695f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerContext.html @@ -0,0 +1,29 @@ +SignerContext in bdk_wallet::signer - Rust

    Enum bdk_wallet::signer::SignerContext

    source ·
    pub enum SignerContext {
    +    Legacy,
    +    Segwitv0,
    +    Tap {
    +        is_internal_key: bool,
    +    },
    +}
    Expand description

    Signing context

    +

    Used by our software signers to determine the type of signatures to make

    +

    Variants§

    §

    Legacy

    Legacy context

    +
    §

    Segwitv0

    Segwit v0 context (BIP 143)

    +
    §

    Tap

    Taproot context (BIP 340)

    +

    Fields

    §is_internal_key: bool

    Whether the signer can sign for the internal key or not

    +

    Trait Implementations§

    source§

    impl Clone for SignerContext

    source§

    fn clone(&self) -> SignerContext

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerContext

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for SignerContext

    source§

    fn eq(&self, other: &SignerContext) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for SignerContext

    source§

    impl Eq for SignerContext

    source§

    impl StructuralPartialEq for SignerContext

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ 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 new file mode 100644 index 0000000000..a40b2d274b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerError.html @@ -0,0 +1,50 @@ +SignerError in bdk_wallet::signer - Rust

    Enum bdk_wallet::signer::SignerError

    source ·
    pub enum SignerError {
    +
    Show 15 variants MissingKey, + InvalidKey, + UserCanceled, + InputIndexOutOfRange, + MissingNonWitnessUtxo, + InvalidNonWitnessUtxo, + MissingWitnessUtxo, + MissingWitnessScript, + MissingHdKeypath, + NonStandardSighash, + InvalidSighash, + SighashTaproot(TaprootError), + Psbt(SignError), + MiniscriptPsbt(MiniscriptPsbtError), + External(String), +
    }
    Expand description

    Signing error

    +

    Variants§

    §

    MissingKey

    The private key is missing for the required public key

    +
    §

    InvalidKey

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

    +
    §

    UserCanceled

    The user canceled the operation

    +
    §

    InputIndexOutOfRange

    Input index is out of range

    +
    §

    MissingNonWitnessUtxo

    The non_witness_utxo field of the transaction is required to sign this input

    +
    §

    InvalidNonWitnessUtxo

    The non_witness_utxo specified is invalid

    +
    §

    MissingWitnessUtxo

    The witness_utxo field of the transaction is required to sign this input

    +
    §

    MissingWitnessScript

    The witness_script field of the transaction is required to sign this input

    +
    §

    MissingHdKeypath

    The fingerprint and derivation path are missing from the psbt input

    +
    §

    NonStandardSighash

    The psbt contains a non-SIGHASH_ALL sighash in one of its input and the user hasn’t +explicitly allowed them

    +

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

    +
    §

    InvalidSighash

    Invalid SIGHASH for the signing context in use

    +
    §

    SighashTaproot(TaprootError)

    Error while computing the hash to sign a Taproot input.

    +
    §

    Psbt(SignError)

    PSBT sign error.

    +
    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    +
    §

    External(String)

    To be used only by external libraries implementing InputSigner or +TransactionSigner, so that they can return their own custom errors, without having to +modify SignerError in BDK.

    +

    Trait Implementations§

    source§

    impl Debug for SignerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SignerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SignerError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerId.html new file mode 100644 index 0000000000..0bbc452df4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.SignerId.html @@ -0,0 +1,33 @@ +SignerId in bdk_wallet::signer - Rust

    Enum bdk_wallet::signer::SignerId

    source ·
    pub enum SignerId {
    +    PkHash(Hash),
    +    Fingerprint(Fingerprint),
    +    Dummy(u64),
    +}
    Expand description

    Identifier of a signer in the SignersContainers. Used as a key to find the right signer among +multiple of them

    +

    Variants§

    §

    PkHash(Hash)

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

    +
    §

    Fingerprint(Fingerprint)

    The fingerprint of a BIP32 extended key

    +
    §

    Dummy(u64)

    Dummy identifier

    +

    Trait Implementations§

    source§

    impl Clone for SignerId

    source§

    fn clone(&self) -> SignerId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Fingerprint> for SignerId

    source§

    fn from(fing: Fingerprint) -> SignerId

    Converts to this type from the input type.
    source§

    impl From<Hash> for SignerId

    source§

    fn from(hash: Hash) -> SignerId

    Converts to this type from the input type.
    source§

    impl Hash for SignerId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

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

    impl Ord for SignerId

    source§

    fn cmp(&self, other: &SignerId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerId

    source§

    fn eq(&self, other: &SignerId) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerId

    source§

    fn partial_cmp(&self, other: &SignerId) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Eq for SignerId

    source§

    impl StructuralPartialEq for SignerId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file 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 new file mode 100644 index 0000000000..238fc614d3 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/enum.TapLeavesOptions.html @@ -0,0 +1,28 @@ +TapLeavesOptions in bdk_wallet::signer - Rust

    Enum bdk_wallet::signer::TapLeavesOptions

    source ·
    pub enum TapLeavesOptions {
    +    All,
    +    Include(Vec<TapLeafHash>),
    +    Exclude(Vec<TapLeafHash>),
    +    None,
    +}
    Expand description

    Customize which taproot script-path leaves the signer should sign.

    +

    Variants§

    §

    All

    The signer will sign all the leaves it has a key for.

    +
    §

    Include(Vec<TapLeafHash>)

    The signer won’t sign leaves other than the ones specified. Note that it could still ignore +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§

    source§

    impl Clone for TapLeavesOptions

    source§

    fn clone(&self) -> TapLeavesOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TapLeavesOptions

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TapLeavesOptions

    source§

    fn default() -> TapLeavesOptions

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

    impl PartialEq for TapLeavesOptions

    source§

    fn eq(&self, other: &TapLeavesOptions) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for TapLeavesOptions

    source§

    impl StructuralPartialEq for TapLeavesOptions

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file 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 new file mode 100644 index 0000000000..14d22403d0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/index.html @@ -0,0 +1,50 @@ +bdk_wallet::signer - Rust

    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.

    + +
    #[derive(Debug)]
    +struct CustomSigner {
    +    device: CustomHSM,
    +}
    +
    +impl CustomSigner {
    +    fn connect() -> Self {
    +        CustomSigner { device: CustomHSM::connect() }
    +    }
    +}
    +
    +impl SignerCommon for CustomSigner {
    +    fn id(&self, _secp: &Secp256k1<All>) -> SignerId {
    +        self.device.get_id()
    +    }
    +}
    +
    +impl InputSigner for CustomSigner {
    +    fn sign_input(
    +        &self,
    +        psbt: &mut Psbt,
    +        input_index: usize,
    +        _sign_options: &SignOptions,
    +        _secp: &Secp256k1<All>,
    +    ) -> Result<(), SignerError> {
    +        self.device.hsm_sign_input(psbt, input_index)?;
    +
    +        Ok(())
    +    }
    +}
    +
    +let custom_signer = CustomSigner::connect();
    +
    +let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)";
    +let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)";
    +let mut wallet = Wallet::create(descriptor, change_descriptor)
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
    +wallet.add_signer(
    +    KeychainKind::External,
    +    SignerOrdering(200),
    +    Arc::new(custom_signer)
    +);
    +
    +

    Structs§

    Enums§

    • Signing context
    • Signing error
    • Identifier of a signer in the SignersContainers. Used as a key to find the right signer among +multiple of them
    • Customize which taproot script-path leaves the signer should sign.

    Traits§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/sidebar-items.js new file mode 100644 index 0000000000..92cb22a1a9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["SignerContext","SignerError","SignerId","TapLeavesOptions"],"struct":["SignOptions","SignerOrdering","SignerWrapper","SignersContainer"],"trait":["InputSigner","SignerCommon","TransactionSigner"]}; \ No newline at end of file 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 new file mode 100644 index 0000000000..06862a2861 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignOptions.html @@ -0,0 +1,51 @@ +SignOptions in bdk_wallet::signer - Rust

    Struct bdk_wallet::signer::SignOptions

    source ·
    pub struct SignOptions {
    +    pub trust_witness_utxo: bool,
    +    pub assume_height: Option<u32>,
    +    pub allow_all_sighashes: bool,
    +    pub try_finalize: bool,
    +    pub tap_leaves_options: TapLeavesOptions,
    +    pub sign_with_tap_internal_key: bool,
    +    pub allow_grinding: bool,
    +}
    Expand description

    Options for a software signer

    +

    Adjust the behavior of our software signers and the way a transaction is finalized

    +

    Fields§

    §trust_witness_utxo: bool

    Whether the signer should trust the witness_utxo, if the non_witness_utxo hasn’t been +provided

    +

    Defaults to false to mitigate the “SegWit bug” which should trick the wallet into +paying a fee larger than expected.

    +

    Some wallets, especially if relatively old, might not provide the non_witness_utxo for +SegWit transactions in the PSBT they generate: in those cases setting this to true +should correctly produce a signature, at the expense of an increased trust in the creator +of the PSBT.

    +

    For more details see: https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd

    +
    §assume_height: Option<u32>

    Whether the wallet should assume a specific height has been reached when trying to finalize +a transaction

    +

    The wallet will only “use” a timelock to satisfy the spending policy of an input if the +timelock height has already been reached. This option allows overriding the “current height” to let the +wallet use timelocks in the future to spend a coin.

    +
    §allow_all_sighashes: bool

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

    +

    Defaults to false which will only allow signing using SIGHASH_ALL.

    +
    §try_finalize: bool

    Whether to try finalizing the PSBT after the inputs are signed.

    +

    Defaults to true which will try finalizing PSBT after inputs are signed.

    +
    §tap_leaves_options: TapLeavesOptions

    Specifies which Taproot script-spend leaves we should sign for. This option is +ignored if we’re signing a non-taproot PSBT.

    +

    Defaults to All, i.e., the wallet will sign all the leaves it has a key for.

    +
    §sign_with_tap_internal_key: bool

    Whether we should try to sign a taproot transaction with the taproot internal key +or not. This option is ignored if we’re signing a non-taproot PSBT.

    +

    Defaults to true, i.e., we always try to sign with the taproot internal key.

    +
    §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§

    source§

    impl Clone for SignOptions

    source§

    fn clone(&self) -> SignOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignOptions

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignOptions

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerOrdering.html new file mode 100644 index 0000000000..628188cd59 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerOrdering.html @@ -0,0 +1,26 @@ +SignerOrdering in bdk_wallet::signer - Rust

    Struct bdk_wallet::signer::SignerOrdering

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

    Defines the order in which signers are called

    +

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

    +

    Tuple Fields§

    §0: usize

    Trait Implementations§

    source§

    impl Clone for SignerOrdering

    source§

    fn clone(&self) -> SignerOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerOrdering

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignerOrdering

    source§

    fn default() -> Self

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

    impl Ord for SignerOrdering

    source§

    fn cmp(&self, other: &SignerOrdering) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerOrdering

    source§

    fn eq(&self, other: &SignerOrdering) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerOrdering

    source§

    fn partial_cmp(&self, other: &SignerOrdering) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Eq for SignerOrdering

    source§

    impl StructuralPartialEq for SignerOrdering

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerWrapper.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerWrapper.html new file mode 100644 index 0000000000..d3dfbb0f82 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignerWrapper.html @@ -0,0 +1,45 @@ +SignerWrapper in bdk_wallet::signer - Rust

    Struct bdk_wallet::signer::SignerWrapper

    source ·
    pub struct SignerWrapper<S: Sized + Debug + Clone> { /* private fields */ }
    Expand description

    Wrapper to pair a signer with its context

    +

    Implementations§

    source§

    impl<S: Sized + Debug + Clone> SignerWrapper<S>

    source

    pub fn new(signer: S, ctx: SignerContext) -> Self

    Create a wrapped signer from a signer and a context

    +

    Trait Implementations§

    source§

    impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>

    source§

    fn clone(&self) -> SignerWrapper<S>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>

    §

    type Target = S

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more

    Auto Trait Implementations§

    §

    impl<S> Freeze for SignerWrapper<S>
    where + S: Freeze,

    §

    impl<S> RefUnwindSafe for SignerWrapper<S>
    where + S: RefUnwindSafe,

    §

    impl<S> Send for SignerWrapper<S>
    where + S: Send,

    §

    impl<S> Sync for SignerWrapper<S>
    where + S: Sync,

    §

    impl<S> Unpin for SignerWrapper<S>
    where + S: Unpin,

    §

    impl<S> UnwindSafe for SignerWrapper<S>
    where + S: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> TransactionSigner for T
    where + T: InputSigner,

    source§

    fn sign_transaction( + &self, + psbt: &mut Psbt, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign all the inputs of the psbt
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file 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 new file mode 100644 index 0000000000..8a0ffe812b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/struct.SignersContainer.html @@ -0,0 +1,38 @@ +SignersContainer in bdk_wallet::signer - Rust

    Struct bdk_wallet::signer::SignersContainer

    source ·
    pub struct SignersContainer(/* private fields */);
    Expand description

    Container for multiple signers

    +

    Implementations§

    source§

    impl SignersContainer

    source

    pub fn as_key_map(&self, secp: &Secp256k1<All>) -> KeyMap

    Create a map of public keys to secret keys

    +
    source

    pub fn build( + keymap: KeyMap, + descriptor: &Descriptor<DescriptorPublicKey>, + secp: &Secp256k1<All> +) -> SignersContainer

    Build a new signer container from a KeyMap

    +

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

    +
    source§

    impl SignersContainer

    source

    pub fn new() -> Self

    Default constructor

    +
    source

    pub fn add_external( + &mut self, + id: SignerId, + ordering: SignerOrdering, + signer: Arc<dyn TransactionSigner> +) -> Option<Arc<dyn TransactionSigner>>

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

    +
    source

    pub fn remove( + &mut self, + id: SignerId, + ordering: SignerOrdering +) -> Option<Arc<dyn TransactionSigner>>

    Removes a signer from the container and returns it

    +
    source

    pub fn ids(&self) -> Vec<&SignerId>

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

    +
    source

    pub fn signers(&self) -> Vec<&Arc<dyn TransactionSigner>>

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

    +
    source

    pub fn find(&self, id: SignerId) -> Option<&Arc<dyn TransactionSigner>>

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

    +

    Trait Implementations§

    source§

    impl Clone for SignersContainer

    source§

    fn clone(&self) -> SignersContainer

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignersContainer

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignersContainer

    source§

    fn default() -> SignersContainer

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.InputSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.InputSigner.html new file mode 100644 index 0000000000..aba7a3d0a7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.InputSigner.html @@ -0,0 +1,21 @@ +InputSigner in bdk_wallet::signer - Rust

    Trait bdk_wallet::signer::InputSigner

    source ·
    pub trait InputSigner: SignerCommon {
    +    // Required method
    +    fn sign_input(
    +        &self,
    +        psbt: &mut Psbt,
    +        input_index: usize,
    +        sign_options: &SignOptions,
    +        secp: &Secp256k1<All>
    +    ) -> Result<(), SignerError>;
    +}
    Expand description

    PSBT Input signer

    +

    This trait can be implemented to provide custom signers to the wallet. If the signer supports signing +individual inputs, this trait should be implemented and BDK will provide automatically an implementation +for TransactionSigner.

    +

    Required Methods§

    source

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input

    +

    Implementors§

    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.SignerCommon.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.SignerCommon.html new file mode 100644 index 0000000000..43f793a361 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.SignerCommon.html @@ -0,0 +1,15 @@ +SignerCommon in bdk_wallet::signer - Rust

    Trait bdk_wallet::signer::SignerCommon

    source ·
    pub trait SignerCommon: Debug + Send + Sync {
    +    // Required method
    +    fn id(&self, secp: &Secp256k1<All>) -> SignerId;
    +
    +    // Provided method
    +    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey> { ... }
    +}
    Expand description

    Common signer methods

    +

    Required Methods§

    source

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer

    +

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

    +

    Provided Methods§

    source

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer

    +

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

    +

    Implementors§

    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.TransactionSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.TransactionSigner.html new file mode 100644 index 0000000000..720ed0be23 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/signer/trait.TransactionSigner.html @@ -0,0 +1,18 @@ +TransactionSigner in bdk_wallet::signer - Rust

    Trait bdk_wallet::signer::TransactionSigner

    source ·
    pub trait TransactionSigner: SignerCommon {
    +    // Required method
    +    fn sign_transaction(
    +        &self,
    +        psbt: &mut Psbt,
    +        sign_options: &SignOptions,
    +        secp: &Secp256k1<All>
    +    ) -> Result<(), SignerError>;
    +}
    Expand description

    PSBT signer

    +

    This trait can be implemented when the signer can’t sign inputs individually, but signs the whole transaction +at once.

    +

    Required Methods§

    source

    fn sign_transaction( + &self, + psbt: &mut Psbt, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign all the inputs of the psbt

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.AddressInfo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.AddressInfo.html new file mode 100644 index 0000000000..42a492f8e2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.AddressInfo.html @@ -0,0 +1,87 @@ +AddressInfo in bdk_wallet - Rust

    Struct bdk_wallet::AddressInfo

    source ·
    pub struct AddressInfo {
    +    pub index: u32,
    +    pub address: Address,
    +    pub keychain: KeychainKind,
    +}
    Expand description

    A derived address and the index it was found at. +For convenience this automatically derefs to Address

    +

    Fields§

    §index: u32

    Child index of this address

    +
    §address: Address

    Address

    +
    §keychain: KeychainKind

    Type of keychain

    +

    Methods from Deref<Target = Address>§

    pub fn as_unchecked(&self) -> &Address<NetworkUnchecked>

    Returns a reference to the address as if it was unchecked.

    +

    pub fn address_type(&self) -> Option<AddressType>

    Gets the address type of the address.

    +
    §Returns
    +

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

    +

    pub fn to_address_data(&self) -> AddressData

    Gets the address data from this address.

    +

    pub fn pubkey_hash(&self) -> Option<PubkeyHash>

    Gets the pubkey hash for this address if this is a P2PKH address.

    +

    pub fn script_hash(&self) -> Option<ScriptHash>

    Gets the script hash for this address if this is a P2SH address.

    +

    pub fn witness_program(&self) -> Option<WitnessProgram>

    Gets the witness program for this address if this is a segwit address.

    +

    pub fn is_spend_standard(&self) -> bool

    Checks whether or not the address is following Bitcoin standardness rules when +spending from this address. NOT to be called by senders.

    +
    +Spending Standardness +

    For forward compatibility, the senders must send to any [Address]. Receivers +can use this method to check whether or not they can spend from this address.

    +

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

    +
    +

    pub fn script_pubkey(&self) -> ScriptBuf

    Generates a script pubkey spending to this address.

    +

    pub fn to_qr_uri(&self) -> String

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

    +

    If the address is bech32, the address becomes uppercase. +If the address is base58, the address is left mixed case.

    +

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

    +

    Note however that despite BIP21 explicitly stating that the bitcoin: prefix should be +parsed as case-insensitive many wallets got this wrong and don’t parse correctly. +See compatibility table.

    +

    If you want to avoid allocation you can use alternate display instead:

    + +
    
    +write!(writer, "{:#}", address)?;
    +
    +

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

    +

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

    +

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

    +

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

    +

    pub fn matches_script_pubkey(&self, script: &Script) -> bool

    Returns true if the address creates a particular script +This function doesn’t make any allocations.

    +

    pub fn assume_checked_ref(&self) -> &Address

    Returns a reference to the checked address.

    +

    This function is dangerous in case the address is not a valid checked address.

    +

    pub fn is_valid_for_network(&self, n: Network) -> bool

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

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

    Trait Implementations§

    source§

    impl Debug for AddressInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for AddressInfo

    §

    type Target = Address

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl Display for AddressInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for AddressInfo

    source§

    fn eq(&self, other: &AddressInfo) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for AddressInfo

    source§

    impl StructuralPartialEq for AddressInfo

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Balance.html new file mode 100644 index 0000000000..43f1db73f7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Balance.html @@ -0,0 +1,40 @@ +Balance in bdk_wallet - Rust

    Struct bdk_wallet::Balance

    pub struct Balance {
    +    pub immature: Amount,
    +    pub trusted_pending: Amount,
    +    pub untrusted_pending: Amount,
    +    pub confirmed: Amount,
    +}
    Expand description

    Balance, differentiated into various categories.

    +

    Fields§

    §immature: Amount

    All coinbase outputs not yet matured

    +
    §trusted_pending: Amount

    Unconfirmed UTXOs generated by a wallet tx

    +
    §untrusted_pending: Amount

    Unconfirmed UTXOs received from an external wallet

    +
    §confirmed: Amount

    Confirmed and immediately spendable balance

    +

    Implementations§

    §

    impl Balance

    pub fn trusted_spendable(&self) -> Amount

    Get sum of trusted_pending and confirmed coins.

    +

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

    +

    pub fn total(&self) -> Amount

    Get the whole balance visible to the wallet.

    +

    Trait Implementations§

    §

    impl Add for Balance

    §

    type Output = Balance

    The resulting type after applying the + operator.
    §

    fn add(self, other: Balance) -> Balance

    Performs the + operation. Read more
    §

    impl Clone for Balance

    §

    fn clone(&self) -> Balance

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl Debug for Balance

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl Default for Balance

    §

    fn default() -> Balance

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

    impl<'de> Deserialize<'de> for Balance

    §

    fn deserialize<__D>( + __deserializer: __D +) -> Result<Balance, <__D as Deserializer<'de>>::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl Display for Balance

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl PartialEq for Balance

    §

    fn eq(&self, other: &Balance) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl Serialize for Balance

    §

    fn serialize<__S>( + &self, + __serializer: __S +) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for Balance

    §

    impl StructuralPartialEq for Balance

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.ChangeSet.html new file mode 100644 index 0000000000..d458fda181 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.ChangeSet.html @@ -0,0 +1,37 @@ +ChangeSet in bdk_wallet - Rust

    Struct bdk_wallet::ChangeSet

    source ·
    #[non_exhaustive]
    pub struct ChangeSet { + pub descriptor: Option<Descriptor<DescriptorPublicKey>>, + pub change_descriptor: Option<Descriptor<DescriptorPublicKey>>, + pub network: Option<Network>, + pub local_chain: ChangeSet, + pub tx_graph: ChangeSet<ConfirmationBlockTime>, + pub indexer: ChangeSet, +}
    Expand description

    A changeset for Wallet.

    +

    Fields (Non-exhaustive)§

    This struct is marked as non-exhaustive
    Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
    §descriptor: Option<Descriptor<DescriptorPublicKey>>

    Descriptor for recipient addresses.

    +
    §change_descriptor: Option<Descriptor<DescriptorPublicKey>>

    Descriptor for change addresses.

    +
    §network: Option<Network>

    Stores the network type of the transaction data.

    +
    §local_chain: ChangeSet

    Changes to the LocalChain.

    +
    §tx_graph: ChangeSet<ConfirmationBlockTime>

    Changes to TxGraph.

    +
    §indexer: ChangeSet

    Changes to KeychainTxOutIndex.

    +

    Implementations§

    source§

    impl ChangeSet

    source

    pub const WALLET_SCHEMA_NAME: &'static str = "bdk_wallet"

    Schema name for wallet.

    +
    source

    pub const WALLET_TABLE_NAME: &'static str = "bdk_wallet"

    Name of table to store wallet descriptors and network.

    +
    source

    pub fn from_sqlite(db_tx: &Transaction<'_>) -> Result<Self>

    Recover a ChangeSet from sqlite database.

    +
    source

    pub fn persist_to_sqlite(&self, db_tx: &Transaction<'_>) -> Result<()>

    Persist ChangeSet to sqlite database.

    +

    Trait Implementations§

    source§

    impl Clone for ChangeSet

    source§

    fn clone(&self) -> ChangeSet

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ChangeSet

    source§

    fn default() -> ChangeSet

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

    impl<'de> Deserialize<'de> for ChangeSet

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl From<ChangeSet<ConfirmationBlockTime>> for ChangeSet

    source§

    fn from(tx_graph: ChangeSet<ConfirmationBlockTime>) -> Self

    Converts to this type from the input type.
    source§

    impl From<ChangeSet<ConfirmationBlockTime, ChangeSet>> for ChangeSet

    source§

    fn from(indexed_tx_graph: ChangeSet<ConfirmationBlockTime, ChangeSet>) -> Self

    Converts to this type from the input type.
    source§

    impl From<ChangeSet> for ChangeSet

    source§

    fn from(indexer: ChangeSet) -> Self

    Converts to this type from the input type.
    source§

    impl From<ChangeSet> for ChangeSet

    source§

    fn from(chain: ChangeSet) -> Self

    Converts to this type from the input type.
    source§

    impl Merge for ChangeSet

    source§

    fn merge(&mut self, other: Self)

    Merge another ChangeSet into itself.

    +
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    §

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    source§

    impl PartialEq for ChangeSet

    source§

    fn eq(&self, other: &ChangeSet) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for ChangeSet

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl StructuralPartialEq for ChangeSet

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.CreateParams.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.CreateParams.html new file mode 100644 index 0000000000..68fcc9b943 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.CreateParams.html @@ -0,0 +1,33 @@ +CreateParams in bdk_wallet - Rust

    Struct bdk_wallet::CreateParams

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

    Parameters for Wallet::create or [PersistedWallet::create].

    +

    Implementations§

    source§

    impl CreateParams

    source

    pub fn new<D: IntoWalletDescriptor + 'static>( + descriptor: D, + change_descriptor: D +) -> Self

    Construct parameters with provided descriptor, change_descriptor and network.

    +

    Default values: genesis_hash = None, lookahead = [DEFAULT_LOOKAHEAD]

    +
    source

    pub fn keymap(self, keychain: KeychainKind, keymap: KeyMap) -> Self

    Extend the given keychain’s keymap.

    +
    source

    pub fn network(self, network: Network) -> Self

    Set network.

    +
    source

    pub fn genesis_hash(self, genesis_hash: BlockHash) -> Self

    Use a custom genesis_hash.

    +
    source

    pub fn lookahead(self, lookahead: u32) -> Self

    Use custom lookahead value.

    +
    source

    pub fn create_wallet<Db>( + self, + db: &mut Db +) -> Result<PersistedWallet, <Wallet as PersistWith<Db>>::CreateError>
    where + Wallet: PersistWith<Db, CreateParams = Self>,

    Create PersistedWallet with the given Db.

    +
    source

    pub async fn create_wallet_async<Db>( + self, + db: &mut Db +) -> Result<PersistedWallet, <Wallet as PersistAsyncWith<Db>>::CreateError>
    where + Wallet: PersistAsyncWith<Db, CreateParams = Self>,

    Create PersistedWallet with the given async Db.

    +
    source

    pub fn create_wallet_no_persist(self) -> Result<Wallet, DescriptorError>

    Create Wallet without persistence.

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LoadParams.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LoadParams.html new file mode 100644 index 0000000000..6d0605ab17 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LoadParams.html @@ -0,0 +1,36 @@ +LoadParams in bdk_wallet - Rust

    Struct bdk_wallet::LoadParams

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

    Parameters for Wallet::load or [PersistedWallet::load].

    +

    Implementations§

    source§

    impl LoadParams

    source

    pub fn new() -> Self

    Construct parameters with default values.

    +

    Default values: lookahead = [DEFAULT_LOOKAHEAD]

    +
    source

    pub fn keymap(self, keychain: KeychainKind, keymap: KeyMap) -> Self

    Extend the given keychain’s keymap.

    +
    source

    pub fn descriptors<D>(self, descriptor: D, change_descriptor: D) -> Self
    where + D: IntoWalletDescriptor + 'static,

    Checks that descriptor of keychain matches this, and extracts private keys (if +avaliable).

    +
    source

    pub fn network(self, network: Network) -> Self

    Check for network.

    +
    source

    pub fn genesis_hash(self, genesis_hash: BlockHash) -> Self

    Check for a genesis_hash.

    +
    source

    pub fn lookahead(self, lookahead: u32) -> Self

    Use custom lookahead value.

    +
    source

    pub fn load_wallet<Db>( + self, + db: &mut Db +) -> Result<Option<PersistedWallet>, <Wallet as PersistWith<Db>>::LoadError>
    where + Wallet: PersistWith<Db, LoadParams = Self>,

    Load PersistedWallet with the given Db.

    +
    source

    pub async fn load_wallet_async<Db>( + self, + db: &mut Db +) -> Result<Option<PersistedWallet>, <Wallet as PersistAsyncWith<Db>>::LoadError>
    where + Wallet: PersistAsyncWith<Db, LoadParams = Self>,

    Load PersistedWallet with the given async Db.

    +
    source

    pub fn load_wallet_no_persist( + self, + changeset: ChangeSet +) -> Result<Option<Wallet>, LoadError>

    Load Wallet without persistence.

    +

    Trait Implementations§

    source§

    impl Default for LoadParams

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html index 5c4cbfcf32..d16514e09c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html @@ -1,11 +1,11 @@ -LocalOutput in bdk_wallet - Rust

    Struct bdk_wallet::LocalOutput

    source ·
    pub struct LocalOutput {
    +LocalOutput in bdk_wallet - Rust

    Struct bdk_wallet::LocalOutput

    source ·
    pub struct LocalOutput {
         pub outpoint: OutPoint,
         pub txout: TxOut,
         pub keychain: KeychainKind,
         pub is_spent: bool,
         pub derivation_index: u32,
         pub confirmation_time: ConfirmationTime,
    -}
    Expand description

    An unspent output owned by a Wallet.

    +}
    Expand description

    An unspent output owned by a Wallet.

    Fields§

    §outpoint: OutPoint

    Reference to a transaction output

    §txout: TxOut

    Transaction output

    §keychain: KeychainKind

    Type of keychain

    @@ -21,7 +21,9 @@ sufficient, and should not be overridden without very good reason.
    Serializer,
    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for LocalOutput

    source§

    impl StructuralPartialEq for LocalOutput

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.SignOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.SignOptions.html new file mode 100644 index 0000000000..89a1c98fe5 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.SignOptions.html @@ -0,0 +1,51 @@ +SignOptions in bdk_wallet - Rust

    Struct bdk_wallet::SignOptions

    source ·
    pub struct SignOptions {
    +    pub trust_witness_utxo: bool,
    +    pub assume_height: Option<u32>,
    +    pub allow_all_sighashes: bool,
    +    pub try_finalize: bool,
    +    pub tap_leaves_options: TapLeavesOptions,
    +    pub sign_with_tap_internal_key: bool,
    +    pub allow_grinding: bool,
    +}
    Expand description

    Options for a software signer

    +

    Adjust the behavior of our software signers and the way a transaction is finalized

    +

    Fields§

    §trust_witness_utxo: bool

    Whether the signer should trust the witness_utxo, if the non_witness_utxo hasn’t been +provided

    +

    Defaults to false to mitigate the “SegWit bug” which should trick the wallet into +paying a fee larger than expected.

    +

    Some wallets, especially if relatively old, might not provide the non_witness_utxo for +SegWit transactions in the PSBT they generate: in those cases setting this to true +should correctly produce a signature, at the expense of an increased trust in the creator +of the PSBT.

    +

    For more details see: https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd

    +
    §assume_height: Option<u32>

    Whether the wallet should assume a specific height has been reached when trying to finalize +a transaction

    +

    The wallet will only “use” a timelock to satisfy the spending policy of an input if the +timelock height has already been reached. This option allows overriding the “current height” to let the +wallet use timelocks in the future to spend a coin.

    +
    §allow_all_sighashes: bool

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

    +

    Defaults to false which will only allow signing using SIGHASH_ALL.

    +
    §try_finalize: bool

    Whether to try finalizing the PSBT after the inputs are signed.

    +

    Defaults to true which will try finalizing PSBT after inputs are signed.

    +
    §tap_leaves_options: TapLeavesOptions

    Specifies which Taproot script-spend leaves we should sign for. This option is +ignored if we’re signing a non-taproot PSBT.

    +

    Defaults to All, i.e., the wallet will sign all the leaves it has a key for.

    +
    §sign_with_tap_internal_key: bool

    Whether we should try to sign a taproot transaction with the taproot internal key +or not. This option is ignored if we’re signing a non-taproot PSBT.

    +

    Defaults to true, i.e., we always try to sign with the taproot internal key.

    +
    §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§

    source§

    impl Clone for SignOptions

    source§

    fn clone(&self) -> SignOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignOptions

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignOptions

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.TxBuilder.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.TxBuilder.html new file mode 100644 index 0000000000..982cff4562 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.TxBuilder.html @@ -0,0 +1,285 @@ +TxBuilder in bdk_wallet - Rust

    Struct bdk_wallet::TxBuilder

    source ·
    pub struct TxBuilder<'a, Cs> { /* 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.

    +

    Each option setting method on TxBuilder takes and returns &mut self so you can chain calls +as in the following example:

    + +
    // chaining
    +let psbt1 = {
    +    let mut builder = wallet.build_tx();
    +    builder
    +        .ordering(TxOrdering::Untouched)
    +        .add_recipient(addr1.script_pubkey(), Amount::from_sat(50_000))
    +        .add_recipient(addr2.script_pubkey(), Amount::from_sat(50_000));
    +    builder.finish()?
    +};
    +
    +// non-chaining
    +let psbt2 = {
    +    let mut builder = wallet.build_tx();
    +    builder.ordering(TxOrdering::Untouched);
    +    for addr in &[addr1, addr2] {
    +        builder.add_recipient(addr.script_pubkey(), Amount::from_sat(50_000));
    +    }
    +    builder.finish()?
    +};
    +
    +assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
    +

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

    +

    For further examples see this module’s documentation;

    +

    Implementations§

    source§

    impl<'a, Cs> TxBuilder<'a, Cs>

    source

    pub fn fee_rate(&mut self, fee_rate: FeeRate) -> &mut Self

    Set a custom fee rate.

    +

    This method sets the mining fee paid by the transaction as a rate on its size. +This means that the total fee paid is equal to fee_rate times the size +of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core’s default +relay policy.

    +

    Note that this is really a minimum feerate – it’s possible to +overshoot it slightly since adding a change output to drain the remaining +excess might not be viable.

    +
    source

    pub fn fee_absolute(&mut self, fee_amount: Amount) -> &mut Self

    Set an absolute fee +The fee_absolute method refers to the absolute transaction fee in [Amount]. +If anyone sets both the fee_absolute method and the fee_rate method, +the FeePolicy enum will be set by whichever method was called last, +as the [FeeRate] and FeeAmount are mutually exclusive.

    +

    Note that this is really a minimum absolute fee – it’s possible to +overshoot it slightly since adding a change output to drain the remaining +excess might not be viable.

    +
    source

    pub fn policy_path( + &mut self, + policy_path: BTreeMap<String, Vec<usize>>, + keychain: KeychainKind +) -> &mut Self

    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 +SatisfiableItem::Thresh::items).

    +
    §Example
    +

    An example of when the policy path is needed is the following descriptor: +wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000)))), +derived from the miniscript policy thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000))). +It declares three descriptor fragments, and at the top level it uses thresh() to +ensure that at least two of them are satisfied. The individual fragments are:

    +
      +
    1. pk(A)
    2. +
    3. and(pk(B),older(6))
    4. +
    5. and(pk(C),after(630000))
    6. +
    +

    When those conditions are combined in pairs, it’s clear that the transaction needs to be created +differently depending on how the user intends to satisfy the policy afterwards:

    +
      +
    • If fragments 1 and 2 are used, the transaction will need to use a specific +n_sequence in order to spend an OP_CSV branch.
    • +
    • If fragments 1 and 3 are used, the transaction will need to use a specific locktime +in order to spend an OP_CLTV branch.
    • +
    • If fragments 2 and 3 are used, the transaction will need both.
    • +
    +

    When the spending policy is represented as a tree (see +Wallet::policies), every node +is assigned a unique identifier that can be used in the policy path to specify which of +the node’s children the user intends to satisfy: for instance, assuming the thresh() +root node of this example has an id of aabbccdd, the policy path map would look like:

    +

    { "aabbccdd" => [0, 1] }

    +

    where the key is the node’s id, and the value is a list of the children that should be +used, in no particular order.

    +

    If a particularly complex descriptor has multiple ambiguous thresholds in its structure, +multiple entries can be added to the map, one for each node that requires an explicit path.

    + +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    .unwrap()
    +    .assume_checked();
    +let mut path = BTreeMap::new();
    +path.insert("aabbccdd".to_string(), vec![0, 1]);
    +
    +let builder = wallet
    +    .build_tx()
    +    .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    +    .policy_path(path, KeychainKind::External);
    +
    +
    source

    pub fn add_utxos( + &mut self, + outpoints: &[OutPoint] +) -> Result<&mut Self, AddUtxoError>

    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.

    +
    source

    pub fn add_utxo( + &mut self, + outpoint: OutPoint +) -> Result<&mut Self, AddUtxoError>

    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.

    +
    source

    pub fn add_foreign_utxo( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: Weight +) -> Result<&mut Self, AddForeignUtxoError>

    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. +
    3. psbt_input: To know the value.
    4. +
    5. satisfaction_weight: To know how much weight/vbytes the input will add to the transaction for fee calculation.
    6. +
    +

    There are several security concerns about adding foreign UTXOs that application +developers should consider. First, how do you know the value of the input is correct? If a +non_witness_utxo is provided in the psbt_input then this method implicitly verifies the +value by checking it against the transaction. If only a witness_utxo is provided then this +method doesn’t verify the value but just takes it as a given – it is up to you to check +that whoever sent you the input_psbt was not lying!

    +

    Secondly, you must somehow provide satisfaction_weight of the input. Depending on your +application it may be important that this be known precisely. If not, a malicious +counterparty may fool you into putting in a value that is too low, giving the transaction a +lower than expected feerate. They could also fool you into putting a value that is too high +causing you to pay a fee that is too high. The party who is broadcasting the transaction can +of course check the real input weight matches the expected weight prior to broadcasting.

    +

    To guarantee the max_weight_to_satisfy is correct, you can require the party providing the +psbt_input provide a miniscript descriptor for the input so you can check it against the +script_pubkey and then ask it for the max_weight_to_satisfy.

    +

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

    +

    In order to use Wallet::calculate_fee or Wallet::calculate_fee_rate for a transaction +created with foreign UTXO(s) you must manually insert the corresponding TxOut(s) into the tx +graph using the Wallet::insert_txout function.

    +
    §Errors
    +

    This method returns errors in the following circumstances:

    +
      +
    1. The psbt_input does not contain a witness_utxo or non_witness_utxo.
    2. +
    3. The data in non_witness_utxo does not match what is in outpoint.
    4. +
    +

    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.

    +
    source

    pub fn add_foreign_utxo_with_sequence( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: Weight, + sequence: Sequence +) -> Result<&mut Self, AddForeignUtxoError>

    Same as add_foreign_utxo but allows to set the nSequence value.

    +
    source

    pub fn manually_selected_only(&mut self) -> &mut Self

    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.

    +
    source

    pub fn unspendable(&mut self, unspendable: Vec<OutPoint>) -> &mut Self

    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.

    +
    source

    pub fn add_unspendable(&mut self, unspendable: OutPoint) -> &mut Self

    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.

    +
    source

    pub fn sighash(&mut self, sighash: PsbtSighashType) -> &mut Self

    Sign with a specific sig hash

    +

    Use this option very carefully

    +
    source

    pub fn ordering(&mut self, ordering: TxOrdering) -> &mut Self

    Choose the ordering for inputs and outputs of the transaction

    +
    source

    pub fn nlocktime(&mut self, locktime: LockTime) -> &mut Self

    Use a specific nLockTime while creating the transaction

    +

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

    +
    source

    pub fn version(&mut self, version: i32) -> &mut Self

    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.

    +
    source

    pub fn do_not_spend_change(&mut self) -> &mut Self

    Do not spend change outputs

    +

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

    +
    source

    pub fn only_spend_change(&mut self) -> &mut Self

    Only spend change outputs

    +

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

    +
    source

    pub fn change_policy(&mut self, change_policy: ChangeSpendPolicy) -> &mut Self

    source

    pub fn only_witness_utxo(&mut self) -> &mut Self

    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.

    +
    source

    pub fn include_output_redeem_witness_script(&mut self) -> &mut Self

    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.

    +
    source

    pub fn add_global_xpubs(&mut self) -> &mut Self

    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.

    +
    source

    pub fn drain_wallet(&mut self) -> &mut Self

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

    +
    source

    pub fn coin_selection<P: CoinSelectionAlgorithm>( + self, + coin_selection: P +) -> TxBuilder<'a, P>

    Choose the coin selection algorithm

    +

    Overrides the CoinSelectionAlgorithm.

    +

    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.

    +
    source

    pub fn enable_rbf(&mut self) -> &mut Self

    Enable signaling RBF

    +

    This will use the default nSequence value of 0xFFFFFFFD.

    +
    source

    pub fn enable_rbf_with_sequence(&mut self, nsequence: Sequence) -> &mut Self

    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.

    +
    source

    pub fn current_height(&mut self, height: u32) -> &mut Self

    Set the current blockchain height.

    +

    This will be used to:

    +
      +
    1. Set the nLockTime for preventing fee sniping. +Note: This will be ignored if you manually specify a nlocktime using TxBuilder::nlocktime.
    2. +
    3. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not +mature at current_height, we ignore them in the coin selection. +If you want to create a transaction that spends immature coinbase inputs, manually +add them using TxBuilder::add_utxos.
    4. +
    +

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

    +
    source

    pub fn allow_dust(&mut self, allow_dust: bool) -> &mut Self

    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.

    +
    source

    pub fn set_recipients( + &mut self, + recipients: Vec<(ScriptBuf, Amount)> +) -> &mut Self

    Replace the recipients already added with a new list

    +
    source

    pub fn add_recipient( + &mut self, + script_pubkey: ScriptBuf, + amount: Amount +) -> &mut Self

    Add a recipient to the internal list

    +
    source

    pub fn add_data<T: AsRef<PushBytes>>(&mut self, data: &T) -> &mut Self

    Add data as an output, using OP_RETURN

    +
    source

    pub fn drain_to(&mut self, script_pubkey: ScriptBuf) -> &mut Self

    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 +coins are too small) it will not be included in the resulting transaction. The only +difference is that it is valid to use drain_to without setting any ordinary recipients +with add_recipient (but it is perfectly fine to add recipients as well).

    +

    If you choose not to set any recipients, you should provide the utxos that the +transaction should spend via add_utxos.

    +
    §Example
    +

    drain_to is very useful for draining all the coins in a wallet with drain_wallet to a +single address.

    + +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    .unwrap()
    +    .assume_checked();
    +let mut tx_builder = wallet.build_tx();
    +
    +tx_builder
    +    // Spend all outputs in this wallet.
    +    .drain_wallet()
    +    // Send the excess (which is all the coins minus the fee) to this address.
    +    .drain_to(to_address.script_pubkey())
    +    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    .enable_rbf();
    +let psbt = tx_builder.finish()?;
    +
    source§

    impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs>

    source

    pub fn finish(self) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    +

    Uses the thread-local random number generator (rng).

    +

    Returns a new [Psbt] per BIP174.

    +

    WARNING: To avoid change address reuse you must persist the changes resulting from one +or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +
    source

    pub fn finish_with_aux_rand( + self, + rng: &mut impl RngCore +) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    +

    Uses a provided random number generator (rng).

    +

    Returns a new [Psbt] per BIP174.

    +

    WARNING: To avoid change address reuse you must persist the changes resulting from one +or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +

    Trait Implementations§

    source§

    impl<'a, Cs: Clone> Clone for TxBuilder<'a, Cs>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, Cs: Debug> Debug for TxBuilder<'a, Cs>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a, Cs> Freeze for TxBuilder<'a, Cs>
    where + Cs: Freeze,

    §

    impl<'a, Cs> !RefUnwindSafe for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Send for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Sync for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> Unpin for TxBuilder<'a, Cs>
    where + Cs: Unpin,

    §

    impl<'a, Cs> !UnwindSafe for TxBuilder<'a, Cs>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Update.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Update.html new file mode 100644 index 0000000000..05baaafcb5 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Update.html @@ -0,0 +1,23 @@ +Update in bdk_wallet - Rust

    Struct bdk_wallet::Update

    source ·
    pub struct Update {
    +    pub last_active_indices: BTreeMap<KeychainKind, u32>,
    +    pub graph: TxGraph<ConfirmationBlockTime>,
    +    pub chain: Option<CheckPoint>,
    +}
    Expand description

    An update to Wallet.

    +

    It updates [KeychainTxOutIndex], [bdk_chain::TxGraph] and [local_chain::LocalChain] atomically.

    +

    Fields§

    §last_active_indices: BTreeMap<KeychainKind, u32>

    Contains the last active derivation indices per keychain (K), which is used to update the +[KeychainTxOutIndex].

    +
    §graph: TxGraph<ConfirmationBlockTime>

    Update for the wallet’s internal [TxGraph].

    +
    §chain: Option<CheckPoint>

    Update for the wallet’s internal LocalChain.

    +

    Trait Implementations§

    source§

    impl Clone for Update

    source§

    fn clone(&self) -> Update

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Update

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Update

    source§

    fn default() -> Update

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

    impl From<FullScanResult<KeychainKind>> for Update

    source§

    fn from(value: FullScanResult<KeychainKind>) -> Self

    Converts to this type from the input type.
    source§

    impl From<SyncResult> for Update

    source§

    fn from(value: SyncResult) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file 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 new file mode 100644 index 0000000000..a245760273 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.Wallet.html @@ -0,0 +1,465 @@ +Wallet in bdk_wallet - Rust

    Struct bdk_wallet::Wallet

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

    A Bitcoin wallet

    +

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

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

    The user is responsible for loading and writing wallet changes which are represented as +ChangeSets (see take_staged). Also see individual functions and example for instructions +on when Wallet state needs to be persisted.

    +

    The Wallet descriptor (external) and change descriptor (internal) must not derive the same +script pubkeys. See [KeychainTxOutIndex::insert_descriptor()] for more details.

    +

    Implementations§

    source§

    impl Wallet

    source

    pub fn create<D>(descriptor: D, change_descriptor: D) -> CreateParams
    where + D: IntoWalletDescriptor + Clone + 'static,

    Build a new Wallet.

    +

    If you have previously created a wallet, use load instead.

    +
    §Synopsis
    +
    // Create a non-persisted wallet.
    +let wallet = Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
    +
    +// Create a wallet that is persisted to SQLite database.
    +use bdk_wallet::rusqlite::Connection;
    +let mut conn = Connection::open(file_path)?;
    +let wallet = Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +    .network(Network::Testnet)
    +    .create_wallet(&mut conn)?;
    +
    source

    pub fn create_with_params(params: CreateParams) -> Result<Self, DescriptorError>

    Create a new Wallet with given params.

    +

    Refer to Wallet::create for more.

    +
    source

    pub fn load() -> LoadParams

    Build Wallet by loading from persistence or ChangeSet.

    +

    Note that the descriptor secret keys are not persisted to the db. You can either add +signers after-the-fact with Wallet::add_signer or Wallet::set_keymap. Or you can +add keys when building the wallet using LoadParams::keymap and/or +LoadParams::descriptors.

    +
    §Synopsis
    +
    // Load a wallet from changeset (no persistence).
    +let wallet = Wallet::load()
    +    .load_wallet_no_persist(changeset)?
    +    .expect("must have data to load wallet");
    +
    +// Load a wallet that is persisted to SQLite database.
    +let mut conn = bdk_wallet::rusqlite::Connection::open(file_path)?;
    +let mut wallet = Wallet::load()
    +    // check loaded descriptors matches these values and extract private keys
    +    .descriptors(EXTERNAL_DESC, INTERNAL_DESC)
    +    // you can also manually add private keys
    +    .keymap(KeychainKind::External, external_keymap)
    +    .keymap(KeychainKind::Internal, internal_keymap)
    +    // ensure loaded wallet's genesis hash matches this value
    +    .genesis_hash(genesis_hash)
    +    // set a lookahead for our indexer
    +    .lookahead(101)
    +    .load_wallet(&mut conn)?
    +    .expect("must have data to load wallet");
    +
    source

    pub fn load_with_params( + changeset: ChangeSet, + params: LoadParams +) -> Result<Option<Self>, LoadError>

    Load Wallet from the given previously persisted ChangeSet and params.

    +

    Refer to Wallet::load for more.

    +
    source

    pub fn network(&self) -> Network

    Get the Bitcoin network the wallet is using.

    +
    source

    pub fn keychains( + &self +) -> impl Iterator<Item = (&KeychainKind, &ExtendedDescriptor)>

    Iterator over all keychains in this wallet

    +
    source

    pub fn peek_address(&self, keychain: KeychainKind, index: u32) -> AddressInfo

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

    +

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

    +
    §Panics
    +

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

    +
    source

    pub fn reveal_next_address(&mut self, keychain: KeychainKind) -> AddressInfo

    Attempt to reveal the next address of the given keychain.

    +

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

    +

    WARNING: To avoid address reuse you must persist the changes resulting from one or more +calls to this method before closing the wallet. For example:

    + +
    use bdk_chain::rusqlite::Connection;
    +let mut conn = Connection::open_in_memory().expect("must open connection");
    +let mut wallet = LoadParams::new()
    +    .load_wallet(&mut conn)
    +    .expect("database is okay")
    +    .expect("database has data");
    +let next_address = wallet.reveal_next_address(KeychainKind::External);
    +wallet.persist(&mut conn).expect("write is okay");
    +
    +// Now it's safe to show the user their next address!
    +println!("Next address: {}", next_address.address);
    +
    source

    pub fn reveal_addresses_to( + &mut self, + keychain: KeychainKind, + index: u32 +) -> impl Iterator<Item = AddressInfo> + '_

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

    +

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

    +

    WARNING: To avoid address reuse you must persist the changes resulting from one or more +calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +
    source

    pub fn next_unused_address(&mut self, keychain: KeychainKind) -> AddressInfo

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

    +

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

    +

    WARNING: To avoid address reuse you must persist the changes resulting from one or more +calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +
    source

    pub fn mark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

    Marks an address used of the given keychain at index.

    +

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

    +
    source

    pub fn unmark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

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

    +

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

    +
    source

    pub fn list_unused_addresses( + &self, + keychain: KeychainKind +) -> impl DoubleEndedIterator<Item = AddressInfo> + '_

    List addresses that are revealed but unused.

    +

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

    +
    source

    pub fn is_mine(&self, script: &Script) -> bool

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

    +
    source

    pub fn derivation_of_spk(&self, spk: &Script) -> Option<(KeychainKind, u32)>

    Finds how the wallet derived the script pubkey spk.

    +

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

    +
    source

    pub fn list_unspent(&self) -> impl Iterator<Item = LocalOutput> + '_

    Return the list of unspent outputs of this wallet

    +
    source

    pub fn list_output(&self) -> impl Iterator<Item = LocalOutput> + '_

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

    +

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

    +
    source

    pub fn checkpoints(&self) -> CheckPointIter

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

    +
    source

    pub fn latest_checkpoint(&self) -> CheckPoint

    Returns the latest checkpoint.

    +
    source

    pub fn all_unbounded_spk_iters( + &self +) -> BTreeMap<KeychainKind, impl Iterator<Item = Indexed<ScriptBuf>> + Clone>

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

    +

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

    +

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

    +
    source

    pub fn unbounded_spk_iter( + &self, + keychain: KeychainKind +) -> impl Iterator<Item = Indexed<ScriptBuf>> + Clone

    Get an unbounded script pubkey iterator for the given keychain.

    +

    See all_unbounded_spk_iters for more documentation

    +
    source

    pub fn get_utxo(&self, op: OutPoint) -> Option<LocalOutput>

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

    +
    source

    pub fn insert_txout(&mut self, outpoint: OutPoint, txout: TxOut)

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

    +

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

    +

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

    +

    You must persist the changes resulting from one or more calls to this method if you need +the inserted TxOut data to be reloaded after closing the wallet. +See Wallet::reveal_next_address.

    +
    source

    pub fn calculate_fee( + &self, + tx: &Transaction +) -> Result<Amount, CalculateFeeError>

    Calculates the fee of a given transaction. Returns [Amount::ZERO] if tx is a coinbase transaction.

    +

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

    +

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

    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +let fee = wallet.calculate_fee(&tx).expect("fee");
    + +
    let tx = &psbt.clone().extract_tx().expect("tx");
    +let fee = wallet.calculate_fee(tx).expect("fee");
    +
    source

    pub fn calculate_fee_rate( + &self, + tx: &Transaction +) -> Result<FeeRate, CalculateFeeError>

    Calculate the [FeeRate] for a given transaction.

    +

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

    +

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

    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
    + +
    let tx = &psbt.clone().extract_tx().expect("tx");
    +let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
    +
    source

    pub fn sent_and_received(&self, tx: &Transaction) -> (Amount, Amount)

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

    +

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

    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
    +let (sent, received) = wallet.sent_and_received(&tx);
    + +
    let tx = &psbt.clone().extract_tx().expect("tx");
    +let (sent, received) = wallet.sent_and_received(tx);
    +
    source

    pub fn get_tx( + &self, + txid: Txid +) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationBlockTime>>

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

    +

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

    +
      +
    • Blocks that the transaction is Anchored in. These may or may not be blocks that exist +in the best chain.
    • +
    • The [ChainPosition] of the transaction in the best chain - whether the transaction is +confirmed or unconfirmed. If the transaction is confirmed, the anchor which proves the +confirmation is provided. If the transaction is unconfirmed, the unix timestamp of when +the transaction was last seen in the mempool is provided.
    • +
    + +
    use bdk_chain::Anchor;
    +use bdk_wallet::{chain::ChainPosition, Wallet};
    +
    +let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
    +
    +// get reference to full transaction
    +println!("my tx: {:#?}", canonical_tx.tx_node.tx);
    +
    +// list all transaction anchors
    +for anchor in canonical_tx.tx_node.anchors {
    +    println!(
    +        "tx is anchored by block of hash {}",
    +        anchor.anchor_block().hash
    +    );
    +}
    +
    +// get confirmation status of transaction
    +match canonical_tx.chain_position {
    +    ChainPosition::Confirmed(anchor) => println!(
    +        "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
    +        anchor.block_id.height, anchor.block_id.height, anchor.block_id.hash,
    +    ),
    +    ChainPosition::Unconfirmed(last_seen) => println!(
    +        "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
    +        last_seen,
    +    ),
    +}
    +
    source

    pub fn insert_checkpoint( + &mut self, + block_id: BlockId +) -> Result<bool, AlterCheckPointError>

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

    +

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

    +

    WARNING: You must persist the changes resulting from one or more calls to this method +if you need the inserted checkpoint data to be reloaded after closing the wallet. +See Wallet::reveal_next_address.

    +
    source

    pub fn insert_tx(&mut self, tx: Transaction) -> bool

    Add a transaction to the wallet’s internal view of the chain. This stages the change, +you must persist it later.

    +

    This method inserts the given tx and returns whether anything changed after insertion, +which will be false if the same transaction already exists in the wallet’s transaction +graph. Any changes are staged but not committed.

    +
    §Note
    +

    By default the inserted tx won’t be considered “canonical” because it’s not known +whether the transaction exists in the best chain. To know whether it exists, the tx +must be broadcast to the network and the wallet synced via a chain source.

    +
    source

    pub fn transactions( + &self +) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationBlockTime>> + '_

    Iterate over the transactions in the wallet.

    +
    source

    pub fn balance(&self) -> Balance

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

    +
    source

    pub fn add_signer( + &mut self, + keychain: KeychainKind, + ordering: SignerOrdering, + signer: Arc<dyn TransactionSigner> +)

    Add an external signer

    +

    See the signer module for an example.

    +
    source

    pub fn set_keymap(&mut self, keychain: KeychainKind, keymap: KeyMap)

    Set the keymap for a given keychain.

    +
    source

    pub fn set_keymaps( + &mut self, + keymaps: impl IntoIterator<Item = (KeychainKind, KeyMap)> +)

    Set the keymap for each keychain.

    +
    source

    pub fn get_signers(&self, keychain: KeychainKind) -> Arc<SignersContainer>

    Get the signers

    +
    §Example
    +
    let descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/0/*)";
    +let change_descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/1/*)";
    +let wallet = Wallet::create(descriptor, change_descriptor)
    +    .network(Network::Testnet)
    +    .create_wallet_no_persist()?;
    +for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
    +    // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    +    println!("secret_key: {}", secret_key);
    +}
    +
    +Ok::<(), Box<dyn std::error::Error>>(())
    +
    source

    pub fn build_tx(&mut self) -> TxBuilder<'_, DefaultCoinSelectionAlgorithm>

    Start building a transaction.

    +

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

    +
    §Example
    +
    let psbt = {
    +   let mut builder =  wallet.build_tx();
    +   builder
    +       .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    +   builder.finish()?
    +};
    +
    +// sign and broadcast ...
    +
    source

    pub fn build_fee_bump( + &mut self, + txid: Txid +) -> Result<TxBuilder<'_, DefaultCoinSelectionAlgorithm>, BuildFeeBumpError>

    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.

    +
    §Example
    +
    let mut psbt = {
    +    let mut builder = wallet.build_tx();
    +    builder
    +        .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    +        .enable_rbf();
    +    builder.finish()?
    +};
    +let _ = wallet.sign(&mut psbt, SignOptions::default())?;
    +let tx = psbt.clone().extract_tx().expect("tx");
    +// broadcast tx but it's taking too long to confirm so we want to bump the fee
    +let mut psbt =  {
    +    let mut builder = wallet.build_fee_bump(tx.compute_txid())?;
    +    builder
    +        .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"));
    +    builder.finish()?
    +};
    +
    +let _ = wallet.sign(&mut psbt, SignOptions::default())?;
    +let fee_bumped_tx = psbt.extract_tx();
    +// broadcast fee_bumped_tx to replace original
    +
    source

    pub fn sign( + &self, + psbt: &mut Psbt, + sign_options: SignOptions +) -> Result<bool, SignerError>

    Sign a transaction with all the wallet’s signers, in the order specified by every signer’s +SignerOrdering. This function returns the Result type with an encapsulated bool that has the value true if the PSBT was finalized, or false otherwise.

    +

    The SignOptions can be used to tweak the behavior of the software signers, and the way +the transaction is finalized at the end. Note that it can’t be guaranteed that every +signers will follow the options, but the “software signers” (WIF keys and xprv) defined +in this library will.

    +
    §Example
    +
    let mut psbt = {
    +    let mut builder = wallet.build_tx();
    +    builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    +    builder.finish()?
    +};
    +let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
    +assert!(finalized, "we should have signed all the inputs");
    +
    source

    pub fn policies( + &self, + keychain: KeychainKind +) -> Result<Option<Policy>, DescriptorError>

    Return the spending policies for the wallet’s descriptor

    +
    source

    pub fn public_descriptor(&self, keychain: KeychainKind) -> &ExtendedDescriptor

    Returns the descriptor used to create addresses for a particular keychain. +It’s the “public” version of the wallet’s descriptor, meaning a new descriptor that has +the same structure but with the all secret keys replaced by their corresponding public key.

    +

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

    +
    source

    pub fn finalize_psbt( + &self, + psbt: &mut Psbt, + sign_options: SignOptions +) -> Result<bool, SignerError>

    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, +and BIP371 +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.

    +
    source

    pub fn secp_ctx(&self) -> &Secp256k1<All>

    Return the secp256k1 context used for all signing operations

    +
    source

    pub fn derivation_index(&self, keychain: KeychainKind) -> Option<u32>

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

    +
    source

    pub fn next_derivation_index(&self, keychain: KeychainKind) -> u32

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

    +
    source

    pub fn cancel_tx(&mut self, tx: &Transaction)

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

    +

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

    +
    source

    pub fn get_psbt_input( + &self, + utxo: LocalOutput, + sighash_type: Option<PsbtSighashType>, + only_witness_utxo: bool +) -> Result<Input, CreateTxError>

    get the corresponding PSBT Input for a LocalUtxo

    +
    source

    pub fn descriptor_checksum(&self, keychain: KeychainKind) -> String

    Return the checksum of the public descriptor associated to keychain

    +

    Internally calls Self::public_descriptor to fetch the right descriptor

    +
    source

    pub fn apply_update( + &mut self, + update: impl Into<Update> +) -> Result<(), CannotConnectError>

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

    +

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

    +

    After applying updates you should persist the staged wallet changes. For an example of how +to persist staged wallet changes see Wallet::reveal_next_address. `

    +
    source

    pub fn staged(&self) -> Option<&ChangeSet>

    Get a reference of the staged ChangeSet that are yet to be committed (if any).

    +
    source

    pub fn take_staged(&mut self) -> Option<ChangeSet>

    Take the staged ChangeSet to be persisted now (if any).

    +
    source

    pub fn tx_graph(&self) -> &TxGraph<ConfirmationBlockTime>

    Get a reference to the inner [TxGraph].

    +
    source

    pub fn unbroadcast_transactions( + &self +) -> impl Iterator<Item = TxNode<'_, Arc<Transaction>, ConfirmationBlockTime>>

    Iterate over transactions in the wallet that are unseen and unanchored likely +because they haven’t been broadcast.

    +
    source

    pub fn spk_index(&self) -> &KeychainTxOutIndex<KeychainKind>

    Get a reference to the inner [KeychainTxOutIndex].

    +
    source

    pub fn local_chain(&self) -> &LocalChain

    Get a reference to the inner [LocalChain].

    +
    source

    pub fn apply_block( + &mut self, + block: &Block, + height: u32 +) -> Result<(), CannotConnectError>

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

    +

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

    +
    source

    pub fn apply_block_connected_to( + &mut self, + block: &Block, + height: u32, + connected_to: BlockId +) -> Result<(), ApplyHeaderError>

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

    +

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

    +

    WARNING: You must persist the changes resulting from one or more calls to this method +if you need the inserted block data to be reloaded after closing the wallet. +See Wallet::reveal_next_address.

    +
    source

    pub fn apply_unconfirmed_txs<'t>( + &mut self, + unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> +)

    Apply relevant unconfirmed transactions to the wallet.

    +

    Transactions that are not relevant are filtered out.

    +

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

    +

    WARNING: You must persist the changes resulting from one or more calls to this method +if you need the applied unconfirmed transactions to be reloaded after closing the wallet. +See Wallet::reveal_next_address.

    +
    source§

    impl Wallet

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

    +
    source

    pub fn start_sync_with_revealed_spks(&self) -> SyncRequest

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

    +

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

    +
    source

    pub fn start_full_scan(&self) -> FullScanRequest<KeychainKind>

    Create a [`FullScanRequest] for this wallet.

    +

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

    +

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

    +

    Trait Implementations§

    source§

    impl AsRef<TxGraph<ConfirmationBlockTime>> for Wallet

    source§

    fn as_ref(&self) -> &TxGraph<ConfirmationBlockTime>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Debug for Wallet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PersistWith<Connection> for Wallet

    §

    type CreateParams = CreateParams

    Parameters for [PersistWith::create].
    §

    type LoadParams = LoadParams

    Parameters for [PersistWith::load].
    §

    type CreateError = CreateWithPersistError<Error>

    Error type of [PersistWith::create].
    §

    type LoadError = LoadWithPersistError<Error>

    Error type of [PersistWith::load].
    §

    type PersistError = Error

    Error type of [PersistWith::persist].
    source§

    fn create( + db: &mut Connection, + params: Self::CreateParams +) -> Result<Self, Self::CreateError>

    Initialize the Db and create Self.
    source§

    fn load( + db: &mut Connection, + params: Self::LoadParams +) -> Result<Option<Self>, Self::LoadError>

    Initialize the Db and load a previously-persisted Self.
    source§

    fn persist( + db: &mut Connection, + changeset: &<Self as Staged>::ChangeSet +) -> Result<(), Self::PersistError>

    Persist changes to the Db.
    source§

    impl PersistWith<Store<ChangeSet>> for Wallet

    §

    type CreateParams = CreateParams

    Parameters for [PersistWith::create].
    §

    type LoadParams = LoadParams

    Parameters for [PersistWith::load].
    §

    type CreateError = CreateWithPersistError<Error>

    Error type of [PersistWith::create].
    §

    type LoadError = LoadWithPersistError<AggregateChangesetsError<ChangeSet>>

    Error type of [PersistWith::load].
    §

    type PersistError = Error

    Error type of [PersistWith::persist].
    source§

    fn create( + db: &mut Store<ChangeSet>, + params: Self::CreateParams +) -> Result<Self, Self::CreateError>

    Initialize the Db and create Self.
    source§

    fn load( + db: &mut Store<ChangeSet>, + params: Self::LoadParams +) -> Result<Option<Self>, Self::LoadError>

    Initialize the Db and load a previously-persisted Self.
    source§

    fn persist( + db: &mut Store<ChangeSet>, + changeset: &<Self as Staged>::ChangeSet +) -> Result<(), Self::PersistError>

    Persist changes to the Db.
    source§

    impl<'c> PersistWith<Transaction<'c>> for Wallet

    §

    type CreateParams = CreateParams

    Parameters for [PersistWith::create].
    §

    type LoadParams = LoadParams

    Parameters for [PersistWith::load].
    §

    type CreateError = CreateWithPersistError<Error>

    Error type of [PersistWith::create].
    §

    type LoadError = LoadWithPersistError<Error>

    Error type of [PersistWith::load].
    §

    type PersistError = Error

    Error type of [PersistWith::persist].
    source§

    fn create( + db: &mut Transaction<'c>, + params: Self::CreateParams +) -> Result<Self, Self::CreateError>

    Initialize the Db and create Self.
    source§

    fn load( + conn: &mut Transaction<'c>, + params: Self::LoadParams +) -> Result<Option<Self>, Self::LoadError>

    Initialize the Db and load a previously-persisted Self.
    source§

    fn persist( + db: &mut Transaction<'c>, + changeset: &<Self as Staged>::ChangeSet +) -> Result<(), Self::PersistError>

    Persist changes to the Db.
    source§

    impl Staged for Wallet

    §

    type ChangeSet = ChangeSet

    Type for staged changes.
    source§

    fn staged(&mut self) -> &mut Self::ChangeSet

    Get mutable reference of staged changes.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html index cabfa3c10f..6ad6428d66 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html @@ -1,4 +1,4 @@ -WeightedUtxo in bdk_wallet - Rust

    Struct bdk_wallet::WeightedUtxo

    source ·
    pub struct WeightedUtxo {
    +WeightedUtxo in bdk_wallet - Rust

    Struct bdk_wallet::WeightedUtxo

    source ·
    pub struct WeightedUtxo {
         pub satisfaction_weight: Weight,
         pub utxo: Utxo,
     }
    Expand description

    A Utxo with its satisfaction_weight.

    @@ -10,7 +10,9 @@ by ==.
    source§

    impl Eq for WeightedUtxo

    source§

    impl StructuralPartialEq for WeightedUtxo

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + T: ?Sized,
    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of 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 new file mode 100644 index 0000000000..fa21c54fbc --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/trait.IsDust.html @@ -0,0 +1,8 @@ +IsDust in bdk_wallet - Rust

    Trait bdk_wallet::IsDust

    source ·
    pub trait IsDust {
    +    // Required method
    +    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§

    source

    fn is_dust(&self, script: &Script) -> bool

    Check whether or not a value is below dust limit

    +

    Implementations on Foreign Types§

    source§

    impl IsDust for u64

    source§

    fn is_dust(&self, script: &Script) -> bool

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddForeignUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddForeignUtxoError.html new file mode 100644 index 0000000000..39e4432f6b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddForeignUtxoError.html @@ -0,0 +1,26 @@ +AddForeignUtxoError in bdk_wallet::tx_builder - Rust

    Enum bdk_wallet::tx_builder::AddForeignUtxoError

    source ·
    pub enum AddForeignUtxoError {
    +    InvalidTxid {
    +        input_txid: Txid,
    +        foreign_utxo: OutPoint,
    +    },
    +    InvalidOutpoint(OutPoint),
    +    MissingUtxo,
    +}
    Expand description

    Error returned from TxBuilder::add_foreign_utxo.

    +

    Variants§

    §

    InvalidTxid

    Foreign utxo outpoint txid does not match PSBT input txid

    +

    Fields

    §input_txid: Txid

    PSBT input txid

    +
    §foreign_utxo: OutPoint

    Foreign UTXO outpoint

    +
    §

    InvalidOutpoint(OutPoint)

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

    +
    §

    MissingUtxo

    Foreign utxo missing witness_utxo or non_witness_utxo

    +

    Trait Implementations§

    source§

    impl Debug for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddForeignUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddUtxoError.html new file mode 100644 index 0000000000..d4c8e68dca --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.AddUtxoError.html @@ -0,0 +1,17 @@ +AddUtxoError in bdk_wallet::tx_builder - Rust

    Enum bdk_wallet::tx_builder::AddUtxoError

    source ·
    pub enum AddUtxoError {
    +    UnknownUtxo(OutPoint),
    +}
    Expand description

    Error returned from TxBuilder::add_utxo and TxBuilder::add_utxos

    +

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    +

    Trait Implementations§

    source§

    impl Debug for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ 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 new file mode 100644 index 0000000000..96c4e5ebb7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.ChangeSpendPolicy.html @@ -0,0 +1,32 @@ +ChangeSpendPolicy in bdk_wallet::tx_builder - Rust

    Enum bdk_wallet::tx_builder::ChangeSpendPolicy

    source ·
    pub enum ChangeSpendPolicy {
    +    ChangeAllowed,
    +    OnlyChange,
    +    ChangeForbidden,
    +}
    Expand description

    Policy regarding the use of change outputs when creating a transaction

    +

    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§

    source§

    impl Clone for ChangeSpendPolicy

    source§

    fn clone(&self) -> ChangeSpendPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSpendPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ChangeSpendPolicy

    source§

    fn default() -> ChangeSpendPolicy

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

    impl Hash for ChangeSpendPolicy

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

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

    impl Ord for ChangeSpendPolicy

    source§

    fn cmp(&self, other: &ChangeSpendPolicy) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for ChangeSpendPolicy

    source§

    fn eq(&self, other: &ChangeSpendPolicy) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for ChangeSpendPolicy

    source§

    fn partial_cmp(&self, other: &ChangeSpendPolicy) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Copy for ChangeSpendPolicy

    source§

    impl Eq for ChangeSpendPolicy

    source§

    impl StructuralPartialEq for ChangeSpendPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file 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 new file mode 100644 index 0000000000..2b43ee7ce4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/enum.TxOrdering.html @@ -0,0 +1,34 @@ +TxOrdering in bdk_wallet::tx_builder - Rust

    Enum bdk_wallet::tx_builder::TxOrdering

    source ·
    pub enum TxOrdering {
    +    Shuffle,
    +    Untouched,
    +    Custom {
    +        input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>,
    +        output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>,
    +    },
    +}
    Expand description

    Ordering of the transaction’s inputs and outputs

    +

    Variants§

    §

    Shuffle

    Randomized (default)

    +
    §

    Untouched

    Unchanged

    +
    §

    Custom

    Provide custom comparison functions for sorting

    +

    Fields

    §input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>

    Transaction inputs sort function

    +
    §output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>

    Transaction outputs sort function

    +

    Implementations§

    source§

    impl TxOrdering

    source

    pub fn sort_tx(&self, tx: &mut Transaction)

    Sort transaction inputs and outputs by TxOrdering variant.

    +

    Uses the thread-local random number generator (rng).

    +
    source

    pub fn sort_tx_with_aux_rand( + &self, + tx: &mut Transaction, + rng: &mut impl RngCore +)

    Sort transaction inputs and outputs by TxOrdering variant.

    +

    Uses a provided random number generator (rng).

    +

    Trait Implementations§

    source§

    impl Clone for TxOrdering

    source§

    fn clone(&self) -> TxOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TxOrdering

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TxOrdering

    source§

    fn default() -> TxOrdering

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/index.html new file mode 100644 index 0000000000..b3573e6d1f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/index.html @@ -0,0 +1,16 @@ +bdk_wallet::tx_builder - Rust

    Module bdk_wallet::tx_builder

    source ·
    Expand description

    Transaction builder

    +

    §Example

    +
    // create a TxBuilder from a wallet
    +let mut tx_builder = wallet.build_tx();
    +
    +tx_builder
    +    // Create a transaction with one output to `to_address` of 50_000 satoshi
    +    .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    +    // With a custom fee rate of 5.0 satoshi/vbyte
    +    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    // Only spend non-change outputs
    +    .do_not_spend_change()
    +    // Turn on RBF signaling
    +    .enable_rbf();
    +let psbt = tx_builder.finish()?;
    +

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/sidebar-items.js new file mode 100644 index 0000000000..55f2e14703 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["AddForeignUtxoError","AddUtxoError","ChangeSpendPolicy","TxOrdering"],"struct":["TxBuilder"]}; \ No newline at end of file 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 new file mode 100644 index 0000000000..2da443a0c8 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/tx_builder/struct.TxBuilder.html @@ -0,0 +1,285 @@ +TxBuilder in bdk_wallet::tx_builder - Rust

    Struct bdk_wallet::tx_builder::TxBuilder

    source ·
    pub struct TxBuilder<'a, Cs> { /* 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.

    +

    Each option setting method on TxBuilder takes and returns &mut self so you can chain calls +as in the following example:

    + +
    // chaining
    +let psbt1 = {
    +    let mut builder = wallet.build_tx();
    +    builder
    +        .ordering(TxOrdering::Untouched)
    +        .add_recipient(addr1.script_pubkey(), Amount::from_sat(50_000))
    +        .add_recipient(addr2.script_pubkey(), Amount::from_sat(50_000));
    +    builder.finish()?
    +};
    +
    +// non-chaining
    +let psbt2 = {
    +    let mut builder = wallet.build_tx();
    +    builder.ordering(TxOrdering::Untouched);
    +    for addr in &[addr1, addr2] {
    +        builder.add_recipient(addr.script_pubkey(), Amount::from_sat(50_000));
    +    }
    +    builder.finish()?
    +};
    +
    +assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
    +

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

    +

    For further examples see this module’s documentation;

    +

    Implementations§

    source§

    impl<'a, Cs> TxBuilder<'a, Cs>

    source

    pub fn fee_rate(&mut self, fee_rate: FeeRate) -> &mut Self

    Set a custom fee rate.

    +

    This method sets the mining fee paid by the transaction as a rate on its size. +This means that the total fee paid is equal to fee_rate times the size +of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core’s default +relay policy.

    +

    Note that this is really a minimum feerate – it’s possible to +overshoot it slightly since adding a change output to drain the remaining +excess might not be viable.

    +
    source

    pub fn fee_absolute(&mut self, fee_amount: Amount) -> &mut Self

    Set an absolute fee +The fee_absolute method refers to the absolute transaction fee in [Amount]. +If anyone sets both the fee_absolute method and the fee_rate method, +the FeePolicy enum will be set by whichever method was called last, +as the [FeeRate] and FeeAmount are mutually exclusive.

    +

    Note that this is really a minimum absolute fee – it’s possible to +overshoot it slightly since adding a change output to drain the remaining +excess might not be viable.

    +
    source

    pub fn policy_path( + &mut self, + policy_path: BTreeMap<String, Vec<usize>>, + keychain: KeychainKind +) -> &mut Self

    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 +SatisfiableItem::Thresh::items).

    +
    §Example
    +

    An example of when the policy path is needed is the following descriptor: +wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000)))), +derived from the miniscript policy thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000))). +It declares three descriptor fragments, and at the top level it uses thresh() to +ensure that at least two of them are satisfied. The individual fragments are:

    +
      +
    1. pk(A)
    2. +
    3. and(pk(B),older(6))
    4. +
    5. and(pk(C),after(630000))
    6. +
    +

    When those conditions are combined in pairs, it’s clear that the transaction needs to be created +differently depending on how the user intends to satisfy the policy afterwards:

    +
      +
    • If fragments 1 and 2 are used, the transaction will need to use a specific +n_sequence in order to spend an OP_CSV branch.
    • +
    • If fragments 1 and 3 are used, the transaction will need to use a specific locktime +in order to spend an OP_CLTV branch.
    • +
    • If fragments 2 and 3 are used, the transaction will need both.
    • +
    +

    When the spending policy is represented as a tree (see +Wallet::policies), every node +is assigned a unique identifier that can be used in the policy path to specify which of +the node’s children the user intends to satisfy: for instance, assuming the thresh() +root node of this example has an id of aabbccdd, the policy path map would look like:

    +

    { "aabbccdd" => [0, 1] }

    +

    where the key is the node’s id, and the value is a list of the children that should be +used, in no particular order.

    +

    If a particularly complex descriptor has multiple ambiguous thresholds in its structure, +multiple entries can be added to the map, one for each node that requires an explicit path.

    + +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    .unwrap()
    +    .assume_checked();
    +let mut path = BTreeMap::new();
    +path.insert("aabbccdd".to_string(), vec![0, 1]);
    +
    +let builder = wallet
    +    .build_tx()
    +    .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    +    .policy_path(path, KeychainKind::External);
    +
    +
    source

    pub fn add_utxos( + &mut self, + outpoints: &[OutPoint] +) -> Result<&mut Self, AddUtxoError>

    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.

    +
    source

    pub fn add_utxo( + &mut self, + outpoint: OutPoint +) -> Result<&mut Self, AddUtxoError>

    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.

    +
    source

    pub fn add_foreign_utxo( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: Weight +) -> Result<&mut Self, AddForeignUtxoError>

    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. +
    3. psbt_input: To know the value.
    4. +
    5. satisfaction_weight: To know how much weight/vbytes the input will add to the transaction for fee calculation.
    6. +
    +

    There are several security concerns about adding foreign UTXOs that application +developers should consider. First, how do you know the value of the input is correct? If a +non_witness_utxo is provided in the psbt_input then this method implicitly verifies the +value by checking it against the transaction. If only a witness_utxo is provided then this +method doesn’t verify the value but just takes it as a given – it is up to you to check +that whoever sent you the input_psbt was not lying!

    +

    Secondly, you must somehow provide satisfaction_weight of the input. Depending on your +application it may be important that this be known precisely. If not, a malicious +counterparty may fool you into putting in a value that is too low, giving the transaction a +lower than expected feerate. They could also fool you into putting a value that is too high +causing you to pay a fee that is too high. The party who is broadcasting the transaction can +of course check the real input weight matches the expected weight prior to broadcasting.

    +

    To guarantee the max_weight_to_satisfy is correct, you can require the party providing the +psbt_input provide a miniscript descriptor for the input so you can check it against the +script_pubkey and then ask it for the max_weight_to_satisfy.

    +

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

    +

    In order to use Wallet::calculate_fee or Wallet::calculate_fee_rate for a transaction +created with foreign UTXO(s) you must manually insert the corresponding TxOut(s) into the tx +graph using the Wallet::insert_txout function.

    +
    §Errors
    +

    This method returns errors in the following circumstances:

    +
      +
    1. The psbt_input does not contain a witness_utxo or non_witness_utxo.
    2. +
    3. The data in non_witness_utxo does not match what is in outpoint.
    4. +
    +

    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.

    +
    source

    pub fn add_foreign_utxo_with_sequence( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: Weight, + sequence: Sequence +) -> Result<&mut Self, AddForeignUtxoError>

    Same as add_foreign_utxo but allows to set the nSequence value.

    +
    source

    pub fn manually_selected_only(&mut self) -> &mut Self

    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.

    +
    source

    pub fn unspendable(&mut self, unspendable: Vec<OutPoint>) -> &mut Self

    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.

    +
    source

    pub fn add_unspendable(&mut self, unspendable: OutPoint) -> &mut Self

    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.

    +
    source

    pub fn sighash(&mut self, sighash: PsbtSighashType) -> &mut Self

    Sign with a specific sig hash

    +

    Use this option very carefully

    +
    source

    pub fn ordering(&mut self, ordering: TxOrdering) -> &mut Self

    Choose the ordering for inputs and outputs of the transaction

    +
    source

    pub fn nlocktime(&mut self, locktime: LockTime) -> &mut Self

    Use a specific nLockTime while creating the transaction

    +

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

    +
    source

    pub fn version(&mut self, version: i32) -> &mut Self

    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.

    +
    source

    pub fn do_not_spend_change(&mut self) -> &mut Self

    Do not spend change outputs

    +

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

    +
    source

    pub fn only_spend_change(&mut self) -> &mut Self

    Only spend change outputs

    +

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

    +
    source

    pub fn change_policy(&mut self, change_policy: ChangeSpendPolicy) -> &mut Self

    source

    pub fn only_witness_utxo(&mut self) -> &mut Self

    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.

    +
    source

    pub fn include_output_redeem_witness_script(&mut self) -> &mut Self

    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.

    +
    source

    pub fn add_global_xpubs(&mut self) -> &mut Self

    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.

    +
    source

    pub fn drain_wallet(&mut self) -> &mut Self

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

    +
    source

    pub fn coin_selection<P: CoinSelectionAlgorithm>( + self, + coin_selection: P +) -> TxBuilder<'a, P>

    Choose the coin selection algorithm

    +

    Overrides the CoinSelectionAlgorithm.

    +

    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.

    +
    source

    pub fn enable_rbf(&mut self) -> &mut Self

    Enable signaling RBF

    +

    This will use the default nSequence value of 0xFFFFFFFD.

    +
    source

    pub fn enable_rbf_with_sequence(&mut self, nsequence: Sequence) -> &mut Self

    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.

    +
    source

    pub fn current_height(&mut self, height: u32) -> &mut Self

    Set the current blockchain height.

    +

    This will be used to:

    +
      +
    1. Set the nLockTime for preventing fee sniping. +Note: This will be ignored if you manually specify a nlocktime using TxBuilder::nlocktime.
    2. +
    3. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not +mature at current_height, we ignore them in the coin selection. +If you want to create a transaction that spends immature coinbase inputs, manually +add them using TxBuilder::add_utxos.
    4. +
    +

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

    +
    source

    pub fn allow_dust(&mut self, allow_dust: bool) -> &mut Self

    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.

    +
    source

    pub fn set_recipients( + &mut self, + recipients: Vec<(ScriptBuf, Amount)> +) -> &mut Self

    Replace the recipients already added with a new list

    +
    source

    pub fn add_recipient( + &mut self, + script_pubkey: ScriptBuf, + amount: Amount +) -> &mut Self

    Add a recipient to the internal list

    +
    source

    pub fn add_data<T: AsRef<PushBytes>>(&mut self, data: &T) -> &mut Self

    Add data as an output, using OP_RETURN

    +
    source

    pub fn drain_to(&mut self, script_pubkey: ScriptBuf) -> &mut Self

    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 +coins are too small) it will not be included in the resulting transaction. The only +difference is that it is valid to use drain_to without setting any ordinary recipients +with add_recipient (but it is perfectly fine to add recipients as well).

    +

    If you choose not to set any recipients, you should provide the utxos that the +transaction should spend via add_utxos.

    +
    §Example
    +

    drain_to is very useful for draining all the coins in a wallet with drain_wallet to a +single address.

    + +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    .unwrap()
    +    .assume_checked();
    +let mut tx_builder = wallet.build_tx();
    +
    +tx_builder
    +    // Spend all outputs in this wallet.
    +    .drain_wallet()
    +    // Send the excess (which is all the coins minus the fee) to this address.
    +    .drain_to(to_address.script_pubkey())
    +    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    .enable_rbf();
    +let psbt = tx_builder.finish()?;
    +
    source§

    impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs>

    source

    pub fn finish(self) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    +

    Uses the thread-local random number generator (rng).

    +

    Returns a new [Psbt] per BIP174.

    +

    WARNING: To avoid change address reuse you must persist the changes resulting from one +or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +
    source

    pub fn finish_with_aux_rand( + self, + rng: &mut impl RngCore +) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    +

    Uses a provided random number generator (rng).

    +

    Returns a new [Psbt] per BIP174.

    +

    WARNING: To avoid change address reuse you must persist the changes resulting from one +or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    +

    Trait Implementations§

    source§

    impl<'a, Cs: Clone> Clone for TxBuilder<'a, Cs>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, Cs: Debug> Debug for TxBuilder<'a, Cs>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a, Cs> Freeze for TxBuilder<'a, Cs>
    where + Cs: Freeze,

    §

    impl<'a, Cs> !RefUnwindSafe for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Send for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Sync for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> Unpin for TxBuilder<'a, Cs>
    where + Cs: Unpin,

    §

    impl<'a, Cs> !UnwindSafe for TxBuilder<'a, Cs>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

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

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/type.PersistedWallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/type.PersistedWallet.html new file mode 100644 index 0000000000..ff681ce60e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/type.PersistedWallet.html @@ -0,0 +1,2 @@ +PersistedWallet in bdk_wallet - Rust

    Type Alias bdk_wallet::PersistedWallet

    source ·
    pub type PersistedWallet = Persisted<Wallet>;
    Expand description

    Represents a persisted wallet.

    +

    Aliased Type§

    struct PersistedWallet { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/changeset/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/changeset/struct.ChangeSet.html new file mode 100644 index 0000000000..11e770c812 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/changeset/struct.ChangeSet.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/struct.ChangeSet.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html index 0408ce4e64..5638440ef7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html @@ -1,28 +1,11 @@ -Error in bdk_wallet::wallet::coin_selection - Rust

    Enum bdk_wallet::wallet::coin_selection::Error

    source ·
    pub enum Error {
    -    InsufficientFunds {
    -        needed: u64,
    -        available: u64,
    -    },
    -    BnBNoExactMatch,
    -    BnBTotalTriesExceeded,
    -}
    Expand description

    Errors that can be thrown by the coin_selection module

    -

    Variants§

    §

    InsufficientFunds

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    -

    Fields

    §needed: u64

    Sats needed for some transaction

    -
    §available: u64

    Sats available for spending

    -
    §

    BnBNoExactMatch

    Branch and bound coin selection tries to avoid needing a change by finding the right inputs for -the desired outputs plus fee, if there is not such combination this error is thrown

    -
    §

    BnBTotalTriesExceeded

    Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow -exponentially, thus a limit is set, and when hit, this error is thrown

    -

    Trait Implementations§

    source§

    impl Debug for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for Error

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/enum.Error.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html index e4b6ea33ea..e2941ab845 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html @@ -1,30 +1,11 @@ -Excess in bdk_wallet::wallet::coin_selection - Rust

    Enum bdk_wallet::wallet::coin_selection::Excess

    source ·
    pub enum Excess {
    -    NoChange {
    -        dust_threshold: u64,
    -        remaining_amount: u64,
    -        change_fee: u64,
    -    },
    -    Change {
    -        amount: u64,
    -        fee: u64,
    -    },
    -}
    Expand description

    Remaining amount after performing coin selection

    -

    Variants§

    §

    NoChange

    It’s not possible to create spendable output from excess using the current drain output

    -

    Fields

    §dust_threshold: u64

    Threshold to consider amount as dust for this particular change script_pubkey

    -
    §remaining_amount: u64

    Exceeding amount of current selection over outgoing value and fee costs

    -
    §change_fee: u64

    The calculated fee for the drain TxOut with the selected script_pubkey

    -
    §

    Change

    It’s possible to create spendable output from excess using the current drain output

    -

    Fields

    §amount: u64

    Effective amount available to create change after deducting the change output fee

    -
    §fee: u64

    The deducted change output fee

    -

    Trait Implementations§

    source§

    impl Debug for Excess

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/enum.Excess.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html index e433ddd9a6..c362509579 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html @@ -1,11 +1,11 @@ -decide_change in bdk_wallet::wallet::coin_selection - Rust

    Function bdk_wallet::wallet::coin_selection::decide_change

    source ·
    pub fn decide_change(
    -    remaining_amount: u64,
    -    fee_rate: FeeRate,
    -    drain_script: &Script
    -) -> Excess
    Expand description

    Decide if change can be created

    -
      -
    • remaining_amount: the amount in which the selected coins exceed the target amount
    • -
    • fee_rate: required fee rate for the current selection
    • -
    • drain_script: script to consider change creation
    • -
    -
    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/fn.decide_change.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html index 409e8a81eb..1f85bca755 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html @@ -1,73 +1,11 @@ -bdk_wallet::wallet::coin_selection - Rust

    Module bdk_wallet::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 -TxBuilder. DefaultCoinSelectionAlgorithm aliases the coin selection algorithm that will -be used if it is not explicitly set.

    -

    §Example

    -
    #[derive(Debug)]
    -struct AlwaysSpendEverything;
    -
    -impl CoinSelectionAlgorithm for AlwaysSpendEverything {
    -    fn coin_select(
    -        &self,
    -        required_utxos: Vec<WeightedUtxo>,
    -        optional_utxos: Vec<WeightedUtxo>,
    -        fee_rate: FeeRate,
    -        target_amount: u64,
    -        drain_script: &Script,
    -    ) -> Result<CoinSelectionResult, coin_selection::Error> {
    -        let mut selected_amount = 0;
    -        let mut additional_weight = Weight::ZERO;
    -        let all_utxos_selected = required_utxos
    -            .into_iter()
    -            .chain(optional_utxos)
    -            .scan(
    -                (&mut selected_amount, &mut additional_weight),
    -                |(selected_amount, additional_weight), weighted_utxo| {
    -                    **selected_amount += weighted_utxo.utxo.txout().value.to_sat();
    -                    **additional_weight += TxIn::default()
    -                        .segwit_weight()
    -                        .checked_add(weighted_utxo.satisfaction_weight)
    -                        .expect("`Weight` addition should not cause an integer overflow");
    -                    Some(weighted_utxo.utxo)
    -                },
    -            )
    -            .collect::<Vec<_>>();
    -        let additional_fees = (fee_rate * additional_weight).to_sat();
    -        let amount_needed_with_fees = additional_fees + target_amount;
    -        if selected_amount < amount_needed_with_fees {
    -            return Err(coin_selection::Error::InsufficientFunds {
    -                needed: amount_needed_with_fees,
    -                available: selected_amount,
    -            });
    -        }
    -
    -        let remaining_amount = selected_amount - amount_needed_with_fees;
    -
    -        let excess = decide_change(remaining_amount, fee_rate, drain_script);
    -
    -        Ok(CoinSelectionResult {
    -            selected: all_utxos_selected,
    -            fee_amount: additional_fees,
    -            excess,
    -        })
    -    }
    -}
    -
    -// create wallet, sync, ...
    -
    -let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    -    .unwrap()
    -    .require_network(Network::Testnet)
    -    .unwrap();
    -let psbt = {
    -    let mut builder = wallet.build_tx().coin_selection(AlwaysSpendEverything);
    -    builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    -    builder.finish()?
    -};
    -
    -// inspect, sign, broadcast, ...
    -
    -

    Structs§

    Enums§

    Traits§

    Functions§

    Type Aliases§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/index.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js deleted file mode 100644 index c2cddb4015..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["Error","Excess"],"fn":["decide_change"],"struct":["BranchAndBoundCoinSelection","CoinSelectionResult","LargestFirstCoinSelection","OldestFirstCoinSelection"],"trait":["CoinSelectionAlgorithm"],"type":["DefaultCoinSelectionAlgorithm"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html index 721bb37f40..1c6d00004d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html @@ -1,23 +1,11 @@ -BranchAndBoundCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct BranchAndBoundCoinSelection { /* private fields */ }
    Expand description

    Branch and bound coin selection

    -

    Code adapted from Bitcoin Core’s implementation and from Mark Erhardt Master’s Thesis: http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf

    -

    Implementations§

    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    -

    Trait Implementations§

    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select( - &self, - required_utxos: Vec<WeightedUtxo>, - optional_utxos: Vec<WeightedUtxo>, - fee_rate: FeeRate, - target_amount: u64, - drain_script: &Script -) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html index d088dd4331..c6e8b70e6c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html @@ -1,22 +1,11 @@ -CoinSelectionResult in bdk_wallet::wallet::coin_selection - Rust

    Struct bdk_wallet::wallet::coin_selection::CoinSelectionResult

    source ·
    pub struct CoinSelectionResult {
    -    pub selected: Vec<Utxo>,
    -    pub fee_amount: u64,
    -    pub excess: Excess,
    -}
    Expand description

    Result of a successful coin selection

    -

    Fields§

    §selected: Vec<Utxo>

    List of outputs selected for use as inputs

    -
    §fee_amount: u64

    Total fee amount for the selected utxos in satoshis

    -
    §excess: Excess

    Remaining amount after deducing fees and outgoing outputs

    -

    Implementations§

    source§

    impl CoinSelectionResult

    source

    pub fn selected_amount(&self) -> u64

    The total value of the inputs selected.

    -
    source

    pub fn local_selected_amount(&self) -> u64

    The total value of the inputs selected from the local wallet.

    -

    Trait Implementations§

    source§

    impl Debug for CoinSelectionResult

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/struct.CoinSelectionResult.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html index accd3d12d8..3e33174baa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html @@ -1,23 +1,11 @@ -LargestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct LargestFirstCoinSelection;
    Expand description

    Simple and dumb coin selection

    -

    This coin selection algorithm sorts the available UTXOs by value and then picks them starting -from the largest ones until the required amount is reached.

    -

    Trait Implementations§

    source§

    impl Clone for LargestFirstCoinSelection

    source§

    fn clone(&self) -> LargestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for LargestFirstCoinSelection

    source§

    fn coin_select( - &self, - required_utxos: Vec<WeightedUtxo>, - optional_utxos: Vec<WeightedUtxo>, - fee_rate: FeeRate, - target_amount: u64, - drain_script: &Script -) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for LargestFirstCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for LargestFirstCoinSelection

    source§

    fn default() -> LargestFirstCoinSelection

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

    impl Copy for LargestFirstCoinSelection

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/struct.LargestFirstCoinSelection.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html index c856390a75..b3c309b680 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html @@ -1,23 +1,11 @@ -OldestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct OldestFirstCoinSelection;
    Expand description

    OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next

    -

    This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting -from the oldest ones until the required amount is reached.

    -

    Trait Implementations§

    source§

    impl Clone for OldestFirstCoinSelection

    source§

    fn clone(&self) -> OldestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for OldestFirstCoinSelection

    source§

    fn coin_select( - &self, - required_utxos: Vec<WeightedUtxo>, - optional_utxos: Vec<WeightedUtxo>, - fee_rate: FeeRate, - target_amount: u64, - drain_script: &Script -) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for OldestFirstCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for OldestFirstCoinSelection

    source§

    fn default() -> OldestFirstCoinSelection

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

    impl Copy for OldestFirstCoinSelection

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/struct.OldestFirstCoinSelection.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html index a2d0c82f64..880bb5d50e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html @@ -1,35 +1,11 @@ -CoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust
    pub trait CoinSelectionAlgorithm: Debug {
    -    // Required method
    -    fn coin_select(
    -        &self,
    -        required_utxos: Vec<WeightedUtxo>,
    -        optional_utxos: Vec<WeightedUtxo>,
    -        fee_rate: FeeRate,
    -        target_amount: u64,
    -        drain_script: &Script
    -    ) -> Result<CoinSelectionResult, Error>;
    -}
    Expand description

    Trait for generalized coin selection algorithms

    -

    This trait can be implemented to make the Wallet use a customized coin -selection algorithm when it creates transactions.

    -

    For an example see this module’s documentation.

    -

    Required Methods§

    source

    fn coin_select( - &self, - required_utxos: Vec<WeightedUtxo>, - optional_utxos: Vec<WeightedUtxo>, - fee_rate: FeeRate, - target_amount: u64, - drain_script: &Script -) -> Result<CoinSelectionResult, Error>

    Perform the coin selection

    -
      -
    • database: a reference to the wallet’s database that can be used to lookup additional -details for a specific UTXO
    • -
    • required_utxos: the utxos that must be spent regardless of target_amount with their -weight cost
    • -
    • optional_utxos: the remaining available utxos to satisfy target_amount with their -weight cost
    • -
    • fee_rate: fee rate to use
    • -
    • target_amount: the outgoing amount in satoshis and the fees already -accumulated from added outputs and transaction’s header.
    • -
    • drain_script: the script to use in case of change
    • -
    -

    Implementors§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/trait.CoinSelectionAlgorithm.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html index d3dcb32599..7aaaa6ea6f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html @@ -1,3 +1,11 @@ -DefaultCoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust
    pub type DefaultCoinSelectionAlgorithm = BranchAndBoundCoinSelection;
    Expand description

    Default coin selection algorithm used by TxBuilder if not -overridden

    -

    Aliased Type§

    struct DefaultCoinSelectionAlgorithm { /* private fields */ }
    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html index c1c7d73c8c..f6590c92af 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html @@ -1,24 +1,11 @@ -ApplyBlockError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::ApplyBlockError

    source ·
    pub enum ApplyBlockError {
    -    CannotConnect(CannotConnectError),
    -    UnexpectedConnectedToHash {
    -        connected_to_hash: BlockHash,
    -        expected_hash: BlockHash,
    -    },
    -}
    Expand description

    An error that may occur when applying a block to Wallet.

    -

    Variants§

    §

    CannotConnect(CannotConnectError)

    Occurs when the update chain cannot connect with original chain.

    -
    §

    UnexpectedConnectedToHash

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

    -

    Fields

    §connected_to_hash: BlockHash

    Block hash of connected_to.

    -
    §expected_hash: BlockHash

    Expected block hash of connected_to, as derived from block.

    -

    Trait Implementations§

    source§

    impl Debug for ApplyBlockError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ApplyBlockError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ApplyBlockError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/enum.ApplyBlockError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html index 745e57455c..f0c235fa3f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html @@ -1,24 +1,11 @@ -LoadError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::LoadError

    source ·
    pub enum LoadError {
    -    Descriptor(DescriptorError),
    -    MissingNetwork,
    -    MissingGenesis,
    -    MissingDescriptor(KeychainKind),
    -}
    Expand description

    The error type when loading a Wallet from a ChangeSet.

    -

    Method load_from_changeset may return this error.

    -

    Variants§

    §

    Descriptor(DescriptorError)

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

    -
    §

    MissingNetwork

    Data loaded from persistence is missing network type.

    -
    §

    MissingGenesis

    Data loaded from persistence is missing genesis hash.

    -
    §

    MissingDescriptor(KeychainKind)

    Data loaded from persistence is missing descriptor.

    -

    Trait Implementations§

    source§

    impl Debug for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LoadError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/enum.LoadError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadMismatch.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadMismatch.html new file mode 100644 index 0000000000..a05e2300e3 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadMismatch.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/enum.LoadMismatch.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html deleted file mode 100644 index 67a633d570..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html +++ /dev/null @@ -1,18 +0,0 @@ -NewError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::NewError

    source ·
    pub enum NewError {
    -    Descriptor(DescriptorError),
    -}
    Expand description

    The error type when constructing a fresh Wallet.

    -

    Methods new and new_with_genesis_hash may return this error.

    -

    Variants§

    §

    Descriptor(DescriptorError)

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

    -

    Trait Implementations§

    source§

    impl Debug for NewError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for NewError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for NewError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html deleted file mode 100644 index a87330a2df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html +++ /dev/null @@ -1,39 +0,0 @@ -NewOrLoadError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::NewOrLoadError

    source ·
    pub enum NewOrLoadError {
    -    Descriptor(DescriptorError),
    -    LoadedGenesisDoesNotMatch {
    -        expected: BlockHash,
    -        got: Option<BlockHash>,
    -    },
    -    LoadedNetworkDoesNotMatch {
    -        expected: Network,
    -        got: Option<Network>,
    -    },
    -    LoadedDescriptorDoesNotMatch {
    -        got: Option<ExtendedDescriptor>,
    -        keychain: KeychainKind,
    -    },
    -}
    Expand description

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

    -

    Methods new_or_load and new_or_load_with_genesis_hash may return this error.

    -

    Variants§

    §

    Descriptor(DescriptorError)

    There is a problem with the passed-in descriptor.

    -
    §

    LoadedGenesisDoesNotMatch

    The loaded genesis hash does not match what was provided.

    -

    Fields

    §expected: BlockHash

    The expected genesis block hash.

    -
    §got: Option<BlockHash>

    The block hash loaded from persistence.

    -
    §

    LoadedNetworkDoesNotMatch

    The loaded network type does not match what was provided.

    -

    Fields

    §expected: Network

    The expected network type.

    -
    §got: Option<Network>

    The network type loaded from persistence.

    -
    §

    LoadedDescriptorDoesNotMatch

    The loaded desccriptor does not match what was provided.

    -

    Fields

    §got: Option<ExtendedDescriptor>

    The descriptor loaded from persistence.

    -
    §keychain: KeychainKind

    The keychain of the descriptor not matching

    -

    Trait Implementations§

    source§

    impl Debug for NewOrLoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for NewOrLoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for NewOrLoadError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html index 8b1db41358..1d46cc69b1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html @@ -1,25 +1,11 @@ -BuildFeeBumpError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::BuildFeeBumpError

    source ·
    pub enum BuildFeeBumpError {
    -    UnknownUtxo(OutPoint),
    -    TransactionNotFound(Txid),
    -    TransactionConfirmed(Txid),
    -    IrreplaceableTransaction(Txid),
    -    FeeRateUnavailable,
    -}
    Expand description

    Error returned from Wallet::build_fee_bump

    -

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    -
    §

    TransactionNotFound(Txid)

    Thrown when a tx is not found in the internal database

    -
    §

    TransactionConfirmed(Txid)

    Happens when trying to bump a transaction that is already confirmed

    -
    §

    IrreplaceableTransaction(Txid)

    Trying to replace a tx that has a sequence >= 0xFFFFFFFE

    -
    §

    FeeRateUnavailable

    Node doesn’t have data to estimate a fee rate

    -

    Trait Implementations§

    source§

    impl Debug for BuildFeeBumpError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for BuildFeeBumpError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for BuildFeeBumpError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/error/enum.BuildFeeBumpError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html index e2fcc3fd7e..ebad3c3aa8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html @@ -1,71 +1,11 @@ -CreateTxError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::CreateTxError

    source ·
    pub enum CreateTxError {
    -
    Show 19 variants Descriptor(DescriptorError), - Policy(PolicyError), - SpendingPolicyRequired(KeychainKind), - Version0, - Version1Csv, - LockTime { - requested: LockTime, - required: LockTime, - }, - RbfSequence, - RbfSequenceCsv { - rbf: Sequence, - csv: Sequence, - }, - FeeTooLow { - required: Amount, - }, - FeeRateTooLow { - required: FeeRate, - }, - NoUtxosSelected, - OutputBelowDustLimit(usize), - CoinSelection(Error), - NoRecipients, - Psbt(Error), - MissingKeyOrigin(String), - UnknownUtxo, - MissingNonWitnessUtxo(OutPoint), - MiniscriptPsbt(MiniscriptPsbtError), -
    }
    Expand description

    Error returned from TxBuilder::finish

    -

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the descriptors passed in

    -
    §

    Policy(PolicyError)

    There was a problem while extracting and manipulating policies

    -
    §

    SpendingPolicyRequired(KeychainKind)

    Spending policy is not compatible with this KeychainKind

    -
    §

    Version0

    Requested invalid transaction version ‘0’

    -
    §

    Version1Csv

    Requested transaction version 1, but at least 2 is needed to use OP_CSV

    -
    §

    LockTime

    Requested LockTime is less than is required to spend from this script

    -

    Fields

    §requested: LockTime

    Requested LockTime

    -
    §required: LockTime

    Required LockTime

    -
    §

    RbfSequence

    Cannot enable RBF with a Sequence >= 0xFFFFFFFE

    -
    §

    RbfSequenceCsv

    Cannot enable RBF with Sequence given a required OP_CSV

    -

    Fields

    §rbf: Sequence

    Given RBF Sequence

    -
    §csv: Sequence

    Required OP_CSV Sequence

    -
    §

    FeeTooLow

    When bumping a tx the absolute fee requested is lower than replaced tx absolute fee

    -

    Fields

    §required: Amount

    Required fee absolute value [Amount]

    -
    §

    FeeRateTooLow

    When bumping a tx the fee rate requested is lower than required

    -

    Fields

    §required: FeeRate

    Required fee rate

    -
    §

    NoUtxosSelected

    manually_selected_only option is selected but no utxo has been passed

    -
    §

    OutputBelowDustLimit(usize)

    Output created is under the dust limit, 546 satoshis

    -
    §

    CoinSelection(Error)

    There was an error with coin selection

    -
    §

    NoRecipients

    Cannot build a tx without recipients

    -
    §

    Psbt(Error)

    Partially signed bitcoin transaction error

    -
    §

    MissingKeyOrigin(String)

    In order to use the TxBuilder::add_global_xpubs option every extended -key in the descriptor must either be a master key itself (having depth = 0) or have an -explicit origin provided

    -
    §

    UnknownUtxo

    Happens when trying to spend an UTXO that is not in the internal database

    -
    §

    MissingNonWitnessUtxo(OutPoint)

    Missing non_witness_utxo on foreign utxo for given OutPoint

    -
    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    -

    Trait Implementations§

    source§

    impl Debug for CreateTxError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CreateTxError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CreateTxError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/error/enum.CreateTxError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html index 35501dd927..ab347482f2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html @@ -1,22 +1,11 @@ -MiniscriptPsbtError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::MiniscriptPsbtError

    source ·
    pub enum MiniscriptPsbtError {
    -    Conversion(ConversionError),
    -    UtxoUpdate(UtxoUpdateError),
    -    OutputUpdate(OutputUpdateError),
    -}
    Expand description

    Errors returned by miniscript when updating inconsistent PSBTs

    -

    Variants§

    §

    Conversion(ConversionError)

    Descriptor key conversion error

    -
    §

    UtxoUpdate(UtxoUpdateError)

    Return error type for PsbtExt::update_input_with_descriptor

    -
    §

    OutputUpdate(OutputUpdateError)

    Return error type for PsbtExt::update_output_with_descriptor

    -

    Trait Implementations§

    source§

    impl Clone for MiniscriptPsbtError

    source§

    fn clone(&self) -> MiniscriptPsbtError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MiniscriptPsbtError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MiniscriptPsbtError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MiniscriptPsbtError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/error/enum.MiniscriptPsbtError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html index 53662a1e8f..930591f645 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html @@ -1,2 +1,11 @@ -bdk_wallet::wallet::error - Rust

    Module bdk_wallet::wallet::error

    source ·
    Expand description

    Errors that can be thrown by the Wallet

    -

    Enums§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/error/index.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js deleted file mode 100644 index 70342e180b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["BuildFeeBumpError","CreateTxError","MiniscriptPsbtError"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html index 253d0e0bc7..96aef5a626 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html @@ -1,25 +1,11 @@ -bdk_wallet::wallet::export - Rust

    Module bdk_wallet::wallet::export

    source ·
    Expand description

    Wallet export

    -

    This modules implements the wallet export format used by FullyNoded.

    -

    §Examples

    §Import from JSON

    -
    let import = r#"{
    -    "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    -    "blockheight":1782088,
    -    "label":"testnet"
    -}"#;
    -
    -let import = FullyNodedExport::from_str(import)?;
    -let wallet = Wallet::new(
    -    &import.descriptor(),
    -    &import.change_descriptor().expect("change descriptor"),
    -    Network::Testnet,
    -)?;
    -

    §Export a Wallet

    -
    let wallet = Wallet::new(
    -    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    -    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)",
    -    Network::Testnet,
    -)?;
    -let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
    -
    -println!("Exported: {}", export.to_string());
    -

    Structs§

    Type Aliases§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/export/index.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js deleted file mode 100644 index dd0fa93b47..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"struct":["FullyNodedExport"],"type":["WalletExport"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html index d690ddb737..864392811c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html @@ -1,38 +1,11 @@ -FullyNodedExport in bdk_wallet::wallet::export - Rust

    Struct bdk_wallet::wallet::export::FullyNodedExport

    source ·
    pub struct FullyNodedExport {
    -    pub blockheight: u32,
    -    pub label: String,
    -    /* private fields */
    -}
    Expand description

    Structure that contains the export of a wallet

    -

    For a usage example see this module’s documentation.

    -

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    -
    §label: String

    Arbitrary label for the wallet

    -

    Implementations§

    source§

    impl FullyNodedExport

    source

    pub fn export_wallet( - wallet: &Wallet, - label: &str, - include_blockheight: bool -) -> Result<Self, &'static str>

    Export a wallet

    -

    This function returns an error if it determines that the wallet’s descriptor(s) are not -supported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44 -and others.

    -

    If include_blockheight is true, this function will look into the wallet’s database -for the oldest transaction it knows and use that as the earliest block to rescan.

    -

    If the database is empty or include_blockheight is false, the blockheight field -returned will be 0.

    -
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    -
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    -

    Trait Implementations§

    source§

    impl Debug for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

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

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where - T: for<'de> Deserialize<'de>,

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/export/struct.FullyNodedExport.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html index 5c5f23ea91..7cb331d071 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html @@ -1,8 +1,11 @@ -WalletExport in bdk_wallet::wallet::export - Rust

    Type Alias bdk_wallet::wallet::export::WalletExport

    source ·
    pub type WalletExport = FullyNodedExport;
    👎Deprecated since 0.18.0: Please use [FullyNodedExport] instead
    Expand description

    Alias for FullyNodedExport

    -

    Aliased Type§

    struct WalletExport {
    -    pub blockheight: u32,
    -    pub label: String,
    -    /* private fields */
    -}

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    -
    §label: String

    Arbitrary label for the wallet

    -
    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/export/type.WalletExport.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html index 8d6297f192..7ee9312f63 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html @@ -1,9 +1,11 @@ -wallet_name_from_descriptor in bdk_wallet::wallet - Rust

    Function bdk_wallet::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>
    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 + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/fn.wallet_name_from_descriptor.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html deleted file mode 100644 index 638075f042..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html +++ /dev/null @@ -1,6 +0,0 @@ -bdk_wallet::wallet - Rust

    Module bdk_wallet::wallet

    source ·
    Expand description

    Wallet

    -

    This module defines the Wallet.

    -

    Modules§

    Structs§

    • A derived address and the index it was found at. -For convenience this automatically derefs to Address
    • Balance, differentiated into various categories.
    • An update to Wallet.
    • A Bitcoin wallet

    Enums§

    Traits§

    • 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

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.CreateParams.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.CreateParams.html new file mode 100644 index 0000000000..5925d01106 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.CreateParams.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/struct.CreateParams.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.LoadParams.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.LoadParams.html new file mode 100644 index 0000000000..29c4715d12 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/params/struct.LoadParams.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/struct.LoadParams.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.CreateWithPersistError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.CreateWithPersistError.html new file mode 100644 index 0000000000..8cb156337f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.CreateWithPersistError.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/enum.CreateWithPersistError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.LoadWithPersistError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.LoadWithPersistError.html new file mode 100644 index 0000000000..28f98ec036 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/enum.LoadWithPersistError.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/enum.LoadWithPersistError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/type.PersistedWallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/type.PersistedWallet.html new file mode 100644 index 0000000000..96dc5ff014 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/persisted/type.PersistedWallet.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/type.PersistedWallet.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js deleted file mode 100644 index 6be84a345b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["ApplyBlockError","LoadError","NewError","NewOrLoadError"],"fn":["wallet_name_from_descriptor"],"mod":["coin_selection","error","export","signer","tx_builder"],"struct":["AddressInfo","Balance","Update","Wallet"],"trait":["IsDust"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html index 5aa5c8c3c9..e1e352dec6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html @@ -1,27 +1,11 @@ -SignerContext in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerContext

    source ·
    pub enum SignerContext {
    -    Legacy,
    -    Segwitv0,
    -    Tap {
    -        is_internal_key: bool,
    -    },
    -}
    Expand description

    Signing context

    -

    Used by our software signers to determine the type of signatures to make

    -

    Variants§

    §

    Legacy

    Legacy context

    -
    §

    Segwitv0

    Segwit v0 context (BIP 143)

    -
    §

    Tap

    Taproot context (BIP 340)

    -

    Fields

    §is_internal_key: bool

    Whether the signer can sign for the internal key or not

    -

    Trait Implementations§

    source§

    impl Clone for SignerContext

    source§

    fn clone(&self) -> SignerContext

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerContext

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for SignerContext

    source§

    fn eq(&self, other: &SignerContext) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for SignerContext

    source§

    impl Eq for SignerContext

    source§

    impl StructuralPartialEq for SignerContext

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/enum.SignerContext.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html index b88f505089..3bbbdba5dd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html @@ -1,50 +1,11 @@ -SignerError in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerError

    source ·
    pub enum SignerError {
    -
    Show 15 variants MissingKey, - InvalidKey, - UserCanceled, - InputIndexOutOfRange, - MissingNonWitnessUtxo, - InvalidNonWitnessUtxo, - MissingWitnessUtxo, - MissingWitnessScript, - MissingHdKeypath, - NonStandardSighash, - InvalidSighash, - SighashTaproot(TaprootError), - Psbt(SignError), - MiniscriptPsbt(MiniscriptPsbtError), - External(String), -
    }
    Expand description

    Signing error

    -

    Variants§

    §

    MissingKey

    The private key is missing for the required public key

    -
    §

    InvalidKey

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

    -
    §

    UserCanceled

    The user canceled the operation

    -
    §

    InputIndexOutOfRange

    Input index is out of range

    -
    §

    MissingNonWitnessUtxo

    The non_witness_utxo field of the transaction is required to sign this input

    -
    §

    InvalidNonWitnessUtxo

    The non_witness_utxo specified is invalid

    -
    §

    MissingWitnessUtxo

    The witness_utxo field of the transaction is required to sign this input

    -
    §

    MissingWitnessScript

    The witness_script field of the transaction is required to sign this input

    -
    §

    MissingHdKeypath

    The fingerprint and derivation path are missing from the psbt input

    -
    §

    NonStandardSighash

    The psbt contains a non-SIGHASH_ALL sighash in one of its input and the user hasn’t -explicitly allowed them

    -

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

    -
    §

    InvalidSighash

    Invalid SIGHASH for the signing context in use

    -
    §

    SighashTaproot(TaprootError)

    Error while computing the hash to sign a Taproot input.

    -
    §

    Psbt(SignError)

    PSBT sign error.

    -
    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    -
    §

    External(String)

    To be used only by external libraries implementing InputSigner or -TransactionSigner, so that they can return their own custom errors, without having to -modify SignerError in BDK.

    -

    Trait Implementations§

    source§

    impl Debug for SignerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SignerError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SignerError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/enum.SignerError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html index 5143c21755..fe26e09a43 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html @@ -1,31 +1,11 @@ -SignerId in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerId

    source ·
    pub enum SignerId {
    -    PkHash(Hash),
    -    Fingerprint(Fingerprint),
    -    Dummy(u64),
    -}
    Expand description

    Identifier of a signer in the SignersContainers. Used as a key to find the right signer among -multiple of them

    -

    Variants§

    §

    PkHash(Hash)

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

    -
    §

    Fingerprint(Fingerprint)

    The fingerprint of a BIP32 extended key

    -
    §

    Dummy(u64)

    Dummy identifier

    -

    Trait Implementations§

    source§

    impl Clone for SignerId

    source§

    fn clone(&self) -> SignerId

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerId

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl From<Fingerprint> for SignerId

    source§

    fn from(fing: Fingerprint) -> SignerId

    Converts to this type from the input type.
    source§

    impl From<Hash> for SignerId

    source§

    fn from(hash: Hash) -> SignerId

    Converts to this type from the input type.
    source§

    impl Hash for SignerId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

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

    impl Ord for SignerId

    source§

    fn cmp(&self, other: &SignerId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerId

    source§

    fn eq(&self, other: &SignerId) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerId

    source§

    fn partial_cmp(&self, other: &SignerId) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Eq for SignerId

    source§

    impl StructuralPartialEq for SignerId

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/enum.SignerId.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html index b1daff9cdf..0016ab148c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html @@ -1,26 +1,11 @@ -TapLeavesOptions in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::TapLeavesOptions

    source ·
    pub enum TapLeavesOptions {
    -    All,
    -    Include(Vec<TapLeafHash>),
    -    Exclude(Vec<TapLeafHash>),
    -    None,
    -}
    Expand description

    Customize which taproot script-path leaves the signer should sign.

    -

    Variants§

    §

    All

    The signer will sign all the leaves it has a key for.

    -
    §

    Include(Vec<TapLeafHash>)

    The signer won’t sign leaves other than the ones specified. Note that it could still ignore -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§

    source§

    impl Clone for TapLeavesOptions

    source§

    fn clone(&self) -> TapLeavesOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TapLeavesOptions

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TapLeavesOptions

    source§

    fn default() -> TapLeavesOptions

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

    impl PartialEq for TapLeavesOptions

    source§

    fn eq(&self, other: &TapLeavesOptions) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for TapLeavesOptions

    source§

    impl StructuralPartialEq for TapLeavesOptions

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/enum.TapLeavesOptions.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html index 4c6d5d6206..e96c3d12b9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html @@ -1,48 +1,11 @@ -bdk_wallet::wallet::signer - Rust

    Module bdk_wallet::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.

    - -
    #[derive(Debug)]
    -struct CustomSigner {
    -    device: CustomHSM,
    -}
    -
    -impl CustomSigner {
    -    fn connect() -> Self {
    -        CustomSigner { device: CustomHSM::connect() }
    -    }
    -}
    -
    -impl SignerCommon for CustomSigner {
    -    fn id(&self, _secp: &Secp256k1<All>) -> SignerId {
    -        self.device.get_id()
    -    }
    -}
    -
    -impl InputSigner for CustomSigner {
    -    fn sign_input(
    -        &self,
    -        psbt: &mut Psbt,
    -        input_index: usize,
    -        _sign_options: &SignOptions,
    -        _secp: &Secp256k1<All>,
    -    ) -> Result<(), SignerError> {
    -        self.device.hsm_sign_input(psbt, input_index)?;
    -
    -        Ok(())
    -    }
    -}
    -
    -let custom_signer = CustomSigner::connect();
    -
    -let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)";
    -let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)";
    -let mut wallet = Wallet::new(descriptor, change_descriptor, Network::Testnet)?;
    -wallet.add_signer(
    -    KeychainKind::External,
    -    SignerOrdering(200),
    -    Arc::new(custom_signer)
    -);
    -
    -

    Structs§

    Enums§

    • Signing context
    • Signing error
    • Identifier of a signer in the SignersContainers. Used as a key to find the right signer among -multiple of them
    • Customize which taproot script-path leaves the signer should sign.

    Traits§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/index.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js deleted file mode 100644 index 92cb22a1a9..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["SignerContext","SignerError","SignerId","TapLeavesOptions"],"struct":["SignOptions","SignerOrdering","SignerWrapper","SignersContainer"],"trait":["InputSigner","SignerCommon","TransactionSigner"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html index 4755b0b368..4a7ad1c85a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html @@ -1,51 +1,11 @@ -SignOptions in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignOptions

    source ·
    pub struct SignOptions {
    -    pub trust_witness_utxo: bool,
    -    pub assume_height: Option<u32>,
    -    pub allow_all_sighashes: bool,
    -    pub try_finalize: bool,
    -    pub tap_leaves_options: TapLeavesOptions,
    -    pub sign_with_tap_internal_key: bool,
    -    pub allow_grinding: bool,
    -}
    Expand description

    Options for a software signer

    -

    Adjust the behavior of our software signers and the way a transaction is finalized

    -

    Fields§

    §trust_witness_utxo: bool

    Whether the signer should trust the witness_utxo, if the non_witness_utxo hasn’t been -provided

    -

    Defaults to false to mitigate the “SegWit bug” which should trick the wallet into -paying a fee larger than expected.

    -

    Some wallets, especially if relatively old, might not provide the non_witness_utxo for -SegWit transactions in the PSBT they generate: in those cases setting this to true -should correctly produce a signature, at the expense of an increased trust in the creator -of the PSBT.

    -

    For more details see: https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd

    -
    §assume_height: Option<u32>

    Whether the wallet should assume a specific height has been reached when trying to finalize -a transaction

    -

    The wallet will only “use” a timelock to satisfy the spending policy of an input if the -timelock height has already been reached. This option allows overriding the “current height” to let the -wallet use timelocks in the future to spend a coin.

    -
    §allow_all_sighashes: bool

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

    -

    Defaults to false which will only allow signing using SIGHASH_ALL.

    -
    §try_finalize: bool

    Whether to try finalizing the PSBT after the inputs are signed.

    -

    Defaults to true which will try finalizing PSBT after inputs are signed.

    -
    §tap_leaves_options: TapLeavesOptions

    Specifies which Taproot script-spend leaves we should sign for. This option is -ignored if we’re signing a non-taproot PSBT.

    -

    Defaults to All, i.e., the wallet will sign all the leaves it has a key for.

    -
    §sign_with_tap_internal_key: bool

    Whether we should try to sign a taproot transaction with the taproot internal key -or not. This option is ignored if we’re signing a non-taproot PSBT.

    -

    Defaults to true, i.e., we always try to sign with the taproot internal key.

    -
    §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§

    source§

    impl Clone for SignOptions

    source§

    fn clone(&self) -> SignOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignOptions

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignOptions

    source§

    fn default() -> Self

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/struct.SignOptions.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html index 4dcb3ce1c3..033d4f3934 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html @@ -1,24 +1,11 @@ -SignerOrdering in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignerOrdering

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

    Defines the order in which signers are called

    -

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

    -

    Tuple Fields§

    §0: usize

    Trait Implementations§

    source§

    impl Clone for SignerOrdering

    source§

    fn clone(&self) -> SignerOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerOrdering

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignerOrdering

    source§

    fn default() -> Self

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

    impl Ord for SignerOrdering

    source§

    fn cmp(&self, other: &SignerOrdering) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerOrdering

    source§

    fn eq(&self, other: &SignerOrdering) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerOrdering

    source§

    fn partial_cmp(&self, other: &SignerOrdering) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Eq for SignerOrdering

    source§

    impl StructuralPartialEq for SignerOrdering

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/struct.SignerOrdering.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html index 98ca95048f..c8afaa8df8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html @@ -1,45 +1,11 @@ -SignerWrapper in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignerWrapper

    source ·
    pub struct SignerWrapper<S: Sized + Debug + Clone> { /* private fields */ }
    Expand description

    Wrapper to pair a signer with its context

    -

    Implementations§

    source§

    impl<S: Sized + Debug + Clone> SignerWrapper<S>

    source

    pub fn new(signer: S, ctx: SignerContext) -> Self

    Create a wrapped signer from a signer and a context

    -

    Trait Implementations§

    source§

    impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>

    source§

    fn clone(&self) -> SignerWrapper<S>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>

    §

    type Target = S

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn sign_input( - &self, - psbt: &mut Psbt, - input_index: usize, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn sign_input( - &self, - psbt: &mut Psbt, - input_index: usize, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    source§

    fn sign_input( - &self, - psbt: &mut Psbt, - input_index: usize, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more

    Auto Trait Implementations§

    §

    impl<S> Freeze for SignerWrapper<S>
    where - S: Freeze,

    §

    impl<S> RefUnwindSafe for SignerWrapper<S>
    where - S: RefUnwindSafe,

    §

    impl<S> Send for SignerWrapper<S>
    where - S: Send,

    §

    impl<S> Sync for SignerWrapper<S>
    where - S: Sync,

    §

    impl<S> Unpin for SignerWrapper<S>
    where - S: Unpin,

    §

    impl<S> UnwindSafe for SignerWrapper<S>
    where - S: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> TransactionSigner for T
    where - T: InputSigner,

    source§

    fn sign_transaction( - &self, - psbt: &mut Psbt, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign all the inputs of the psbt
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/struct.SignerWrapper.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html index 21d29ca044..fe797983aa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html @@ -1,38 +1,11 @@ -SignersContainer in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignersContainer

    source ·
    pub struct SignersContainer(/* private fields */);
    Expand description

    Container for multiple signers

    -

    Implementations§

    source§

    impl SignersContainer

    source

    pub fn as_key_map(&self, secp: &Secp256k1<All>) -> KeyMap

    Create a map of public keys to secret keys

    -
    source

    pub fn build( - keymap: KeyMap, - descriptor: &Descriptor<DescriptorPublicKey>, - secp: &Secp256k1<All> -) -> SignersContainer

    Build a new signer container from a KeyMap

    -

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

    -
    source§

    impl SignersContainer

    source

    pub fn new() -> Self

    Default constructor

    -
    source

    pub fn add_external( - &mut self, - id: SignerId, - ordering: SignerOrdering, - signer: Arc<dyn TransactionSigner> -) -> Option<Arc<dyn TransactionSigner>>

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

    -
    source

    pub fn remove( - &mut self, - id: SignerId, - ordering: SignerOrdering -) -> Option<Arc<dyn TransactionSigner>>

    Removes a signer from the container and returns it

    -
    source

    pub fn ids(&self) -> Vec<&SignerId>

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

    -
    source

    pub fn signers(&self) -> Vec<&Arc<dyn TransactionSigner>>

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

    -
    source

    pub fn find(&self, id: SignerId) -> Option<&Arc<dyn TransactionSigner>>

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

    -

    Trait Implementations§

    source§

    impl Clone for SignersContainer

    source§

    fn clone(&self) -> SignersContainer

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignersContainer

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for SignersContainer

    source§

    fn default() -> SignersContainer

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/struct.SignersContainer.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html index 694621ea9b..aba501c826 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html @@ -1,21 +1,11 @@ -InputSigner in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::InputSigner

    source ·
    pub trait InputSigner: SignerCommon {
    -    // Required method
    -    fn sign_input(
    -        &self,
    -        psbt: &mut Psbt,
    -        input_index: usize,
    -        sign_options: &SignOptions,
    -        secp: &Secp256k1<All>
    -    ) -> Result<(), SignerError>;
    -}
    Expand description

    PSBT Input signer

    -

    This trait can be implemented to provide custom signers to the wallet. If the signer supports signing -individual inputs, this trait should be implemented and BDK will provide automatically an implementation -for TransactionSigner.

    -

    Required Methods§

    source

    fn sign_input( - &self, - psbt: &mut Psbt, - input_index: usize, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign a single psbt input

    -

    Implementors§

    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/trait.InputSigner.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html index 101394035c..477274a8fe 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html @@ -1,15 +1,11 @@ -SignerCommon in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::SignerCommon

    source ·
    pub trait SignerCommon: Debug + Send + Sync {
    -    // Required method
    -    fn id(&self, secp: &Secp256k1<All>) -> SignerId;
    -
    -    // Provided method
    -    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey> { ... }
    -}
    Expand description

    Common signer methods

    -

    Required Methods§

    source

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer

    -

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

    -

    Provided Methods§

    source

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer

    -

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

    -

    Implementors§

    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/trait.SignerCommon.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html index 63b1600200..7790889c62 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html @@ -1,18 +1,11 @@ -TransactionSigner in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::TransactionSigner

    source ·
    pub trait TransactionSigner: SignerCommon {
    -    // Required method
    -    fn sign_transaction(
    -        &self,
    -        psbt: &mut Psbt,
    -        sign_options: &SignOptions,
    -        secp: &Secp256k1<All>
    -    ) -> Result<(), SignerError>;
    -}
    Expand description

    PSBT signer

    -

    This trait can be implemented when the signer can’t sign inputs individually, but signs the whole transaction -at once.

    -

    Required Methods§

    source

    fn sign_transaction( - &self, - psbt: &mut Psbt, - sign_options: &SignOptions, - secp: &Secp256k1<All> -) -> Result<(), SignerError>

    Sign all the inputs of the psbt

    -

    Implementors§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/signer/trait.TransactionSigner.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html index aa9d104618..c587c77139 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html @@ -1,85 +1,11 @@ -AddressInfo in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::AddressInfo

    source ·
    pub struct AddressInfo {
    -    pub index: u32,
    -    pub address: Address,
    -    pub keychain: KeychainKind,
    -}
    Expand description

    A derived address and the index it was found at. -For convenience this automatically derefs to Address

    -

    Fields§

    §index: u32

    Child index of this address

    -
    §address: Address

    Address

    -
    §keychain: KeychainKind

    Type of keychain

    -

    Methods from Deref<Target = Address>§

    pub fn as_unchecked(&self) -> &Address<NetworkUnchecked>

    Returns a reference to the address as if it was unchecked.

    -

    pub fn address_type(&self) -> Option<AddressType>

    Gets the address type of the address.

    -
    §Returns
    -

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

    -

    pub fn to_address_data(&self) -> AddressData

    Gets the address data from this address.

    -

    pub fn pubkey_hash(&self) -> Option<PubkeyHash>

    Gets the pubkey hash for this address if this is a P2PKH address.

    -

    pub fn script_hash(&self) -> Option<ScriptHash>

    Gets the script hash for this address if this is a P2SH address.

    -

    pub fn witness_program(&self) -> Option<WitnessProgram>

    Gets the witness program for this address if this is a segwit address.

    -

    pub fn is_spend_standard(&self) -> bool

    Checks whether or not the address is following Bitcoin standardness rules when -spending from this address. NOT to be called by senders.

    -
    -Spending Standardness -

    For forward compatibility, the senders must send to any [Address]. Receivers -can use this method to check whether or not they can spend from this address.

    -

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

    -
    -

    pub fn script_pubkey(&self) -> ScriptBuf

    Generates a script pubkey spending to this address.

    -

    pub fn to_qr_uri(&self) -> String

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

    -

    If the address is bech32, the address becomes uppercase. -If the address is base58, the address is left mixed case.

    -

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

    -

    Note however that despite BIP21 explicitly stating that the bitcoin: prefix should be -parsed as case-insensitive many wallets got this wrong and don’t parse correctly. -See compatibility table.

    -

    If you want to avoid allocation you can use alternate display instead:

    - -
    
    -write!(writer, "{:#}", address)?;
    -
    -

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

    -

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

    -

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

    -

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

    -

    pub fn matches_script_pubkey(&self, script: &Script) -> bool

    Returns true if the address creates a particular script -This function doesn’t make any allocations.

    -

    pub fn assume_checked_ref(&self) -> &Address

    Returns a reference to the checked address.

    -

    This function is dangerous in case the address is not a valid checked address.

    -

    pub fn is_valid_for_network(&self, n: Network) -> bool

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

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

    Trait Implementations§

    source§

    impl Debug for AddressInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Deref for AddressInfo

    §

    type Target = Address

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl Display for AddressInfo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for AddressInfo

    source§

    fn eq(&self, other: &AddressInfo) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for AddressInfo

    source§

    impl StructuralPartialEq for AddressInfo

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/struct.AddressInfo.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html index 11184c366d..116626b39e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html @@ -1,38 +1,11 @@ -Balance in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Balance

    pub struct Balance {
    -    pub immature: Amount,
    -    pub trusted_pending: Amount,
    -    pub untrusted_pending: Amount,
    -    pub confirmed: Amount,
    -}
    Expand description

    Balance, differentiated into various categories.

    -

    Fields§

    §immature: Amount

    All coinbase outputs not yet matured

    -
    §trusted_pending: Amount

    Unconfirmed UTXOs generated by a wallet tx

    -
    §untrusted_pending: Amount

    Unconfirmed UTXOs received from an external wallet

    -
    §confirmed: Amount

    Confirmed and immediately spendable balance

    -

    Implementations§

    §

    impl Balance

    pub fn trusted_spendable(&self) -> Amount

    Get sum of trusted_pending and confirmed coins.

    -

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

    -

    pub fn total(&self) -> Amount

    Get the whole balance visible to the wallet.

    -

    Trait Implementations§

    §

    impl Add for Balance

    §

    type Output = Balance

    The resulting type after applying the + operator.
    §

    fn add(self, other: Balance) -> Balance

    Performs the + operation. Read more
    §

    impl Clone for Balance

    §

    fn clone(&self) -> Balance

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    §

    impl Debug for Balance

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl Default for Balance

    §

    fn default() -> Balance

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

    impl<'de> Deserialize<'de> for Balance

    §

    fn deserialize<__D>( - __deserializer: __D -) -> Result<Balance, <__D as Deserializer<'de>>::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl Display for Balance

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    §

    impl PartialEq for Balance

    §

    fn eq(&self, other: &Balance) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    §

    impl Serialize for Balance

    §

    fn serialize<__S>( - &self, - __serializer: __S -) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for Balance

    §

    impl StructuralPartialEq for Balance

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where - T: for<'de> Deserialize<'de>,

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/struct.Balance.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html index ed6478e2fa..7c986ae4cb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html @@ -1,23 +1,11 @@ -Update in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Update

    source ·
    pub struct Update {
    -    pub last_active_indices: BTreeMap<KeychainKind, u32>,
    -    pub graph: TxGraph<ConfirmationBlockTime>,
    -    pub chain: Option<CheckPoint>,
    -}
    Expand description

    An update to Wallet.

    -

    It updates [KeychainTxOutIndex], [bdk_chain::TxGraph] and [local_chain::LocalChain] atomically.

    -

    Fields§

    §last_active_indices: BTreeMap<KeychainKind, u32>

    Contains the last active derivation indices per keychain (K), which is used to update the -[KeychainTxOutIndex].

    -
    §graph: TxGraph<ConfirmationBlockTime>

    Update for the wallet’s internal [TxGraph].

    -
    §chain: Option<CheckPoint>

    Update for the wallet’s internal LocalChain.

    -

    Trait Implementations§

    source§

    impl Clone for Update

    source§

    fn clone(&self) -> Update

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Update

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for Update

    source§

    fn default() -> Update

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

    impl From<FullScanResult<KeychainKind>> for Update

    source§

    fn from(value: FullScanResult<KeychainKind>) -> Self

    Converts to this type from the input type.
    source§

    impl From<SyncResult> for Update

    source§

    fn from(value: SyncResult) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/struct.Update.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html index 99d6ef1748..57c4bea7b3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html @@ -1,450 +1,11 @@ -Wallet in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Wallet

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

    A Bitcoin wallet

    -

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

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

    The user is responsible for loading and writing wallet changes which are represented as -ChangeSets (see take_staged). Also see individual functions and example for instructions -on when Wallet state needs to be persisted.

    -

    The Wallet descriptor (external) and change descriptor (internal) must not derive the same -script pubkeys. See [KeychainTxOutIndex::insert_descriptor()] for more details.

    -

    Implementations§

    source§

    impl Wallet

    source

    pub fn new<E: IntoWalletDescriptor>( - descriptor: E, - change_descriptor: E, - network: Network -) -> Result<Self, NewError>

    Initialize an empty Wallet.

    -
    source

    pub fn new_with_genesis_hash<E: IntoWalletDescriptor>( - descriptor: E, - change_descriptor: E, - network: Network, - genesis_hash: BlockHash -) -> Result<Self, NewError>

    Initialize an empty Wallet with a custom genesis hash.

    -

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

    -
    source

    pub fn load_from_changeset(changeset: ChangeSet) -> Result<Self, LoadError>

    Load Wallet from the given previously persisted ChangeSet.

    -

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

    -

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

    - -
    use bdk_sqlite::{Store, rusqlite::Connection};
    -let conn = Connection::open(file_path).expect("must open connection");
    -let mut db = Store::new(conn).expect("must create db");
    -let secp = Secp256k1::new();
    -
    -let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    -let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
    -
    -let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
    -let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
    -let changeset = db.read()?.expect("there must be an existing changeset");
    -let mut wallet = Wallet::load_from_changeset(changeset)?;
    -
    -external_signer_container.signers().into_iter()
    -    .for_each(|s| wallet.add_signer(KeychainKind::External, SignerOrdering::default(), s.clone()));
    -internal_signer_container.signers().into_iter()
    -    .for_each(|s| wallet.add_signer(KeychainKind::Internal, SignerOrdering::default(), s.clone()));
    -

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

    -
    source

    pub fn new_or_load<E: IntoWalletDescriptor>( - descriptor: E, - change_descriptor: E, - changeset: Option<ChangeSet>, - network: Network -) -> Result<Self, NewOrLoadError>

    Either loads Wallet from the given ChangeSet or initializes it if one does not exist.

    -

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

    - -
    use bdk_sqlite::{Store, rusqlite::Connection};
    -let conn = Connection::open_in_memory().expect("must open connection");
    -let mut db = Store::new(conn).expect("must create db");
    -let changeset = db.read()?;
    -
    -let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    -
    -let mut wallet = Wallet::new_or_load(external_descriptor, internal_descriptor, changeset, Testnet)?;
    -
    source

    pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>( - descriptor: E, - change_descriptor: E, - changeset: Option<ChangeSet>, - network: Network, - genesis_hash: BlockHash -) -> Result<Self, NewOrLoadError>

    Either loads Wallet from a ChangeSet or initializes it if one does not exist, using the -provided descriptor, change descriptor, network, and custom genesis hash.

    -

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

    -
    source

    pub fn network(&self) -> Network

    Get the Bitcoin network the wallet is using.

    -
    source

    pub fn keychains( - &self -) -> impl Iterator<Item = (&KeychainKind, &ExtendedDescriptor)>

    Iterator over all keychains in this wallet

    -
    source

    pub fn peek_address(&self, keychain: KeychainKind, index: u32) -> AddressInfo

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

    -

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

    -
    §Panics
    -

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

    -
    source

    pub fn reveal_next_address(&mut self, keychain: KeychainKind) -> AddressInfo

    Attempt to reveal the next address of the given keychain.

    -

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

    -

    WARNING: To avoid address reuse you must persist the changes resulting from one or more -calls to this method before closing the wallet. For example:

    - -
    use bdk_sqlite::{rusqlite::Connection, Store};
    -let conn = Connection::open_in_memory().expect("must open connection");
    -let mut db = Store::new(conn).expect("must create store");
    -let next_address = wallet.reveal_next_address(KeychainKind::External);
    -if let Some(changeset) = wallet.take_staged() {
    -    db.write(&changeset)?;
    -}
    -
    -// Now it's safe to show the user their next address!
    -println!("Next address: {}", next_address.address);
    -
    source

    pub fn reveal_addresses_to( - &mut self, - keychain: KeychainKind, - index: u32 -) -> impl Iterator<Item = AddressInfo> + '_

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

    -

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

    -

    WARNING: To avoid address reuse you must persist the changes resulting from one or more -calls to this method before closing the wallet. See Wallet::reveal_next_address.

    -
    source

    pub fn next_unused_address(&mut self, keychain: KeychainKind) -> AddressInfo

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

    -

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

    -

    WARNING: To avoid address reuse you must persist the changes resulting from one or more -calls to this method before closing the wallet. See Wallet::reveal_next_address.

    -
    source

    pub fn mark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

    Marks an address used of the given keychain at index.

    -

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

    -
    source

    pub fn unmark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

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

    -

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

    -
    source

    pub fn list_unused_addresses( - &self, - keychain: KeychainKind -) -> impl DoubleEndedIterator<Item = AddressInfo> + '_

    List addresses that are revealed but unused.

    -

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

    -
    source

    pub fn is_mine(&self, script: &Script) -> bool

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

    -
    source

    pub fn derivation_of_spk(&self, spk: &Script) -> Option<(KeychainKind, u32)>

    Finds how the wallet derived the script pubkey spk.

    -

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

    -
    source

    pub fn list_unspent(&self) -> impl Iterator<Item = LocalOutput> + '_

    Return the list of unspent outputs of this wallet

    -
    source

    pub fn list_output(&self) -> impl Iterator<Item = LocalOutput> + '_

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

    -

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

    -
    source

    pub fn checkpoints(&self) -> CheckPointIter

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

    -
    source

    pub fn latest_checkpoint(&self) -> CheckPoint

    Returns the latest checkpoint.

    -
    source

    pub fn all_unbounded_spk_iters( - &self -) -> BTreeMap<KeychainKind, impl Iterator<Item = Indexed<ScriptBuf>> + Clone>

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

    -

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

    -

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

    -
    source

    pub fn unbounded_spk_iter( - &self, - keychain: KeychainKind -) -> impl Iterator<Item = Indexed<ScriptBuf>> + Clone

    Get an unbounded script pubkey iterator for the given keychain.

    -

    See all_unbounded_spk_iters for more documentation

    -
    source

    pub fn get_utxo(&self, op: OutPoint) -> Option<LocalOutput>

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

    -
    source

    pub fn insert_txout(&mut self, outpoint: OutPoint, txout: TxOut)

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

    -

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

    -

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

    -

    You must persist the changes resulting from one or more calls to this method if you need -the inserted TxOut data to be reloaded after closing the wallet. -See Wallet::reveal_next_address.

    -
    source

    pub fn calculate_fee( - &self, - tx: &Transaction -) -> Result<Amount, CalculateFeeError>

    Calculates the fee of a given transaction. Returns [Amount::ZERO] if tx is a coinbase transaction.

    -

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

    -

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

    -
    §Examples
    -
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -let fee = wallet.calculate_fee(&tx).expect("fee");
    - -
    let tx = &psbt.clone().extract_tx().expect("tx");
    -let fee = wallet.calculate_fee(tx).expect("fee");
    -
    source

    pub fn calculate_fee_rate( - &self, - tx: &Transaction -) -> Result<FeeRate, CalculateFeeError>

    Calculate the [FeeRate] for a given transaction.

    -

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

    -

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

    -
    §Examples
    -
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
    - -
    let tx = &psbt.clone().extract_tx().expect("tx");
    -let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
    -
    source

    pub fn sent_and_received(&self, tx: &Transaction) -> (Amount, Amount)

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

    -

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

    -
    §Examples
    -
    let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
    -let (sent, received) = wallet.sent_and_received(&tx);
    - -
    let tx = &psbt.clone().extract_tx().expect("tx");
    -let (sent, received) = wallet.sent_and_received(tx);
    -
    source

    pub fn get_tx( - &self, - txid: Txid -) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationBlockTime>>

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

    -

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

    -
      -
    • Blocks that the transaction is Anchored in. These may or may not be blocks that exist -in the best chain.
    • -
    • The [ChainPosition] of the transaction in the best chain - whether the transaction is -confirmed or unconfirmed. If the transaction is confirmed, the anchor which proves the -confirmation is provided. If the transaction is unconfirmed, the unix timestamp of when -the transaction was last seen in the mempool is provided.
    • -
    - -
    use bdk_chain::Anchor;
    -use bdk_wallet::{chain::ChainPosition, Wallet};
    -
    -let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
    -
    -// get reference to full transaction
    -println!("my tx: {:#?}", canonical_tx.tx_node.tx);
    -
    -// list all transaction anchors
    -for anchor in canonical_tx.tx_node.anchors {
    -    println!(
    -        "tx is anchored by block of hash {}",
    -        anchor.anchor_block().hash
    -    );
    -}
    -
    -// get confirmation status of transaction
    -match canonical_tx.chain_position {
    -    ChainPosition::Confirmed(anchor) => println!(
    -        "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
    -        anchor.block_id.height, anchor.block_id.height, anchor.block_id.hash,
    -    ),
    -    ChainPosition::Unconfirmed(last_seen) => println!(
    -        "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
    -        last_seen,
    -    ),
    -}
    -
    source

    pub fn insert_checkpoint( - &mut self, - block_id: BlockId -) -> Result<bool, AlterCheckPointError>

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

    -

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

    -

    WARNING: You must persist the changes resulting from one or more calls to this method -if you need the inserted checkpoint data to be reloaded after closing the wallet. -See Wallet::reveal_next_address.

    -
    source

    pub fn insert_tx(&mut self, tx: Transaction) -> bool

    Add a transaction to the wallet’s internal view of the chain. This stages the change, -you must persist it later.

    -

    This method inserts the given tx and returns whether anything changed after insertion, -which will be false if the same transaction already exists in the wallet’s transaction -graph. Any changes are staged but not committed.

    -
    §Note
    -

    By default the inserted tx won’t be considered “canonical” because it’s not known -whether the transaction exists in the best chain. To know whether it exists, the tx -must be broadcast to the network and the wallet synced via a chain source.

    -
    source

    pub fn transactions( - &self -) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationBlockTime>> + '_

    Iterate over the transactions in the wallet.

    -
    source

    pub fn balance(&self) -> Balance

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

    -
    source

    pub fn add_signer( - &mut self, - keychain: KeychainKind, - ordering: SignerOrdering, - signer: Arc<dyn TransactionSigner> -)

    Add an external signer

    -

    See the signer module for an example.

    -
    source

    pub fn get_signers(&self, keychain: KeychainKind) -> Arc<SignersContainer>

    Get the signers

    -
    §Example
    -
    let descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/0/*)";
    -let change_descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/1/*)";
    -let wallet = Wallet::new(descriptor, change_descriptor, Network::Testnet)?;
    -for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
    -    // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    -    println!("secret_key: {}", secret_key);
    -}
    -
    -Ok::<(), Box<dyn std::error::Error>>(())
    -
    source

    pub fn build_tx(&mut self) -> TxBuilder<'_, DefaultCoinSelectionAlgorithm>

    Start building a transaction.

    -

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

    -
    §Example
    -
    let psbt = {
    -   let mut builder =  wallet.build_tx();
    -   builder
    -       .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    -   builder.finish()?
    -};
    -
    -// sign and broadcast ...
    -
    source

    pub fn build_fee_bump( - &mut self, - txid: Txid -) -> Result<TxBuilder<'_, DefaultCoinSelectionAlgorithm>, BuildFeeBumpError>

    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.

    -
    §Example
    -
    let mut psbt = {
    -    let mut builder = wallet.build_tx();
    -    builder
    -        .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    -        .enable_rbf();
    -    builder.finish()?
    -};
    -let _ = wallet.sign(&mut psbt, SignOptions::default())?;
    -let tx = psbt.clone().extract_tx().expect("tx");
    -// broadcast tx but it's taking too long to confirm so we want to bump the fee
    -let mut psbt =  {
    -    let mut builder = wallet.build_fee_bump(tx.compute_txid())?;
    -    builder
    -        .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"));
    -    builder.finish()?
    -};
    -
    -let _ = wallet.sign(&mut psbt, SignOptions::default())?;
    -let fee_bumped_tx = psbt.extract_tx();
    -// broadcast fee_bumped_tx to replace original
    -
    source

    pub fn sign( - &self, - psbt: &mut Psbt, - sign_options: SignOptions -) -> Result<bool, SignerError>

    Sign a transaction with all the wallet’s signers, in the order specified by every signer’s -SignerOrdering. This function returns the Result type with an encapsulated bool that has the value true if the PSBT was finalized, or false otherwise.

    -

    The SignOptions can be used to tweak the behavior of the software signers, and the way -the transaction is finalized at the end. Note that it can’t be guaranteed that every -signers will follow the options, but the “software signers” (WIF keys and xprv) defined -in this library will.

    -
    §Example
    -
    let mut psbt = {
    -    let mut builder = wallet.build_tx();
    -    builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
    -    builder.finish()?
    -};
    -let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
    -assert!(finalized, "we should have signed all the inputs");
    -
    source

    pub fn policies( - &self, - keychain: KeychainKind -) -> Result<Option<Policy>, DescriptorError>

    Return the spending policies for the wallet’s descriptor

    -
    source

    pub fn public_descriptor(&self, keychain: KeychainKind) -> &ExtendedDescriptor

    Returns the descriptor used to create addresses for a particular keychain. -It’s the “public” version of the wallet’s descriptor, meaning a new descriptor that has -the same structure but with the all secret keys replaced by their corresponding public key.

    -

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

    -
    source

    pub fn finalize_psbt( - &self, - psbt: &mut Psbt, - sign_options: SignOptions -) -> Result<bool, SignerError>

    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, -and BIP371 -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.

    -
    source

    pub fn secp_ctx(&self) -> &Secp256k1<All>

    Return the secp256k1 context used for all signing operations

    -
    source

    pub fn derivation_index(&self, keychain: KeychainKind) -> Option<u32>

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

    -
    source

    pub fn next_derivation_index(&self, keychain: KeychainKind) -> u32

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

    -
    source

    pub fn cancel_tx(&mut self, tx: &Transaction)

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

    -

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

    -
    source

    pub fn get_psbt_input( - &self, - utxo: LocalOutput, - sighash_type: Option<PsbtSighashType>, - only_witness_utxo: bool -) -> Result<Input, CreateTxError>

    get the corresponding PSBT Input for a LocalUtxo

    -
    source

    pub fn descriptor_checksum(&self, keychain: KeychainKind) -> String

    Return the checksum of the public descriptor associated to keychain

    -

    Internally calls Self::public_descriptor to fetch the right descriptor

    -
    source

    pub fn apply_update( - &mut self, - update: impl Into<Update> -) -> Result<(), CannotConnectError>

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

    -

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

    -

    After applying updates you should persist the staged wallet changes. For an example of how -to persist staged wallet changes see Wallet::reveal_next_address. `

    -
    source

    pub fn staged(&self) -> Option<&ChangeSet>

    Get a reference of the staged ChangeSet that are yet to be committed (if any).

    -
    source

    pub fn take_staged(&mut self) -> Option<ChangeSet>

    Take the staged ChangeSet to be persisted now (if any).

    -
    source

    pub fn tx_graph(&self) -> &TxGraph<ConfirmationBlockTime>

    Get a reference to the inner [TxGraph].

    -
    source

    pub fn unbroadcast_transactions( - &self -) -> impl Iterator<Item = TxNode<'_, Arc<Transaction>, ConfirmationBlockTime>>

    Iterate over transactions in the wallet that are unseen and unanchored likely -because they haven’t been broadcast.

    -
    source

    pub fn spk_index(&self) -> &KeychainTxOutIndex<KeychainKind>

    Get a reference to the inner [KeychainTxOutIndex].

    -
    source

    pub fn local_chain(&self) -> &LocalChain

    Get a reference to the inner [LocalChain].

    -
    source

    pub fn apply_block( - &mut self, - block: &Block, - height: u32 -) -> Result<(), CannotConnectError>

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

    -

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

    -
    source

    pub fn apply_block_connected_to( - &mut self, - block: &Block, - height: u32, - connected_to: BlockId -) -> Result<(), ApplyHeaderError>

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

    -

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

    -

    WARNING: You must persist the changes resulting from one or more calls to this method -if you need the inserted block data to be reloaded after closing the wallet. -See Wallet::reveal_next_address.

    -
    source

    pub fn apply_unconfirmed_txs<'t>( - &mut self, - unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> -)

    Apply relevant unconfirmed transactions to the wallet.

    -

    Transactions that are not relevant are filtered out.

    -

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

    -

    WARNING: You must persist the changes resulting from one or more calls to this method -if you need the applied unconfirmed transactions to be reloaded after closing the wallet. -See Wallet::reveal_next_address.

    -
    source§

    impl Wallet

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

    -
    source

    pub fn start_sync_with_revealed_spks(&self) -> SyncRequest

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

    -

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

    -
    source

    pub fn start_full_scan(&self) -> FullScanRequest<KeychainKind>

    Create a [`FullScanRequest] for this wallet.

    -

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

    -

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

    -

    Trait Implementations§

    source§

    impl AsRef<TxGraph<ConfirmationBlockTime>> for Wallet

    source§

    fn as_ref(&self) -> &TxGraph<ConfirmationBlockTime>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Debug for Wallet

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../bdk_wallet/struct.Wallet.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html deleted file mode 100644 index 01848e294b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html +++ /dev/null @@ -1,8 +0,0 @@ -IsDust in bdk_wallet::wallet - Rust

    Trait bdk_wallet::wallet::IsDust

    source ·
    pub trait IsDust {
    -    // Required method
    -    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§

    source

    fn is_dust(&self, script: &Script) -> bool

    Check whether or not a value is below dust limit

    -

    Implementations on Foreign Types§

    source§

    impl IsDust for u64

    source§

    fn is_dust(&self, script: &Script) -> bool

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html index 59ce5f4a8d..d9a98875b2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html @@ -1,26 +1,11 @@ -AddForeignUtxoError in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::AddForeignUtxoError

    source ·
    pub enum AddForeignUtxoError {
    -    InvalidTxid {
    -        input_txid: Txid,
    -        foreign_utxo: OutPoint,
    -    },
    -    InvalidOutpoint(OutPoint),
    -    MissingUtxo,
    -}
    Expand description

    Error returned from TxBuilder::add_foreign_utxo.

    -

    Variants§

    §

    InvalidTxid

    Foreign utxo outpoint txid does not match PSBT input txid

    -

    Fields

    §input_txid: Txid

    PSBT input txid

    -
    §foreign_utxo: OutPoint

    Foreign UTXO outpoint

    -
    §

    InvalidOutpoint(OutPoint)

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

    -
    §

    MissingUtxo

    Foreign utxo missing witness_utxo or non_witness_utxo

    -

    Trait Implementations§

    source§

    impl Debug for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddForeignUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddForeignUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/enum.AddForeignUtxoError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html index 34246be829..7c9b9f8823 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html @@ -1,17 +1,11 @@ -AddUtxoError in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::AddUtxoError

    source ·
    pub enum AddUtxoError {
    -    UnknownUtxo(OutPoint),
    -}
    Expand description

    Error returned from TxBuilder::add_utxo and TxBuilder::add_utxos

    -

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    -

    Trait Implementations§

    source§

    impl Debug for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for AddUtxoError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for AddUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/enum.AddUtxoError.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html index af8b7e10fb..f7b0b283b1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html @@ -1,30 +1,11 @@ -ChangeSpendPolicy in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::ChangeSpendPolicy

    source ·
    pub enum ChangeSpendPolicy {
    -    ChangeAllowed,
    -    OnlyChange,
    -    ChangeForbidden,
    -}
    Expand description

    Policy regarding the use of change outputs when creating a transaction

    -

    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§

    source§

    impl Clone for ChangeSpendPolicy

    source§

    fn clone(&self) -> ChangeSpendPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSpendPolicy

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for ChangeSpendPolicy

    source§

    fn default() -> ChangeSpendPolicy

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

    impl Hash for ChangeSpendPolicy

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where - H: Hasher, - Self: Sized,

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

    impl Ord for ChangeSpendPolicy

    source§

    fn cmp(&self, other: &ChangeSpendPolicy) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for ChangeSpendPolicy

    source§

    fn eq(&self, other: &ChangeSpendPolicy) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for ChangeSpendPolicy

    source§

    fn partial_cmp(&self, other: &ChangeSpendPolicy) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

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

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

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

    impl Copy for ChangeSpendPolicy

    source§

    impl Eq for ChangeSpendPolicy

    source§

    impl StructuralPartialEq for ChangeSpendPolicy

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/enum.ChangeSpendPolicy.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html index 70d576e2c9..174f42a9e1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html @@ -1,34 +1,11 @@ -TxOrdering in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::TxOrdering

    source ·
    pub enum TxOrdering {
    -    Shuffle,
    -    Untouched,
    -    Custom {
    -        input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>,
    -        output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>,
    -    },
    -}
    Expand description

    Ordering of the transaction’s inputs and outputs

    -

    Variants§

    §

    Shuffle

    Randomized (default)

    -
    §

    Untouched

    Unchanged

    -
    §

    Custom

    Provide custom comparison functions for sorting

    -

    Fields

    §input_sort: Arc<dyn Fn(&TxIn, &TxIn) -> Ordering>

    Transaction inputs sort function

    -
    §output_sort: Arc<dyn Fn(&TxOut, &TxOut) -> Ordering>

    Transaction outputs sort function

    -

    Implementations§

    source§

    impl TxOrdering

    source

    pub fn sort_tx(&self, tx: &mut Transaction)

    Sort transaction inputs and outputs by TxOrdering variant.

    -

    Uses the thread-local random number generator (rng).

    -
    source

    pub fn sort_tx_with_aux_rand( - &self, - tx: &mut Transaction, - rng: &mut impl RngCore -)

    Sort transaction inputs and outputs by TxOrdering variant.

    -

    Uses a provided random number generator (rng).

    -

    Trait Implementations§

    source§

    impl Clone for TxOrdering

    source§

    fn clone(&self) -> TxOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TxOrdering

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for TxOrdering

    source§

    fn default() -> TxOrdering

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/enum.TxOrdering.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html index 14672a0571..5e00acb567 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html @@ -1,16 +1,11 @@ -bdk_wallet::wallet::tx_builder - Rust

    Module bdk_wallet::wallet::tx_builder

    source ·
    Expand description

    Transaction builder

    -

    §Example

    -
    // create a TxBuilder from a wallet
    -let mut tx_builder = wallet.build_tx();
    -
    -tx_builder
    -    // Create a transaction with one output to `to_address` of 50_000 satoshi
    -    .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    -    // With a custom fee rate of 5.0 satoshi/vbyte
    -    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    -    // Only spend non-change outputs
    -    .do_not_spend_change()
    -    // Turn on RBF signaling
    -    .enable_rbf();
    -let psbt = tx_builder.finish()?;
    -

    Structs§

    Enums§

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/index.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js deleted file mode 100644 index 55f2e14703..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -window.SIDEBAR_ITEMS = {"enum":["AddForeignUtxoError","AddUtxoError","ChangeSpendPolicy","TxOrdering"],"struct":["TxBuilder"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html index 520ec24000..94a33ecd42 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html @@ -1,285 +1,11 @@ -TxBuilder in bdk_wallet::wallet::tx_builder - Rust

    Struct bdk_wallet::wallet::tx_builder::TxBuilder

    source ·
    pub struct TxBuilder<'a, Cs> { /* 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.

    -

    Each option setting method on TxBuilder takes and returns &mut self so you can chain calls -as in the following example:

    - -
    // chaining
    -let psbt1 = {
    -    let mut builder = wallet.build_tx();
    -    builder
    -        .ordering(TxOrdering::Untouched)
    -        .add_recipient(addr1.script_pubkey(), Amount::from_sat(50_000))
    -        .add_recipient(addr2.script_pubkey(), Amount::from_sat(50_000));
    -    builder.finish()?
    -};
    -
    -// non-chaining
    -let psbt2 = {
    -    let mut builder = wallet.build_tx();
    -    builder.ordering(TxOrdering::Untouched);
    -    for addr in &[addr1, addr2] {
    -        builder.add_recipient(addr.script_pubkey(), Amount::from_sat(50_000));
    -    }
    -    builder.finish()?
    -};
    -
    -assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
    -

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

    -

    For further examples see this module’s documentation;

    -

    Implementations§

    source§

    impl<'a, Cs> TxBuilder<'a, Cs>

    source

    pub fn fee_rate(&mut self, fee_rate: FeeRate) -> &mut Self

    Set a custom fee rate.

    -

    This method sets the mining fee paid by the transaction as a rate on its size. -This means that the total fee paid is equal to fee_rate times the size -of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core’s default -relay policy.

    -

    Note that this is really a minimum feerate – it’s possible to -overshoot it slightly since adding a change output to drain the remaining -excess might not be viable.

    -
    source

    pub fn fee_absolute(&mut self, fee_amount: Amount) -> &mut Self

    Set an absolute fee -The fee_absolute method refers to the absolute transaction fee in [Amount]. -If anyone sets both the fee_absolute method and the fee_rate method, -the FeePolicy enum will be set by whichever method was called last, -as the [FeeRate] and FeeAmount are mutually exclusive.

    -

    Note that this is really a minimum absolute fee – it’s possible to -overshoot it slightly since adding a change output to drain the remaining -excess might not be viable.

    -
    source

    pub fn policy_path( - &mut self, - policy_path: BTreeMap<String, Vec<usize>>, - keychain: KeychainKind -) -> &mut Self

    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 -SatisfiableItem::Thresh::items).

    -
    §Example
    -

    An example of when the policy path is needed is the following descriptor: -wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000)))), -derived from the miniscript policy thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000))). -It declares three descriptor fragments, and at the top level it uses thresh() to -ensure that at least two of them are satisfied. The individual fragments are:

    -
      -
    1. pk(A)
    2. -
    3. and(pk(B),older(6))
    4. -
    5. and(pk(C),after(630000))
    6. -
    -

    When those conditions are combined in pairs, it’s clear that the transaction needs to be created -differently depending on how the user intends to satisfy the policy afterwards:

    -
      -
    • If fragments 1 and 2 are used, the transaction will need to use a specific -n_sequence in order to spend an OP_CSV branch.
    • -
    • If fragments 1 and 3 are used, the transaction will need to use a specific locktime -in order to spend an OP_CLTV branch.
    • -
    • If fragments 2 and 3 are used, the transaction will need both.
    • -
    -

    When the spending policy is represented as a tree (see -Wallet::policies), every node -is assigned a unique identifier that can be used in the policy path to specify which of -the node’s children the user intends to satisfy: for instance, assuming the thresh() -root node of this example has an id of aabbccdd, the policy path map would look like:

    -

    { "aabbccdd" => [0, 1] }

    -

    where the key is the node’s id, and the value is a list of the children that should be -used, in no particular order.

    -

    If a particularly complex descriptor has multiple ambiguous thresholds in its structure, -multiple entries can be added to the map, one for each node that requires an explicit path.

    - -
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    -    .unwrap()
    -    .assume_checked();
    -let mut path = BTreeMap::new();
    -path.insert("aabbccdd".to_string(), vec![0, 1]);
    -
    -let builder = wallet
    -    .build_tx()
    -    .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
    -    .policy_path(path, KeychainKind::External);
    -
    -
    source

    pub fn add_utxos( - &mut self, - outpoints: &[OutPoint] -) -> Result<&mut Self, AddUtxoError>

    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.

    -
    source

    pub fn add_utxo( - &mut self, - outpoint: OutPoint -) -> Result<&mut Self, AddUtxoError>

    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.

    -
    source

    pub fn add_foreign_utxo( - &mut self, - outpoint: OutPoint, - psbt_input: Input, - satisfaction_weight: Weight -) -> Result<&mut Self, AddForeignUtxoError>

    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. -
    3. psbt_input: To know the value.
    4. -
    5. satisfaction_weight: To know how much weight/vbytes the input will add to the transaction for fee calculation.
    6. -
    -

    There are several security concerns about adding foreign UTXOs that application -developers should consider. First, how do you know the value of the input is correct? If a -non_witness_utxo is provided in the psbt_input then this method implicitly verifies the -value by checking it against the transaction. If only a witness_utxo is provided then this -method doesn’t verify the value but just takes it as a given – it is up to you to check -that whoever sent you the input_psbt was not lying!

    -

    Secondly, you must somehow provide satisfaction_weight of the input. Depending on your -application it may be important that this be known precisely. If not, a malicious -counterparty may fool you into putting in a value that is too low, giving the transaction a -lower than expected feerate. They could also fool you into putting a value that is too high -causing you to pay a fee that is too high. The party who is broadcasting the transaction can -of course check the real input weight matches the expected weight prior to broadcasting.

    -

    To guarantee the max_weight_to_satisfy is correct, you can require the party providing the -psbt_input provide a miniscript descriptor for the input so you can check it against the -script_pubkey and then ask it for the max_weight_to_satisfy.

    -

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

    -

    In order to use Wallet::calculate_fee or Wallet::calculate_fee_rate for a transaction -created with foreign UTXO(s) you must manually insert the corresponding TxOut(s) into the tx -graph using the Wallet::insert_txout function.

    -
    §Errors
    -

    This method returns errors in the following circumstances:

    -
      -
    1. The psbt_input does not contain a witness_utxo or non_witness_utxo.
    2. -
    3. The data in non_witness_utxo does not match what is in outpoint.
    4. -
    -

    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.

    -
    source

    pub fn add_foreign_utxo_with_sequence( - &mut self, - outpoint: OutPoint, - psbt_input: Input, - satisfaction_weight: Weight, - sequence: Sequence -) -> Result<&mut Self, AddForeignUtxoError>

    Same as add_foreign_utxo but allows to set the nSequence value.

    -
    source

    pub fn manually_selected_only(&mut self) -> &mut Self

    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.

    -
    source

    pub fn unspendable(&mut self, unspendable: Vec<OutPoint>) -> &mut Self

    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.

    -
    source

    pub fn add_unspendable(&mut self, unspendable: OutPoint) -> &mut Self

    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.

    -
    source

    pub fn sighash(&mut self, sighash: PsbtSighashType) -> &mut Self

    Sign with a specific sig hash

    -

    Use this option very carefully

    -
    source

    pub fn ordering(&mut self, ordering: TxOrdering) -> &mut Self

    Choose the ordering for inputs and outputs of the transaction

    -
    source

    pub fn nlocktime(&mut self, locktime: LockTime) -> &mut Self

    Use a specific nLockTime while creating the transaction

    -

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

    -
    source

    pub fn version(&mut self, version: i32) -> &mut Self

    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.

    -
    source

    pub fn do_not_spend_change(&mut self) -> &mut Self

    Do not spend change outputs

    -

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

    -
    source

    pub fn only_spend_change(&mut self) -> &mut Self

    Only spend change outputs

    -

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

    -
    source

    pub fn change_policy(&mut self, change_policy: ChangeSpendPolicy) -> &mut Self

    source

    pub fn only_witness_utxo(&mut self) -> &mut Self

    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.

    -
    source

    pub fn include_output_redeem_witness_script(&mut self) -> &mut Self

    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.

    -
    source

    pub fn add_global_xpubs(&mut self) -> &mut Self

    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.

    -
    source

    pub fn drain_wallet(&mut self) -> &mut Self

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

    -
    source

    pub fn coin_selection<P: CoinSelectionAlgorithm>( - self, - coin_selection: P -) -> TxBuilder<'a, P>

    Choose the coin selection algorithm

    -

    Overrides the CoinSelectionAlgorithm.

    -

    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.

    -
    source

    pub fn enable_rbf(&mut self) -> &mut Self

    Enable signaling RBF

    -

    This will use the default nSequence value of 0xFFFFFFFD.

    -
    source

    pub fn enable_rbf_with_sequence(&mut self, nsequence: Sequence) -> &mut Self

    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.

    -
    source

    pub fn current_height(&mut self, height: u32) -> &mut Self

    Set the current blockchain height.

    -

    This will be used to:

    -
      -
    1. Set the nLockTime for preventing fee sniping. -Note: This will be ignored if you manually specify a nlocktime using TxBuilder::nlocktime.
    2. -
    3. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not -mature at current_height, we ignore them in the coin selection. -If you want to create a transaction that spends immature coinbase inputs, manually -add them using TxBuilder::add_utxos.
    4. -
    -

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

    -
    source

    pub fn allow_dust(&mut self, allow_dust: bool) -> &mut Self

    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.

    -
    source

    pub fn set_recipients( - &mut self, - recipients: Vec<(ScriptBuf, Amount)> -) -> &mut Self

    Replace the recipients already added with a new list

    -
    source

    pub fn add_recipient( - &mut self, - script_pubkey: ScriptBuf, - amount: Amount -) -> &mut Self

    Add a recipient to the internal list

    -
    source

    pub fn add_data<T: AsRef<PushBytes>>(&mut self, data: &T) -> &mut Self

    Add data as an output, using OP_RETURN

    -
    source

    pub fn drain_to(&mut self, script_pubkey: ScriptBuf) -> &mut Self

    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 -coins are too small) it will not be included in the resulting transaction. The only -difference is that it is valid to use drain_to without setting any ordinary recipients -with add_recipient (but it is perfectly fine to add recipients as well).

    -

    If you choose not to set any recipients, you should provide the utxos that the -transaction should spend via add_utxos.

    -
    §Example
    -

    drain_to is very useful for draining all the coins in a wallet with drain_wallet to a -single address.

    - -
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    -    .unwrap()
    -    .assume_checked();
    -let mut tx_builder = wallet.build_tx();
    -
    -tx_builder
    -    // Spend all outputs in this wallet.
    -    .drain_wallet()
    -    // Send the excess (which is all the coins minus the fee) to this address.
    -    .drain_to(to_address.script_pubkey())
    -    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    -    .enable_rbf();
    -let psbt = tx_builder.finish()?;
    -
    source§

    impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs>

    source

    pub fn finish(self) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    -

    Uses the thread-local random number generator (rng).

    -

    Returns a new [Psbt] per BIP174.

    -

    WARNING: To avoid change address reuse you must persist the changes resulting from one -or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    -
    source

    pub fn finish_with_aux_rand( - self, - rng: &mut impl RngCore -) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    -

    Uses a provided random number generator (rng).

    -

    Returns a new [Psbt] per BIP174.

    -

    WARNING: To avoid change address reuse you must persist the changes resulting from one -or more calls to this method before closing the wallet. See Wallet::reveal_next_address.

    -

    Trait Implementations§

    source§

    impl<'a, Cs: Clone> Clone for TxBuilder<'a, Cs>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<'a, Cs: Debug> Debug for TxBuilder<'a, Cs>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a, Cs> Freeze for TxBuilder<'a, Cs>
    where - Cs: Freeze,

    §

    impl<'a, Cs> !RefUnwindSafe for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Send for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> !Sync for TxBuilder<'a, Cs>

    §

    impl<'a, Cs> Unpin for TxBuilder<'a, Cs>
    where - Cs: Unpin,

    §

    impl<'a, Cs> !UnwindSafe for TxBuilder<'a, Cs>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    -

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

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

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

    fn clone_into(&self, target: &mut T)

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

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where - V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file + + + + + Redirection + + +

    Redirecting to ../../../bdk_wallet/tx_builder/struct.TxBuilder.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html deleted file mode 100644 index 96fd136747..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html +++ /dev/null @@ -1,9 +0,0 @@ -ChangeSet in bdk_wallet::wallet - Rust

    Type Alias bdk_wallet::wallet::ChangeSet

    source ·
    pub type ChangeSet = CombinedChangeSet<KeychainKind, ConfirmationBlockTime>;
    Expand description

    The changes made to a wallet by applying an Update.

    -

    Aliased Type§

    struct ChangeSet {
    -    pub chain: BTreeMap<u32, Option<BlockHash>>,
    -    pub indexed_tx_graph: ChangeSet<ConfirmationBlockTime, ChangeSet<KeychainKind>>,
    -    pub network: Option<Network>,
    -}

    Fields§

    §chain: BTreeMap<u32, Option<BlockHash>>

    Changes to the LocalChain.

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

    Changes to IndexedTxGraph.

    -
    §network: Option<Network>

    Stores the network type of the transaction data.

    -
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/utils/trait.IsDust.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/utils/trait.IsDust.html index 47426536de..c4155190dd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/utils/trait.IsDust.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/utils/trait.IsDust.html @@ -1,11 +1,11 @@ - + Redirection -

    Redirecting to ../../../bdk_wallet/wallet/trait.IsDust.html...

    - +

    Redirecting to ../../../bdk_wallet/trait.IsDust.html...

    + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js index 2ce3df8042..95e2e54377 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js @@ -1 +1 @@ -window.ALL_CRATES = ["bdk_bitcoind_rpc","bdk_chain","bdk_coin_select","bdk_electrum","bdk_esplora","bdk_file_store","bdk_hwi","bdk_sqlite","bdk_testenv","bdk_tmp_plan","bdk_wallet","example_bitcoind_rpc_polling","example_cli","example_electrum","example_esplora","wallet_electrum_example","wallet_esplora_async","wallet_esplora_blocking","wallet_rpc"]; \ No newline at end of file +window.ALL_CRATES = ["bdk_bitcoind_rpc","bdk_chain","bdk_coin_select","bdk_electrum","bdk_esplora","bdk_file_store","bdk_hwi","bdk_testenv","bdk_tmp_plan","bdk_wallet","example_bitcoind_rpc_polling","example_cli","example_electrum","example_esplora","wallet_electrum_example","wallet_esplora_async","wallet_esplora_blocking","wallet_rpc"]; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html index c995922e26..0836976374 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_bitcoind_rpc_polling - Rust

    Type Alias example_bitcoind_rpc_polling::ChangeSet

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

    Type Alias example_bitcoind_rpc_polling::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationBlockTime, ChangeSet>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html index 172fcdd28b..1d53aa72d4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html @@ -4,7 +4,7 @@ OldestFirst, NewestFirst, BranchAndBound, -}

    Variants§

    §

    LargestFirst

    §

    SmallestFirst

    §

    OldestFirst

    §

    NewestFirst

    §

    BranchAndBound

    Trait Implementations§

    source§

    impl Clone for CoinSelectionAlgo

    source§

    fn clone(&self) -> CoinSelectionAlgo

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CoinSelectionAlgo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for CoinSelectionAlgo

    source§

    fn default() -> Self

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

    impl Display for CoinSelectionAlgo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromStr for CoinSelectionAlgo

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +}

    Variants§

    §

    LargestFirst

    §

    SmallestFirst

    §

    OldestFirst

    §

    NewestFirst

    §

    BranchAndBound

    Trait Implementations§

    source§

    impl Clone for CoinSelectionAlgo

    source§

    fn clone(&self) -> CoinSelectionAlgo

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CoinSelectionAlgo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Default for CoinSelectionAlgo

    source§

    fn default() -> Self

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

    impl Display for CoinSelectionAlgo

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromStr for CoinSelectionAlgo

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html index d8644e985a..404538e0b0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html @@ -1,8 +1,8 @@ -Keychain in example_cli - Rust

    Enum example_cli::Keychain

    source ·
    pub enum Keychain {
    +Keychain in example_cli - Rust

    Enum example_cli::Keychain

    source ·
    pub enum Keychain {
         External,
         Internal,
    -}

    Variants§

    §

    External

    §

    Internal

    Trait Implementations§

    source§

    impl Clone for Keychain

    source§

    fn clone(&self) -> Keychain

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Keychain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Keychain

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Keychain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for Keychain

    source§

    fn cmp(&self, other: &Keychain) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where +}

    Variants§

    §

    External

    §

    Internal

    Trait Implementations§

    source§

    impl Clone for Keychain

    source§

    fn clone(&self) -> Keychain

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Keychain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<'de> Deserialize<'de> for Keychain

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Keychain

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for Keychain

    source§

    fn cmp(&self, other: &Keychain) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for Keychain

    source§

    fn eq(&self, other: &Keychain) -> bool

    This method tests for self and other values to be equal, and is used @@ -13,9 +13,11 @@ operator. Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for Keychain

    source§

    impl Eq for Keychain

    source§

    impl StructuralPartialEq for Keychain

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<Q, K> Equivalent<K> for Q
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    + K: Borrow<Q> + ?Sized,
    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    source§

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    source§

    impl<T, U> Into<U> for T
    where U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html index 5aaa356a40..3d648c8c85 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html @@ -1,8 +1,8 @@ CreateTxChange in example_cli - Rust

    Struct example_cli::CreateTxChange

    source ·
    pub struct CreateTxChange {
    -    pub index_changeset: ChangeSet<Keychain>,
    +    pub index_changeset: ChangeSet,
         pub change_keychain: Keychain,
         pub index: u32,
    -}

    Fields§

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +}

    Fields§

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

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html index 0ecea609e6..304afd019d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html @@ -1 +1 @@ -KeychainChangeSet in example_cli - Rust

    Type Alias example_cli::KeychainChangeSet

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

    Type Alias example_cli::KeychainChangeSet

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

    Type Alias example_electrum::ChangeSet

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

    Type Alias example_electrum::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationBlockTime, ChangeSet>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html index 1755584fc1..0efdcbd6da 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html @@ -1 +1 @@ -DB_PATH in example_esplora - Rust

    Constant example_esplora::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_esplora_example.db";
    \ No newline at end of file +DB_PATH in example_esplora - Rust

    Constant example_esplora::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = "bdk_example_esplora.db";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html index 75b9a4c4da..7daf6c3e34 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_esplora - Rust

    Type Alias example_esplora::ChangeSet

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

    Type Alias example_esplora::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationBlockTime, ChangeSet>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html index ae03e9ecc6..08ff977b9d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html @@ -1 +1 @@ -Help

    Rustdoc help

    Back
    \ No newline at end of file +Help

    Rustdoc help

    Back
    \ 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 d9ef6f421b..4976498242 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,22 +1,21 @@ var searchIndex = new Map(JSON.parse('[\ ["bdk_bitcoind_rpc",{"t":"KFFEONNNNNNONNNNNNMNNNNNNNNNNNN","n":["BitcoindRpcErrorExt","BlockEvent","Emitter","bitcoincore_rpc","block","block_hash","block_height","borrow","borrow","borrow_mut","borrow_mut","checkpoint","connected_to","fmt","from","from","into","into","is_not_found_error","mempool","new","next_block","next_header","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"bdk_bitcoind_rpc"],[31,"bitcoin::blockdata::block"],[32,"bdk_chain::chain_data"],[33,"core::fmt"],[34,"bitcoin::blockdata::transaction"],[35,"alloc::vec"],[36,"bitcoincore_rpc::error"],[37,"core::result"],[38,"bitcoincore_rpc::client"],[39,"bdk_chain::local_chain"],[40,"core::option"],[41,"core::any"]],"i":[0,0,0,0,1,1,1,12,1,12,1,1,1,1,12,1,12,1,10,12,12,12,12,12,1,12,1,12,1,12,1],"f":"`````{{{d{{b{c}}}}}f{}}{{{d{{b{c}}}}}h{}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0`{{{d{{b{c}}}}}l{}}{{{d{{b{c}}}}{d{jn}}}A`Ab}{cc{}}0{ce{}{}}0{{{d{Ad}}}Af}{{{d{j{Ah{c}}}}}{{Bd{{B`{{An{AjAl}}}}Bb}}}Bf}{{{d{c}}Bhh}{{Ah{c}}}Bf}{{{d{j{Ah{c}}}}}{{Bd{{Bl{{b{Bj}}}}Bb}}}Bf}{{{d{j{Ah{c}}}}}{{Bd{{Bl{{b{Bn}}}}Bb}}}Bf}{c{{Bd{e}}}{}{}}000{{{d{c}}}C`{}}077","D":"Bd","p":[[5,"BlockEvent",0],[1,"reference"],[5,"BlockHash",31],[1,"u32"],[0,"mut"],[5,"BlockId",32],[5,"Formatter",33],[8,"Result",33],[10,"Debug",33],[10,"BitcoindRpcErrorExt",0],[1,"bool"],[5,"Emitter",0],[5,"Transaction",34],[1,"u64"],[1,"tuple"],[5,"Vec",35],[6,"Error",36],[6,"Result",37],[10,"RpcApi",38],[5,"CheckPoint",39],[5,"Block",31],[6,"Option",40],[5,"Header",31],[5,"TypeId",41]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA0ABAAEAAAACAADAA4AAAAYAAcA"}],\ -["bdk_chain",{"t":"KKSFFSKGFFGPPKFRFIEEIKFEPPNNMNNNNNNEONNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMNNNNNOOONCOCNNNNNNNNNNMNNNMNNOCMNEONNNNONNNNNNDNNNNNNOCNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNCONNNNNNNNNNONNNNNNNNNOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNRKMMMMMCCFSPGPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFGPFIFFPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNONNNNNNNFFFFNNNNNNNNNNNOONOONNNNNNNOONNNNNNNNNOONNNNNOONNNNNNNNONNNNNNNNGFFPPFFFFNNNOONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNONOONNNNNNNNNNNNNNNNNNN","n":["Anchor","AnchorFromBlockPosition","BIP32_MAX_INDEX","Balance","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","CombinedChangeSet","ConfirmationBlockTime","ConfirmationTime","Confirmed","Confirmed","DescriptorExt","DescriptorId","Error","FullTxOut","Indexed","IndexedTxGraph","Indexer","KeychainIndexed","Merge","SpkIterator","TxGraph","Unconfirmed","Unconfirmed","add","all_zeros","anchor_block","anchor_block","anchor_block","as_byte_array","as_raw_hash","as_ref","as_ref","bitcoin","block_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","confirmed","default","default","default","default","descriptor","descriptor_id","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","dust_value","engine","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_byte_array","from_engine","from_raw_hash","from_slice","from_slice_delegated","from_str","get_chain_tip","hash","hash","hash","hash","hash","hash","height","immature","index","indexed_tx_graph","indexed_tx_graph","indexer","into","into","into","into","into","into","into","into","into","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_empty","is_mature","is_on_coinbase","local_chain","merge","merge","miniscript","network","new","new_with_range","next","nth","outpoint","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","serde","serialize","serialize","serialize","serialize","serialize","serialize","spent_by","spk_client","take","take","to_byte_array","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_raw_hash","to_string","to_string","total","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_graph","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","IndexedTxGraph","apply_block","apply_block_relevant","apply_changeset","apply_update","as_ref","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","graph","index","indexer","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","merge","new","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ChangeSet","Indexer","apply_changeset","index_tx","index_txout","initial_changeset","is_tx_relevant","keychain_txout","spk_txout","ChangeSet","DEFAULT_LOOKAHEAD","DescriptorAlreadyAssigned","InsertDescriptorError","KeychainAlreadyAssigned","KeychainTxOutIndex","NoSuchKeychain","all_unbounded_spk_iters","apply_changeset","apply_changeset","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","default","default","deserialize","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_descriptor","index_of_spk","index_tx","index_txout","initial_changeset","inner","insert_descriptor","into","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","keychains_added","last_revealed","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","merge","net_value","new","next_index","next_unused_spk","outpoints","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","spk_at_index","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","unused_keychain_spks","unused_spks","vzip","vzip","vzip","vzip","descriptor","existing_assignment","existing_assignment","keychain","SpkTxOutIndex","all_spks","apply_changeset","borrow","borrow_mut","clone","clone_into","default","fmt","from","index_of_spk","index_tx","index_txout","initial_changeset","insert_spk","into","is_relevant","is_tx_relevant","is_used","mark_used","net_value","outpoints","outputs_in_range","scan","scan_txout","sent_and_received","spk_at_index","to_owned","try_from","try_into","txout","txouts","txouts_in_tx","type_id","unmark_used","unused_spks","vzip","AlterCheckPointError","ApplyHeaderError","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","disconnect_from","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into_iter","into_iter","is_block_in_chain","iter","iter_checkpoints","new","next","original_hash","prev","push","range","range","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","FullScanRequest","FullScanResult","SyncRequest","SyncResult","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_canonical_txs","map_anchors","map_anchors","merge","new","next","next","outspends","partial_cmp","partial_cmp","serialize","to_owned","to_owned","to_owned","to_owned","to_string","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_canonical_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","txs_with_no_anchor_or_last_seen","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":[[0,"bdk_chain"],[262,"bdk_chain::ConfirmationTime"],[265,"bdk_chain::indexed_tx_graph"],[315,"bdk_chain::indexer"],[324,"bdk_chain::indexer::keychain_txout"],[435,"bdk_chain::indexer::keychain_txout::InsertDescriptorError"],[439,"bdk_chain::indexer::spk_txout"],[476,"bdk_chain::local_chain"],[618,"bdk_chain::spk_client"],[682,"bdk_chain::tx_graph"],[844,"bdk_chain::balance"],[845,"bdk_chain::descriptor_ext"],[846,"bdk_chain::tx_data_traits"],[847,"bdk_chain::chain_data"],[848,"bitcoin_hashes::sha256"],[849,"core::clone"],[850,"bdk_chain::spk_iter"],[851,"bdk_chain::changeset"],[852,"core::cmp"],[853,"core::option"],[854,"miniscript::descriptor::key"],[855,"miniscript::descriptor"],[856,"core::borrow"],[857,"core::result"],[858,"serde::de"],[859,"core::fmt"],[860,"bitcoin::blockdata::block"],[861,"bitcoin_hashes"],[862,"bdk_chain::chain_oracle"],[863,"core::hash"],[864,"core::slice::index"],[865,"core::ops::range"],[866,"serde::ser"],[867,"alloc::string"],[868,"bitcoin_units::amount"],[869,"core::any"],[870,"core::iter::traits::collect"],[871,"bitcoin::blockdata::transaction"],[872,"core::default"],[873,"alloc::collections::btree::map"],[874,"bitcoin::blockdata::script::borrowed"],[875,"core::iter::traits::double_ended"],[876,"core::iter::traits::exact_size"],[877,"bitcoin::blockdata::script::owned"],[878,"alloc::collections::btree::set"],[879,"alloc::vec"],[880,"core::iter::traits::iterator"],[881,"core::marker"],[882,"core::ops::function"],[883,"core::convert"],[884,"alloc::sync"],[885,"std::collections::hash::set"]],"i":[0,0,0,0,0,0,0,0,0,0,0,12,14,0,0,47,0,0,0,0,0,0,0,0,12,14,1,2,3,5,6,2,2,2,2,0,6,1,12,14,5,6,15,2,2,16,17,1,12,14,5,6,15,2,16,17,17,15,1,12,14,5,6,15,2,16,17,1,12,14,5,6,15,2,16,17,12,12,14,5,6,15,2,3,3,12,6,6,1,1,5,6,17,16,26,1,14,5,6,2,17,26,2,1,12,14,5,6,15,2,17,1,1,12,14,5,6,15,2,2,2,2,17,1,12,14,14,5,5,5,6,15,2,2,16,17,17,17,17,43,5,6,2,2,2,2,2,2,47,12,14,5,6,2,5,5,1,2,0,17,0,1,12,14,5,6,15,2,16,17,16,47,12,14,15,51,17,15,15,0,51,17,0,17,16,16,16,16,15,12,14,5,6,15,2,0,1,14,5,6,2,17,15,0,51,51,2,1,12,14,5,6,15,2,16,17,2,1,2,1,1,1,1,12,14,5,6,15,2,16,17,1,12,14,5,6,15,2,16,17,0,15,1,12,14,5,6,15,2,16,17,14,1,1,12,14,5,6,15,2,16,17,110,111,110,0,0,59,59,59,59,59,59,59,59,59,39,59,39,39,39,59,39,39,39,59,39,59,39,39,39,59,39,59,39,59,59,59,59,59,59,39,39,39,59,39,39,59,39,59,39,59,39,59,39,60,0,60,60,60,60,60,0,0,0,0,73,0,73,0,0,71,71,71,71,73,38,74,71,73,38,74,71,73,38,74,71,73,38,74,71,38,38,73,38,74,71,73,73,38,74,74,71,73,38,74,71,71,71,71,71,71,71,71,73,38,74,38,71,71,71,71,71,38,38,71,71,71,71,71,71,71,38,71,71,71,71,71,71,71,71,71,71,71,38,71,71,73,38,74,73,74,71,73,38,74,71,73,38,74,71,71,71,71,73,38,74,71,71,71,71,71,73,38,74,112,112,113,113,0,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,0,0,90,0,0,0,0,90,0,0,86,86,86,86,91,93,91,86,87,92,89,90,93,91,86,87,92,89,90,91,86,87,92,89,90,91,86,87,92,89,90,86,91,86,87,92,89,90,91,91,86,87,87,92,92,89,89,90,90,93,91,86,87,92,89,90,91,86,86,86,91,86,86,91,86,86,91,91,92,86,91,86,93,91,86,87,92,89,90,93,91,86,91,86,91,93,92,91,91,91,86,86,91,86,87,92,89,90,87,92,89,90,93,91,86,87,92,89,90,89,93,91,86,87,92,89,90,93,91,86,87,92,89,90,92,93,91,86,87,92,89,90,0,0,0,0,94,114,97,115,94,114,97,115,94,94,97,94,97,94,114,115,94,114,97,115,94,97,97,114,115,94,94,97,97,94,94,114,97,115,115,94,94,94,94,97,94,94,97,94,114,97,115,94,114,97,115,94,94,114,97,115,94,114,97,115,0,0,0,102,102,0,0,0,0,61,61,66,103,66,61,61,61,61,61,107,108,61,103,104,102,66,107,108,61,103,104,102,66,61,104,107,107,108,108,61,103,104,66,61,103,104,66,103,104,61,66,103,66,61,61,103,104,102,66,61,61,61,61,103,104,102,102,66,107,108,61,103,104,102,66,61,61,61,61,61,61,61,61,61,61,61,107,108,61,103,104,102,66,107,108,61,66,66,103,61,61,66,66,61,107,108,61,103,104,66,61,103,104,66,102,61,61,61,107,108,61,103,104,102,66,61,61,107,108,61,103,104,102,66,61,103,104,61,61,103,66,66,66,61,107,108,61,103,104,102,66,61,107,108,61,103,104,102,66,61,61,61],"f":"``````````````````````````{{bb}b}{{}d}{{{h{f}}}j}{{{h{j}}}j}{{{h{l}}}j}{{{h{d}}}{{h{c}}}{}}{{{h{d}}}{{h{n}}}}{{{h{d}}}{{h{{Ab{A`}}}}}}{{{h{d}}}{{h{{Ad{A`}}}}}}``{{{h{c}}}{{h{e}}}{}{}}000000200{{{h{Afc}}}{{h{Afe}}}{}{}}00000000``{{{h{b}}}b}{{{h{{Ah{c}}}}}{{Ah{c}}}Aj}{{{h{Al}}}Al}:{{{h{l}}}l}{{{h{{An{c}}}}}{{An{c}}}Aj}{{{h{d}}}d}{{{h{{B`{c}}}}}{{B`{c}}}Aj}{{{h{{Bb{ce}}}}}{{Bb{ce}}}AjAj}{{{h{c}}{h{Afe}}}Bd{}{}}00000000{{{Ah{{h{c}}}}}{{Ah{c}}}Aj}{{{h{{Ah{c}}}}{h{{Ah{c}}}}}BfBh}{{{h{Al}}{h{Al}}}Bf}{{{h{j}}{h{j}}}Bf}{{{h{l}}{h{l}}}Bf}{{{h{{An{c}}}}{h{{An{c}}}}}BfBh}{{{h{d}}{h{d}}}Bf}{{{h{f}}}Bj}0{{{h{{Ah{c}}}}}{{Bl{Bj}}}f}{{{h{l}}}Bj}``{{}b}{{}j}{{}l}{{}{{Bb{ce}}}{}{}}{{{h{{B`{c}}}}}{{h{c}}}{{Cb{{C`{Bn}}}}}}{{{h{Cd}}}d}{c{{Cf{b}}}Ch}{c{{Cf{Al}}}Ch}{c{{Cf{j}}}Ch}{c{{Cf{l}}}Ch}{c{{Cf{d}}}Ch}{c{{Cf{{Bb{eg}}}}}Ch{BhCj}{BhCj}}{{{h{Cd}}}Cl}{{}c{}}{{{h{b}}{h{b}}}Cn}{{{h{{Ah{c}}}}{h{{Ah{c}}}}}CnD`}{{{h{Al}}{h{Al}}}Cn}{{{h{j}}{h{j}}}Cn}{{{h{l}}{h{l}}}Cn}{{{h{{An{c}}}}{h{{An{c}}}}}CnD`}{{{h{d}}{h{d}}}Cn}{{{h{{Bb{ce}}}}{h{{Bb{ce}}}}}CnD`D`}{{{h{b}}{h{AfDb}}}Dd}0{{{h{{Ah{c}}}}{h{AfDb}}}DdDf}{{{h{Al}}{h{AfDb}}}Dd}{{{h{j}}{h{AfDb}}}Dd}{{{h{l}}{h{AfDb}}}Dd}{{{h{{An{c}}}}{h{AfDb}}}DdDf}{{{h{d}}{h{AfDb}}}Dd}000{{{h{{Bb{ce}}}}{h{AfDb}}}DdDfDf}{cc{}}00{{{Ah{l}}}Al}{{{Dj{{h{Bj}}{h{Dh}}}}}j}{{{Dj{BjDh}}}j}3333{nd}4{{{Dn{c{Dl{e}}}}}{{Bb{ec}}}{}{}}{{{Dl{c}}}{{Bb{ce}}}{}{}}{E`{{Bb{ce}}}{}{}}7{{{h{Eb}}jEd}Ef}{{{h{Eb}}jEd}j}{{{h{Eb}}jEd}l}{cd{}}07{{{h{{Ab{A`}}}}}{{Cf{dEh}}}}0{{{h{Ej}}}{{Cf{dc}}}{}}{{{h{{En{}{{El{c}}}}}}}{{Cf{jc}}}Df}{{{h{{Ah{c}}}}{h{Afe}}}BdF`Fb}{{{h{Al}}{h{Afc}}}BdFb}{{{h{j}}{h{Afc}}}BdFb}{{{h{l}}{h{Afc}}}BdFb}{{{h{d}}{h{Afc}}}BdFb}```{{{h{d}}c}{{h{e}}}{{Fd{{Ab{A`}}}}}{}}```{ce{}{}}000000000{{{h{{En{}{{El{c}}}}}}jj}{{Cf{{Bl{Cn}}c}}}Df}{{{h{{Ah{c}}}}}Cn{}}{{{h{Al}}}Cn}{{{h{{An{c}}}}Bj}Cnf}{{{h{Ff}}}Cn}{{{h{{Bb{ce}}}}}CnBhf}2``{{{h{AfFf}}Ff}Bd}{{{h{Af{Bb{ce}}}}{Bb{ce}}}BdBhf}``{c{{B`{c}}}{{Cb{{C`{Bn}}}}}}{{ce}{{B`{c}}}{{Cb{{C`{Bn}}}}}{{Fh{Bj}}}}{{{h{Af{B`{c}}}}}{{Bl{e}}}{{Cb{{C`{Bn}}}}}{}}{{{h{Af{B`{c}}}}Ed}{{Bl{e}}}{{Cb{{C`{Bn}}}}}{}}`{{{h{{Ah{c}}}}{h{{Ah{c}}}}}{{Bl{Bf}}}Fj}{{{h{Al}}{h{Al}}}{{Bl{Bf}}}}{{{h{j}}{h{j}}}{{Bl{Bf}}}}{{{h{l}}{h{l}}}{{Bl{Bf}}}}{{{h{{An{c}}}}{h{{An{c}}}}}{{Bl{Bf}}}Fj}{{{h{d}}{h{d}}}{{Bl{Bf}}}}`{{{h{b}}c}CfFl}{{{h{Al}}c}CfFl}{{{h{j}}c}CfFl}{{{h{l}}c}CfFl}{{{h{d}}c}CfFl}{{{h{{Bb{ce}}}}g}Cf{BhFn}{BhFn}Fl}``{{{h{AfFf}}}{{Bl{Ff}}}}0{dc{}}{{{h{c}}}e{}{}}00000000{dn}{{{h{c}}}G`{}}0{{{h{b}}}Gb}`0{c{{Cf{e}}}{}{}}00000000000000000``{{{h{c}}}Gd{}}00000000{ClAl}`{ce{}{}}00000000`````{{{h{Af{Gf{ce}}}}EbBj}{{Dn{c}}}{Eff}Gh}{{{h{Af{Gf{ce}}}}{h{Eb}}Bj}{{Dn{c}}}{Eff}Gh}{{{h{Af{Gf{ce}}}}{Dn{c}}}BdfGh}{{{h{Af{Gf{ce}}}}{Gj{c}}}{{Dn{c}}}fGh}{{{h{{Gf{ce}}}}}{{h{{Gj{c}}}}}{}{}}{{{h{Af{Gf{ce}}}}i}{{Dn{c}}}fGh{{Gn{}{{Gl{c}}}}}{{Gn{}{{Gl{{Dj{{h{H`}}g}}}}}}}}{{{h{Af{Gf{ce}}}}g}{{Dn{c}}}fGh{{Gn{}{{Gl{{Dj{{h{H`}}Cl}}}}}}}}{{{h{Af{Gf{ce}}}}g}{{Dn{c}}}fGh{{Gn{}{{Gl{{Dj{H`Cl}}}}}}}}{{{h{c}}}{{h{e}}}{}{}}0{{{h{Afc}}}{{h{Afe}}}{}{}}0{{{h{{Dn{ce}}}}}{{Dn{ce}}}AjAj}{{{h{c}}{h{Afe}}}Bd{}{}}{{}{{Gf{ce}}}{}Hb}{{}{{Dn{ce}}}{}Hb}{c{{Cf{{Dn{eg}}}}}Ch{BhCj}Cj}{{{h{{Dn{ce}}}}{h{{Dn{ce}}}}}CnD`D`}{{{h{{Gf{ce}}}}{h{AfDb}}}DdDfDf}{{{h{{Dn{ce}}}}{h{AfDb}}}DdDfDf}{cc{}}0{{{Hd{c}}}{{Dn{ce}}}{}Hb}{{{Dl{c}}}{{Dn{e{Dl{c}}}}}{}{}}{{{h{{Gf{ce}}}}}{{h{{Gj{c}}}}}{}{}}```{{{h{{Gf{ce}}}}}{{Dn{c}}}fGh}{{{h{Af{Gf{ce}}}}Hfc}{{Dn{c}}}fGh}{{{h{Af{Gf{ce}}}}HfCl}{{Dn{c}}}fGh}{{{h{Af{Gf{ce}}}}H`}{{Dn{c}}}fGh}{{{h{Af{Gf{ce}}}}HhHj}{{Dn{c}}}fGh}{ce{}{}}0{{{h{{Dn{ce}}}}}CnfFf}{{{h{Af{Dn{ce}}}}{Dn{ce}}}BdfFf}{c{{Gf{ec}}}{}{}}{{{h{{Dn{ce}}}}g}Cf{BhFn}FnFl}{{{h{c}}}e{}{}}{c{{Cf{e}}}{}{}}000{{{h{c}}}Gd{}}077``{{{h{Af{Gh{}{{Hl{c}}}}}}c}Bd{}}{{{h{Af{Gh{}{{Hl{c}}}}}}{h{H`}}}c{}}{{{h{Af{Gh{}{{Hl{c}}}}}}Hh{h{Hj}}}c{}}{{{h{{Gh{}{{Hl{c}}}}}}}c{}}{{{h{{Gh{}{{Hl{c}}}}}}{h{H`}}}Cn{}}`````````{{{h{{Hn{c}}}}}{{I`{c{B`{{C`{Bn}}}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}{Dl{c}}}Bd{AjBhDf}}{{{h{Af{Hn{c}}}}e}Bd{AjBhDf}{}}{{{h{c}}}{{h{e}}}{}{}}000{{{h{Afc}}}{{h{Afe}}}{}{}}000{{{h{{Hn{c}}}}}{{Hn{c}}}Aj}{{{h{{Ib{c}}}}}{{Ib{c}}}Aj}{{{h{{Dl{c}}}}}{{Dl{c}}}Aj}{{{h{{Id{c}}}}}{{Id{c}}}Aj}{{{h{c}}{h{Afe}}}Bd{}{}}000{{}{{Hn{c}}}{}}{{}{{Dl{c}}}{}}{c{{Cf{{Dl{e}}}}}Ch{BhCj}}{{{h{{Ib{c}}}}{h{{Ib{c}}}}}CnD`}{{{h{{Dl{c}}}}{h{{Dl{c}}}}}CnD`}{{{h{{Id{c}}}}{h{{Id{c}}}}}CnD`}{{{h{{Hn{c}}}}{h{AfDb}}}DdDf}{{{h{{Ib{c}}}}{h{AfDb}}}DdDf}0{{{h{{Dl{c}}}}{h{AfDb}}}DdDf}{{{h{{Id{c}}}}{h{AfDb}}}DdDf}0{cc{}}000{{{h{{Hn{c}}}}{h{c}}}{{Bl{{h{{C`{Bn}}}}}}}{AjBhDf}}{{{h{{Hn{c}}}}{h{If}}}{{Bl{{h{{Dj{cBj}}}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}{h{H`}}}e{AjBhDf}{}}{{{h{Af{Hn{c}}}}Hh{h{Hj}}}e{AjBhDf}{}}{{{h{{Hn{c}}}}}e{AjBhDf}{}}{{{h{{Hn{c}}}}}{{h{{Ih{{Dj{cBj}}}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}c{C`{Bn}}}{{Cf{{Dl{c}}{Ib{c}}}}}{AjBhDf}}{ce{}{}}000{{{h{{Dl{c}}}}}CnBh}{{{h{{Hn{c}}}}{h{H`}}}Cn{AjBhDf}}{{{h{{Hn{c}}}}cBj}Cn{AjBhDf}}{{{h{{Hn{c}}}}{h{c}}}{{`{{Il{}{{Gl{{Ij{Hh}}}}}}}}}{AjBhDf}}{{{h{{Hn{c}}}}e}{{`{{Il{}{{Gl{{In{cHh}}}}}}}}}{AjBhDf}{{Fh{c}}}}{{{h{{Hn{c}}}}}{{`{{Il{}{{Gl{{Dj{{h{c}}{h{{C`{Bn}}}}}}}}}}J`}}}{AjBhDf}}``{{{h{{Hn{c}}}}{h{c}}}{{Bl{Bj}}}{AjBhDf}}{{{h{{Hn{c}}}}}{{I`{cBj}}}{AjBhDf}}10{{{h{{Hn{c}}}}}Bj{AjBhDf}}{{{h{Af{Hn{c}}}}{h{c}}Bj}Bd{AjBhDf}}{{{h{Af{Hn{c}}}}cBj}Cn{AjBhDf}}{{{h{Af{Dl{c}}}}{Dl{c}}}BdBh}{{{h{{Hn{c}}}}{h{H`}}e}Jb{AjBhDf}{{Fh{c}}}}{Bj{{Hn{c}}}{}}{{{h{{Hn{c}}}}{h{c}}}{{Bl{{Dj{BjCn}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}{h{c}}}{{Bl{{Dj{{Ij{Jd}}{Dl{c}}}}}}}{AjBhDf}}{{{h{{Hn{c}}}}}{{h{{Jf{{In{cHh}}}}}}}{AjBhDf}}1{{{h{Af{Hn{c}}}}{h{c}}Bj}{{Bl{{Dj{{Jh{{Ij{Jd}}}}{Dl{c}}}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}{h{{I`{cBj}}}}}{{Dl{c}}}{AjBhDf}}{{{h{{Hn{c}}}}{h{c}}}{{`{{Il{}{{Gl{{Ij{{h{If}}}}}}}}}}}{AjBhDf}}{{{h{{Hn{c}}}}e}{{`{{Jj{}{{Gl{{In{c{h{If}}}}}}}}}}}{AjBhDf}{{Fh{c}}}}{{{h{{Hn{c}}}}{h{H`}}e}{{Dj{GbGb}}}{AjBhDf}{{Fh{c}}}}{{{h{{Dl{c}}}}e}Cf{BhFn}Fl}{{{h{{Hn{c}}}}cBj}{{Bl{{h{If}}}}}{AjBhDf}}{{{h{c}}}e{}{}}000{{{h{c}}}G`{}}0{c{{Cf{e}}}{}{}}0000000{{{h{{Hn{c}}}}Hh}{{Bl{{In{c{h{Hj}}}}}}}{AjBhDf}}{{{h{{Hn{c}}}}}{{`{{Il{}{{Gl{{In{c{Dj{Hh{h{Hj}}}}}}}}}}J`}}}{AjBhDf}}{{{h{{Hn{c}}}}Hf}{{`{{Il{}{{Gl{{In{c{Dj{Hh{h{Hj}}}}}}}}}}}}}{AjBhDf}}{{{h{c}}}Gd{}}000{{{h{{Hn{c}}}}{h{c}}}{{Bl{{B`{{C`{Bn}}}}}}}{AjBhDf}}{{{h{Af{Hn{c}}}}cBj}Cn{AjBhDf}}{{{h{{Hn{c}}}}{h{c}}}{{`{{Il{}{{Gl{{Ij{{h{If}}}}}}}}Aj}}}{AjBhDf}}{{{h{{Hn{c}}}}}{{`{{Il{}{{Gl{{In{c{h{If}}}}}}}}Aj}}}{AjBhDf}}{ce{}{}}000`````{{{h{{Ih{c}}}}}{{h{{I`{cJd}}}}}{AjBhDf}}{{{h{Af{Ih{c}}}}e}Bd{AjBhDf}{}}{{{h{c}}}{{h{e}}}{}{}}{{{h{Afc}}}{{h{Afe}}}{}{}}{{{h{{Ih{c}}}}}{{Ih{c}}}Aj}{{{h{c}}{h{Afe}}}Bd{}{}}{{}{{Ih{c}}}{}}{{{h{{Ih{c}}}}{h{AfDb}}}DdDf}{cc{}}{{{h{{Ih{c}}}}{h{If}}}{{Bl{{h{c}}}}}{AjBhDf}}{{{h{Af{Ih{c}}}}{h{H`}}}e{AjBhDf}{}}{{{h{Af{Ih{c}}}}Hh{h{Hj}}}e{AjBhDf}{}}{{{h{{Ih{c}}}}}e{AjBhDf}{}}{{{h{Af{Ih{c}}}}cJd}Cn{AjBhDf}}>{{{h{{Ih{c}}}}{h{H`}}}Cn{AjBhDf}}0{{{h{{Ih{c}}}}{h{c}}}Cn{AjBhDf}}{{{h{Af{Ih{c}}}}{h{c}}}Cn{AjBhDf}}{{{h{{Ih{c}}}}{h{H`}}e}Jb{AjBhDf}{{Fh{c}}}}{{{h{{Ih{c}}}}}{{h{{Jf{{Dj{cHh}}}}}}}{AjBhDf}}{{{h{{Ih{c}}}}e}{{`{{Il{}{{Gl{{Dj{{h{c}}Hh}}}}}}}}}{AjBhDf}{{Fh{c}}}}{{{h{Af{Ih{c}}}}{h{H`}}}{{Jf{c}}}{AjBhDf}}{{{h{Af{Ih{c}}}}Hh{h{Hj}}}{{Bl{{h{c}}}}}{AjBhDf}}{{{h{{Ih{c}}}}{h{H`}}e}{{Dj{GbGb}}}{AjBhDf}{{Fh{c}}}}{{{h{{Ih{c}}}}{h{c}}}{{Bl{{h{If}}}}}{AjBhDf}}{{{h{c}}}e{}{}}{c{{Cf{e}}}{}{}}0{{{h{{Ih{c}}}}Hh}{{Bl{{Dj{{h{c}}{h{Hj}}}}}}}{AjBhDf}}{{{h{{Ih{c}}}}}{{`{{Il{}{{Gl{{Dj{{h{c}}Hh{h{Hj}}}}}}}}J`}}}{AjBhDf}}{{{h{{Ih{c}}}}Hf}{{`{{Il{}{{Gl{{Dj{{h{c}}Hh{h{Hj}}}}}}}}}}}{AjBhDf}}{{{h{c}}}Gd{}}={{{h{{Ih{c}}}}e}{{`{{Il{}{{Gl{{Dj{{h{c}}{h{If}}}}}}}}Aj}}}{AjBhDf}{{Fh{c}}}}{ce{}{}}``````````{{{h{AfJl}}{h{E`}}}{{Cf{BdJn}}}}{{{h{AfJl}}{h{K`}}Bj}{{Cf{E`Kb}}}}{{{h{AfJl}}{h{K`}}Bjj}{{Cf{E`Kd}}}}{{{h{AfJl}}Kf}{{Cf{E`Kb}}}}{{{h{Kf}}}j}{{{h{c}}}{{h{e}}}{}{}}000000{{{h{Afc}}}{{h{Afe}}}{}{}}000000{{{h{Kf}}}Kf}{{{h{Jl}}}Jl}{{{h{Jn}}}Jn}{{{h{Kh}}}Kh}{{{h{Kb}}}Kb}{{{h{Kd}}}Kd}{{{h{c}}{h{Afe}}}Bd{}{}}00000{{{h{AfJl}}j}{{Cf{E`Jn}}}}{{{h{Kf}}{h{Kf}}}Cn}{{{h{Jl}}{h{Jl}}}Cn}{{{h{Jn}}{h{Jn}}}Cn}{{{h{Kh}}{h{Kh}}}Cn}{{{h{Kb}}{h{Kb}}}Cn}{{{h{Kd}}{h{Kd}}}Cn}{{Kfc}{{Cf{KfKf}}}{{Gn{}{{Gl{j}}}}}}{{{h{Kf}}{h{AfDb}}}Dd}{{{h{Jl}}{h{AfDb}}}Dd}{{{h{Jn}}{h{AfDb}}}Dd}0{{{h{Kh}}{h{AfDb}}}Dd}0{{{h{Kb}}{h{AfDb}}}Dd}0{{{h{Kd}}{h{AfDb}}}Dd}0{cc{}}000000{c{{Cf{Kf{Bl{Kf}}}}}{{Gn{}{{Gl{j}}}}}}{{{I`{BjDh}}}{{Cf{JlJn}}}}{E`{{Cf{JlJn}}}}{Dh{{Dj{JlE`}}}}{{{h{K`}}Bj}Kf}{Kf{{Cf{JlJn}}}}{{{h{Jl}}}Dh}{{{h{Kf}}Bj}{{Bl{Kf}}}}{{{h{Jl}}Bj}{{Bl{Kf}}}}{{{h{Jl}}}{{Cf{jc}}}{}}{{{h{Kf}}}Dh}{{{h{Kf}}}Bj}`{{{h{Jl}}}E`}{{Kfj}Kf}{{{h{AfJl}}j}{{Cf{E`Kh}}}}{ce{}{}}0000000{Kfc{}}{{{h{Jl}}jj}{{Cf{{Bl{Cn}}c}}}{}}{{{h{Kf}}}Kj}{{{h{Jl}}}Kj}{jKf}{{{h{AfKj}}}{{Bl{c}}}{}}`{{{h{Kf}}}{{Bl{Kf}}}}{{Kfj}{{Cf{KfKf}}}}{{{h{Kf}}c}{{`{{Jj{}{{Gl{Kf}}}}}}}{{Fh{Bj}}}}{{{h{Jl}}c}{{`{{Jj{}{{Gl{Kf}}}}}}}{{Fh{Bj}}}}{{{h{Jl}}}Kf}{{{h{c}}}e{}{}}00000{{{h{c}}}G`{}}000{c{{Cf{e}}}{}{}}000000`0000000{{{h{c}}}Gd{}}000000`???????````{{{h{c}}}{{h{e}}}{}{}}000{{{h{Afc}}}{{h{Afe}}}{}{}}000{{Kle}Kl{{J`{}{{Gl{Hh}}}}Kn}{{Gn{}{{L`{c}}{Gl{Hh}}}}}}{{Kle}Kl{{J`{}{{Gl{Jd}}}}Kn}{{Gn{}{{L`{c}}{Gl{Jd}}}}}}{{{Lb{c}}cg}{{Lb{c}}}{BhAj}{{Jj{}{{Gl{{Ij{Jd}}}}}}Kn}{{Gn{}{{L`{e}}}}}}``{{Kle}Kl{{J`{}{{Gl{Hf}}}}Kn}{{Gn{}{{L`{c}}{Gl{Hf}}}}}}``{cc{}}000{KfKl}{Kf{{Lb{c}}}{BhAj}}{{Kf{h{{Hn{c}}}}}{{Lb{c}}}{DfBhAj}}``{{Klc}Kl{{Ld{{h{Hh}}}}KnLf}}{{Klc}Kl{{Ld{{h{If}}}}KnLf}}{{{Lb{c}}e}{{Lb{c}}}{KnBhAj}{{Ld{cBj{h{If}}}}KnLfAj}}{{{Lb{c}}ce}{{Lb{c}}}{KnBhAj}{{Ld{Bj{h{If}}}}KnLf}}{{Klc}Kl{{Ld{{h{Hf}}}}KnLf}}{ce{}{}}000``{{Kl{h{{Hn{c}}}}e}Kl{AjBhDfKnLf}{{Fh{c}}}}{{Kle}Kl{{J`{}{{Gl{Hh}}}}Kn}{{Gn{}{{L`{c}}}}}}{{Kle}Kl{{J`{}{{Gl{Jd}}}}Kn}{{Gn{}{{L`{c}}}}}}>{{Kle}Kl{{J`{}{{Gl{Hf}}}}Kn}{{Gn{}{{L`{c}}}}}}``{c{{Cf{e}}}{}{}}0000000`{{{h{c}}}Gd{}}0006666`````````{{{h{{Gj{c}}}}}{{h{{Jf{{Dj{cHf}}}}}}}{}}{{{h{{Gj{c}}}}}{{`{{Jj{}{{Gl{{Dj{Hh{h{Hj}}}}}}}}}}}{}}{{{h{{Hd{c}}}}}{{`{{Jj{}{{Gl{Bj}}}}}}}f}``{{{h{Af{Gj{c}}}}{Hd{c}}}Bd{AjBh}}{{{h{Af{Gj{c}}}}{Gj{c}}}{{Hd{c}}}{AjBh}}{{{h{{Gj{c}}}}}{{h{{Gj{c}}}}}{}}{{{h{{Gj{c}}}}{h{e}}jik}bf{{En{}{{El{Lh}}}}}Aj{{Gn{}{{Gl{{Dj{gHh}}}}}}}{{Ld{{h{g}}{h{If}}}{{Lj{Cn}}}}}}{{{h{Af{Gj{c}}}}e}{{Hd{c}}}{AjBh}{{Gn{}{{Gl{{Dj{H`Cl}}}}}}}}{{{h{c}}}{{h{e}}}{}{}}000000{{{h{Afc}}}{{h{Afe}}}{}{}}000000{{{h{{Gj{c}}}}{h{H`}}}{{Cf{GbLl}}}{}}`{c{{Bl{Jb}}}{}}{c{{Bl{Gb}}}{}}10{{{h{{Gj{c}}}}}{{Gj{c}}}Aj}{{{h{{Ln{ce}}}}}{{Ln{ce}}}AjAj}{{{h{{M`{ce}}}}}{{M`{ce}}}AjAj}{{{h{{Hd{c}}}}}{{Hd{c}}}Aj}{{{h{c}}{h{Afe}}}Bd{}{}}000{{{h{{Ln{ce}}}}{h{{Ln{ce}}}}}BfBhBh}{{{h{{M`{ce}}}}{h{{M`{ce}}}}}BfBhBh}{{}{{Gj{c}}}{}}{{}{{Hd{c}}}{}}{{{h{{Ln{ce}}}}}{{h{g}}}{}{}{}}{c{{Cf{{Hd{e}}}}}Ch{BhCj}}{{{h{{Gj{c}}}}{h{H`}}}{{`{{Jj{}{{Gl{{Dj{EdHf}}}}}}}}}{}}{{{h{{Gj{c}}}}{h{{Gj{c}}}}}CnD`}{{{h{{Ln{ce}}}}{h{{Ln{ce}}}}}CnD`D`}{{{h{{M`{ce}}}}{h{{M`{ce}}}}}CnD`D`}{{{h{Ll}}{h{Ll}}}Cn}{{{h{{Hd{c}}}}{h{{Hd{c}}}}}CnD`}{{{h{{Gj{c}}}}{h{e}}ji}{{`{{Jj{}{{Gl{{Dj{g{An{c}}}}}}}}}}}f{{En{}{{El{Lh}}}}}Aj{{Gn{}{{Gl{{Dj{gHh}}}}}}}}0{{{h{{Gj{c}}}}}{{`{{Jj{}{{Gl{{Dj{Hh{h{Hj}}}}}}}}}}}{}}{{{h{{Gj{c}}}}{h{AfDb}}}DdDf}{{{h{{Ln{ce}}}}{h{AfDb}}}DdDfDf}{{{h{{M`{ce}}}}{h{AfDb}}}DdDfDf}{{{h{Ll}}{h{AfDb}}}Dd}0{{{h{{Hd{c}}}}{h{AfDb}}}DdDf}{cc{}}000000{{{h{{Gj{c}}}}}{{`{{Jj{}{{Gl{{Ln{{Mb{H`}}c}}}}}}}}}{}}{{{h{{Gj{c}}}}{h{e}}jHf}{{Bl{{Ah{{h{c}}}}}}}f{{En{}{{El{Lh}}}}}}{{{h{{Gj{c}}}}{h{e}}jHh}{{Bl{{Dj{{Ah{{h{c}}}}Hf}}}}}f{{En{}{{El{Lh}}}}}}{{{h{{Gj{c}}}}Hf}{{Bl{{Mb{H`}}}}}{}}{{{h{{Gj{c}}}}Hf}{{Bl{{Ln{{Mb{H`}}c}}}}}{}}{{{h{{Gj{c}}}}Hh}{{Bl{{h{Hj}}}}}{}}{{{h{{Gj{c}}}}}{{Hd{c}}}{AjBh}}{{{h{Af{Gj{c}}}}Hfc}{{Hd{c}}}{AjBh}}{{{h{Af{Gj{c}}}}HfCl}{{Hd{c}}}{AjBh}}{{{h{Af{Gj{c}}}}e}{{Hd{c}}}{AjBh}{{Md{{Mb{H`}}}}}}{{{h{Af{Gj{c}}}}HhHj}{{Hd{c}}}{AjBh}}{ce{}{}}00000000{{{h{{Gj{c}}}}}Cn{}}{{{h{{Hd{c}}}}}CnBh}``{{{h{{Gj{c}}}}{h{e}}j}{{`{{Jj{}{{Gl{{M`{{Mb{H`}}c}}}}}}}}}fEn}{{{Gj{c}}g}{{Gj{e}}}{AjBh}{AjBh}{{Ld{c}{{Lj{e}}}}}}{{{Hd{c}}g}{{Hd{e}}}BhBh{{Ld{c}{{Lj{e}}}}}}{{{h{Af{Hd{c}}}}{Hd{c}}}BdBh}{c{{Gj{e}}}{{Gn{}{{Gl{H`}}}}}{AjBh}}{{{h{Af{Mf{cg}}}}}{{Bl{i}}}{}{}{{Ld{Ed{Mb{H`}}}{{Lj{{Bl{e}}}}}}}{}}{{{h{Af{Mh{cg}}}}}{{Bl{i}}}{}{}{{Ld{EdHf}{{Lj{{Bl{e}}}}}}}{}}{{{h{{Gj{c}}}}Hh}{{h{{Mj{Hf}}}}}{}}{{{h{{Ln{ce}}}}{h{{Ln{ce}}}}}{{Bl{Bf}}}FjFj}{{{h{{M`{ce}}}}{h{{M`{ce}}}}}{{Bl{Bf}}}FjFj}{{{h{{Hd{c}}}}e}Cf{BhFn}Fl}{{{h{c}}}e{}{}}000{{{h{c}}}G`{}}{{{h{{Gj{c}}}}{h{e}}jik}{{Cf{b}}}fEnAj{{Gn{}{{Gl{{Dj{gHh}}}}}}}{{Ld{{h{g}}{h{If}}}{{Lj{Cn}}}}}}{{{h{{Gj{c}}}}{h{e}}ji}{{`{{Jj{}{{Gl{{Cf{{Dj{g{An{c}}}}}}}}}}}}}fEnAj{{Gn{}{{Gl{{Dj{gHh}}}}}}}}0{c{{Cf{e}}}{}{}}000000{{{h{{Gj{c}}}}{h{e}}jHf}{{Cf{{Bl{{Ah{{h{c}}}}}}}}}fEn}{{{h{{Gj{c}}}}{h{e}}jHh}{{Cf{{Bl{{Dj{{Ah{{h{c}}}}Hf}}}}}}}fEn}2222222{{{h{{Gj{c}}}}{h{e}}j}{{`{{Jj{}{{Gl{{Cf{{M`{{Mb{H`}}c}}}}}}}}}}}fEn}``{{{h{{Gj{c}}}}Hf}{{Bl{{I`{Bj{h{Hj}}}}}}}{}}{{{h{{Gj{c}}}}Hf}{{`{{Il{}{{Gl{{Dj{Bj{h{{Mj{Hf}}}}}}}}}}}}}{}}`{{{h{{Hd{c}}}}}{{`{{Jj{}{{Gl{{Dj{Hh{h{Hj}}}}}}}}}}}{}}``{{{h{{Gj{c}}}}}{{`{{Jj{}{{Gl{{Ln{{Mb{H`}}c}}}}}}}}}{}}{{{h{c}}}Gd{}}000000{{{h{Af{Gj{c}}}}Cl}{{Hd{c}}}{AjBh}}{ce{}{}}000000{{{h{{Gj{c}}}}ei}{{Mf{ci}}}{AjBh}{{Md{{Mb{H`}}}}}{}{{Ld{Ed{Mb{H`}}}{{Lj{{Bl{g}}}}}}}}{{{h{{Gj{c}}}}{h{H`}}g}{{Mh{cg}}}{}{}{{Ld{EdHf}{{Lj{{Bl{e}}}}}}}}{{{h{{Gj{c}}}}Hfg}{{Mh{cg}}}{AjBh}{}{{Ld{EdHf}{{Lj{{Bl{e}}}}}}}}","D":"BOd","p":[[5,"Balance",0,844],[5,"DescriptorId",0,845],[10,"Anchor",0,846],[1,"reference"],[5,"BlockId",0,847],[5,"ConfirmationBlockTime",0,847],[5,"Hash",848],[1,"u8"],[1,"slice"],[1,"array"],[0,"mut"],[6,"ChainPosition",0,847],[10,"Clone",849],[6,"ConfirmationTime",0,847],[5,"FullTxOut",0,847],[5,"SpkIterator",0,850],[5,"CombinedChangeSet",0,851],[1,"unit"],[6,"Ordering",852],[10,"Ord",852],[1,"u32"],[6,"Option",853],[6,"DescriptorPublicKey",854],[6,"Descriptor",855],[10,"Borrow",856],[10,"DescriptorExt",0,845],[6,"Result",857],[10,"Deserializer",858],[10,"Deserialize",858],[1,"u64"],[1,"bool"],[10,"PartialEq",852],[5,"Formatter",859],[8,"Result",859],[10,"Debug",859],[5,"BlockHash",860],[1,"tuple"],[5,"ChangeSet",324],[5,"ChangeSet",265],[8,"ChangeSet",476],[5,"Block",860],[1,"usize"],[10,"AnchorFromBlockPosition",0,846],[5,"FromSliceError",861],[1,"str"],[17,"Error"],[10,"ChainOracle",0,862],[10,"Hash",863],[10,"Hasher",863],[10,"SliceIndex",864],[10,"Merge",0,846],[10,"RangeBounds",865],[10,"PartialOrd",852],[10,"Serializer",866],[10,"Serialize",866],[5,"String",867],[5,"Amount",868],[5,"TypeId",869],[5,"IndexedTxGraph",265],[10,"Indexer",315],[5,"TxGraph",682],[17,"Item"],[10,"IntoIterator",870],[5,"Transaction",871],[10,"Default",872],[5,"ChangeSet",682],[5,"Txid",871],[5,"OutPoint",871],[5,"TxOut",871],[17,"ChangeSet"],[5,"KeychainTxOutIndex",324],[5,"BTreeMap",873],[6,"InsertDescriptorError",324],[5,"NoSuchKeychain",324],[5,"Script",874],[5,"SpkTxOutIndex",439],[8,"Indexed",0],[10,"DoubleEndedIterator",875],[8,"KeychainIndexed",0],[10,"ExactSizeIterator",876],[5,"SignedAmount",868],[5,"ScriptBuf",877],[5,"BTreeSet",878],[5,"Vec",879],[10,"Iterator",880],[5,"LocalChain",476],[5,"MissingGenesisError",476],[5,"Header",860],[5,"CannotConnectError",476],[6,"ApplyHeaderError",476],[5,"CheckPoint",476],[5,"AlterCheckPointError",476],[5,"CheckPointIter",476],[5,"SyncRequest",618],[10,"Send",881],[17,"IntoIter"],[5,"FullScanRequest",618],[10,"FnMut",882],[10,"Sync",881],[6,"Infallible",883],[17,"Output"],[6,"CalculateFeeError",682],[5,"TxNode",682],[5,"CanonicalTx",682],[5,"Arc",884],[10,"Into",883],[5,"TxAncestors",682],[5,"TxDescendants",682],[5,"HashSet",885],[15,"Confirmed",262],[15,"Unconfirmed",262],[15,"DescriptorAlreadyAssigned",435],[15,"KeychainAlreadyAssigned",435],[5,"SyncResult",618],[5,"FullScanResult",618]],"r":[[0,846],[1,846],[2,850],[3,844],[4,847],[6,862],[7,847],[8,851],[9,847],[10,847],[13,845],[14,845],[16,847],[18,265],[19,315],[21,846],[22,850],[23,682]],"b":[[33,"impl-AsRef%3C%5Bu8%5D%3E-for-DescriptorId"],[34,"impl-AsRef%3C%5Bu8;+%3C%24hash+as+%24crate::Hash%3E::LEN%5D%3E-for-DescriptorId"],[111,"impl-Debug-for-Balance"],[112,"impl-Display-for-Balance"],[118,"impl-Debug-for-DescriptorId"],[119,"impl-Display-for-DescriptorId"],[120,"impl-UpperHex-for-DescriptorId"],[121,"impl-LowerHex-for-DescriptorId"],[127,"impl-From%3C(%26u32,+%26BlockHash)%3E-for-BlockId"],[128,"impl-From%3C(u32,+BlockHash)%3E-for-BlockId"],[135,"impl-From%3CChangeSet%3CA,+ChangeSet%3CK%3E%3E%3E-for-CombinedChangeSet%3CK,+A%3E"],[136,"impl-From%3CChangeSet%3CK%3E%3E-for-CombinedChangeSet%3CK,+A%3E"],[137,"impl-From%3CBTreeMap%3Cu32,+Option%3CBlockHash%3E%3E%3E-for-CombinedChangeSet%3CK,+A%3E"],[289,"impl-From%3CChangeSet%3CA%3E%3E-for-ChangeSet%3CA,+IA%3E"],[290,"impl-From%3CChangeSet%3CK%3E%3E-for-ChangeSet%3CA,+ChangeSet%3CK%3E%3E"],[332,"impl-KeychainTxOutIndex%3CK%3E"],[333,"impl-Indexer-for-KeychainTxOutIndex%3CK%3E"],[357,"impl-Debug-for-InsertDescriptorError%3CK%3E"],[358,"impl-Display-for-InsertDescriptorError%3CK%3E"],[360,"impl-Debug-for-NoSuchKeychain%3CK%3E"],[361,"impl-Display-for-NoSuchKeychain%3CK%3E"],[527,"impl-Display-for-MissingGenesisError"],[528,"impl-Debug-for-MissingGenesisError"],[529,"impl-Display-for-AlterCheckPointError"],[530,"impl-Debug-for-AlterCheckPointError"],[531,"impl-Debug-for-CannotConnectError"],[532,"impl-Display-for-CannotConnectError"],[533,"impl-Debug-for-ApplyHeaderError"],[534,"impl-Display-for-ApplyHeaderError"],[747,"impl-Display-for-CalculateFeeError"],[748,"impl-Debug-for-CalculateFeeError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANIBSQATAAEAGAAAABsAAQAeAAIAIgACACYAEgA7ABEATgAFAFcAAABaAAMAYAAFAGcAFAB/AAIAhgAAAIgAAgCNAAMAkgACAJYABACeAAAAqwAAALEAAAC2AAEAuwABAL4ADADPAAkA2gABAN8AEQDzAAgA/gAIABABAAAUAQsAIgEBAC8BAQAyAQkATgEcAHEBAgB7AQAAlQEAAJcBDQCoAQMAsAEDALoBBgDDAQIAyQEAANMBAgDZAQAA3AEAAOwBGQAHAgUADgIJACgCAAA2AgIAPAIAAEMCEABVAg0AZAIGAG8CBwCaAgcAowIHALsCAAC+Ag0AzgIRAOECBADpAgUACAMBAAsDAAARAwAAEwMBABYDBwAhAwYAKgMGADsDBgBDAwYA"}],\ -["bdk_coin_select",{"t":"FFGGFFPIPFGPPPFGFPPSPPPPPFNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNONONNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNOOOONNNNONOOOOONNNNONNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOOON","n":["Bnb","BnbIter","BnbLimit","BranchStrategy","CoinSelector","CoinSelectorOpt","Continue","DecideStrategy","Duration","ExcessStrategy","ExcessStrategyKind","MinAbsoluteFee","MinDrainValue","Rounds","Selection","SelectionConstraint","SelectionError","SkipBoth","SkipInclusion","TXIN_BASE_WEIGHT","TargetFee","TargetValue","ToDrain","ToFee","ToRecipient","WeightedValue","advertise_new_score","all_selected","apply_selection","backtrack","base_weight","best_score","best_strategy","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","candidate","candidates","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_select_bnb","current_excess","current_weight","deselect","drain_value","drain_waste","drain_weight","effective_target","effective_value","eq","eq","excess","excess_strategies","fee","feerate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fund_outputs","hash","input_count","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_segwit","is_selected","long_term_feerate","long_term_feerate","max_extra_target","min_absolute_fee","min_drain_value","new","new","new","next","opts","partial_cmp","pool","pool_pos","recipient_value","rem_abs","rem_eff","select","select_all","select_until_finished","selected","selected","selected_absolute_value","selected_count","selected_effective_value","selected_indexes","selected_waste","selected_weight","selection","spend_drain_weight","target_feerate","target_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unselected","unselected_indexes","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","waste","weight","weight","will_continue"],"q":[[0,"bdk_coin_select"],[235,"bdk_coin_select::bnb"],[236,"core::cmp"],[237,"bdk_coin_select::coin_selector"],[238,"core::iter::traits::iterator"],[239,"core::option"],[240,"core::convert"],[241,"core::result"],[242,"core::fmt"],[243,"core::time"],[244,"bitcoin::blockdata::transaction"],[245,"core::hash"],[246,"alloc::vec"],[247,"core::marker"],[248,"alloc::string"],[249,"core::any"]],"i":[0,0,0,0,0,0,41,0,22,0,0,18,18,22,0,0,0,41,41,0,18,18,11,11,11,0,2,6,7,2,16,2,7,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,6,6,15,16,6,17,18,7,11,12,15,16,6,17,18,7,11,12,11,0,6,6,6,12,16,16,6,15,18,11,7,7,12,12,6,15,16,6,17,17,18,18,7,11,11,12,2,41,2,34,22,22,22,15,16,6,17,18,7,11,12,16,11,15,41,2,34,22,15,16,6,17,18,7,11,12,2,34,6,15,6,16,16,16,16,16,2,15,6,34,6,11,2,2,12,2,2,6,6,6,6,7,6,6,6,6,6,6,2,16,16,16,15,16,6,17,18,7,11,12,17,18,11,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,6,6,15,41,2,34,22,15,16,6,17,18,7,11,12,12,15,12,41],"f":"``````````````````````````{{{f{b{d{c}}}}c}hj}{{{f{l}}}h}{{{f{n}}{f{{A`{c}}}}}{{`{{Ad{}{{Ab{{f{c}}}}}}}}}{}}{{{f{b{d{c}}}}}hj}``{{{f{n}}}{{Aj{{f{Af}}{f{Ah}}}}}}{{{f{c}}}{{f{e}}}{}{}}00000000000{{{f{bc}}}{{f{be}}}{}{}}00000000000{{{f{l}}Al}{{f{An}}}}`{{{f{An}}}An}{{{f{B`}}}B`}{{{f{l}}}l}{{{f{Bb}}}Bb}{{{f{Bd}}}Bd}{{{f{n}}}n}{{{f{Af}}}Af}{{{f{Ah}}}Ah}{{{f{c}}{f{be}}}Bf{}{}}0000000{{{f{Af}}{f{Af}}}Bh}{{cl}{{Bj{l}}}{{Bn{Bl}}}}{{{f{l}}}C`}{{{f{l}}}Cb}{{{f{bl}}Al}h}`{{{f{B`}}}C`}`3{{{f{An}}Cd}C`}{{{f{Bd}}{f{Bd}}}h}{{{f{Af}}{f{Af}}}h}```{{{f{Ah}}}Cd}{{{f{l}}}{{Cf{nBb}}}}{{{f{An}}{f{bCh}}}Cj}{{{f{B`}}{f{bCh}}}Cj}{{{f{l}}{f{bCh}}}Cj}{{{f{Bb}}{f{bCh}}}Cj}0{{{f{Bd}}{f{bCh}}}Cj}0{{{f{n}}{f{bCh}}}Cj}{{{f{Af}}{f{bCh}}}Cj}0{{{f{Ah}}{f{bCh}}}Cj}{{{f{b{d{c}}}}h}Bfj}{cc{}}000{ClBl}{AlBl}22222222{{{f{{A`{Cn}}}}{f{Cn}}Cb}B`}{{{f{Af}}{f{bc}}}BfD`}`{ce{}{}}00000000000{{{d{c}}{f{{Db{c}}}}}{{Dd{c}}}j}1{{{f{l}}}h}`{{{f{l}}Al}h}{{{f{B`}}}Cd}````{{l{Df{{Aj{Al{f{An}}}}}}c}{{d{c}}}j}{{DhCbh}An}{{{f{{Df{An}}}}{f{B`}}}l}{{{f{b{Dd{c}}}}}{{Bj{e}}}{jDjDl}{}}`{{{f{Af}}{f{Af}}}{{Bj{Bh}}}}`````{{{f{bl}}Al}h}{{{f{bl}}}Bf}{{{f{bl}}}{{Cf{nBb}}}}{{{f{l}}}{{`{{Ad{}{{Ab{{Aj{Al{f{An}}}}}}}}}}}}`{{{f{l}}}Dh}{{{f{l}}}Al}{{{f{l}}}C`}{{{f{l}}}{{`{{Ad{}{{Ab{Al}}}}}}}}1{{{f{l}}}Cb}````{{{f{c}}}e{}{}}0000000{{{f{c}}}Dn{}}00{c{{Cf{e}}}{}{}}00000000000000000000000{{{f{c}}}E`{}}0000000000095`{ce{}{}}00000000000```{{{f{Eb}}}h}","D":"Hh","p":[[0,"mut"],[5,"Bnb",0,235],[1,"reference"],[1,"bool"],[10,"Ord",236],[5,"CoinSelector",0,237],[5,"Selection",0,237],[1,"slice"],[17,"Item"],[10,"Iterator",238],[6,"ExcessStrategyKind",0,237],[5,"ExcessStrategy",0,237],[1,"tuple"],[1,"usize"],[5,"WeightedValue",0,237],[5,"CoinSelectorOpt",0,237],[5,"SelectionError",0,237],[6,"SelectionConstraint",0,237],[1,"unit"],[6,"Ordering",236],[6,"Option",239],[6,"BnbLimit",0,235],[10,"Into",240],[1,"i64"],[1,"u32"],[1,"f32"],[6,"Result",241],[5,"Formatter",242],[8,"Result",242],[5,"Duration",243],[5,"TxOut",244],[10,"Hasher",245],[8,"DecideStrategy",0,235],[5,"BnbIter",0,235],[5,"Vec",246],[1,"u64"],[10,"Copy",247],[10,"Display",242],[5,"String",248],[5,"TypeId",249],[6,"BranchStrategy",0,235]],"r":[[0,235],[1,235],[2,235],[3,235],[4,237],[5,237],[7,235],[9,237],[10,237],[14,237],[15,237],[16,237],[25,237],[76,235]],"b":[[95,"impl-Display-for-SelectionError"],[96,"impl-Debug-for-SelectionError"],[97,"impl-Display-for-SelectionConstraint"],[98,"impl-Debug-for-SelectionConstraint"],[100,"impl-Debug-for-ExcessStrategyKind"],[101,"impl-Display-for-ExcessStrategyKind"],[108,"impl-From%3CDuration%3E-for-BnbLimit"],[109,"impl-From%3Cusize%3E-for-BnbLimit"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKcAFwAAAAAAAgAAAAYAAAAJAAIADgADABcAAgAcAAEAIAAAACIAKgBQAAIAVgAEAFwACwBtAAEAdwABAIcAAQCKAAEAkgANAKEAAACjAAAApgAAAKoAMADcAAwA6gABAA=="}],\ +["bdk_chain",{"t":"KKSFFSKGRFGPPRRRRKFRFFIEEIRRRRKKRRKFFKEPPNNMNNNNNNEONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOMMNNNNNNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMNNNNNOOONCCNNNNNNNNNNNNMNNNMNOEMMNNCMENNNNONNNNNNNMMNNDCDNNNNNOCEMNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNCONNNNNNNNNNNONNNNNNNNNNOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNONNNNRKMMMMMCCFSPGPFTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFGTPFFFFPFFTNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNONNNNNNNNSHFFFFNNNNNNNNNNNOONOONNNNNNNOONNNNNNNNNOONNNNNOONNNNNNNNONNNNNNNNTGFFPPTTTFFFFNNNOONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNONOONNNNNNNNNNNNNNNNNNN","n":["Anchor","AnchorFromBlockPosition","BIP32_MAX_INDEX","Balance","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","ChangeSet","ConfirmationBlockTime","ConfirmationTime","Confirmed","Confirmed","CreateError","CreateError","CreateParams","CreateParams","DescriptorExt","DescriptorId","Error","FullTxOut","Impl","Indexed","IndexedTxGraph","Indexer","KeychainIndexed","LoadError","LoadError","LoadParams","LoadParams","Merge","PersistAsyncWith","PersistError","PersistError","PersistWith","Persisted","SpkIterator","Staged","TxGraph","Unconfirmed","Unconfirmed","add","all_zeros","anchor_block","anchor_block","anchor_block","as_byte_array","as_raw_hash","as_ref","as_ref","bitcoin","block_id","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","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","cmp","column_result","column_result","column_result","column_result","column_result","column_result","column_result","column_result","column_result","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","confirmed","create","create","create","create_async","default","default","default","deref","deref","deref_mut","descriptor","descriptor_id","deserialize","deserialize","deserialize","deserialize","deserialize","dust_value","engine","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_byte_array","from_engine","from_raw_hash","from_slice","from_slice_delegated","from_str","get_chain_tip","hash","hash","hash","hash","hash","hash","height","immature","index","indexed_tx_graph","indexer","into","into","into","into","into","into","into","into","into","into","into_fallible","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_mature","is_on_coinbase","keychain_txout","load","load","load","load_async","local_chain","merge","miniscript","new","new_with_range","next","nth","outpoint","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","persist","persist","persist","persist_async","rusqlite","rusqlite_impl","serde","serialize","serialize","serialize","serialize","serialize","spent_by","spk_client","spk_txout","staged","take","take","to_byte_array","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_raw_hash","to_sql","to_sql","to_sql","to_sql","to_sql","to_sql","to_sql","to_sql","to_sql","to_string","to_string","total","transpose_into_fallible","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_graph","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","IndexedTxGraph","apply_block","apply_block_relevant","apply_changeset","apply_update","as_ref","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","index","indexer","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","merge","new","serialize","to_owned","try_from","try_from","try_into","try_into","tx_graph","type_id","type_id","vzip","vzip","ChangeSet","Indexer","apply_changeset","index_tx","index_txout","initial_changeset","is_tx_relevant","keychain_txout","spk_txout","ChangeSet","DEFAULT_LOOKAHEAD","DescriptorAlreadyAssigned","InsertDescriptorError","KeychainAlreadyAssigned","KeychainTxOutIndex","LAST_REVEALED_TABLE_NAME","SCHEMA_NAME","all_unbounded_spk_iters","apply_changeset","apply_changeset","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","default","default","deserialize","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from_sqlite","get_descriptor","index_of_spk","index_tx","index_txout","initial_changeset","inner","insert_descriptor","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","last_revealed","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","merge","net_value","new","next_index","next_unused_spk","outpoints","persist_to_sqlite","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","spk_at_index","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","unused_keychain_spks","unused_spks","vzip","vzip","vzip","descriptor","existing_assignment","existing_assignment","keychain","SpkTxOutIndex","all_spks","apply_changeset","borrow","borrow_mut","clone","clone_into","default","fmt","from","index_of_spk","index_tx","index_txout","initial_changeset","insert_spk","into","is_relevant","is_tx_relevant","is_used","mark_used","net_value","outpoints","outputs_in_range","scan","scan_txout","sent_and_received","spk_at_index","to_owned","try_from","try_into","txout","txouts","txouts_in_tx","type_id","unmark_used","unused_spks","vzip","AlterCheckPointError","ApplyHeaderError","BLOCKS_TABLE_NAME","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","SCHEMA_NAME","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","blocks","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","deserialize","disconnect_from","eq","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_iter","from_iter","from_sqlite","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into","into_fallible","into_iter","into_iter","is_block_in_chain","is_empty","iter","iter_checkpoints","merge","new","next","original_hash","persist_to_sqlite","prev","push","range","range","serialize","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","transpose_into_fallible","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","SCHEMAS_TABLE_NAME","migrate_schema","FullScanRequest","FullScanResult","SyncRequest","SyncResult","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","ANCHORS_TABLE_NAME","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","SCHEMA_NAME","TXOUTS_TABLE_NAME","TXS_TABLE_NAME","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_sqlite","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_fallible","into_fallible","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_canonical_txs","map_anchors","map_anchors","merge","new","next","next","outspends","partial_cmp","partial_cmp","persist_to_sqlite","serialize","to_owned","to_owned","to_owned","to_owned","to_string","transpose_into_fallible","transpose_into_fallible","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_canonical_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","txs_with_no_anchor_or_last_seen","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":[[0,"bdk_chain"],[331,"bdk_chain::ConfirmationTime"],[334,"bdk_chain::indexed_tx_graph"],[384,"bdk_chain::indexer"],[393,"bdk_chain::indexer::keychain_txout"],[491,"bdk_chain::indexer::keychain_txout::InsertDescriptorError"],[495,"bdk_chain::indexer::spk_txout"],[532,"bdk_chain::local_chain"],[702,"bdk_chain::rusqlite_impl"],[704,"bdk_chain::spk_client"],[768,"bdk_chain::tx_graph"],[946,"bdk_chain::balance"],[947,"bdk_chain::descriptor_ext"],[948,"bdk_chain::tx_data_traits"],[949,"bdk_chain::chain_data"],[950,"bitcoin_hashes::sha256"],[951,"core::clone"],[952,"bdk_chain::spk_iter"],[953,"core::cmp"],[954,"bdk_chain::persist"],[955,"rusqlite::types::value_ref"],[956,"miniscript::descriptor::key"],[957,"miniscript::descriptor"],[958,"rusqlite::types::from_sql"],[959,"bitcoin::network"],[960,"bitcoin::blockdata::block"],[961,"bitcoin::blockdata::script::owned"],[962,"bitcoin_units::amount"],[963,"bitcoin::blockdata::transaction"],[964,"serde::de"],[965,"core::option"],[966,"core::result"],[967,"core::future::future"],[968,"alloc::boxed"],[969,"core::pin"],[970,"core::borrow"],[971,"core::fmt"],[972,"bitcoin_hashes"],[973,"bdk_chain::chain_oracle"],[974,"core::hash"],[975,"core::slice::index"],[976,"fallible_iterator"],[977,"core::iter::traits::iterator"],[978,"core::ops::range"],[979,"serde::ser"],[980,"rusqlite::types::to_sql"],[981,"rusqlite"],[982,"alloc::string"],[983,"core::any"],[984,"core::iter::traits::collect"],[985,"core::default"],[986,"alloc::collections::btree::map"],[987,"rusqlite::transaction"],[988,"bitcoin::blockdata::script::borrowed"],[989,"core::iter::traits::double_ended"],[990,"core::iter::traits::exact_size"],[991,"alloc::collections::btree::set"],[992,"alloc::vec"],[993,"core::marker"],[994,"core::ops::function"],[995,"core::convert"],[996,"alloc::sync"],[997,"std::collections::hash::set"]],"i":[0,0,0,0,0,0,0,0,75,0,0,12,14,40,45,40,45,0,0,63,0,0,0,0,0,0,40,45,40,45,0,0,40,45,0,0,0,0,0,12,14,1,2,3,5,6,2,2,2,2,0,6,24,1,12,14,5,6,15,20,2,2,16,24,1,12,14,5,6,15,20,2,16,15,1,12,14,5,6,15,2,16,1,12,14,5,6,15,2,16,12,12,14,5,6,15,20,2,24,24,24,24,24,24,24,24,24,3,3,12,6,6,1,40,45,20,20,1,5,6,24,20,20,16,47,1,14,5,6,2,47,2,1,12,14,5,6,15,20,2,1,1,12,12,14,14,5,5,6,6,15,15,20,20,2,2,1,1,12,14,5,6,15,20,2,2,2,2,24,24,24,1,12,14,14,5,5,5,6,15,20,2,2,16,59,5,6,2,2,2,2,2,2,63,12,14,5,6,2,5,5,1,2,0,0,24,1,12,14,5,6,15,20,2,16,16,16,63,12,14,15,70,15,15,0,40,45,20,20,0,70,0,16,16,16,16,15,12,14,5,6,15,20,2,40,45,20,20,0,0,0,1,14,5,6,2,15,0,0,75,70,70,2,1,12,14,5,6,15,2,16,2,24,24,24,24,24,24,24,24,24,1,2,1,16,1,1,24,1,12,14,5,6,15,20,2,16,24,1,12,14,5,6,15,20,2,16,0,15,24,1,12,14,5,6,15,20,2,16,14,1,24,1,12,14,5,6,15,20,2,16,131,132,131,0,0,82,82,82,82,82,82,82,82,82,83,82,83,83,83,82,83,83,83,82,83,82,83,83,83,82,82,83,82,82,82,82,82,82,83,83,83,82,83,83,82,83,82,83,83,82,83,82,83,84,0,84,84,84,84,84,0,0,0,0,95,0,95,0,89,89,93,93,93,93,95,89,93,95,89,93,95,89,93,95,89,93,89,89,95,89,93,95,95,89,93,95,89,89,93,93,93,93,93,93,93,93,95,89,89,93,93,93,93,93,89,93,93,93,93,93,93,93,89,93,93,93,93,93,89,93,93,93,93,93,93,89,93,93,95,89,95,93,95,89,93,95,89,93,93,93,93,95,89,93,93,93,93,93,95,89,133,133,134,134,0,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,0,0,107,111,0,0,0,0,111,0,0,107,106,106,106,106,112,107,114,112,106,107,108,113,110,111,114,112,106,107,108,113,110,111,112,106,107,108,113,110,111,112,106,107,108,113,110,111,107,107,106,112,106,107,108,113,110,111,112,112,106,107,108,108,113,113,110,110,111,111,114,112,106,107,107,108,113,110,111,112,106,106,106,112,107,107,107,106,106,112,106,106,112,112,113,106,112,106,114,112,106,107,108,113,110,111,114,114,112,106,107,112,106,107,112,114,113,107,112,112,112,106,107,106,112,106,107,108,113,110,111,108,113,110,111,114,114,112,106,107,108,113,110,111,110,114,112,106,107,108,113,110,111,114,112,106,107,108,113,110,111,113,114,112,106,107,108,113,110,111,0,0,0,0,0,0,115,135,118,136,115,135,118,136,115,115,118,115,118,115,135,136,115,135,118,136,115,118,118,135,136,115,115,118,118,115,115,135,118,136,136,115,115,115,115,118,115,115,118,115,135,118,136,115,135,118,136,115,115,135,118,136,115,135,118,136,90,0,0,0,123,123,90,90,90,0,0,0,0,85,85,90,124,90,85,85,85,85,85,128,129,85,124,125,123,90,128,129,85,124,125,123,90,85,125,128,128,129,129,85,124,125,90,85,124,125,90,124,125,85,90,124,90,85,85,124,125,123,90,124,124,125,125,123,123,85,85,85,85,124,125,123,123,90,128,129,85,124,125,123,90,90,85,85,85,85,85,85,85,85,85,85,85,128,129,85,124,125,123,90,128,129,128,129,85,90,90,124,85,85,90,90,85,128,129,85,124,125,90,90,85,124,125,90,123,128,129,85,85,85,128,129,85,124,125,123,90,85,85,128,129,85,124,125,123,90,85,124,125,85,85,124,90,90,90,85,128,129,85,124,125,123,90,85,128,129,85,124,125,123,90,85,85,85],"f":"`````````````````````````````````````````{{bb}b}{{}d}{{{h{f}}}j}{{{h{j}}}j}{{{h{l}}}j}{{{h{d}}}{{h{c}}}{}}{{{h{d}}}{{h{n}}}}{{{h{d}}}{{h{{Ab{A`}}}}}}{{{h{d}}}{{h{{Ad{A`}}}}}}``{{{h{c}}}{{h{e}}}{}{}}0000000020{{{h{Afc}}}{{h{Afe}}}{}{}}000000000`{{{h{b}}}b}{{{h{{Ah{c}}}}}{{Ah{c}}}Aj}{{{h{Al}}}Al}:{{{h{l}}}l}{{{h{{An{c}}}}}{{An{c}}}Aj}{{{h{d}}}d}{{{h{{B`{c}}}}}{{B`{c}}}Aj}{{{h{c}}{h{Afe}}}Bb{}{}}0000000{{{Ah{{h{c}}}}}{{Ah{c}}}Aj}{{{h{{Ah{c}}}}{h{{Ah{c}}}}}BdBf}{{{h{Al}}{h{Al}}}Bd}{{{h{j}}{h{j}}}Bd}{{{h{l}}{h{l}}}Bd}{{{h{{An{c}}}}{h{{An{c}}}}}BdBf}{{{h{{Bh{c}}}}{h{{Bh{c}}}}}BdBf}{{{h{d}}{h{d}}}Bd}{Bj{{Cb{{C`{{Bn{Bl}}}}}}}}{Bj{{Cb{{C`{Cd}}}}}}{Bj{{Cb{{C`{Cf}}}}}}{Bj{{Cb{{C`{d}}}}}}{Bj{{Cb{{C`{Ch}}}}}}{Bj{{Cb{{C`{Cj}}}}}}{Bj{{Cb{{C`{Cl}}}}}}{Bj{{Cb{{C`{Cn}}}}}}{Bj{{Cb{{C`{c}}}}}{fD`}}{{{h{f}}}Db}0{{{h{{Ah{c}}}}}{{Dd{Db}}}f}{{{h{l}}}Db}``{{{h{Afc}}e}{{Eb{{E`{}{{Df{e}}{Dh{g}}{Dj{i}}{Dl{k}}{Dn{m}}}}i}}}{}{}{}{}{}{}}{{{h{Afc}}e}{{Eh{{Ef{Ed}}}}}{}{}}{{{h{Afc}}}{{Eb{{Bh{e}}}}}{}{{E`{c}}}}{{{h{Afc}}}{{Eb{{Bh{e}}}}}{}{{Ej{c}}}}{{}b}{{}j}{{}l}{{{h{{C`{c}}}}}{{h{e}}}{}{}}{{{h{{Bh{c}}}}}{{h{e}}}{}{}}{{{h{Af{Bh{c}}}}}{{h{Afe}}}{}{}}{{{h{{B`{c}}}}}{{h{c}}}{{El{{Bn{Bl}}}}}}{{{h{En}}}d}{c{{Eb{b}}}F`}{c{{Eb{Al}}}F`}{c{{Eb{j}}}F`}{c{{Eb{l}}}F`}{c{{Eb{d}}}F`}{{{h{En}}}Fb}{{}c{}}{{{h{b}}{h{b}}}Fd}{{{h{{Ah{c}}}}{h{{Ah{c}}}}}FdFf}{{{h{Al}}{h{Al}}}Fd}{{{h{j}}{h{j}}}Fd}{{{h{l}}{h{l}}}Fd}{{{h{{An{c}}}}{h{{An{c}}}}}FdFf}{{{h{{Bh{c}}}}{h{{Bh{c}}}}}FdFf}{{{h{d}}{h{d}}}Fd}{{{h{c}}{h{e}}}Fd{}{}}000000000000000{{{h{b}}{h{AfFh}}}Fj}0{{{h{{Ah{c}}}}{h{AfFh}}}FjFl}{{{h{Al}}{h{AfFh}}}Fj}{{{h{j}}{h{AfFh}}}Fj}{{{h{l}}{h{AfFh}}}Fj}{{{h{{An{c}}}}{h{AfFh}}}FjFl}{{{h{{Bh{c}}}}{h{AfFh}}}FjFl}{{{h{d}}{h{AfFh}}}Fj}000{c{{C`{c}}}{}}{cc{}}{Fnc{}}111{{{Ah{l}}}Al}2{{{G`{DbCf}}}j}{{{G`{{h{Db}}{h{Cf}}}}}j}4444{nd}5{{{h{Gb}}jGd}Gf}{{{h{Gb}}jGd}j}{{{h{Gb}}jGd}l}{cd{}}04{{{h{{Ab{A`}}}}}{{Eb{dGh}}}}0{{{h{Gj}}}{{Eb{dc}}}{}}{{{h{{Gn{}{{Gl{c}}}}}}}{{Eb{jc}}}Fl}{{{h{{Ah{c}}}}{h{Afe}}}BbH`Hb}{{{h{Al}}{h{Afc}}}BbHb}{{{h{j}}{h{Afc}}}BbHb}{{{h{l}}{h{Afc}}}BbHb}{{{h{d}}{h{Afc}}}BbHb}```{{{h{d}}c}{{h{e}}}{{Hd{{Ab{A`}}}}}{}}``{ce{}{}}000000000{c{{Hf{g}}}{}{}{{Hj{}{{Hh{e}}}}}}1{{{h{{Gn{}{{Gl{c}}}}}}jj}{{Eb{{Dd{Fd}}c}}}Fl}{{{h{{Ah{c}}}}}Fd{}}{{{h{Al}}}Fd}{{{h{{An{c}}}}Db}Fdf}{{{h{Hl}}}Fd}1``{{{h{Afc}}e}{{Eb{{Dd{{E`{}{{Df{g}}{Dh{e}}{Dj{i}}{Dl{k}}{Dn{m}}}}}}k}}}{}{}{}{}{}{}}{{{h{Afc}}e}{{Eh{{Ef{Ed}}}}}{}{}}{{{h{Afc}}}{{Eb{{Dd{{Bh{e}}}}}}}{}{{E`{c}}}}{{{h{Afc}}}{{Eb{{Dd{{Bh{e}}}}}}}{}{{Ej{c}}}}`{{{h{AfHl}}Hl}Bb}`{c{{B`{c}}}{{El{{Bn{Bl}}}}}}{{ce}{{B`{c}}}{{El{{Bn{Bl}}}}}{{Hn{Db}}}}{{{h{Af{B`{c}}}}}{{Dd{e}}}{{El{{Bn{Bl}}}}}{}}{{{h{Af{B`{c}}}}Gd}{{Dd{e}}}{{El{{Bn{Bl}}}}}{}}`{{{h{{Ah{c}}}}{h{{Ah{c}}}}}{{Dd{Bd}}}I`}{{{h{Al}}{h{Al}}}{{Dd{Bd}}}}{{{h{j}}{h{j}}}{{Dd{Bd}}}}{{{h{l}}{h{l}}}{{Dd{Bd}}}}{{{h{{An{c}}}}{h{{An{c}}}}}{{Dd{Bd}}}I`}{{{h{{Bh{c}}}}{h{{Bh{c}}}}}{{Dd{Bd}}}I`}{{{h{d}}{h{d}}}{{Dd{Bd}}}}{{{h{Afc}}{h{e}}}{{Eb{Bbg}}}{}{}{}}{{{h{Afc}}{h{e}}}{{Eh{{Ef{Ed}}}}}{}{}}{{{h{Af{Bh{e}}}}{h{Afc}}}{{Eb{Fd}}}{}{{E`{c}}}}{{{h{Af{Bh{e}}}}{h{Afc}}}{{Eb{Fd}}}{}{{Ej{c}}}}```{{{h{b}}c}EbIb}{{{h{Al}}c}EbIb}{{{h{j}}c}EbIb}{{{h{l}}c}EbIb}{{{h{d}}c}EbIb}```{{{h{Af{If{}{{Id{c}}}}}}}{{h{Afc}}}Hl}{{{h{AfHl}}}{{Dd{Hl}}}}0{dc{}}{{{h{c}}}e{}{}}0000000{dn}{{{h{{C`{c}}}}}{{Ij{Ih}}}{fIl}}{{{h{{C`{Cn}}}}}{{Ij{Ih}}}}{{{h{{C`{Cf}}}}}{{Ij{Ih}}}}{{{h{{C`{Cd}}}}}{{Ij{Ih}}}}{{{h{{C`{Ch}}}}}{{Ij{Ih}}}}{{{h{{C`{Cl}}}}}{{Ij{Ih}}}}{{{h{{C`{Cj}}}}}{{Ij{Ih}}}}{{{h{{C`{d}}}}}{{Ij{Ih}}}}{{{h{{C`{{Bn{Bl}}}}}}}{{Ij{Ih}}}}{{{h{c}}}In{}}0{{{h{b}}}Cj}{c{{J`{i}}}{}{}{}{{Hj{}{{Hh{{Eb{eg}}}}}}}}`1{c{{Eb{e}}}{}{}}0000000000000000000``{{{h{c}}}Jb{}}000000000{FbAl}`{ce{}{}}000000000`````{{{h{Af{Jd{ce}}}}GbDb}{{Jf{c}}}{Gff}Jh}{{{h{Af{Jd{ce}}}}{h{Gb}}Db}{{Jf{c}}}{Gff}Jh}{{{h{Af{Jd{ce}}}}{Jf{c}}}BbfJh}{{{h{Af{Jd{ce}}}}{Jj{c}}}{{Jf{c}}}fJh}{{{h{{Jd{ce}}}}}{{h{{Jj{c}}}}}{}{}}{{{h{Af{Jd{ce}}}}i}{{Jf{c}}}fJh{{Jl{}{{Hh{c}}}}}{{Jl{}{{Hh{{G`{{h{Cn}}g}}}}}}}}{{{h{Af{Jd{ce}}}}g}{{Jf{c}}}fJh{{Jl{}{{Hh{{G`{{h{Cn}}Fb}}}}}}}}{{{h{Af{Jd{ce}}}}g}{{Jf{c}}}fJh{{Jl{}{{Hh{{G`{CnFb}}}}}}}}{{{h{c}}}{{h{e}}}{}{}}0{{{h{Afc}}}{{h{Afe}}}{}{}}0{{{h{{Jf{ce}}}}}{{Jf{ce}}}AjAj}{{{h{c}}{h{Afe}}}Bb{}{}}{{}{{Jd{ce}}}{}Jn}{{}{{Jf{ce}}}{}Jn}{c{{Eb{{Jf{eg}}}}}F`{BfK`}K`}{{{h{{Jf{ce}}}}{h{{Jf{ce}}}}}FdFfFf}{{{h{{Jd{ce}}}}{h{AfFh}}}FjFlFl}{{{h{{Jf{ce}}}}{h{AfFh}}}FjFlFl}{cc{}}{Kb{{Jf{cKb}}}{}}1{{{Kd{c}}}{{Jf{ce}}}{}Jn}{{{h{{Jd{ce}}}}}{{h{{Jj{c}}}}}{}{}}``{{{h{{Jd{ce}}}}}{{Jf{c}}}fJh}{{{h{Af{Jd{ce}}}}Clc}{{Jf{c}}}fJh}{{{h{Af{Jd{ce}}}}ClFb}{{Jf{c}}}fJh}{{{h{Af{Jd{ce}}}}Cn}{{Jf{c}}}fJh}{{{h{Af{Jd{ce}}}}KfKh}{{Jf{c}}}fJh}{ce{}{}}0{{{h{{Jf{ce}}}}}FdfHl}{{{h{Af{Jf{ce}}}}{Jf{ce}}}BbfHl}{c{{Jd{ec}}}{}{}}{{{h{{Jf{ce}}}}g}Eb{BfIl}IlIb}{{{h{c}}}e{}{}}{c{{Eb{e}}}{}{}}000`{{{h{c}}}Jb{}}077``{{{h{Af{Jh{}{{Id{c}}}}}}c}Bb{}}{{{h{Af{Jh{}{{Id{c}}}}}}{h{Cn}}}c{}}{{{h{Af{Jh{}{{Id{c}}}}}}Kf{h{Kh}}}c{}}{{{h{{Jh{}{{Id{c}}}}}}}c{}}{{{h{{Jh{}{{Id{c}}}}}}{h{Cn}}}Fd{}}``````````{{{h{{Kj{c}}}}}{{Kl{c{B`{{Bn{Bl}}}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}Kb}Bb{AjBfFl}}{{{h{Af{Kj{c}}}}e}Bb{AjBfFl}{}}{{{h{c}}}{{h{e}}}{}{}}00{{{h{Afc}}}{{h{Afe}}}{}{}}00{{{h{{Kj{c}}}}}{{Kj{c}}}Aj}{{{h{{Kn{c}}}}}{{Kn{c}}}Aj}{{{h{Kb}}}Kb}{{{h{c}}{h{Afe}}}Bb{}{}}00{{}{{Kj{c}}}{}}{{}Kb}{c{{Eb{Kb}}}F`}{{{h{{Kn{c}}}}{h{{Kn{c}}}}}FdFf}{{{h{Kb}}{h{Kb}}}Fd}{{{h{{Kj{c}}}}{h{AfFh}}}FjFl}{{{h{{Kn{c}}}}{h{AfFh}}}FjFl}0{{{h{Kb}}{h{AfFh}}}Fj}{cc{}}00{{{h{L`}}}{{Ij{Kb}}}}{{{h{{Kj{c}}}}{h{c}}}{{Dd{{h{{Bn{Bl}}}}}}}{AjBfFl}}{{{h{{Kj{c}}}}{h{Lb}}}{{Dd{{h{{G`{cDb}}}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}{h{Cn}}}e{AjBfFl}{}}{{{h{Af{Kj{c}}}}Kf{h{Kh}}}e{AjBfFl}{}}{{{h{{Kj{c}}}}}e{AjBfFl}{}}{{{h{{Kj{c}}}}}{{h{{Ld{{G`{cDb}}}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}c{Bn{Bl}}}{{Eb{Fd{Kn{c}}}}}{AjBfFl}}{ce{}{}}00{{{h{Kb}}}Fd}{{{h{{Kj{c}}}}{h{Cn}}}Fd{AjBfFl}}{{{h{{Kj{c}}}}cDb}Fd{AjBfFl}}{{{h{{Kj{c}}}}{h{c}}}{{`{{Lh{}{{Hh{{Lf{Kf}}}}}}}}}{AjBfFl}}{{{h{{Kj{c}}}}e}{{`{{Lh{}{{Hh{{Lj{cKf}}}}}}}}}{AjBfFl}{{Hn{c}}}}{{{h{{Kj{c}}}}}{{`{{Lh{}{{Hh{{G`{{h{c}}{h{{Bn{Bl}}}}}}}}}}Ll}}}{AjBfFl}}`{{{h{{Kj{c}}}}{h{c}}}{{Dd{Db}}}{AjBfFl}}{{{h{{Kj{c}}}}}{{Kl{cDb}}}{AjBfFl}}10{{{h{{Kj{c}}}}}Db{AjBfFl}}{{{h{Af{Kj{c}}}}{h{c}}Db}Bb{AjBfFl}}{{{h{Af{Kj{c}}}}cDb}Fd{AjBfFl}}{{{h{AfKb}}Kb}Bb}{{{h{{Kj{c}}}}{h{Cn}}e}Ln{AjBfFl}{{Hn{c}}}}{Db{{Kj{c}}}{}}{{{h{{Kj{c}}}}{h{c}}}{{Dd{{G`{DbFd}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}{h{c}}}{{Dd{{G`{{Lf{Ch}}Kb}}}}}{AjBfFl}}{{{h{{Kj{c}}}}}{{h{{M`{{Lj{cKf}}}}}}}{AjBfFl}}{{{h{Kb}}{h{L`}}}{{Ij{Bb}}}}2{{{h{Af{Kj{c}}}}{h{c}}Db}{{Dd{{G`{{Mb{{Lf{Ch}}}}Kb}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}{h{{Kl{cDb}}}}}Kb{AjBfFl}}{{{h{{Kj{c}}}}{h{c}}}{{`{{Lh{}{{Hh{{Lf{{h{Lb}}}}}}}}}}}{AjBfFl}}{{{h{{Kj{c}}}}e}{{`{{Hj{}{{Hh{{Lj{c{h{Lb}}}}}}}}}}}{AjBfFl}{{Hn{c}}}}{{{h{{Kj{c}}}}{h{Cn}}e}{{G`{CjCj}}}{AjBfFl}{{Hn{c}}}}{{{h{Kb}}c}EbIb}{{{h{{Kj{c}}}}cDb}{{Dd{{h{Lb}}}}}{AjBfFl}}{{{h{c}}}e{}{}}00{{{h{c}}}In{}}{c{{Eb{e}}}{}{}}00000{{{h{{Kj{c}}}}Kf}{{Dd{{Lj{c{h{Kh}}}}}}}{AjBfFl}}{{{h{{Kj{c}}}}}{{`{{Lh{}{{Hh{{Lj{c{G`{Kf{h{Kh}}}}}}}}}}Ll}}}{AjBfFl}}{{{h{{Kj{c}}}}Cl}{{`{{Lh{}{{Hh{{Lj{c{G`{Kf{h{Kh}}}}}}}}}}}}}{AjBfFl}}{{{h{c}}}Jb{}}00{{{h{{Kj{c}}}}{h{c}}}{{Dd{{B`{{Bn{Bl}}}}}}}{AjBfFl}}{{{h{Af{Kj{c}}}}cDb}Fd{AjBfFl}}{{{h{{Kj{c}}}}{h{c}}}{{`{{Lh{}{{Hh{{Lf{{h{Lb}}}}}}}}Aj}}}{AjBfFl}}{{{h{{Kj{c}}}}}{{`{{Lh{}{{Hh{{Lj{c{h{Lb}}}}}}}}Aj}}}{AjBfFl}}{ce{}{}}00`````{{{h{{Ld{c}}}}}{{h{{Kl{cCh}}}}}{AjBfFl}}{{{h{Af{Ld{c}}}}e}Bb{AjBfFl}{}}{{{h{c}}}{{h{e}}}{}{}}{{{h{Afc}}}{{h{Afe}}}{}{}}{{{h{{Ld{c}}}}}{{Ld{c}}}Aj}{{{h{c}}{h{Afe}}}Bb{}{}}{{}{{Ld{c}}}{}}{{{h{{Ld{c}}}}{h{AfFh}}}FjFl}{cc{}}{{{h{{Ld{c}}}}{h{Lb}}}{{Dd{{h{c}}}}}{AjBfFl}}{{{h{Af{Ld{c}}}}{h{Cn}}}e{AjBfFl}{}}{{{h{Af{Ld{c}}}}Kf{h{Kh}}}e{AjBfFl}{}}{{{h{{Ld{c}}}}}e{AjBfFl}{}}{{{h{Af{Ld{c}}}}cCh}Fd{AjBfFl}}>{{{h{{Ld{c}}}}{h{Cn}}}Fd{AjBfFl}}0{{{h{{Ld{c}}}}{h{c}}}Fd{AjBfFl}}{{{h{Af{Ld{c}}}}{h{c}}}Fd{AjBfFl}}{{{h{{Ld{c}}}}{h{Cn}}e}Ln{AjBfFl}{{Hn{c}}}}{{{h{{Ld{c}}}}}{{h{{M`{{G`{cKf}}}}}}}{AjBfFl}}{{{h{{Ld{c}}}}e}{{`{{Lh{}{{Hh{{G`{{h{c}}Kf}}}}}}}}}{AjBfFl}{{Hn{c}}}}{{{h{Af{Ld{c}}}}{h{Cn}}}{{M`{c}}}{AjBfFl}}{{{h{Af{Ld{c}}}}Kf{h{Kh}}}{{Dd{{h{c}}}}}{AjBfFl}}{{{h{{Ld{c}}}}{h{Cn}}e}{{G`{CjCj}}}{AjBfFl}{{Hn{c}}}}{{{h{{Ld{c}}}}{h{c}}}{{Dd{{h{Lb}}}}}{AjBfFl}}{{{h{c}}}e{}{}}{c{{Eb{e}}}{}{}}0{{{h{{Ld{c}}}}Kf}{{Dd{{G`{{h{c}}{h{Kh}}}}}}}{AjBfFl}}{{{h{{Ld{c}}}}}{{`{{Lh{}{{Hh{{G`{{h{c}}Kf{h{Kh}}}}}}}}Ll}}}{AjBfFl}}{{{h{{Ld{c}}}}Cl}{{`{{Lh{}{{Hh{{G`{{h{c}}Kf{h{Kh}}}}}}}}}}}{AjBfFl}}{{{h{c}}}Jb{}}={{{h{{Ld{c}}}}e}{{`{{Lh{}{{Hh{{G`{{h{c}}{h{Lb}}}}}}}}Aj}}}{AjBfFl}{{Hn{c}}}}{ce{}{}}````````````{{{h{AfMd}}{h{Mf}}}{{Eb{BbMh}}}}{{{h{AfMd}}{h{Mj}}Db}{{Eb{MfMl}}}}{{{h{AfMd}}{h{Mj}}Dbj}{{Eb{MfMn}}}}{{{h{AfMd}}N`}{{Eb{MfMl}}}}{{{h{N`}}}j}`{{{h{c}}}{{h{e}}}{}{}}0000000{{{h{Afc}}}{{h{Afe}}}{}{}}0000000{{{h{N`}}}N`}{{{h{Md}}}Md}{{{h{Mf}}}Mf}{{{h{Mh}}}Mh}{{{h{Nb}}}Nb}{{{h{Ml}}}Ml}{{{h{Mn}}}Mn}{{{h{c}}{h{Afe}}}Bb{}{}}000000{{}Mf}{c{{Eb{Mf}}}F`}{{{h{AfMd}}j}{{Eb{MfMh}}}}{{{h{N`}}{h{N`}}}Fd}{{{h{Md}}{h{Md}}}Fd}{{{h{Mf}}{h{Mf}}}Fd}{{{h{Mh}}{h{Mh}}}Fd}{{{h{Nb}}{h{Nb}}}Fd}{{{h{Ml}}{h{Ml}}}Fd}{{{h{Mn}}{h{Mn}}}Fd}{{N`c}{{Eb{N`N`}}}{{Jl{}{{Hh{j}}}}}}{{{h{N`}}{h{AfFh}}}Fj}{{{h{Md}}{h{AfFh}}}Fj}{{{h{Mf}}{h{AfFh}}}Fj}{{{h{Mh}}{h{AfFh}}}Fj}0{{{h{Nb}}{h{AfFh}}}Fj}0{{{h{Ml}}{h{AfFh}}}Fj}0{{{h{Mn}}{h{AfFh}}}Fj}0{cc{}}000{cMf{{Jl{}{{Hh{{G`{Db{Dd{Cf}}}}}}}}}}1111{c{{Eb{N`{Dd{N`}}}}}{{Jl{}{{Hh{j}}}}}}{{{Kl{DbCf}}}{{Eb{MdMh}}}}{Mf{{Eb{MdMh}}}}{Cf{{G`{MdMf}}}}{{{h{Mj}}Db}N`}5{cMf{{Jl{}{{Hh{{G`{DbCf}}}}}}}}{{{h{L`}}}{{Ij{Mf}}}}{N`{{Eb{MdMh}}}}{{{h{Md}}}Cf}{{{h{N`}}Db}{{Dd{N`}}}}{{{h{Md}}Db}{{Dd{N`}}}}{{{h{Md}}}{{Eb{jc}}}{}}{{{h{N`}}}Cf}{{{h{N`}}}Db}`{{{h{Md}}}Mf}{{N`j}N`}{{{h{AfMd}}j}{{Eb{MfNb}}}}{ce{}{}}0000000{c{{Hf{g}}}{}{}{{Hj{}{{Hh{e}}}}}}1{N`c{}}{{{h{Md}}jj}{{Eb{{Dd{Fd}}c}}}{}}{{{h{Mf}}}Fd}{{{h{N`}}}Nd}{{{h{Md}}}Nd}{{{h{AfMf}}Mf}Bb}{jN`}{{{h{AfNd}}}{{Dd{c}}}{}}`{{{h{Mf}}{h{L`}}}{{Ij{Bb}}}}{{{h{N`}}}{{Dd{N`}}}}{{N`j}{{Eb{N`N`}}}}{{{h{N`}}c}{{`{{Hj{}{{Hh{N`}}}}}}}{{Hn{Db}}}}{{{h{Md}}c}{{`{{Hj{}{{Hh{N`}}}}}}}{{Hn{Db}}}}{{{h{Mf}}c}EbIb}{{{h{Md}}}N`}{{{h{c}}}e{}{}}000000{{{h{c}}}In{}}000{c{{J`{i}}}{}{}{}{{Hj{}{{Hh{{Eb{eg}}}}}}}}{c{{Eb{e}}}{}{}}0000000`00000000{{{h{c}}}Jb{}}0000000`{ce{}{}}0000000`{{{h{L`}}{h{Gj}}{h{{Ab{{h{{Ab{{h{Gj}}}}}}}}}}}{{Ij{Bb}}}}````{{{h{c}}}{{h{e}}}{}{}}000{{{h{Afc}}}{{h{Afe}}}{}{}}000{{Nfe}Nf{{Ll{}{{Hh{Kf}}}}Nh}{{Jl{}{{Nj{c}}{Hh{Kf}}}}}}{{Nfe}Nf{{Ll{}{{Hh{Ch}}}}Nh}{{Jl{}{{Nj{c}}{Hh{Ch}}}}}}{{{Nl{c}}cg}{{Nl{c}}}{BfAj}{{Hj{}{{Hh{{Lf{Ch}}}}}}Nh}{{Jl{}{{Nj{e}}}}}}``{{Nfe}Nf{{Ll{}{{Hh{Cl}}}}Nh}{{Jl{}{{Nj{c}}{Hh{Cl}}}}}}``{cc{}}000{N`Nf}{N`{{Nl{c}}}{BfAj}}{{N`{h{{Kj{c}}}}}{{Nl{c}}}{FlBfAj}}``{{Nfc}Nf{{Nn{{h{Kf}}}}NhO`}}{{Nfc}Nf{{Nn{{h{Lb}}}}NhO`}}{{{Nl{c}}e}{{Nl{c}}}{NhBfAj}{{Nn{cDb{h{Lb}}}}NhO`Aj}}{{{Nl{c}}ce}{{Nl{c}}}{NhBfAj}{{Nn{Db{h{Lb}}}}NhO`}}{{Nfc}Nf{{Nn{{h{Cl}}}}NhO`}}{ce{}{}}000``{{Nf{h{{Kj{c}}}}e}Nf{AjBfFlNhO`}{{Hn{c}}}}{{Nfe}Nf{{Ll{}{{Hh{Kf}}}}Nh}{{Jl{}{{Nj{c}}}}}}{{Nfe}Nf{{Ll{}{{Hh{Ch}}}}Nh}{{Jl{}{{Nj{c}}}}}}>{{Nfe}Nf{{Ll{}{{Hh{Cl}}}}Nh}{{Jl{}{{Nj{c}}}}}}``{c{{Eb{e}}}{}{}}0000000`{{{h{c}}}Jb{}}0006666`````````````{{{h{{Jj{c}}}}}{{h{{M`{{G`{cCl}}}}}}}{}}{{{h{{Jj{c}}}}}{{`{{Hj{}{{Hh{{G`{Kf{h{Kh}}}}}}}}}}}{}}{{{h{{Kd{c}}}}}{{`{{Hj{}{{Hh{Db}}}}}}}f}``{{{h{Af{Jj{c}}}}{Kd{c}}}Bb{AjBf}}{{{h{Af{Jj{c}}}}{Jj{c}}}{{Kd{c}}}{AjBf}}{{{h{{Jj{c}}}}}{{h{{Jj{c}}}}}{}}{{{h{{Jj{c}}}}{h{e}}jik}bf{{Gn{}{{Gl{Ob}}}}}Aj{{Jl{}{{Hh{{G`{gKf}}}}}}}{{Nn{{h{g}}{h{Lb}}}{{Od{Fd}}}}}}{{{h{Af{Jj{c}}}}e}{{Kd{c}}}{AjBf}{{Jl{}{{Hh{{G`{CnFb}}}}}}}}{{{h{c}}}{{h{e}}}{}{}}000000{{{h{Afc}}}{{h{Afe}}}{}{}}000000{{{h{{Jj{c}}}}{h{Cn}}}{{Eb{CjOf}}}{}}`{c{{Dd{Cj}}}{}}{c{{Dd{Ln}}}{}}01{{{h{{Jj{c}}}}}{{Jj{c}}}Aj}{{{h{{Oh{ce}}}}}{{Oh{ce}}}AjAj}{{{h{{Oj{ce}}}}}{{Oj{ce}}}AjAj}{{{h{{Kd{c}}}}}{{Kd{c}}}Aj}{{{h{c}}{h{Afe}}}Bb{}{}}000{{{h{{Oh{ce}}}}{h{{Oh{ce}}}}}BdBfBf}{{{h{{Oj{ce}}}}{h{{Oj{ce}}}}}BdBfBf}{{}{{Jj{c}}}{}}{{}{{Kd{c}}}{}}{{{h{{Oh{ce}}}}}{{h{g}}}{}{}{}}{c{{Eb{{Kd{e}}}}}F`{BfK`}}{{{h{{Jj{c}}}}{h{Cn}}}{{`{{Hj{}{{Hh{{G`{GdCl}}}}}}}}}{}}{{{h{{Jj{c}}}}{h{{Jj{c}}}}}FdFf}{{{h{{Oh{ce}}}}{h{{Oh{ce}}}}}FdFfFf}{{{h{{Oj{ce}}}}{h{{Oj{ce}}}}}FdFfFf}{{{h{Of}}{h{Of}}}Fd}{{{h{{Kd{c}}}}{h{{Kd{c}}}}}FdFf}{{{h{c}}{h{e}}}Fd{}{}}00000{{{h{{Jj{c}}}}{h{e}}ji}{{`{{Hj{}{{Hh{{G`{g{An{c}}}}}}}}}}}f{{Gn{}{{Gl{Ob}}}}}Aj{{Jl{}{{Hh{{G`{gKf}}}}}}}}0{{{h{{Jj{c}}}}}{{`{{Hj{}{{Hh{{G`{Kf{h{Kh}}}}}}}}}}}{}}{{{h{{Jj{c}}}}{h{AfFh}}}FjFl}{{{h{{Oh{ce}}}}{h{AfFh}}}FjFlFl}{{{h{{Oj{ce}}}}{h{AfFh}}}FjFlFl}{{{h{Of}}{h{AfFh}}}Fj}0{{{h{{Kd{c}}}}{h{AfFh}}}FjFl}{cc{}}000000{{{h{L`}}}{{Ij{{Kd{c}}}}}{fAjBfIlD`}}{{{h{{Jj{c}}}}}{{`{{Hj{}{{Hh{{Oh{{Ol{Cn}}c}}}}}}}}}{}}{{{h{{Jj{c}}}}{h{e}}jCl}{{Dd{{Ah{{h{c}}}}}}}f{{Gn{}{{Gl{Ob}}}}}}{{{h{{Jj{c}}}}{h{e}}jKf}{{Dd{{G`{{Ah{{h{c}}}}Cl}}}}}f{{Gn{}{{Gl{Ob}}}}}}{{{h{{Jj{c}}}}Cl}{{Dd{{Ol{Cn}}}}}{}}{{{h{{Jj{c}}}}Cl}{{Dd{{Oh{{Ol{Cn}}c}}}}}{}}{{{h{{Jj{c}}}}Kf}{{Dd{{h{Kh}}}}}{}}{{{h{{Jj{c}}}}}{{Kd{c}}}{AjBf}}{{{h{Af{Jj{c}}}}Clc}{{Kd{c}}}{AjBf}}{{{h{Af{Jj{c}}}}ClFb}{{Kd{c}}}{AjBf}}{{{h{Af{Jj{c}}}}e}{{Kd{c}}}{AjBf}{{On{{Ol{Cn}}}}}}{{{h{Af{Jj{c}}}}KfKh}{{Kd{c}}}{AjBf}}{ce{}{}}000000{c{{Hf{g}}}{}{}{{Hj{}{{Hh{e}}}}}}011{{{h{{Jj{c}}}}}Fd{}}{{{h{{Kd{c}}}}}FdBf}``{{{h{{Jj{c}}}}{h{e}}j}{{`{{Hj{}{{Hh{{Oj{{Ol{Cn}}c}}}}}}}}}fGn}{{{Jj{c}}g}{{Jj{e}}}{AjBf}{AjBf}{{Nn{c}{{Od{e}}}}}}{{{Kd{c}}g}{{Kd{e}}}BfBf{{Nn{c}{{Od{e}}}}}}{{{h{Af{Kd{c}}}}{Kd{c}}}BbBf}{c{{Jj{e}}}{{Jl{}{{Hh{Cn}}}}}{AjBf}}{{{h{Af{A@`{cg}}}}}{{Dd{i}}}{}{}{{Nn{Gd{Ol{Cn}}}{{Od{{Dd{e}}}}}}}{}}{{{h{Af{A@b{cg}}}}}{{Dd{i}}}{}{}{{Nn{GdCl}{{Od{{Dd{e}}}}}}}{}}{{{h{{Jj{c}}}}Kf}{{h{{A@d{Cl}}}}}{}}{{{h{{Oh{ce}}}}{h{{Oh{ce}}}}}{{Dd{Bd}}}I`I`}{{{h{{Oj{ce}}}}{h{{Oj{ce}}}}}{{Dd{Bd}}}I`I`}{{{h{{Kd{c}}}}{h{L`}}}{{Ij{Bb}}}{fAjBfIlD`}}{{{h{{Kd{c}}}}e}Eb{BfIl}Ib}{{{h{c}}}e{}{}}000{{{h{c}}}In{}}{c{{J`{i}}}{}{}{}{{Hj{}{{Hh{{Eb{eg}}}}}}}}0{{{h{{Jj{c}}}}{h{e}}jik}{{Eb{b}}}fGnAj{{Jl{}{{Hh{{G`{gKf}}}}}}}{{Nn{{h{g}}{h{Lb}}}{{Od{Fd}}}}}}{{{h{{Jj{c}}}}{h{e}}ji}{{`{{Hj{}{{Hh{{Eb{{G`{g{An{c}}}}}}}}}}}}}fGnAj{{Jl{}{{Hh{{G`{gKf}}}}}}}}0{c{{Eb{e}}}{}{}}000000{{{h{{Jj{c}}}}{h{e}}jCl}{{Eb{{Dd{{Ah{{h{c}}}}}}}}}fGn}{{{h{{Jj{c}}}}{h{e}}jKf}{{Eb{{Dd{{G`{{Ah{{h{c}}}}Cl}}}}}}}fGn}2222222{{{h{{Jj{c}}}}{h{e}}j}{{`{{Hj{}{{Hh{{Eb{{Oj{{Ol{Cn}}c}}}}}}}}}}}fGn}``{{{h{{Jj{c}}}}Cl}{{Dd{{Kl{Db{h{Kh}}}}}}}{}}{{{h{{Jj{c}}}}Cl}{{`{{Lh{}{{Hh{{G`{Db{h{{A@d{Cl}}}}}}}}}}}}}{}}`{{{h{{Kd{c}}}}}{{`{{Hj{}{{Hh{{G`{Kf{h{Kh}}}}}}}}}}}{}}``{{{h{{Jj{c}}}}}{{`{{Hj{}{{Hh{{Oh{{Ol{Cn}}c}}}}}}}}}{}}{{{h{c}}}Jb{}}000000{{{h{Af{Jj{c}}}}Fb}{{Kd{c}}}{AjBf}}{ce{}{}}000000{{{h{{Jj{c}}}}ei}{{A@`{ci}}}{AjBf}{{On{{Ol{Cn}}}}}{}{{Nn{Gd{Ol{Cn}}}{{Od{{Dd{g}}}}}}}}{{{h{{Jj{c}}}}{h{Cn}}g}{{A@b{cg}}}{}{}{{Nn{GdCl}{{Od{{Dd{e}}}}}}}}{{{h{{Jj{c}}}}Clg}{{A@b{cg}}}{AjBf}{}{{Nn{GdCl}{{Od{{Dd{e}}}}}}}}","D":"CEj","p":[[5,"Balance",0,946],[5,"DescriptorId",0,947],[10,"Anchor",0,948],[1,"reference"],[5,"BlockId",0,949],[5,"ConfirmationBlockTime",0,949],[5,"Hash",950],[1,"u8"],[1,"slice"],[1,"array"],[0,"mut"],[6,"ChainPosition",0,949],[10,"Clone",951],[6,"ConfirmationTime",0,949],[5,"FullTxOut",0,949],[5,"SpkIterator",0,952],[1,"unit"],[6,"Ordering",953],[10,"Ord",953],[5,"Persisted",0,954],[6,"ValueRef",955],[6,"DescriptorPublicKey",956],[6,"Descriptor",957],[5,"Impl",0],[8,"FromSqlResult",958],[6,"Network",959],[5,"BlockHash",960],[5,"ScriptBuf",961],[5,"Amount",962],[5,"Txid",963],[5,"Transaction",963],[10,"DeserializeOwned",964],[1,"u32"],[6,"Option",965],[17,"CreateParams"],[17,"LoadParams"],[17,"CreateError"],[17,"LoadError"],[17,"PersistError"],[10,"PersistWith",0,954],[6,"Result",966],[10,"Future",967],[5,"Box",968],[5,"Pin",969],[10,"PersistAsyncWith",0,954],[10,"Borrow",970],[10,"DescriptorExt",0,947],[10,"Deserializer",964],[1,"u64"],[1,"bool"],[10,"PartialEq",953],[5,"Formatter",971],[8,"Result",971],[10,"Debug",971],[1,"never"],[1,"tuple"],[5,"Block",960],[1,"usize"],[10,"AnchorFromBlockPosition",0,948],[5,"FromSliceError",972],[1,"str"],[17,"Error"],[10,"ChainOracle",0,973],[10,"Hash",974],[10,"Hasher",974],[10,"SliceIndex",975],[5,"IntoFallible",976],[17,"Item"],[10,"Iterator",977],[10,"Merge",0,948],[10,"RangeBounds",978],[10,"PartialOrd",953],[10,"Serializer",979],[17,"ChangeSet"],[10,"Staged",0,954],[6,"ToSqlOutput",980],[8,"Result",981],[10,"Serialize",979],[5,"String",982],[5,"Convert",976],[5,"TypeId",983],[5,"IndexedTxGraph",334],[5,"ChangeSet",334],[10,"Indexer",384],[5,"TxGraph",768],[10,"IntoIterator",984],[10,"Default",985],[10,"Deserialize",964],[5,"ChangeSet",393],[5,"ChangeSet",768],[5,"OutPoint",963],[5,"TxOut",963],[5,"KeychainTxOutIndex",393],[5,"BTreeMap",986],[6,"InsertDescriptorError",393],[5,"Transaction",987],[5,"Script",988],[5,"SpkTxOutIndex",495],[8,"Indexed",0],[10,"DoubleEndedIterator",989],[8,"KeychainIndexed",0],[10,"ExactSizeIterator",990],[5,"SignedAmount",962],[5,"BTreeSet",991],[5,"Vec",992],[5,"LocalChain",532],[5,"ChangeSet",532],[5,"MissingGenesisError",532],[5,"Header",960],[5,"CannotConnectError",532],[6,"ApplyHeaderError",532],[5,"CheckPoint",532],[5,"AlterCheckPointError",532],[5,"CheckPointIter",532],[5,"SyncRequest",704],[10,"Send",993],[17,"IntoIter"],[5,"FullScanRequest",704],[10,"FnMut",994],[10,"Sync",993],[6,"Infallible",995],[17,"Output"],[6,"CalculateFeeError",768],[5,"TxNode",768],[5,"CanonicalTx",768],[5,"Arc",996],[10,"Into",995],[5,"TxAncestors",768],[5,"TxDescendants",768],[5,"HashSet",997],[15,"Confirmed",331],[15,"Unconfirmed",331],[15,"DescriptorAlreadyAssigned",491],[15,"KeychainAlreadyAssigned",491],[5,"SyncResult",704],[5,"FullScanResult",704]],"r":[[0,948],[1,948],[2,952],[3,946],[4,949],[6,973],[7,949],[9,949],[10,949],[17,947],[18,947],[20,949],[23,334],[24,384],[30,948],[31,954],[34,954],[35,954],[36,952],[37,954],[38,768],[224,384],[258,384]],"b":[[48,"impl-AsRef%3C%5Bu8%5D%3E-for-DescriptorId"],[49,"impl-AsRef%3C%5Bu8;+%3C%24hash+as+%24crate::Hash%3E::LEN%5D%3E-for-DescriptorId"],[98,"impl-FromSql-for-Impl%3CDescriptor%3CDescriptorPublicKey%3E%3E"],[99,"impl-FromSql-for-Impl%3CNetwork%3E"],[100,"impl-FromSql-for-Impl%3CBlockHash%3E"],[101,"impl-FromSql-for-Impl%3CDescriptorId%3E"],[102,"impl-FromSql-for-Impl%3CScriptBuf%3E"],[103,"impl-FromSql-for-Impl%3CAmount%3E"],[104,"impl-FromSql-for-Impl%3CTxid%3E"],[105,"impl-FromSql-for-Impl%3CTransaction%3E"],[106,"impl-FromSql-for-Impl%3CA%3E"],[156,"impl-Display-for-Balance"],[157,"impl-Debug-for-Balance"],[164,"impl-Display-for-DescriptorId"],[165,"impl-LowerHex-for-DescriptorId"],[166,"impl-UpperHex-for-DescriptorId"],[167,"impl-Debug-for-DescriptorId"],[176,"impl-From%3C(u32,+BlockHash)%3E-for-BlockId"],[177,"impl-From%3C(%26u32,+%26BlockHash)%3E-for-BlockId"],[272,"impl-ToSql-for-Impl%3CA%3E"],[273,"impl-ToSql-for-Impl%3CTransaction%3E"],[274,"impl-ToSql-for-Impl%3CBlockHash%3E"],[275,"impl-ToSql-for-Impl%3CNetwork%3E"],[276,"impl-ToSql-for-Impl%3CScriptBuf%3E"],[277,"impl-ToSql-for-Impl%3CTxid%3E"],[278,"impl-ToSql-for-Impl%3CAmount%3E"],[279,"impl-ToSql-for-Impl%3CDescriptorId%3E"],[280,"impl-ToSql-for-Impl%3CDescriptor%3CDescriptorPublicKey%3E%3E"],[357,"impl-From%3CChangeSet%3E-for-ChangeSet%3CA,+ChangeSet%3E"],[359,"impl-From%3CChangeSet%3CA%3E%3E-for-ChangeSet%3CA,+IA%3E"],[402,"impl-KeychainTxOutIndex%3CK%3E"],[403,"impl-Indexer-for-KeychainTxOutIndex%3CK%3E"],[422,"impl-Display-for-InsertDescriptorError%3CK%3E"],[423,"impl-Debug-for-InsertDescriptorError%3CK%3E"],[594,"impl-Debug-for-MissingGenesisError"],[595,"impl-Display-for-MissingGenesisError"],[596,"impl-Debug-for-AlterCheckPointError"],[597,"impl-Display-for-AlterCheckPointError"],[598,"impl-Debug-for-CannotConnectError"],[599,"impl-Display-for-CannotConnectError"],[600,"impl-Display-for-ApplyHeaderError"],[601,"impl-Debug-for-ApplyHeaderError"],[616,"impl-FromIterator%3C(u32,+Option%3CBlockHash%3E)%3E-for-ChangeSet"],[617,"impl-FromIterator%3C(u32,+BlockHash)%3E-for-ChangeSet"],[843,"impl-Display-for-CalculateFeeError"],[844,"impl-Debug-for-CalculateFeeError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUCVQAYAAEAJwAAACoAAQAtAAIAMQACADUAFABLAA8AXAAPAG8AAAB2AAUAfgAEAIQAJQCrAAAArwAAALEAAQC3AAAAugADAL8AAgDDAAQAywAAANkAAADhAAAA6AAAAOsAAQDuAAYA+QAAAPsABQADAQAABwEIABEBCgAgARMANgEJAEIBCQBVAQAAWQELAGYBAABoAQAAcwEBAHYBBQB9AQMAlAEVALABAgC5AQAA0wEAANUBCQDiAQIA6QECAPIBBgD7AQIAAQIAAAsCAgARAgAAFAIAACcCHwBIAgYAUAIKAF8CAABpAgEAcAIAAIACAwCGAgAAiAIAAI8CAACRAgoAnQIHAKYCDwC3AgcAxQIHAPACBwD5AgcAFQMAABgDDQAoAxEAOwMKAEkDBQBrAwEAbgMAAHQDAAB2AwEAeQMBAHwDBQCHAwYAkAMGAKEDBgCpAwYA"}],\ +["bdk_coin_select",{"t":"FFGGFFPIPFGPPPFGFPPSPPPPPFNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNONONNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNONNOOOONNNNONOOOOONNNNONNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOOON","n":["Bnb","BnbIter","BnbLimit","BranchStrategy","CoinSelector","CoinSelectorOpt","Continue","DecideStrategy","Duration","ExcessStrategy","ExcessStrategyKind","MinAbsoluteFee","MinDrainValue","Rounds","Selection","SelectionConstraint","SelectionError","SkipBoth","SkipInclusion","TXIN_BASE_WEIGHT","TargetFee","TargetValue","ToDrain","ToFee","ToRecipient","WeightedValue","advertise_new_score","all_selected","apply_selection","backtrack","base_weight","best_score","best_strategy","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","candidate","candidates","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_select_bnb","current_excess","current_weight","deselect","drain_value","drain_waste","drain_weight","effective_target","effective_value","eq","eq","equivalent","equivalent","equivalent","equivalent","excess","excess_strategies","fee","feerate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fund_outputs","hash","input_count","into","into","into","into","into","into","into","into","into","into","into","into","into_fallible","into_iter","into_iter","is_empty","is_segwit","is_selected","long_term_feerate","long_term_feerate","max_extra_target","min_absolute_fee","min_drain_value","new","new","new","next","opts","partial_cmp","pool","pool_pos","recipient_value","rem_abs","rem_eff","select","select_all","select_until_finished","selected","selected","selected_absolute_value","selected_count","selected_effective_value","selected_indexes","selected_waste","selected_weight","selection","spend_drain_weight","target_feerate","target_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","transpose_into_fallible","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unselected","unselected_indexes","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","waste","weight","weight","will_continue"],"q":[[0,"bdk_coin_select"],[241,"bdk_coin_select::bnb"],[242,"core::cmp"],[243,"bdk_coin_select::coin_selector"],[244,"core::iter::traits::iterator"],[245,"core::option"],[246,"core::convert"],[247,"core::result"],[248,"core::fmt"],[249,"core::time"],[250,"bitcoin::blockdata::transaction"],[251,"core::hash"],[252,"fallible_iterator"],[253,"alloc::vec"],[254,"core::marker"],[255,"alloc::string"],[256,"core::any"]],"i":[0,0,0,0,0,0,43,0,22,0,0,18,18,22,0,0,0,43,43,0,18,18,11,11,11,0,2,6,7,2,16,2,7,43,2,35,22,15,16,6,17,18,7,11,12,43,2,35,22,15,16,6,17,18,7,11,12,6,6,15,16,6,17,18,7,11,12,15,16,6,17,18,7,11,12,11,0,6,6,6,12,16,16,6,15,18,11,18,18,11,11,7,7,12,12,6,15,16,6,17,17,18,18,7,11,11,12,2,43,2,35,22,22,22,15,16,6,17,18,7,11,12,16,11,15,43,2,35,22,15,16,6,17,18,7,11,12,35,2,35,6,15,6,16,16,16,16,16,2,15,6,35,6,11,2,2,12,2,2,6,6,6,6,7,6,6,6,6,6,6,2,16,16,16,15,16,6,17,18,7,11,12,17,18,11,35,43,2,35,22,15,16,6,17,18,7,11,12,43,2,35,22,15,16,6,17,18,7,11,12,43,2,35,22,15,16,6,17,18,7,11,12,6,6,15,43,2,35,22,15,16,6,17,18,7,11,12,12,15,12,43],"f":"``````````````````````````{{{f{b{d{c}}}}c}hj}{{{f{l}}}h}{{{f{n}}{f{{A`{c}}}}}{{`{{Ad{}{{Ab{{f{c}}}}}}}}}{}}{{{f{b{d{c}}}}}hj}``{{{f{n}}}{{Aj{{f{Af}}{f{Ah}}}}}}{{{f{c}}}{{f{e}}}{}{}}00000000000{{{f{bc}}}{{f{be}}}{}{}}00000000000{{{f{l}}Al}{{f{An}}}}`{{{f{An}}}An}{{{f{B`}}}B`}{{{f{l}}}l}{{{f{Bb}}}Bb}{{{f{Bd}}}Bd}{{{f{n}}}n}{{{f{Af}}}Af}{{{f{Ah}}}Ah}{{{f{c}}{f{be}}}Bf{}{}}0000000{{{f{Af}}{f{Af}}}Bh}{{cl}{{Bj{l}}}{{Bn{Bl}}}}{{{f{l}}}C`}{{{f{l}}}Cb}{{{f{bl}}Al}h}`{{{f{B`}}}C`}`3{{{f{An}}Cd}C`}{{{f{Bd}}{f{Bd}}}h}{{{f{Af}}{f{Af}}}h}{{{f{c}}{f{e}}}h{}{}}000```{{{f{Ah}}}Cd}{{{f{l}}}{{Cf{nBb}}}}{{{f{An}}{f{bCh}}}Cj}{{{f{B`}}{f{bCh}}}Cj}{{{f{l}}{f{bCh}}}Cj}{{{f{Bb}}{f{bCh}}}Cj}0{{{f{Bd}}{f{bCh}}}Cj}0{{{f{n}}{f{bCh}}}Cj}{{{f{Af}}{f{bCh}}}Cj}0{{{f{Ah}}{f{bCh}}}Cj}{{{f{b{d{c}}}}h}Bfj}{cc{}}000{ClBl}{AlBl}22222222{{{f{{A`{Cn}}}}{f{Cn}}Cb}B`}{{{f{Af}}{f{bc}}}BfD`}`{ce{}{}}00000000000{c{{Db{g}}}{}{}{{Ad{}{{Ab{e}}}}}}{{{d{c}}{f{{Dd{c}}}}}{{Df{c}}}j}2{{{f{l}}}h}`{{{f{l}}Al}h}{{{f{B`}}}Cd}````{{l{Dh{{Aj{Al{f{An}}}}}}c}{{d{c}}}j}{{DjCbh}An}{{{f{{Dh{An}}}}{f{B`}}}l}{{{f{b{Df{c}}}}}{{Bj{e}}}{jDlDn}{}}`{{{f{Af}}{f{Af}}}{{Bj{Bh}}}}`````{{{f{bl}}Al}h}{{{f{bl}}}Bf}{{{f{bl}}}{{Cf{nBb}}}}{{{f{l}}}{{`{{Ad{}{{Ab{{Aj{Al{f{An}}}}}}}}}}}}`{{{f{l}}}Dj}{{{f{l}}}Al}{{{f{l}}}C`}{{{f{l}}}{{`{{Ad{}{{Ab{Al}}}}}}}}1{{{f{l}}}Cb}````{{{f{c}}}e{}{}}0000000{{{f{c}}}E`{}}00{c{{Eb{i}}}{}{}{}{{Ad{}{{Ab{{Cf{eg}}}}}}}}{c{{Cf{e}}}{}{}}00000000000000000000000{{{f{c}}}Ed{}}00000000000:6`{ce{}{}}00000000000```{{{f{Ef}}}h}","D":"Hl","p":[[0,"mut"],[5,"Bnb",0,241],[1,"reference"],[1,"bool"],[10,"Ord",242],[5,"CoinSelector",0,243],[5,"Selection",0,243],[1,"slice"],[17,"Item"],[10,"Iterator",244],[6,"ExcessStrategyKind",0,243],[5,"ExcessStrategy",0,243],[1,"tuple"],[1,"usize"],[5,"WeightedValue",0,243],[5,"CoinSelectorOpt",0,243],[5,"SelectionError",0,243],[6,"SelectionConstraint",0,243],[1,"unit"],[6,"Ordering",242],[6,"Option",245],[6,"BnbLimit",0,241],[10,"Into",246],[1,"i64"],[1,"u32"],[1,"f32"],[6,"Result",247],[5,"Formatter",248],[8,"Result",248],[5,"Duration",249],[5,"TxOut",250],[10,"Hasher",251],[5,"IntoFallible",252],[8,"DecideStrategy",0,241],[5,"BnbIter",0,241],[5,"Vec",253],[1,"u64"],[10,"Copy",254],[10,"Display",248],[5,"String",255],[5,"Convert",252],[5,"TypeId",256],[6,"BranchStrategy",0,241]],"r":[[0,241],[1,241],[2,241],[3,241],[4,243],[5,243],[7,241],[9,243],[10,243],[14,243],[15,243],[16,243],[25,243],[76,241]],"b":[[99,"impl-Display-for-SelectionError"],[100,"impl-Debug-for-SelectionError"],[101,"impl-Debug-for-SelectionConstraint"],[102,"impl-Display-for-SelectionConstraint"],[104,"impl-Debug-for-ExcessStrategyKind"],[105,"impl-Display-for-ExcessStrategyKind"],[112,"impl-From%3CDuration%3E-for-BnbLimit"],[113,"impl-From%3Cusize%3E-for-BnbLimit"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKsAGAAAAAAAAgAAAAYAAAAJAAIADgADABcAAgAcAAEAIAAAACIAKgBQAAIAVgAIAGAACwBxAAEAewABAIwAAQCPAAEAlwANAKYAAACoAAAAqwAAAK8ACgC7ACUA4gAMAPAAAQA="}],\ ["bdk_electrum",{"t":"FENNENNNNONNNNNNNNN","n":["BdkElectrumClient","bdk_chain","borrow","borrow_mut","electrum_client","fetch_tx","fmt","from","full_scan","inner","into","new","populate_tx_cache","sync","transaction_broadcast","try_from","try_into","type_id","vzip"],"q":[[0,"bdk_electrum"],[19,"bdk_electrum::bdk_electrum_client"],[20,"bitcoin::blockdata::transaction"],[21,"alloc::sync"],[22,"electrum_client::types"],[23,"core::result"],[24,"electrum_client::api"],[25,"core::fmt"],[26,"bdk_chain::spk_client"],[27,"core::cmp"],[28,"core::clone"],[29,"bdk_chain::tx_graph"],[30,"core::convert"],[31,"core::any"]],"i":[0,0,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3],"f":"``{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}`{{{b{{f{c}}}}h}{{A`{{l{j}}n}}}Ab}{{{b{{f{c}}}}{b{dAd}}}AfAh}{cc{}}{{{b{{f{c}}}}{Aj{e}}AlAlAn}{{A`{{B`{e}}n}}}Ab{BbBd}}`{ce{}{}}{c{{f{c}}}Ab}{{{b{{f{c}}}}g}BfAb{}{{Bj{{Bh{e}}}}}}{{{b{{f{c}}}}BlAlAn}{{A`{Bnn}}}Ab}{{{b{{f{c}}}}{b{j}}}{{A`{hn}}}Ab}{c{{A`{e}}}{}{}}0{{{b{c}}}C`{}}6","D":"Af","p":[[1,"reference"],[0,"mut"],[5,"BdkElectrumClient",0,19],[5,"Txid",20],[5,"Transaction",20],[5,"Arc",21],[6,"Error",22],[6,"Result",23],[10,"ElectrumApi",24],[5,"Formatter",25],[8,"Result",25],[10,"Debug",25],[5,"FullScanRequest",26],[1,"usize"],[1,"bool"],[5,"FullScanResult",26],[10,"Ord",27],[10,"Clone",28],[1,"unit"],[5,"TxGraph",29],[10,"AsRef",30],[5,"SyncRequest",26],[5,"SyncResult",26],[5,"TypeId",31]],"r":[[0,19]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgAAwACAAMABwAAABAAAwA="}],\ ["bdk_esplora",{"t":"IKKEMMMM","n":["Error","EsploraAsyncExt","EsploraExt","esplora_client","full_scan","full_scan","sync","sync"],"q":[[0,"bdk_esplora"],[8,"bdk_esplora::blocking_ext"],[9,"bdk_chain::spk_client"],[10,"core::result"],[11,"core::cmp"],[12,"core::clone"],[13,"bdk_esplora::async_ext"],[14,"core::future::future"],[15,"alloc::boxed"],[16,"core::pin"],[17,"core::marker"]],"i":[0,0,0,0,1,10,1,10],"f":"````{{{d{b}}{f{c}}hh}{{n{{j{c}}l}}}{A`Ab}}{{{d{Ad}}{f{c}}hh}{{Aj{{Ah{Af}}}}}{A`AbAl}}{{{d{b}}Anh}{{n{B`l}}}}{{{d{Ad}}Anh}{{Aj{{Ah{Af}}}}}}","D":"A`","p":[[10,"EsploraExt",0,8],[1,"reference"],[5,"FullScanRequest",9],[1,"usize"],[5,"FullScanResult",9],[8,"Error",0,8],[6,"Result",10],[10,"Ord",11],[10,"Clone",12],[10,"EsploraAsyncExt",0,13],[10,"Future",14],[5,"Box",15],[5,"Pin",16],[10,"Send",17],[5,"SyncRequest",9],[5,"SyncResult",9]],"r":[[0,8],[1,13],[2,8]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAQA"}],\ -["bdk_file_store",{"t":"FPFGPPPGFNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNOO","n":["AggregateChangesetsError","Bincode","EntryIter","FileError","InvalidMagicBytes","Io","Io","IterError","Store","aggregate_changesets","append_changeset","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","changeset","create_new","drop","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into_iter","iter_changesets","iter_error","new","next","open","open_or_create_new","to_string","to_string","to_string","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","expected","got"],"q":[[0,"bdk_file_store"],[73,"bdk_file_store::FileError"],[75,"bdk_file_store::store"],[76,"core::option"],[77,"core::result"],[78,"bdk_chain::tx_data_traits"],[79,"serde::ser"],[80,"serde::de"],[81,"core::marker"],[82,"std::io::error"],[83,"std::path"],[84,"core::convert"],[85,"bdk_file_store::entry_iter"],[86,"core::fmt"],[87,"std::fs"],[88,"alloc::string"],[89,"core::any"]],"i":[0,20,0,0,16,20,16,0,0,2,2,19,20,2,5,16,19,20,2,5,16,5,2,19,20,20,2,5,5,16,16,19,20,20,2,5,16,16,19,20,2,5,16,19,2,5,19,19,2,2,20,5,16,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,28,28],"f":"`````````{{{f{b{d{c}}}}}{{l{{h{c}}{j{c}}}}}{nA`AbAdAf}}{{{f{b{d{c}}}}{f{c}}}{{l{AhAj}}}{nA`AbAdAf}}{{{f{c}}}{{f{e}}}{}{}}0000{{{f{bc}}}{{f{be}}}{}{}}0000`{{{f{{An{Al}}}}c}{{l{{d{e}}B`}}}{{Bd{Bb}}}{nA`AbAdAf}}{{{f{b{Bf{c}}}}}Ah{}}{{{f{Bh}}{f{bBj}}}Bl}0{{{f{{d{c}}}}{f{bBj}}}Bl{AfAdBn}}{{{f{{j{c}}}}{f{bBj}}}BlBn}{{{f{{j{c}}}}{f{bBj}}}Bl{}}{{{f{B`}}{f{bBj}}}Bl}0{cc{}}0{AjBh}111{AjB`}{ce{}{}}00000{{{f{b{d{c}}}}}{{Bf{c}}}{nA`AbAdAf}}`{{C`{f{bCb}}}{{Bf{c}}}{}}{{{f{b{Bf{c}}}}}{{h{e}}}Ab{}}=={{{f{c}}}Cd{}}00{c{{l{e}}}{}{}}000000000{{{f{c}}}Cf{}}000066666``","D":"Ch","p":[[0,"mut"],[5,"Store",0,75],[1,"reference"],[6,"Option",76],[5,"AggregateChangesetsError",0,75],[6,"Result",77],[10,"Merge",78],[10,"Serialize",79],[10,"DeserializeOwned",80],[10,"Send",81],[10,"Sync",81],[1,"unit"],[5,"Error",82],[1,"u8"],[1,"slice"],[6,"FileError",0],[5,"Path",83],[10,"AsRef",84],[5,"EntryIter",0,85],[6,"IterError",0,85],[5,"Formatter",86],[8,"Result",86],[10,"Debug",86],[1,"u64"],[5,"File",87],[5,"String",88],[5,"TypeId",89],[15,"InvalidMagicBytes",73]],"r":[[0,75],[2,85],[7,85],[8,75]],"b":[[24,"impl-Debug-for-IterError"],[25,"impl-Display-for-IterError"],[27,"impl-Debug-for-AggregateChangesetsError%3CC%3E"],[28,"impl-Display-for-AggregateChangesetsError%3CC%3E"],[29,"impl-Display-for-FileError"],[30,"impl-Debug-for-FileError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC8ABwAMAAkAGAAHACIAAAAmAAAALAAAAC8AAQAzABgA"}],\ +["bdk_file_store",{"t":"FPFGPPPGFNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOO","n":["AggregateChangesetsError","Bincode","EntryIter","FileError","InvalidMagicBytes","Io","Io","IterError","Store","aggregate_changesets","append_changeset","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","changeset","create_new","drop","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into_fallible","into_iter","iter_changesets","iter_error","new","next","open","open_or_create_new","to_string","to_string","to_string","transpose_into_fallible","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","expected","got"],"q":[[0,"bdk_file_store"],[75,"bdk_file_store::FileError"],[77,"bdk_file_store::store"],[78,"core::option"],[79,"core::result"],[80,"bdk_chain::tx_data_traits"],[81,"serde::ser"],[82,"serde::de"],[83,"core::marker"],[84,"std::io::error"],[85,"std::path"],[86,"core::convert"],[87,"bdk_file_store::entry_iter"],[88,"core::fmt"],[89,"fallible_iterator"],[90,"core::iter::traits::iterator"],[91,"std::fs"],[92,"alloc::string"],[93,"core::any"]],"i":[0,20,0,0,16,20,16,0,0,2,2,19,20,2,5,16,19,20,2,5,16,5,2,19,20,20,2,5,5,16,16,19,20,20,2,5,16,16,19,20,2,5,16,19,19,2,5,19,19,2,2,20,5,16,19,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,32,32],"f":"`````````{{{f{b{d{c}}}}}{{l{{h{c}}{j{c}}}}}{nA`AbAdAf}}{{{f{b{d{c}}}}{f{c}}}{{l{AhAj}}}{nA`AbAdAf}}{{{f{c}}}{{f{e}}}{}{}}0000{{{f{bc}}}{{f{be}}}{}{}}0000`{{{f{{An{Al}}}}c}{{l{{d{e}}B`}}}{{Bd{Bb}}}{nA`AbAdAf}}{{{f{b{Bf{c}}}}}Ah{}}{{{f{Bh}}{f{bBj}}}Bl}0{{{f{{d{c}}}}{f{bBj}}}Bl{AfAdBn}}{{{f{{j{c}}}}{f{bBj}}}Bl{}}{{{f{{j{c}}}}{f{bBj}}}BlBn}{{{f{B`}}{f{bBj}}}Bl}0{cc{}}0{AjBh}111{AjB`}{ce{}{}}0000{c{{C`{g}}}{}{}{{Cd{}{{Cb{e}}}}}}1{{{f{b{d{c}}}}}{{Bf{c}}}{nA`AbAdAf}}`{{Cf{f{bCh}}}{{Bf{c}}}{}}{{{f{b{Bf{c}}}}}{{h{e}}}Ab{}}>>{{{f{c}}}Cj{}}00{c{{Cl{i}}}{}{}{}{{Cd{}{{Cb{{l{eg}}}}}}}}{c{{l{e}}}{}{}}000000000{{{f{c}}}Cn{}}000088888``","D":"Cl","p":[[0,"mut"],[5,"Store",0,77],[1,"reference"],[6,"Option",78],[5,"AggregateChangesetsError",0,77],[6,"Result",79],[10,"Merge",80],[10,"Serialize",81],[10,"DeserializeOwned",82],[10,"Send",83],[10,"Sync",83],[1,"unit"],[5,"Error",84],[1,"u8"],[1,"slice"],[6,"FileError",0],[5,"Path",85],[10,"AsRef",86],[5,"EntryIter",0,87],[6,"IterError",0,87],[5,"Formatter",88],[8,"Result",88],[10,"Debug",88],[5,"IntoFallible",89],[17,"Item"],[10,"Iterator",90],[1,"u64"],[5,"File",91],[5,"String",92],[5,"Convert",89],[5,"TypeId",93],[15,"InvalidMagicBytes",75]],"r":[[0,77],[2,87],[7,87],[8,77]],"b":[[24,"impl-Debug-for-IterError"],[25,"impl-Display-for-IterError"],[27,"impl-Display-for-AggregateChangesetsError%3CC%3E"],[28,"impl-Debug-for-AggregateChangesetsError%3CC%3E"],[29,"impl-Debug-for-FileError"],[30,"impl-Display-for-FileError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC8ACAAMAAkAGAAHACIAAAAmAAAALQAAADAAAQA0AAIAOAAVAA=="}],\ ["bdk_hwi",{"t":"FNNNNNNNNNNNN","n":["HWISigner","borrow","borrow_mut","fmt","from","from_device","id","into","sign_transaction","try_from","try_into","type_id","vzip"],"q":[[0,"bdk_hwi"],[13,"bdk_hwi::signer"],[14,"core::fmt"],[15,"hwi::types"],[16,"hwi::error"],[17,"core::result"],[18,"secp256k1::context::alloc_only"],[19,"secp256k1"],[20,"bdk_wallet::wallet::signer"],[21,"bitcoin::psbt"],[22,"core::any"]],"i":[0,3,3,3,3,3,3,3,3,3,3,3,3],"f":"`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{f}}{b{dh}}}j}{cc{}}{{{b{l}}n}{{Ab{fA`}}}}{{{b{f}}{b{{Af{Ad}}}}}Ah}{ce{}{}}{{{b{f}}{b{dAj}}{b{Al}}{b{{Af{Ad}}}}}{{Ab{AnB`}}}}{c{{Ab{e}}}{}{}}0{{{b{c}}}Bb{}}3","D":"j","p":[[1,"reference"],[0,"mut"],[5,"HWISigner",0,13],[5,"Formatter",14],[8,"Result",14],[5,"HWIDevice",15],[5,"HWIChain",15],[6,"Error",16],[6,"Result",17],[6,"All",18],[5,"Secp256k1",19],[6,"SignerId",20],[5,"Psbt",21],[5,"SignOptions",20],[1,"unit"],[6,"SignerError",20],[5,"TypeId",22]],"r":[[0,13]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgAAwACAAIABwAAAAkABAA="}],\ -["bdk_sqlite",{"t":"GPPFNNNNNNNNNNNNNENNNNNNNNNNOO","n":["Error","Network","Sqlite","Store","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","into","into","new","read","rusqlite","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write","expected","given"],"q":[[0,"bdk_sqlite"],[28,"bdk_sqlite::Error"],[30,"bdk_sqlite::store"],[31,"core::fmt"],[32,"rusqlite"],[33,"rusqlite::error"],[34,"core::result"],[35,"core::cmp"],[36,"serde::de"],[37,"serde::ser"],[38,"core::marker"],[39,"bdk_chain::tx_data_traits"],[40,"bdk_chain::changeset"],[41,"core::option"],[42,"alloc::string"],[43,"core::any"]],"i":[0,6,6,0,3,6,3,6,3,6,6,3,6,3,6,3,3,0,6,3,6,3,6,3,6,3,6,3,20,20],"f":"````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{f{ce}}}}{b{dh}}}j{}{}}{{{b{l}}{b{dh}}}j}0{cc{}}0{ce{}{}}0{n{{Ab{{f{ce}}A`}}}{AdAfAhAj}{AlAfAhAj}}{{{b{d{f{ce}}}}}{{Ab{{B`{{An{ce}}}}l}}}{AdAfAhAj}{AlAfAhAj}}`{{{b{c}}}Bb{}}{c{{Ab{e}}}{}{}}000{{{b{c}}}Bd{}}055{{{b{d{f{ce}}}}{b{{An{ce}}}}}{{Ab{Bfl}}}{AdAfAhAj}{AlAfAhAj}}``","D":"Ah","p":[[1,"reference"],[0,"mut"],[5,"Store",0,30],[5,"Formatter",31],[8,"Result",31],[6,"Error",0],[5,"Connection",32],[6,"Error",33],[6,"Result",34],[10,"Ord",35],[10,"Deserialize",36],[10,"Serialize",37],[10,"Send",38],[10,"Anchor",39],[5,"CombinedChangeSet",40],[6,"Option",41],[5,"String",42],[5,"TypeId",43],[1,"unit"],[15,"Network",28]],"r":[[3,30]],"b":[[9,"impl-Debug-for-Error"],[10,"impl-Display-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABIAAwAFAAYAEgAJAB0AAQA="}],\ ["bdk_testenv",{"t":"FEEEONNEOENNNNNNNNNNNNNNNNNNN","n":["TestEnv","anyhow","bitcoincore_rpc","bitcoind","bitcoind","borrow","borrow_mut","electrsd","electrsd","electrum_client","electrum_client","from","genesis_hash","into","invalidate_blocks","make_checkpoint_tip","mine_blocks","mine_empty_block","new","reorg","reorg_empty_blocks","reset_electrsd","rpc_client","send","try_from","try_into","type_id","vzip","wait_until_electrum_sees_block"],"q":[[0,"bdk_testenv"],[29,"electrum_client::api"],[30,"bitcoin::blockdata::block"],[31,"anyhow"],[32,"bdk_chain::local_chain"],[33,"bitcoin::address"],[34,"core::option"],[35,"alloc::vec"],[36,"bitcoincore_rpc::client"],[37,"bitcoin_units::amount"],[38,"bitcoin::blockdata::transaction"],[39,"core::result"],[40,"core::any"]],"i":[0,0,0,0,3,3,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],"f":"`````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}```{{{b{f}}}{{b{{`{h}}}}}}{cc{}}{{{b{f}}}{{l{j}}}}{ce{}{}}{{{b{f}}n}{{l{A`}}}}{{{b{f}}}Ab}{{{b{f}}n{Af{Ad}}}{{l{{Ah{j}}}}}}{{{b{f}}}{{l{{Aj{nj}}}}}}{{}{{l{f}}}}{{{b{f}}n}{{l{{Ah{j}}}}}}{{{b{f}}n}{{l{{Ah{{Aj{nj}}}}}}}}{f{{l{f}}}}{{{b{f}}}{{b{{`{Al}}}}}}{{{b{f}}{b{{Ad{An}}}}B`}{{l{Bb}}}}{c{{Bd{e}}}{}{}}0{{{b{c}}}Bf{}}<{{{b{f}}}{{l{A`}}}}","D":"An","p":[[1,"reference"],[0,"mut"],[5,"TestEnv",0],[10,"ElectrumApi",29],[5,"BlockHash",30],[8,"Result",31],[1,"usize"],[1,"unit"],[5,"CheckPoint",32],[5,"Address",33],[6,"Option",34],[5,"Vec",35],[1,"tuple"],[10,"RpcApi",36],[6,"NetworkChecked",33],[5,"Amount",37],[5,"Txid",38],[6,"Result",39],[5,"TypeId",40]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA4ABAAAAAAAAgAIABYAAAAZAAMA"}],\ -["bdk_tmp_plan",{"t":"FKPPPPFFGGFFPPPGPPONNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNOONHNNNNOOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNOOOOOOOO","n":["Assets","CanDerive","Complete","DerivationError","Incomplete","Legacy","Plan","PlanKey","PlanState","RequiredSignatures","Requirements","SatisfactionMaterial","Segwitv0","SigHashP2wpkh","SigHashTaproot","SigningError","TapKey","TapScript","asset_key","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","can_derive","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","derivation_hint","descriptor_key","ecdsa_sigs","expected_weight","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash160","hash160_images","hash160_preimages","hash256","hash256_images","hash256_preimages","into","into","into","into","into","into","into","into","keys","max_locktime","min_version","plan_satisfaction","required_locktime","required_sequence","requirements","requires_hash_preimages","ripemd160","ripemd160_images","ripemd160_preimages","schnorr_sigs","sha256","sha256_images","sha256_preimages","sign_with_keymap","signatures","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_complete","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","txo_age","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_version","final_script_sig","final_script_witness","keys","keys","leaf_hash","merkle_root","plan_key","plan_keys"],"q":[[0,"bdk_tmp_plan"],[151,"bdk_tmp_plan::PlanState"],[153,"bdk_tmp_plan::RequiredSignatures"],[159,"miniscript::descriptor::key"],[160,"bitcoin::bip32"],[161,"core::option"],[162,"bdk_tmp_plan::requirements"],[163,"core::clone"],[164,"bdk_tmp_plan::template"],[165,"core::fmt"],[166,"bitcoin::crypto::sighash"],[167,"miniscript::descriptor"],[168,"bitcoin::blockdata::locktime::absolute"],[169,"bitcoin::blockdata::transaction"],[170,"secp256k1"],[171,"core::result"],[172,"core::borrow"],[173,"secp256k1::context"],[174,"alloc::string"],[175,"core::any"],[176,"bitcoin::blockdata::script::witness_version"]],"i":[0,0,42,10,42,9,0,0,0,0,0,0,9,10,10,0,9,9,11,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,3,7,9,10,11,12,13,14,7,9,10,11,12,13,14,7,9,13,14,11,11,13,12,7,9,10,10,11,12,13,14,42,7,9,10,10,10,10,11,12,13,14,14,7,13,14,7,13,42,7,9,10,11,12,13,14,14,14,12,0,12,12,12,7,14,7,13,13,14,7,13,9,7,7,9,10,11,12,13,14,10,12,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,14,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,12,45,45,46,47,48,49,49,48],"f":"```````````````````{{{b{c}}}{{b{e}}}{}{}}0000000{{{b{dc}}}{{b{de}}}{}{}}0000000{{{b{f}}{b{h}}}{{l{j}}}}{{{b{{n{c}}}}}{{n{c}}}A`}{{{b{{Ab{c}}}}}{{Ab{c}}}A`}{{{b{Ad}}}Ad}{{{b{{Af{c}}}}}{{Af{c}}}A`}{{{b{{Ah{c}}}}}{{Ah{c}}}A`}{{{b{Aj}}}Aj}{{{b{{Al{c}}}}}{{Al{c}}}A`}{{{b{c}}{b{de}}}An{}{}}000000{{}{{n{c}}}{}}{{}{{Ab{c}}}{}}{{}Aj}{{}{{Al{c}}}{}}```{{{b{{Ah{c}}}}}B`A`}{{{b{{n{c}}}}{b{dBb}}}BdBf}{{{b{{Ab{c}}}}{b{dBb}}}BdBf}{{{b{Ad}}{b{dBb}}}Bd}0{{{b{{Af{c}}}}{b{dBb}}}BdBf}{{{b{{Ah{c}}}}{b{dBb}}}BdBf}{{{b{Aj}}{b{dBb}}}Bd}{{{b{{Al{c}}}}{b{dBb}}}BdBf}{cc{}}000{BhAd}{BjAd}{BlAd}3333``````{ce{}{}}0000000``{{{b{{Ah{c}}}}}{{l{Bn}}}A`}{{{b{{C`{h}}}}{b{{Al{c}}}}}{{l{{Ah{c}}}}}{fA`}}{{{b{{Ah{c}}}}}{{l{Cb}}}A`}{{{b{{Ah{c}}}}}{{l{Cd}}}A`}{{{b{{Ah{c}}}}}{{n{c}}}A`}{{{b{{n{c}}}}}Cf{}}```````{{{b{{Ab{Ch}}}}B`{b{Cj}}{b{{Cl{c}}}}{l{Cn}}{l{D`}}{b{d{Db{e}}}}{b{dAj}}{b{{Dd{g}}}}}{{Df{CfAd}}}{{Dj{Dh}}}{{Dj{Dl}}}{DnE`}}`{{{b{c}}}e{}{}}000000{{{b{c}}}Eb{}}{{{b{{Ah{c}}}}{b{Aj}}}{{Ed{c}}}A`}{c{{Df{e}}}{}{}}000000000000000`{{{b{c}}}Ef{}}0000000<<<<<<<<{{{b{{Ah{c}}}}}{{l{Eh}}}A`}````````","D":"Fl","p":[[1,"reference"],[0,"mut"],[10,"CanDerive",0],[5,"DefiniteDescriptorKey",159],[5,"DerivationPath",160],[6,"Option",161],[5,"Requirements",0,162],[10,"Clone",163],[6,"RequiredSignatures",0,162],[6,"SigningError",0,162],[5,"PlanKey",0,164],[5,"Plan",0],[5,"SatisfactionMaterial",0],[5,"Assets",0],[1,"unit"],[1,"usize"],[5,"Formatter",165],[8,"Result",165],[10,"Debug",165],[6,"Error",160],[6,"TaprootError",166],[6,"P2wpkhError",166],[1,"u32"],[6,"Descriptor",167],[6,"LockTime",168],[5,"Sequence",169],[1,"bool"],[6,"DescriptorPublicKey",159],[8,"KeyMap",167],[6,"Prevouts",166],[6,"TapSighashType",166],[6,"EcdsaSighashType",166],[5,"SighashCache",166],[5,"Secp256k1",170],[6,"Result",171],[5,"TxOut",169],[10,"Borrow",172],[5,"Transaction",169],[10,"Signing",173],[10,"Verification",173],[5,"String",174],[6,"PlanState",0],[5,"TypeId",175],[6,"WitnessVersion",176],[15,"Complete",151],[15,"Legacy",153],[15,"Segwitv0",153],[15,"TapScript",153],[15,"TapKey",153]],"r":[[7,164],[9,162],[10,162],[15,162]],"b":[[60,"impl-Display-for-SigningError"],[61,"impl-Debug-for-SigningError"],[70,"impl-From%3CError%3E-for-SigningError"],[71,"impl-From%3CTaprootError%3E-for-SigningError"],[72,"impl-From%3CP2wpkhError%3E-for-SigningError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGkAEAABAAEABAABAA4AAgAUACIAOwAHAEcAAgBOAAAAUQAAAFwAAQBfAAAAYgAAAGQAAABoAAAAawAAAG0AKQCaAAEA"}],\ -["bdk_wallet",{"t":"PPEPGPFEEGEFNNDNNNNNNNNENNNNNNNNNOOCQNNNNNNNNNNQNNNNNNNNNNOOCDNONCONNNEENNNNNNNNNNNNNONNNNOHNNNNCOOOPPPIGEGIKTIKRGFPPPPEKGPPPPTIPPPPPPPPPPNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNMNNMNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNCNONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNONNNNNNNNNMNNNNCNNNNNNNNNNNMNNNCNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHPPGPPPPPPPPPPPNNNNNNNNNNNNNNNNNNPPPGPFIPPIPPPPPPPPPPPGFGPPPPPGGPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNONNONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFKIFFFFNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPKGGGRRKGPKKFKPPPRGIPPPPPRPFPKGPPPFFGFPIPPPHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNNOONHNMNNHNMNNOONNNNNNMNNNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMMMFGFPIPPPKGPPPPPPGGPFFNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNCONNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNMNONONNNNNNNNONNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNCNNNNNNNNNNNNONNNNNNNNHOOOOOOOOPPFPKFIGGPFPFNNNNNNNNNNNNNNNNNNMNNNHNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOGPPGPPPPPPPGPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOFIOONNNNNNNNNNNOONNNNNNPPPPPPPKPPPPPPPPPPPPPPPPFKGGGFFFPGKPNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNMNONONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOGGPPGPPPPPPFGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO","n":["External","Foreign","HdKeyPaths","Internal","KeychainKind","Local","LocalOutput","SignOptions","TxBuilder","Utxo","Wallet","WeightedUtxo","as_byte","as_ref","bitcoin","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","confirmation_time","derivation_index","descriptor","descriptor","deserialize","deserialize","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fragment","from","from","from","from","hash","hash","into","into","into","into","is_spent","keychain","keys","miniscript","outpoint","outpoint","partial_cmp","psbt","satisfaction_weight","sequence","serialize","serialize","signer","template","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txout","type_id","type_id","type_id","type_id","utxo","version","vzip","vzip","vzip","vzip","wallet","outpoint","psbt_input","sequence","Bare","Bare","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","FALSE","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Pkh","Pkh","Policy","ScriptContext","Segwitv0","Sh","Sh","Sh","Single","TRUE","TapKeyOrigins","Tr","Tr","Tr","Wpkh","Wpkh","Wpkh","Wsh","Wsh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","descriptor_id","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","ExternalAndInternalAreTheSame","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","fmt","fmt","from","from","from","from","from","from","from","from","into","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","build","build","build","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_default_with_aux_rand","generate_with_aux_rand","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","n","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","Descriptor","Descriptor","Descriptor","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","balance","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_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone_into","clone_into","coin_selection","confirmed","default","default","deref","derivation_index","derivation_of_spk","descriptor_checksum","deserialize","eq","eq","error","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","is_dust","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load_from_changeset","local_chain","mark_used","network","network","new","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","public_descriptor","reveal_addresses_to","reveal_next_address","secp_ctx","sent_and_received","serialize","sign","signer","spk_index","staged","start_full_scan","start_sync_with_revealed_spks","take_staged","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unbroadcast_transactions","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","csv","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","label","serialize","to_string","try_from","try_into","type_id","vzip","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Psbt","Segwitv0","SighashTaproot","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","remove","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","Custom","InvalidOutpoint","InvalidTxid","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone_into","clone_into","clone_into","cmp","coin_selection","current_height","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","fee_absolute","fee_rate","finish","finish_with_aux_rand","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","include_output_redeem_witness_script","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","policy_path","set_recipients","sighash","sort_tx","sort_tx_with_aux_rand","to_owned","to_owned","to_owned","to_string","to_string","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","foreign_utxo","input_txid","input_sort","output_sort"],"q":[[0,"bdk_wallet"],[97,"bdk_wallet::Utxo"],[100,"bdk_wallet::descriptor"],[352,"bdk_wallet::descriptor::checksum"],[354,"bdk_wallet::descriptor::error"],[386,"bdk_wallet::descriptor::policy"],[533,"bdk_wallet::descriptor::policy::BuildSatisfaction"],[536,"bdk_wallet::descriptor::policy::Satisfaction"],[547,"bdk_wallet::descriptor::policy::SatisfiableItem"],[557,"bdk_wallet::descriptor::template"],[693,"bdk_wallet::keys"],[994,"bdk_wallet::psbt"],[998,"bdk_wallet::wallet"],[1200,"bdk_wallet::wallet::ApplyBlockError"],[1202,"bdk_wallet::wallet::NewOrLoadError"],[1208,"bdk_wallet::wallet::coin_selection"],[1300,"bdk_wallet::wallet::coin_selection::Error"],[1302,"bdk_wallet::wallet::coin_selection::Excess"],[1307,"bdk_wallet::wallet::error"],[1378,"bdk_wallet::wallet::error::CreateTxError"],[1384,"bdk_wallet::wallet::export"],[1407,"bdk_wallet::wallet::signer"],[1584,"bdk_wallet::wallet::signer::SignerContext"],[1585,"bdk_wallet::wallet::tx_builder"],[1698,"bdk_wallet::wallet::tx_builder::AddForeignUtxoError"],[1700,"bdk_wallet::wallet::tx_builder::TxOrdering"],[1702,"bdk_wallet::types"],[1703,"core::cmp"],[1704,"core::result"],[1705,"serde::de"],[1706,"core::fmt"],[1707,"core::hash"],[1708,"bitcoin::blockdata::transaction"],[1709,"core::option"],[1710,"serde::ser"],[1711,"core::any"],[1712,"miniscript::descriptor"],[1713,"bitcoin::network"],[1714,"bitcoin::address"],[1715,"miniscript"],[1716,"miniscript::miniscript"],[1717,"miniscript::miniscript::decode"],[1718,"miniscript::miniscript::context"],[1719,"miniscript::iter::tree"],[1720,"miniscript::descriptor::key"],[1721,"alloc::vec"],[1722,"miniscript::miniscript::satisfy"],[1723,"miniscript::plan"],[1724,"bitcoin_hashes::sha256"],[1725,"miniscript::miniscript::hash256"],[1726,"bitcoin_hashes::ripemd160"],[1727,"bitcoin_hashes::hash160"],[1728,"core::clone"],[1729,"secp256k1"],[1730,"bitcoin::crypto::key"],[1731,"secp256k1::context"],[1732,"bdk_chain::descriptor_ext"],[1733,"miniscript::blanket_traits"],[1734,"bitcoin::blockdata::script::owned"],[1735,"miniscript::miniscript::analyzable"],[1736,"secp256k1::context::alloc_only"],[1737,"bitcoin::blockdata::script::borrowed"],[1738,"core::ops::range"],[1739,"core::ops::function"],[1740,"miniscript::descriptor::bare"],[1741,"miniscript::descriptor::tr"],[1742,"miniscript::descriptor::segwitv0"],[1743,"miniscript::descriptor::sh"],[1744,"miniscript::miniscript::types"],[1745,"miniscript::miniscript::types::extra_props"],[1746,"miniscript::expression"],[1747,"miniscript::miniscript::iter"],[1748,"miniscript::policy::semantic"],[1749,"miniscript::policy"],[1750,"bitcoin_units::weight"],[1751,"alloc::collections::btree::map"],[1752,"alloc::string"],[1753,"hex_conservative::error"],[1754,"bitcoin::bip32"],[1755,"base58ck::error"],[1756,"miniscript::descriptor::sortedmulti"],[1757,"core::str::traits"],[1758,"core::convert"],[1759,"core::default"],[1760,"rand_core"],[1761,"bitcoin_units::amount"],[1762,"bitcoin_units::fee_rate"],[1763,"bdk_chain::balance"],[1764,"alloc::sync"],[1765,"bdk_chain"],[1766,"core::iter::traits::iterator"],[1767,"bitcoin::blockdata::block"],[1768,"bdk_chain::local_chain"],[1769,"bdk_chain::chain_data"],[1770,"core::iter::traits::collect"],[1771,"bdk_chain::tx_graph"],[1772,"bitcoin::psbt"],[1773,"bdk_chain::spk_client"],[1774,"bitcoin::psbt::map::input"],[1775,"bdk_wallet::wallet::utils"],[1776,"core::iter::traits::double_ended"],[1777,"bdk_chain::indexer::keychain_txout"],[1778,"bitcoin::psbt::error"],[1779,"core::marker"],[1780,"bitcoin::blockdata::script::push_bytes::primitive"],[1781,"bitcoin::blockdata::locktime::absolute"]],"i":[1,8,0,1,0,8,0,0,0,0,0,0,1,1,0,1,6,7,8,1,6,7,8,0,1,6,7,8,1,6,7,8,1,6,6,0,0,1,6,1,6,7,8,1,6,7,8,0,1,6,7,8,1,6,1,6,7,8,6,6,0,0,8,6,1,0,7,8,1,6,0,0,1,6,7,8,1,6,7,8,1,6,7,8,8,6,1,6,7,8,7,0,1,6,7,8,0,248,248,248,94,249,24,0,0,0,0,0,0,31,0,0,33,0,0,35,94,249,24,0,0,0,94,249,24,35,31,0,94,249,24,94,249,24,94,249,24,35,24,54,55,31,31,24,24,54,55,31,24,54,55,31,31,31,31,0,33,54,55,33,55,33,33,54,55,33,54,55,33,33,54,55,33,54,55,33,54,55,0,24,54,55,31,24,54,55,31,24,54,55,31,31,24,24,24,24,24,24,31,24,31,24,54,55,31,0,24,31,31,69,24,31,24,24,24,54,55,31,31,24,31,24,24,24,24,24,24,24,54,55,31,31,31,24,31,31,31,24,31,31,31,24,24,31,31,24,24,54,55,31,24,54,55,31,31,24,93,94,24,24,31,31,31,24,31,31,33,54,55,31,24,31,24,33,54,55,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,33,31,24,31,31,24,54,55,31,33,54,55,24,24,0,31,24,31,24,31,31,24,24,31,24,31,33,54,55,31,0,24,54,55,31,24,31,24,33,33,24,31,24,54,55,31,24,54,55,31,31,24,54,55,31,24,24,54,55,31,31,0,0,74,74,0,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,121,116,116,0,122,0,0,121,120,0,121,121,116,116,116,121,122,71,116,122,122,0,0,0,71,71,120,121,121,0,0,121,121,121,120,120,121,122,73,123,116,71,120,121,122,73,123,116,71,120,121,122,73,123,71,120,121,122,73,123,71,73,123,123,120,121,122,73,123,116,120,121,122,73,123,116,116,71,120,121,122,122,73,73,123,116,71,73,120,123,121,73,120,121,122,73,123,116,71,121,122,123,73,123,73,73,120,121,122,73,123,123,120,121,122,73,123,71,116,120,121,122,73,123,116,71,120,121,122,73,123,116,71,120,121,122,73,123,116,71,120,121,122,73,123,116,71,250,250,250,251,252,253,252,253,252,253,252,253,252,253,254,255,256,257,258,259,259,258,260,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,124,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,125,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,126,128,129,130,132,134,135,136,137,138,139,140,117,0,0,0,0,158,158,0,0,147,0,0,0,0,117,117,117,33,0,0,30,117,117,103,35,158,151,0,151,0,0,30,35,103,0,0,0,0,30,0,147,103,35,0,262,35,151,143,148,30,144,117,142,35,103,145,146,147,151,143,148,30,144,117,142,35,103,145,146,147,142,33,33,33,33,33,33,33,33,33,143,30,144,142,35,103,145,146,147,143,30,144,142,35,103,145,146,147,142,35,145,147,144,144,143,35,35,142,30,142,35,103,145,146,147,148,30,144,117,117,142,142,35,35,103,103,145,146,147,142,151,151,151,143,148,30,144,117,117,117,142,35,35,103,145,146,147,148,148,35,103,142,35,35,158,161,161,158,158,161,151,35,142,35,145,147,151,143,148,30,144,117,142,35,103,145,146,147,35,127,133,143,143,148,35,103,133,151,143,143,35,103,151,151,35,262,30,35,103,262,30,262,30,35,35,142,145,146,142,0,35,33,142,142,0,142,33,142,35,145,146,33,148,142,35,145,147,33,142,142,142,142,35,33,142,0,143,30,144,142,35,103,145,146,147,103,117,142,35,103,33,33,142,151,143,148,30,144,117,142,35,103,145,146,147,151,143,148,30,144,117,142,35,103,145,146,147,151,143,148,30,144,117,142,35,103,145,146,147,151,143,148,30,144,117,142,35,103,145,146,147,0,168,168,168,0,0,0,202,0,199,200,201,0,0,201,201,201,200,200,200,0,0,202,0,0,171,172,195,172,172,172,172,172,172,172,171,172,185,195,199,200,201,202,171,172,185,195,199,200,201,202,172,172,172,172,172,213,185,172,171,185,171,185,0,171,171,185,195,172,172,172,171,171,195,0,0,172,171,171,172,185,195,195,199,199,200,200,201,201,202,202,171,172,185,185,185,195,199,200,201,202,172,172,172,172,185,171,195,213,172,172,172,171,172,185,195,199,200,201,202,210,172,195,172,185,172,172,172,172,172,172,172,172,213,172,172,172,172,172,172,172,172,172,172,172,172,172,171,172,0,172,172,172,172,172,171,185,171,195,199,200,201,202,171,172,171,171,171,172,185,195,199,200,201,202,171,172,185,195,199,200,201,202,0,172,171,172,185,195,199,200,201,202,172,172,172,171,171,172,185,195,199,200,201,202,0,263,263,264,265,264,265,266,266,225,225,0,226,0,0,0,0,0,225,0,226,0,225,226,224,220,221,222,225,226,224,220,221,222,220,221,222,220,221,222,223,220,221,222,0,220,221,222,224,224,225,225,226,224,220,221,222,225,226,224,220,221,222,225,226,224,220,221,222,224,222,224,224,220,221,222,225,225,226,224,220,221,222,225,226,224,220,221,222,225,226,224,220,221,222,225,226,224,220,221,222,267,267,268,269,269,268,269,0,207,227,0,207,207,192,207,192,207,207,0,207,207,207,207,207,227,207,207,207,207,207,192,192,207,192,227,207,207,227,207,192,227,207,192,227,227,227,227,207,207,192,192,227,207,207,207,207,207,207,192,227,207,192,227,227,207,192,227,207,192,227,207,192,227,207,192,227,207,192,270,270,271,271,272,273,0,0,274,229,229,229,229,229,229,229,229,229,229,229,229,274,229,229,229,229,229,229,229,234,230,234,198,230,234,198,0,198,198,198,231,198,198,198,198,198,198,198,234,230,198,231,198,0,0,0,0,0,0,0,0,231,0,0,198,70,197,197,70,197,230,198,231,232,173,70,197,234,230,198,231,232,173,70,197,234,70,230,231,232,173,70,197,234,230,231,232,173,70,197,234,230,173,173,70,197,234,232,235,232,232,232,230,231,173,234,70,230,198,198,231,232,173,70,197,234,230,230,230,198,231,232,173,70,197,234,230,235,232,232,232,70,230,198,231,232,173,70,197,234,232,70,230,173,70,239,232,232,232,174,232,197,70,197,230,231,232,173,70,197,234,198,197,197,230,198,231,232,173,70,197,234,230,198,231,232,173,70,197,234,230,198,231,232,173,70,197,234,230,198,231,232,173,70,197,234,275,0,0,244,244,0,245,242,242,242,244,245,0,0,243,245,191,191,191,191,191,191,191,191,191,191,243,242,245,244,191,243,242,245,244,191,191,245,244,191,245,244,244,191,191,245,244,191,191,191,191,191,244,191,191,191,191,191,243,243,242,242,245,244,191,243,242,245,244,244,191,191,243,242,245,244,191,191,191,191,191,244,191,191,191,245,245,191,245,244,243,242,191,243,242,245,244,191,243,242,245,244,191,243,242,245,244,191,191,191,243,242,245,244,276,276,277,277],"f":"````````````{{{d{b}}}f}{{{d{b}}}{{d{{h{f}}}}}}`{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000`{{{d{b}}}b}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{c}}{d{je}}}Ab{}{}}000{{{d{b}}{d{b}}}Ad}````{c{{Af{b}}}Ah}{c{{Af{l}}}Ah}{{{d{b}}{d{b}}}Aj}{{{d{l}}{d{l}}}Aj}{{{d{n}}{d{n}}}Aj}{{{d{A`}}{d{A`}}}Aj}{{{d{b}}{d{jAl}}}An}{{{d{l}}{d{jAl}}}An}{{{d{n}}{d{jAl}}}An}{{{d{A`}}{d{jAl}}}An}`{cc{}}000{{{d{b}}{d{jc}}}AbB`}{{{d{l}}{d{jc}}}AbB`}{ce{}{}}000````{{{d{A`}}}Bb}`{{{d{b}}{d{b}}}{{Bd{Ad}}}}``{{{d{A`}}}{{Bd{Bf}}}}{{{d{b}}c}AfBh}{{{d{l}}c}AfBh}``{{{d{c}}}e{}{}}000{c{{Af{e}}}{}{}}0000000{{{d{A`}}}{{d{Bj}}}}`{{{d{c}}}Bl{}}000`{{}{{d{Bn}}}}::::``````````````````````````````````````````{{{d{{C`{c}}}}Cb}{{Af{CdCf}}}{ChCj}}{{}Cl}0{{{d{{Cn{ce}}}}}{{d{{D`{ce}}}}}ChDb}{{{d{{d{{Cn{ce}}}}}}}{{Dd{{d{{Cn{ce}}}}}}}ChDb}{{{d{{C`{Df}}}}Dh}{{Af{{C`{Dj}}Dl}}}}{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{{Cn{ce}}}}}{{Dn{{d{{Cn{ce}}}}}}}ChDb}{{{d{{Cn{ce}}}}{d{g}}}{{Eb{{E`{c}}}}}{CjCh}Db{{Ed{c}}}}0`{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{Cn{cFl}}}}}{{Af{AbEh}}}Ch}{{{d{{Cn{cFn}}}}}{{Af{AbEh}}}Ch}2022102102{{{d{c}}}{{Af{AbEh}}}Ch}00{{{d{{D`{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{D`{cFl}}}}}{{Af{AbEh}}}Ch}{{{d{{D`{cFn}}}}}{{Af{AbEh}}}Ch}{{{d{{h{{Dn{f}}}}}}}{{Af{AbEh}}}}00`{{{d{{C`{c}}}}}{{C`{c}}}{G`Ch}}{{{d{Fl}}}Fl}{{{d{Fn}}}Fn}{{{d{{Cn{ce}}}}}{{Cn{ce}}}{G`Ch}{G`Db}}{{{d{c}}{d{je}}}Ab{}{}}000{{{d{{C`{c}}}}{d{{C`{c}}}}}Ad{GbCh}}{{{d{Fl}}{d{Fl}}}Ad}{{{d{Fn}}{d{Fn}}}Ad}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}AdChDb}{{{d{{Cn{ce}}}}}AjChDb}{{{d{{C`{Df}}}}Dh}{{Af{{C`{Dj}}Dl}}}}{{{d{{C`{Dj}}}}{d{{Gd{c}}}}}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{Df}}}}{d{{Gd{c}}}}Dh}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{c}}}}}GjCh}{{{d{{C`{Df}}}}}Gl}{c{{Af{{C`{e}}}}}AhGn}{c{{Af{{Cn{eg}}}}}AhGnDb}{{{d{{C`{Df}}}}}H`}{{{d{{Cn{ce}}}}}Hb{CjCh}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}Aj{HdCh}}{{{d{Fl}}{d{Fl}}}Aj}{{{d{Fn}}{d{Fn}}}Aj}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}AjChDb}`{{{d{{C`{c}}}}}{{Af{HbCf}}}{ChCj}}`{{{d{{Cn{ce}}}}{d{Hf}}}{{Af{AbHh}}}ChDb}{{{d{Hj}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}}{{{d{{C`{Df}}}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}}{{{d{{Cn{Dfc}}}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}Db}{{{d{{C`{Df}}}}{d{{Gd{c}}}}{d{If}}{Ih{Dh}}}{{Af{{Bd{{Ij{Dh{C`{Gf}}}}}}Dl}}}Gh}{{{d{{C`{c}}}}{d{jAl}}}{{Af{AbIl}}}Ch}0{{{d{Fl}}{d{jAl}}}{{Af{AbIl}}}}{{{d{Fn}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{Cn{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{{C`{c}}}}e}AjCh{{J`{{d{c}}}{{In{Aj}}}}}}{{{d{{Cn{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{{{Jb{c}}}{{C`{c}}}Ch}{cc{}}{{{Jd{c}}}{{C`{c}}}Ch}{{{Jf{c}}}{{C`{c}}}Ch}{{{Jh{c}}}{{C`{c}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}{{{Jl{c}}}{{C`{c}}}Ch}555{{{D`{ce}}}{{Af{{Cn{ce}}Cf}}}ChDb}{{{D`{ce}}JnK`}{{Cn{ce}}}ChDb}{{{d{Bn}}}{{Af{{C`{c}}Cf}}}Gn}{{{d{Bn}}}{{Af{{Cn{ce}}Cf}}}GnDb}{{{d{Bn}}{d{Hf}}}{{Af{{Cn{ce}}Cf}}}GnDb}1{{{d{Kb}}}{{Af{{C`{c}}Cf}}}Gn}{{{d{Kb}}}{{Af{{Cn{ce}}Cf}}}GnDb}{{{d{{Cn{ce}}}}Kd}{{Bd{{d{{Cn{ce}}}}}}}ChDb}{{{d{{Cn{ce}}}}Kd}{{Bd{c}}}ChDb}{{{d{{C`{c}}}}e}{{Af{{Ij{{Dn{{Dn{f}}}}Hb}}Cf}}}{ChCj}{{Kf{c}}}}0{{{d{{Cn{ce}}}}}AjChDb}0{{{d{{C`{Df}}}}}Aj}{{{d{{C`{c}}}}{d{je}}}Ab{KhCh}B`}{{{d{Fl}}{d{jc}}}AbB`}{{{d{Fn}}{d{jc}}}AbB`}{{{d{{Cn{ce}}}}{d{jg}}}AbChDbB`}{ce{}{}}000{{{Cn{ce}}}{{D`{ce}}}ChDb}{{{C`{Df}}}{{Af{{Dn{{C`{Df}}}}Cf}}}}{{Kj{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{Kl{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}99:{{{d{{Cn{ce}}}}}{{L`{ce}}}ChDb}{{{d{{Cn{ce}}}}}{{Lb{ce}}}ChDb}{{{d{{C`{c}}}}}{{Af{{Ld{c}}Cf}}}Ch}{{{d{{Cn{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{{d{{Cn{ce}}}}}{{Af{AbLf}}}ChDb}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{Cn{cFl}}}}}{{Bd{Kd}}}Ch}{{{d{{Cn{cFn}}}}}{{Bd{Kd}}}Ch}{{{d{{Cn{ce}}}}}{{Af{KdCf}}}ChDb}{{{d{{C`{c}}}}}{{Af{KdCf}}}Ch}1{{{d{{C`{c}}}}}{{Af{LhCf}}}Ch}{{}{{d{Bn}}}}00{{{Cn{cLj}}}{{Af{{C`{c}}Cf}}}Ch}{c{{C`{c}}}Ch}{c{{Af{{C`{c}}Cf}}}Ch}{{{Cn{cFl}}}{{Af{{C`{c}}Cf}}}Ch}{{Kd{Dn{c}}}{{Af{{C`{c}}Cf}}}Ch}{{{Jh{c}}}{{C`{c}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}4{{{Cn{cFn}}}{{Af{{C`{c}}Cf}}}Ch}3{{c{Bd{{Ll{c}}}}}{{Af{{C`{c}}Cf}}}Ch}614`{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{If}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{Gd{c}}}}{d{Bn}}}{{Af{{Ij{{C`{Df}}{M`{DfLn}}}}Cf}}}Mb}1{{{d{If}}{d{Hf}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}{{Bd{Ad}}}{MdCh}}{{{d{Fl}}{d{Fl}}}{{Bd{Ad}}}}{{{d{Fn}}{d{Fn}}}{{Bd{Ad}}}}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}{{Bd{Ad}}}ChDb}{{{d{c}}}KdCh}00{{{C`{Dj}}{d{c}}}{{Af{Mf{C`{Dj}}}}}{{Ed{Dj}}}}0`{{{d{{Cn{ce}}}}}AjChDb}{{{d{{C`{c}}}}}{{Af{AbCf}}}Ch}{{{d{{Cn{ce}}}}}{{Af{AbHh}}}ChDb}{{{d{{C`{c}}}}{d{jMh}}e}{{Af{AbCf}}}{ChCj}{{Kf{c}}}}{{{d{{Cn{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}0{{{d{{C`{c}}}}}{{Af{HbCf}}}{ChCj}}{{{d{{C`{c}}}}}Hb{ChCj}}{{{d{{Cn{ce}}}}}KdChDb}{{{d{{C`{c}}}}e}AfChBh}{{{d{{Cn{ce}}}}g}AfChDbBh}{{}Mj}00{{{d{{Cn{ce}}}}{d{{M`{Fhc}}}}}{{Cn{ce}}}ChDb}`{{{d{c}}}e{}{}}000{{{d{c}}}Ml{}}0{{{d{{C`{Df}}}}{d{{M`{DfLn}}}}}Ml}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}0{{{d{{C`{c}}}}{d{ji}}}{{Af{{Mn{g}}}}}ChCh{}{{N`{ceg}}}}{{{d{{Cn{ce}}}}{d{jk}}}{{Af{{Mn{i}}}}}ChDbCh{}{{N`{cgi}}}}{c{{Af{e}}}{}{}}0000000`{{{d{c}}}Bl{}}000={ce{}{}}000{{{d{{Cn{ce}}}}}AjChDb}{{{d{Bn}}}{{Af{MlId}}}}{{{d{Bn}}}{{Af{{Nb{f}}Id}}}}``````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Id}}{d{jAl}}}An}0{NdId}{CfId}{NfId}{NhId}{NjId}{cc{}}{NlId}{NnId}>{{{d{c}}}Ml{}}{c{{Af{e}}}{}{}}0{{{d{c}}}Bl{}}{ce{}{}}```````````````````````````````````>>>>>>>======={{{d{O`}}}O`}{{{d{Ob}}}Ob}{{{d{Od}}}Od}{{{d{Ib}}}Ib}{{{d{Of}}}Of}{{{d{Hn}}}Hn}{{{d{c}}{d{je}}}Ab{}{}}00000``{{}Of}{{{d{O`}}{d{O`}}}Aj}{{{d{Ob}}{d{Ob}}}Aj}{{{d{Od}}{d{Od}}}Aj}{{{d{Ib}}{d{Ib}}}Aj}{{{d{Of}}{d{Of}}}Aj}{{{d{Nh}}{d{Nh}}}Aj}{{{d{O`}}{d{jAl}}}An}{{{d{Ob}}{d{jAl}}}An}{{{d{Od}}{d{jAl}}}An}{{{d{Ib}}{d{jAl}}}An}{{{d{Of}}{d{jAl}}}An}{{{d{Nh}}{d{jAl}}}An}0{{{d{Hn}}{d{jAl}}}An}{cc{}}00{AjOd}1{ObIb}222{{{d{Ib}}{d{{M`{Ml{Dn{Kd}}}}}}}{{Af{OfNh}}}}{{{d{O`}}{d{jc}}}AbB`}{{{d{Of}}{d{jc}}}AbB`}{{{d{Ob}}}Ml}`{ce{}{}}000000{{{d{Ob}}}Aj}{{{d{Od}}}Aj}{{{d{Of}}}Aj}`{{{d{Of}}{d{Of}}}{{Bd{Ad}}}}{{{d{Ib}}}Aj}`{{{d{O`}}c}AfBh}{{{d{Ob}}c}AfBh}{{{d{Od}}c}AfBh}{{{d{Ib}}c}AfBh}{{{d{Of}}c}AfBh}`{{{d{c}}}e{}{}}00000{{{d{c}}}Ml{}}{c{{Af{e}}}{}{}}0000000000000{{{d{c}}}Bl{}}000000>>>>>>>``````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{OhCb}{{Af{OjId}}}}{{{Ol{c}}Cb}{{Af{OjId}}}{{On{Fl}}}}{{{A@`{c}}Cb}{{Af{OjId}}}{{On{Fn}}}}{{{A@b{c}}Cb}{{Af{OjId}}}{{On{Fn}}}}{{{A@d{c}}Cb}{{Af{OjId}}}{{On{A@f}}}}{{{A@h{c}}Cb}{{Af{OjId}}}{{A@j{Fl}}}}{{{A@l{c}}Cb}{{Af{OjId}}}{{A@j{Fl}}}}{{{A@n{c}}Cb}{{Af{OjId}}}{{A@j{Fn}}}}{{{AA`{c}}Cb}{{Af{OjId}}}{{A@j{Fn}}}}{{{AAb{c}}Cb}{{Af{OjId}}}{{A@j{Fn}}}}{{{AAd{c}}Cb}{{Af{OjId}}}{{A@j{Fn}}}}{{{AAf{c}}Cb}{{Af{OjId}}}{{A@j{A@f}}}}{{{AAh{c}}Cb}{{Af{OjId}}}{{A@j{A@f}}}}{cc{}}00000000000{ce{}{}}00000000000{{Oj{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{c{d{{Gd{I`}}}}Cb}{{Af{{Ij{{C`{Df}}{M`{DfLn}}}}Id}}}{}}00000000000{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000444444444444```````````````````````````````````````````{{}AAj}{{}Cl}{{DfDh}{{Af{DjDl}}}}{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{{d{{AAl{ce}}}}{d{g}}}{{Eb{{E`{c}}}}}{CjCh}Db{{Ed{c}}}}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}00000{{{d{c}}}{{Af{AbEh}}}Ch}{{{d{{D`{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{h{{Dn{f}}}}}}}{{Af{AbEh}}}}{{{d{{AAn{ce}}}}}{{AAn{ce}}}G`Db}{{{d{Cl}}}Cl}{{{d{AB`}}}AB`}{{{d{{AAl{ce}}}}}{{AAl{ce}}}{G`Ch}{G`Db}}{{{d{Df}}}Df}{{{d{Ln}}}Ln}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{ABf}}}ABf}{{{d{c}}{d{je}}}Ab{}{}}00000000{{{d{{AAl{ce}}}}{d{{AAl{ce}}}}}Ad{GbCh}{GbDb}}{{{d{Df}}{d{Df}}}Ad}{{{d{ABb}}{d{ABb}}}Ad}{{{d{ABf}}{d{ABf}}}Ad}`{{}AB`}{{{d{{AAn{ce}}}}}{{d{g}}}{}Db{}}{{DfDh}{{Af{DjDl}}}}{c{{Af{Df}}}Ah}{{{d{{AAl{ce}}}}}Hb{CjCh}Db}{{{d{Cl}}{d{Cl}}}Aj}{{{d{{AAl{ce}}}}{d{{AAl{ce}}}}}Aj{HdCh}{HdDb}}{{{d{Df}}{d{Df}}}Aj}{{{d{Ln}}{d{Ln}}}Aj}{{{d{ABb}}{d{ABb}}}Aj}{{{d{ABd}}{d{ABd}}}Aj}{{{d{ABf}}{d{ABf}}}Aj}{{{d{{ABh{c}}}}{d{jAl}}}An{ABjDb}}{{{d{Cl}}{d{jAl}}}An}{{{d{AB`}}{d{jAl}}}An}{{{d{Nj}}{d{jAl}}}An}0{{{d{{AAl{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{Df}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{Ln}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{ABb}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABd}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABf}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{AAl{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{ABl{{ABn{c}}}Db}{cc{}}{AC`{{ABn{c}}}Db}1111{CfNj}{NlNj}333{DjDf}4444{{DfAAj}{{ABh{c}}}Db}{{LnAAj}{{ABh{c}}}Db}{{{d{Bn}}}{{Af{Df}}}}{{{d{Bn}}}{{Af{Ln}}}}{{{d{Kb}}}{{Af{{AAl{ce}}Cf}}}{ACbCh}Db}{{{d{Df}}}{{Bd{ACd}}}}{{{d{Df}}}{{Dn{ACd}}}}{c{{Af{{AAn{{ACl{}{{ACf{e}}{ACh{c}}{ACj{g}}}}i}}g}}}{}{{ACn{{h{f}}}}AD`}ABjDb}{{}{{Af{{AAn{ADbc}}e}}}Db{}}{{{d{jc}}}{{Af{{AAn{ADbe}}g}}}{ADdADf}Db{}}{{c{d{je}}}{{Af{{AAn{{ACl{}{{ACf{g}}{ACh{c}}{ACj{i}}}}k}}i}}}{}{ADdADf}{{ACn{{h{f}}}}AD`}ABjDb}{{ce}{{Af{{AAn{{ACl{}{{ACf{e}}{ACh{c}}{ACj{g}}}}i}}g}}}{}{{ACn{{h{f}}}}AD`}ABjDb}{c{{Af{{AAn{ADbe}}g}}}{}Db{}}{{{d{{ABn{c}}}}}AjDb}{{{d{Df}}}Aj}{{{d{{AAl{ce}}}}{d{jg}}}Ab{KhCh}{KhDb}B`}{{{d{Df}}{d{jc}}}AbB`}{{{d{ABb}}{d{jc}}}AbB`}{{{d{ABf}}{d{jc}}}AbB`}{ce{}{}}00000000000{DfADh}{On{{Af{{ABh{c}}Nj}}}Db}{{A@j{Bd{ADj}}ACd}{{Af{{ABh{c}}Nj}}}Db}{{{AAn{ec}}{Bd{ADj}}ACd}{{Af{{ABh{c}}Nj}}}Db{{A@j{c}}}}{{{AAn{ec}}}{{Af{{ABh{c}}Nj}}}Db{{On{c}}}}{{{ABh{c}}}{{Af{{ABh{c}}Nj}}}Db}{Df{{Af{{ABh{c}}Nj}}}Db}{Ln{{Af{{ABh{c}}Nj}}}Db}{A@j{{Af{{ABn{c}}Nj}}}Db}{{{ABn{c}}}{{Af{{ABn{c}}Nj}}}Db}{{{AAn{ec}}}{{Af{{ABn{c}}Nj}}}Db{{A@j{c}}}}{{{AAn{ce}}}c{}Db}{Df{{Dn{Df}}}}{Ln{{Dn{Ln}}}}{{{ABn{c}}Cb}{{Bd{AC`}}}Db}{{{ABn{c}}Cb{d{{Gd{e}}}}}ABlDbMb}{{{d{Df}}}Aj}{{}Aj}{{{d{Cl}}}Aj}2{{{d{Ln}}}Aj}212133{{{d{{AAl{ce}}}}}KdChDb}``{{{d{{AAl{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{}AAj}{{{d{Df}}}ADl}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}44{{{d{AAj}}{d{AAj}}}AAj}5{{}{{d{Bn}}}}{{Kd{Dn{c}}}{{Af{{AAl{ce}}Cf}}}ChDb}{{{d{Df}}}Kd}``{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{ABh{c}}AAj}{{ABh{c}}}Db}{{{d{{AAl{ce}}}}{d{{AAl{ce}}}}}{{Bd{Ad}}}{MdCh}{MdDb}}{{{d{Df}}{d{Df}}}{{Bd{Ad}}}}{{{d{ABb}}{d{ABb}}}{{Bd{Ad}}}}{{{d{ABf}}{d{ABf}}}{{Bd{Ad}}}}{{{d{c}}}KdCh}{{{d{{AAl{ce}}}}}{{d{{h{c}}}}}ChDb}{{{d{{AAl{ce}}}}}{{Af{AbCf}}}ChDb}{{{d{{AAl{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}{{{d{{AAl{ce}}}}}KdChDb}{{{d{Df}}c}AfBh}{{}Mj}{{{d{{AAl{ce}}}}}{{D`{ce}}}{CjCh}Db}{{}AAj}{{{d{c}}}e{}{}}00000000{{{d{Ln}}{d{{Gd{c}}}}}{{Af{DfADn}}}Mb}{{{d{c}}}Ml{}}000{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}0{{{d{{AAl{ce}}}}{d{jk}}}{{Af{{AAl{ge}}{Mn{i}}}}}ChDbCh{}{{N`{cgi}}}}{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000{ce{}{}}00000000000`{{{d{AE`}}}{{Bd{AEb}}}}{{{d{AE`}}}{{Bd{AEd}}}}{{{d{AE`}}Kd}{{Bd{Bj}}}}`````````````````````{{AEfAEf}AEf}{{{d{jAEh}}bAEj{AEn{AEl}}}Ab}`{{{d{AEh}}}{{M`{b{`{{AFd{}{{AF`{{AFb{Hb}}}}}}G`}}}}}}{{{d{jAEh}}{d{AFf}}Dh}{{Af{AbAFh}}}}{{{d{jAEh}}{d{AFf}}DhAFj}{{Af{AbAFl}}}}{{{d{jAEh}}c}Ab{{AG`{}{{AF`{{Ij{{d{AFn}}H`}}}}}}}}{{{d{jAEh}}c}{{Af{AbAFh}}}{{AGd{AGb}}}}{{{d{AEh}}}{{d{{AGh{AGf}}}}}}{{{d{AEh}}}AEf}{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{jc}}}{{d{je}}}{}{}}0000000{{{d{jAEh}}AGj}{{Af{{AGn{AGl}}AH`}}}}{{{d{jAEh}}}{{AGn{AGl}}}}{{{d{AEh}}{d{AFn}}}{{Af{AEbAHb}}}}{{{d{AEh}}{d{AFn}}}{{Af{AEdAHb}}}}{{{d{jAEh}}{d{AFn}}}Ab}``{{{d{AEh}}}AHd}{{{d{AEf}}}AEf}{{{d{AGb}}}AGb}{{{d{c}}{d{je}}}Ab{}{}}0``{{}AEf}{{}AGb}{{{d{AHf}}}{{d{c}}}{}}{{{d{AEh}}b}{{Bd{Dh}}}}{{{d{AEh}}{d{If}}}{{Bd{{Ij{bDh}}}}}}{{{d{AEh}}b}Ml}{c{{Af{AEf}}}Ah}{{{d{AEf}}{d{AEf}}}Aj}{{{d{AHf}}{d{AHf}}}Aj}``{{{d{AEh}}{d{jAHh}}AHj}{{Af{AjAHl}}}}{{{d{AEf}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AEh}}{d{jAl}}}An}{{{d{AGb}}{d{jAl}}}An}{{{d{AHf}}{d{jAl}}}An}0{{{d{AHn}}{d{jAl}}}An}0{{{d{AI`}}{d{jAl}}}An}0{{{d{AIb}}{d{jAl}}}An}0{{{d{AId}}{d{jAl}}}An}0{cc{}}00{AIfAGb}{{{AIh{b}}}AGb}22222{{{d{AEh}}l{Bd{AIj}}Aj}{{Af{AIlAIn}}}}{{{d{AEh}}b}{{AEn{Hl}}}}{{{d{AEh}}AGj}{{Bd{{AJ`{{AEn{AFn}}AGf}}}}}}{{{d{AEh}}Bb}{{Bd{l}}}}````{{{d{jAEh}}AFj}{{Af{AjAJb}}}}{{{d{jAEh}}AFn}Aj}{{{d{jAEh}}BbBj}Ab}{ce{}{}}0000000{{{d{AJd}}{d{If}}}Aj}{{{d{AEh}}{d{If}}}Aj}`{{{d{AEh}}}{{`{{AFd{}{{AF`{{Ij{{d{b}}{d{Kl}}}}}}}}}}}}`{{{d{AEh}}}AJf}{{{d{AEh}}}{{`{{AFd{}{{AF`{l}}}}}}}}0{{{d{AEh}}b}{{`{{AJh{}{{AF`{AHf}}}}}}}}{AJj{{Af{AEhAI`}}}}{{{d{AEh}}}{{d{AJl}}}}{{{d{jAEh}}bDh}Aj}{{{d{AEh}}}Cb}`{{ccCb}{{Af{AEhAHn}}}Kj}{{cc{Bd{AJj}}Cb}{{Af{AEhAIb}}}Kj}{{cc{Bd{AJj}}CbAJn}{{Af{AEhAIb}}}Kj}{{ccCbAJn}{{Af{AEhAHn}}}Kj}{{{d{AEh}}b}Dh}{{{d{jAEh}}b}AHf}{{{d{AEh}}bDh}AHf}{{{d{AEh}}b}{{Af{{Bd{Ib}}Id}}}}{{{d{AEh}}b}{{d{Kl}}}}{{{d{jAEh}}bDh}{{`{{AFd{}{{AF`{AHf}}}}}}}}4{{{d{AEh}}}{{d{{Gd{I`}}}}}}{{{d{AEh}}{d{AFn}}}{{Ij{AEbAEb}}}}{{{d{AEf}}c}AfBh}{{{d{AEh}}{d{jAHh}}AHj}{{Af{AjAHl}}}}`{{{d{AEh}}}{{d{{AK`{b}}}}}}{{{d{AEh}}}{{Bd{{d{AJj}}}}}}{{{d{AEh}}}{{AKb{b}}}}{{{d{AEh}}}AKd}{{{d{jAEh}}}{{Bd{AJj}}}}{{{d{c}}}e{}{}}0{{{d{c}}}Ml{}}00000{{{d{AEf}}}AEb}{{{d{AEh}}}{{`{{AFd{}{{AF`{{AJ`{{AEn{AFn}}AGf}}}}}}}}}}`1{c{{Af{e}}}{}{}}000000000000000`{{{d{AEh}}}{{d{{AGh{AGf}}}}}}{{{d{c}}}Bl{}}0000000{{{d{AEh}}b}{{`{{AFd{}{{AF`{{AFb{Hb}}}}}}G`}}}}{{{d{AEh}}}{{`{{AFd{}{{AF`{{AKf{{AEn{AFn}}AGf}}}}}}}}}}{{{d{jAEh}}bDh}Aj}`{ce{}{}}0000000{{c{Bd{c}}Cb{d{{Gd{I`}}}}}{{Af{MlId}}}Kj}`````````````````````{{{d{c}}}{{d{e}}}{}{}}00000{{{d{jc}}}{{d{je}}}{}{}}00000{{{d{AKh}}}AKh}{{{d{AKj}}}AKj}{{{d{AKl}}}AKl}{{{d{c}}{d{je}}}Ab{}{}}00{{{d{AKn}}{Dn{n}}{Dn{n}}AEdH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKh}}{Dn{n}}{Dn{n}}AEdH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKj}}{Dn{n}}{Dn{n}}AEdH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKl}}{Dn{n}}{Dn{n}}AEdH`{d{If}}}{{Af{AL`ALb}}}}{{H`AEd{d{If}}}ALd}{{}AKh}{{}AKj}{{}AKl}``{{{d{ALb}}{d{jAl}}}An}0{{{d{ALd}}{d{jAl}}}An}{{{d{AL`}}{d{jAl}}}An}{{{d{AKh}}{d{jAl}}}An}{{{d{AKj}}{d{jAl}}}An}{{{d{AKl}}{d{jAl}}}An}{cc{}}00000{ce{}{}}00000{{{d{AL`}}}H`}{H`AKl}`1{{{d{c}}}e{}{}}00{{{d{c}}}Ml{}}{c{{Af{e}}}{}{}}00000000000{{{d{c}}}Bl{}}00000666666`````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{ALf}}}ALf}{{{d{c}}{d{je}}}Ab{}{}}{{{d{ALf}}{d{jAl}}}An}0{{{d{AIn}}{d{jAl}}}An}0{{{d{AH`}}{d{jAl}}}An}0>{ALbAIn}{ALhAIn}{cc{}}{IdAIn}{NhAIn}{ALfAIn}3{ce{}{}}00{{{d{c}}}e{}{}}{{{d{c}}}Ml{}}00{c{{Af{e}}}{}{}}00000{{{d{c}}}Bl{}}00444``````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{ALj}}}{{Bd{Ml}}}}{{{d{ALj}}}Ml}{c{{Af{ALj}}}Ah}{{{d{AEh}}{d{Bn}}Aj}{{Af{ALj{d{Bn}}}}}}{{{d{ALj}}{d{jAl}}}An}0?{{{d{Bn}}}{{Af{ALjc}}}{}}<``{{{d{ALj}}c}AfBh};::9=````````````````````````````````````{{{d{jHl}}ALlAEj{AEn{AEl}}}{{Bd{{AEn{AEl}}}}}}``{{{d{Hl}}{d{{Gd{I`}}}}}Kn}`::::::::99999999{{Kn{d{{C`{Df}}}}{d{{Gd{I`}}}}}Hl}{{{d{ALl}}}ALl}{{{d{ALn}}}ALn}{{{d{{AM`{c}}}}}{{AM`{c}}}{G`AMbABjG`}}{{{d{AEj}}}AEj}{{{d{Hl}}}Hl}{{{d{AHj}}}AHj}{{{d{AMd}}}AMd}{{{d{c}}{d{je}}}Ab{}{}}000000{{{d{ALl}}{d{ALl}}}Ad}{{{d{AEj}}{d{AEj}}}Ad}{{}AEj}{{}Hl}{{}AHj}{{}AMd}{{{d{{AM`{c}}}}}{{d{e}}}{AMbABjG`}{}}{{{d{AMf}}}{{Bd{Ln}}}}{{{d{{AM`{{AMh{AC`}}}}}}}{{Bd{Ln}}}}{{{d{{AM`{{AMj{AC`}}}}}}}{{Bd{Ln}}}}{{{d{{AM`{AMl}}}}}{{Bd{Ln}}}}{{{d{ALl}}{d{ALl}}}Aj}{{{d{ALn}}{d{ALn}}}Aj}{{{d{AEj}}{d{AEj}}}Aj}{{{d{AMd}}{d{AMd}}}Aj}{{{d{Hl}}ALl}{{Bd{{d{{AEn{AEl}}}}}}}}{{{d{ALl}}{d{jAl}}}An}{{{d{AHl}}{d{jAl}}}An}0{{{d{ALn}}{d{jAl}}}An}{{{d{{AM`{c}}}}{d{jAl}}}An{ABjAMbABjG`}}{{{d{AEj}}{d{jAl}}}An}{{{d{Hl}}{d{jAl}}}An}{{{d{AHj}}{d{jAl}}}An}{{{d{AMd}}{d{jAl}}}An}{FhALl}{ADlALl}{cc{}}0000000{{{d{ALl}}{d{jc}}}AbB`}{{{d{AMf}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMh{AC`}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMj{AC`}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{AMl}}}}{d{{Gd{I`}}}}}ALl}{{{d{Hl}}}{{Dn{{d{ALl}}}}}}{ce{}{}}0000000{{cALn}{{AM`{c}}}{AMbABjG`}}{{}Hl}{{{d{ALl}}{d{ALl}}}{{Bd{Ad}}}}{{{d{AEj}}{d{AEj}}}{{Bd{Ad}}}}{{{d{jHl}}ALlAEj}{{Bd{{AEn{AEl}}}}}}{{{d{AMn}}{d{jAHh}}Kd{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}}{{{d{{AM`{{AMh{AC`}}}}}}{d{jAHh}}Kd{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}}{{{d{{AM`{{AMj{AC`}}}}}}{d{jAHh}}Kd{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}}{{{d{{AM`{AMl}}}}{d{jAHh}}Kd{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}}{{{d{AEl}}{d{jAHh}}{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}}{{{d{c}}{d{jAHh}}{d{AHj}}{d{{Gd{I`}}}}}{{Af{AbAHl}}}{}}`{{{d{Hl}}}{{Dn{{d{{AEn{AEl}}}}}}}}`{{{d{c}}}e{}{}}000000{{{d{c}}}Ml{}}``{c{{Af{e}}}{}{}}000000000000000{{{d{c}}}Bl{}}0000000{ce{}{}}0000000````````````````{{{d{j{AGn{c}}}}{d{e}}}{{d{j{AGn{c}}}}}{}{{ANb{AN`}}}}{{{d{j{AGn{c}}}}BbAIlLh}{{Af{{d{j{AGn{c}}}}ANd}}}{}}{{{d{j{AGn{c}}}}BbAIlLhBf}{{Af{{d{j{AGn{c}}}}ANd}}}{}}{{{d{j{AGn{c}}}}}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}HbAEb}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}Bb}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}Bb}{{Af{{d{j{AGn{c}}}}ANf}}}{}}{{{d{j{AGn{c}}}}{d{{h{Bb}}}}}{{Af{{d{j{AGn{c}}}}ANf}}}{}}{{{d{j{AGn{c}}}}Aj}{{d{j{AGn{c}}}}}{}}{{{d{c}}}{{d{e}}}{}{}}0000{{{d{jc}}}{{d{je}}}{}{}}0000{{{d{j{AGn{c}}}}ANh}{{d{j{AGn{c}}}}}{}}{{{d{{AGn{c}}}}}{{AGn{c}}}G`}{{{d{ANj}}}ANj}{{{d{ANh}}}ANh}{{{d{c}}{d{je}}}Ab{}{}}00{{{d{ANh}}{d{ANh}}}Ad}{{{AGn{c}}e}{{AGn{e}}}{}AKn}{{{d{j{AGn{c}}}}Dh}{{d{j{AGn{c}}}}}{}}{{}ANj}{{}ANh}{{{d{j{AGn{c}}}}}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}Hb}{{d{j{AGn{c}}}}}{}}11{{{d{j{AGn{c}}}}Bf}{{d{j{AGn{c}}}}}{}}{{{d{ANh}}{d{ANh}}}Aj}{{{d{j{AGn{c}}}}AEb}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}AEd}{{d{j{AGn{c}}}}}{}}{{{AGn{c}}}{{Af{AHhAIn}}}AKn}{{{AGn{c}}{d{je}}}{{Af{AHhAIn}}}AKnADf}{{{d{{AGn{c}}}}{d{jAl}}}AnABj}{{{d{ANf}}{d{jAl}}}An}0{{{d{ANd}}{d{jAl}}}An}0{{{d{ANj}}{d{jAl}}}An}{{{d{ANh}}{d{jAl}}}An}{cc{}}0000{{{d{ANh}}{d{jc}}}AbB`}>{ce{}{}}0000?{{{d{j{AGn{c}}}}ANl}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}}{{d{j{AGn{c}}}}}{}}0{{{d{j{AGn{c}}}}ANj}{{d{j{AGn{c}}}}}{}}{{{d{ANh}}{d{ANh}}}{{Bd{Ad}}}}{{{d{j{AGn{c}}}}{M`{Ml{Dn{Kd}}}}b}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}{Dn{{Ij{HbAEb}}}}}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}AIj}{{d{j{AGn{c}}}}}{}}{{{d{ANj}}{d{jAFn}}}Ab}{{{d{ANj}}{d{jAFn}}{d{jc}}}AbADf}{{{d{c}}}e{}{}}00{{{d{c}}}Ml{}}0{c{{Af{e}}}{}{}}000000000{{{d{c}}}Bl{}}0000{{{d{j{AGn{c}}}}{Dn{Bb}}}{{d{j{AGn{c}}}}}{}}{{{d{j{AGn{c}}}}ANn}{{d{j{AGn{c}}}}}{}}?????````","D":"FGb","p":[[6,"KeychainKind",0,1702],[1,"reference"],[1,"u8"],[1,"slice"],[0,"mut"],[5,"LocalOutput",0,1702],[5,"WeightedUtxo",0,1702],[6,"Utxo",0,1702],[1,"unit"],[6,"Ordering",1703],[6,"Result",1704],[10,"Deserializer",1705],[1,"bool"],[5,"Formatter",1706],[8,"Result",1706],[10,"Hasher",1707],[5,"OutPoint",1708],[6,"Option",1709],[5,"Sequence",1708],[10,"Serializer",1710],[5,"TxOut",1708],[5,"TypeId",1711],[1,"str"],[6,"Descriptor",100,1712],[6,"Network",1713],[5,"Address",1714],[6,"Error",1715],[10,"MiniscriptKey",1715],[10,"ToPublicKey",1715],[6,"ScriptContextEnum",693],[5,"Miniscript",100,1716],[6,"Terminal",1717],[10,"ScriptContext",693,1718],[6,"Tree",1719],[6,"DescriptorPublicKey",693,1720],[1,"u32"],[5,"DefiniteDescriptorKey",1720],[6,"ConversionError",1720],[5,"Vec",1721],[6,"Placeholder",1722],[5,"Satisfaction",1722],[10,"AssetProvider",1723],[17,"Key"],[6,"ScriptContextError",1718],[17,"Sha256"],[5,"Hash",1724],[17,"Hash256"],[5,"Hash",1725],[17,"Ripemd160"],[5,"Hash",1726],[17,"Hash160"],[5,"Hash",1727],[10,"ParseableKey",1717],[6,"Legacy",100,1718],[6,"Segwitv0",100,1718],[10,"Clone",1728],[10,"Ord",1703],[5,"Secp256k1",1729],[5,"PublicKey",1730],[10,"Verification",1731],[6,"DescriptorType",1712],[5,"DescriptorId",1732],[10,"FromStrKey",1733],[1,"u64"],[5,"ScriptBuf",1734],[10,"PartialEq",1703],[5,"ExtParams",1735],[6,"AnalysisError",1735],[10,"ExtractPolicy",100],[5,"SignersContainer",1407],[6,"BuildSatisfaction",386],[6,"All",1736],[5,"Policy",386],[6,"Error",354],[5,"Script",1737],[5,"Range",1738],[1,"tuple"],[5,"Error",1706],[17,"Output"],[10,"FnMut",1739],[5,"Bare",1740],[5,"Tr",1741],[5,"Pkh",1740],[5,"Wpkh",1742],[5,"Wsh",1742],[5,"Sh",1743],[5,"Type",1744],[5,"ExtData",1745],[5,"Tree",1746],[1,"usize"],[10,"Satisfier",1722],[10,"Hash",1707],[10,"IntoWalletDescriptor",100],[8,"ExtendedDescriptor",100],[8,"KeyMap",693,1712],[5,"Iter",1747],[5,"PkIter",1747],[6,"Policy",1748],[6,"LiftError",1749],[5,"Weight",1750],[6,"BareCtx",1718],[6,"TapTree",1741],[6,"DescriptorSecretKey",693,1720],[5,"BTreeMap",1751],[10,"Signing",1731],[10,"PartialOrd",1703],[5,"Plan",1723],[5,"TxIn",1708],[6,"SigType",1718],[5,"String",1752],[6,"TranslateErr",1715],[10,"Translator",1715],[1,"array"],[6,"ParsePublicKeyError",1730],[6,"HexToBytesError",1753],[6,"PolicyError",386],[6,"KeyError",693],[6,"Error",1754],[6,"Error",1755],[6,"PkOrF",386],[6,"SatisfiableItem",386],[6,"Satisfaction",386],[5,"Condition",386],[10,"DescriptorTemplate",557],[8,"DescriptorTemplateOut",557],[5,"P2Pkh",557],[10,"IntoDescriptorKey",693],[5,"P2Wpkh_P2Sh",557],[5,"P2Wpkh",557],[5,"P2TR",557],[6,"Tap",1718],[5,"Bip44",557],[10,"DerivableKey",693],[5,"Bip44Public",557],[5,"Bip49",557],[5,"Bip49Public",557],[5,"Bip84",557],[5,"Bip84Public",557],[5,"Bip86",557],[5,"Bip86Public",557],[8,"ValidNetworks",693],[5,"SortedMultiVec",693,1756],[5,"GeneratedKey",693],[5,"PrivateKeyGenerateOptions",693],[5,"SinglePub",693,1720],[5,"SinglePriv",693,1720],[6,"SinglePubKey",693,1720],[6,"DescriptorKey",693],[10,"Debug",1706],[5,"Xpub",1754],[6,"ExtendedKey",693],[5,"Xpriv",1754],[10,"FromStr",1757],[5,"DerivationPath",1754],[17,"Entropy"],[17,"Options"],[17,"Error"],[10,"GeneratableKey",693],[10,"AsMut",1758],[10,"Default",1759],[10,"GeneratableDefaultOptions",693],[10,"CryptoRng",1760],[10,"RngCore",1760],[5,"Assets",1723],[8,"KeySource",1754],[5,"Fingerprint",1754],[5,"DescriptorKeyParseError",1720],[10,"PsbtUtils",994],[5,"Amount",1761],[5,"FeeRate",1762],[5,"Balance",998,1763],[5,"Wallet",998],[5,"SignerOrdering",1407],[10,"TransactionSigner",1407],[5,"Arc",1764],[17,"Item"],[8,"Indexed",1765],[10,"Iterator",1766],[5,"Block",1767],[5,"CannotConnectError",1768],[5,"BlockId",1769],[6,"ApplyHeaderError",1768],[5,"Transaction",1708],[10,"IntoIterator",1770],[5,"Update",998],[10,"Into",1758],[5,"ConfirmationBlockTime",1769],[5,"TxGraph",1771],[5,"Txid",1708],[8,"DefaultCoinSelectionAlgorithm",1208],[5,"TxBuilder",1585],[6,"BuildFeeBumpError",1307],[6,"CalculateFeeError",1771],[5,"CheckPointIter",1768],[5,"AddressInfo",998],[5,"Psbt",1772],[5,"SignOptions",1407],[6,"SignerError",1407],[6,"NewError",998],[6,"LoadError",998],[6,"NewOrLoadError",998],[6,"ApplyBlockError",998],[5,"SyncResult",1773],[5,"FullScanResult",1773],[5,"PsbtSighashType",1774],[5,"Input",1774],[6,"CreateTxError",1307],[5,"CanonicalTx",1771],[5,"AlterCheckPointError",1768],[10,"IsDust",998,1775],[5,"CheckPoint",1768],[10,"DoubleEndedIterator",1776],[8,"ChangeSet",998],[5,"LocalChain",1768],[5,"BlockHash",1767],[5,"KeychainTxOutIndex",1777],[5,"FullScanRequest",1773],[5,"SyncRequest",1773],[5,"TxNode",1771],[5,"LargestFirstCoinSelection",1208],[5,"OldestFirstCoinSelection",1208],[5,"BranchAndBoundCoinSelection",1208],[10,"CoinSelectionAlgorithm",1208],[5,"CoinSelectionResult",1208],[6,"Error",1208],[6,"Excess",1208],[6,"MiniscriptPsbtError",1307],[6,"Error",1778],[5,"FullyNodedExport",1384],[6,"SignerId",1407],[6,"SignerContext",1407],[5,"SignerWrapper",1407],[10,"Sized",1779],[6,"TapLeavesOptions",1407],[10,"SignerCommon",1407],[5,"DescriptorXKey",1720],[5,"DescriptorMultiXKey",1720],[5,"PrivateKey",1730],[10,"InputSigner",1407],[5,"PushBytes",1780],[10,"AsRef",1758],[6,"AddForeignUtxoError",1585],[6,"AddUtxoError",1585],[6,"ChangeSpendPolicy",1585],[6,"TxOrdering",1585],[6,"LockTime",1781],[1,"i32"],[15,"Foreign",97],[8,"DerivedDescriptor",100],[15,"PsbtTimelocks",533],[15,"Complete",536],[15,"Partial",536],[15,"PartialComplete",536],[15,"Sha256Preimage",547],[15,"Hash256Preimage",547],[15,"Ripemd160Preimage",547],[15,"Hash160Preimage",547],[15,"Thresh",547],[15,"Multisig",547],[15,"AbsoluteTimelock",547],[15,"RelativeTimelock",547],[10,"ExtScriptContext",693],[15,"UnexpectedConnectedToHash",1200],[15,"LoadedGenesisDoesNotMatch",1202],[15,"LoadedNetworkDoesNotMatch",1202],[15,"LoadedDescriptorDoesNotMatch",1202],[15,"InsufficientFunds",1300],[15,"Change",1302],[15,"NoChange",1302],[15,"RbfSequenceCsv",1378],[15,"LockTime",1378],[15,"FeeTooLow",1378],[15,"FeeRateTooLow",1378],[8,"WalletExport",1384],[15,"Tap",1584],[15,"InvalidTxid",1698],[15,"Custom",1700]],"r":[[2,100],[4,1702],[6,1702],[7,1407],[8,1585],[9,1702],[10,998],[11,1702],[70,998],[71,100],[104,1712],[106,1720],[113,1718],[114,1716],[119,386],[120,1718],[121,1718],[155,352],[696,1720],[697,1720],[712,1712],[722,1718],[727,1720],[728,1720],[729,1720],[730,1756],[1000,1763],[1006,1775]],"b":[[193,"impl-Descriptor%3CDefiniteDescriptorKey%3E"],[194,"impl-Descriptor%3CDescriptorPublicKey%3E"],[213,"impl-Debug-for-Descriptor%3CPk%3E"],[214,"impl-Display-for-Descriptor%3CPk%3E"],[217,"impl-Display-for-Miniscript%3CPk,+Ctx%3E"],[218,"impl-Debug-for-Miniscript%3CPk,+Ctx%3E"],[221,"impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[223,"impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[224,"impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[225,"impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[226,"impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[227,"impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[370,"impl-Display-for-Error"],[371,"impl-Debug-for-Error"],[372,"impl-From%3CParsePublicKeyError%3E-for-Error"],[373,"impl-From%3CError%3E-for-Error"],[374,"impl-From%3CHexToBytesError%3E-for-Error"],[375,"impl-From%3CPolicyError%3E-for-Error"],[376,"impl-From%3CKeyError%3E-for-Error"],[378,"impl-From%3CError%3E-for-Error"],[379,"impl-From%3CError%3E-for-Error"],[461,"impl-Display-for-PolicyError"],[462,"impl-Debug-for-PolicyError"],[811,"impl-Debug-for-KeyError"],[812,"impl-Display-for-KeyError"],[813,"impl-Debug-for-SortedMultiVec%3CPk,+Ctx%3E"],[814,"impl-Display-for-SortedMultiVec%3CPk,+Ctx%3E"],[815,"impl-Display-for-DescriptorPublicKey"],[816,"impl-Debug-for-DescriptorPublicKey"],[817,"impl-Display-for-DescriptorSecretKey"],[818,"impl-Debug-for-DescriptorSecretKey"],[823,"impl-From%3CXpub%3E-for-ExtendedKey%3CCtx%3E"],[825,"impl-From%3CXpriv%3E-for-ExtendedKey%3CCtx%3E"],[830,"impl-From%3CError%3E-for-KeyError"],[831,"impl-From%3CError%3E-for-KeyError"],[874,"impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[875,"impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1071,"impl-Debug-for-Balance"],[1072,"impl-Display-for-Balance"],[1075,"impl-Display-for-AddressInfo"],[1076,"impl-Debug-for-AddressInfo"],[1077,"impl-Debug-for-NewError"],[1078,"impl-Display-for-NewError"],[1079,"impl-Display-for-LoadError"],[1080,"impl-Debug-for-LoadError"],[1081,"impl-Display-for-NewOrLoadError"],[1082,"impl-Debug-for-NewOrLoadError"],[1083,"impl-Display-for-ApplyBlockError"],[1084,"impl-Debug-for-ApplyBlockError"],[1088,"impl-From%3CSyncResult%3E-for-Update"],[1089,"impl-From%3CFullScanResult%3CKeychainKind%3E%3E-for-Update"],[1249,"impl-Display-for-Error"],[1250,"impl-Debug-for-Error"],[1345,"impl-Debug-for-MiniscriptPsbtError"],[1346,"impl-Display-for-MiniscriptPsbtError"],[1347,"impl-Debug-for-CreateTxError"],[1348,"impl-Display-for-CreateTxError"],[1349,"impl-Display-for-BuildFeeBumpError"],[1350,"impl-Debug-for-BuildFeeBumpError"],[1352,"impl-From%3CError%3E-for-CreateTxError"],[1353,"impl-From%3CError%3E-for-CreateTxError"],[1355,"impl-From%3CError%3E-for-CreateTxError"],[1356,"impl-From%3CPolicyError%3E-for-CreateTxError"],[1357,"impl-From%3CMiniscriptPsbtError%3E-for-CreateTxError"],[1394,"impl-Display-for-FullyNodedExport"],[1395,"impl-Debug-for-FullyNodedExport"],[1487,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1488,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1489,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1496,"impl-Display-for-SignerError"],[1497,"impl-Debug-for-SignerError"],[1504,"impl-From%3CHash%3E-for-SignerId"],[1505,"impl-From%3CFingerprint%3E-for-SignerId"],[1516,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1517,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1518,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1534,"impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1535,"impl-InputSigner-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1536,"impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E"],[1642,"impl-Display-for-AddUtxoError"],[1643,"impl-Debug-for-AddUtxoError"],[1644,"impl-Display-for-AddForeignUtxoError"],[1645,"impl-Debug-for-AddForeignUtxoError"]],"c":"OjAAAAEAAAAAAAUAEAAAAMEAAwEPAR8DeANqBQ==","e":"OzAAAAEAAG0DfgADAAAACAABAAsAAAAOABMAJgAJADUAAQA+AAAAQQAAAEUADwBXAAMAXQADAGoAAAB4AAAAjAABAI8AAACRAAcAnAAAAJ4AAQChAAAApAABAKcAAQCrAAEArgABALEAAQC0AAsAxQADAMoAAwDTAAEA1gAIAOAABADqAAAA9wADAAIBAAAIAQEADAEBABMBAQApAQMALgEBADwBAQA/AQEAQwEFAE4BBwBXAQMAXAEDAHEBCAB7AQEAfgEEAKYBGQDCAQ4A1AEAANYBAADbAQEA6gEAAO0BBADzASIAPAIXAFUCCwB5AjwA5AIXAAYDFQAdAwEAIAMAACIDFgA6AwAAPwMBAEQDAABLAwEAWAMDAGgDAABrAwQAcQMBAIEDAQCGAwAAkAMAAJUDAwCeAwAAogMIAKwDAwCzAy8A/AMAAAQEAAAGBA8AHgQDACQEAgAqBAIAMAQNAEEEAQB2BAAAfgQHAIoEDwCcBAcAqAQHAMYEEQDZBAIA3QQCAOIEBgD5BBsAOgUNAEkFAQBMBQIAUwUPAG0FAQBxBQAAcwUBAHYFAAB6BQUAqQUPALoFFADQBQYA2AUKAOsFAADtBQIA+wUBAP8FAgADBgAABwYHABEGHwBKBgkAVQYGAF4GAQBlBgAAagYGAHYGAACCBgAAiAYTAJ4GBAA="}],\ +["bdk_tmp_plan",{"t":"FKPPPPFFGGFFPPPGPPONNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNOONHNNNNOOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNOOOOOOOO","n":["Assets","CanDerive","Complete","DerivationError","Incomplete","Legacy","Plan","PlanKey","PlanState","RequiredSignatures","Requirements","SatisfactionMaterial","Segwitv0","SigHashP2wpkh","SigHashTaproot","SigningError","TapKey","TapScript","asset_key","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","can_derive","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","derivation_hint","descriptor_key","ecdsa_sigs","expected_weight","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash160","hash160_images","hash160_preimages","hash256","hash256_images","hash256_preimages","into","into","into","into","into","into","into","into","keys","max_locktime","min_version","plan_satisfaction","required_locktime","required_sequence","requirements","requires_hash_preimages","ripemd160","ripemd160_images","ripemd160_preimages","schnorr_sigs","sha256","sha256_images","sha256_preimages","sign_with_keymap","signatures","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_complete","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","txo_age","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_version","final_script_sig","final_script_witness","keys","keys","leaf_hash","merkle_root","plan_key","plan_keys"],"q":[[0,"bdk_tmp_plan"],[151,"bdk_tmp_plan::PlanState"],[153,"bdk_tmp_plan::RequiredSignatures"],[159,"miniscript::descriptor::key"],[160,"bitcoin::bip32"],[161,"core::option"],[162,"bdk_tmp_plan::requirements"],[163,"core::clone"],[164,"bdk_tmp_plan::template"],[165,"core::fmt"],[166,"bitcoin::crypto::sighash"],[167,"miniscript::descriptor"],[168,"bitcoin::blockdata::locktime::absolute"],[169,"bitcoin::blockdata::transaction"],[170,"secp256k1"],[171,"core::result"],[172,"core::borrow"],[173,"secp256k1::context"],[174,"alloc::string"],[175,"core::any"],[176,"bitcoin::blockdata::script::witness_version"]],"i":[0,0,42,10,42,9,0,0,0,0,0,0,9,10,10,0,9,9,11,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,3,7,9,10,11,12,13,14,7,9,10,11,12,13,14,7,9,13,14,11,11,13,12,7,9,10,10,11,12,13,14,42,7,9,10,10,10,10,11,12,13,14,14,7,13,14,7,13,42,7,9,10,11,12,13,14,14,14,12,0,12,12,12,7,14,7,13,13,14,7,13,9,7,7,9,10,11,12,13,14,10,12,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,14,42,7,9,10,11,12,13,14,42,7,9,10,11,12,13,14,12,45,45,46,47,48,49,49,48],"f":"```````````````````{{{b{c}}}{{b{e}}}{}{}}0000000{{{b{dc}}}{{b{de}}}{}{}}0000000{{{b{f}}{b{h}}}{{l{j}}}}{{{b{{n{c}}}}}{{n{c}}}A`}{{{b{{Ab{c}}}}}{{Ab{c}}}A`}{{{b{Ad}}}Ad}{{{b{{Af{c}}}}}{{Af{c}}}A`}{{{b{{Ah{c}}}}}{{Ah{c}}}A`}{{{b{Aj}}}Aj}{{{b{{Al{c}}}}}{{Al{c}}}A`}{{{b{c}}{b{de}}}An{}{}}000000{{}{{n{c}}}{}}{{}{{Ab{c}}}{}}{{}Aj}{{}{{Al{c}}}{}}```{{{b{{Ah{c}}}}}B`A`}{{{b{{n{c}}}}{b{dBb}}}BdBf}{{{b{{Ab{c}}}}{b{dBb}}}BdBf}{{{b{Ad}}{b{dBb}}}Bd}0{{{b{{Af{c}}}}{b{dBb}}}BdBf}{{{b{{Ah{c}}}}{b{dBb}}}BdBf}{{{b{Aj}}{b{dBb}}}Bd}{{{b{{Al{c}}}}{b{dBb}}}BdBf}{cc{}}000{BhAd}{BjAd}{BlAd}3333``````{ce{}{}}0000000``{{{b{{Ah{c}}}}}{{l{Bn}}}A`}{{{b{{C`{h}}}}{b{{Al{c}}}}}{{l{{Ah{c}}}}}{fA`}}{{{b{{Ah{c}}}}}{{l{Cb}}}A`}{{{b{{Ah{c}}}}}{{l{Cd}}}A`}{{{b{{Ah{c}}}}}{{n{c}}}A`}{{{b{{n{c}}}}}Cf{}}```````{{{b{{Ab{Ch}}}}B`{b{Cj}}{b{{Cl{c}}}}{l{Cn}}{l{D`}}{b{d{Db{e}}}}{b{dAj}}{b{{Dd{g}}}}}{{Df{CfAd}}}{{Dj{Dh}}}{{Dj{Dl}}}{DnE`}}`{{{b{c}}}e{}{}}000000{{{b{c}}}Eb{}}{{{b{{Ah{c}}}}{b{Aj}}}{{Ed{c}}}A`}{c{{Df{e}}}{}{}}000000000000000`{{{b{c}}}Ef{}}0000000<<<<<<<<{{{b{{Ah{c}}}}}{{l{Eh}}}A`}````````","D":"Fl","p":[[1,"reference"],[0,"mut"],[10,"CanDerive",0],[5,"DefiniteDescriptorKey",159],[5,"DerivationPath",160],[6,"Option",161],[5,"Requirements",0,162],[10,"Clone",163],[6,"RequiredSignatures",0,162],[6,"SigningError",0,162],[5,"PlanKey",0,164],[5,"Plan",0],[5,"SatisfactionMaterial",0],[5,"Assets",0],[1,"unit"],[1,"usize"],[5,"Formatter",165],[8,"Result",165],[10,"Debug",165],[6,"P2wpkhError",166],[6,"Error",160],[6,"TaprootError",166],[1,"u32"],[6,"Descriptor",167],[6,"LockTime",168],[5,"Sequence",169],[1,"bool"],[6,"DescriptorPublicKey",159],[8,"KeyMap",167],[6,"Prevouts",166],[6,"TapSighashType",166],[6,"EcdsaSighashType",166],[5,"SighashCache",166],[5,"Secp256k1",170],[6,"Result",171],[5,"TxOut",169],[10,"Borrow",172],[5,"Transaction",169],[10,"Signing",173],[10,"Verification",173],[5,"String",174],[6,"PlanState",0],[5,"TypeId",175],[6,"WitnessVersion",176],[15,"Complete",151],[15,"Legacy",153],[15,"Segwitv0",153],[15,"TapScript",153],[15,"TapKey",153]],"r":[[7,164],[9,162],[10,162],[15,162]],"b":[[60,"impl-Debug-for-SigningError"],[61,"impl-Display-for-SigningError"],[70,"impl-From%3CP2wpkhError%3E-for-SigningError"],[71,"impl-From%3CError%3E-for-SigningError"],[72,"impl-From%3CTaprootError%3E-for-SigningError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGkAEAABAAEABAABAA4AAgAUACIAOwAHAEcAAgBOAAAAUQAAAFwAAQBfAAAAYgAAAGQAAABoAAAAawAAAG0AKQCaAAEA"}],\ +["bdk_wallet",{"t":"GGFGFPPPFGFGPPPPPPPEPPPPKGGGFGPFPPPPPPPPPIPFFGPPPFGTTFFNNONOONNNNNNNONDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDOONNNNNNNNNNNNNNNNCOONNNNNNNNNNNNNNONCOQNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCDNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNOOONNNNNNNNNNNNNNNNNNNMNNOOONNNCONNNNNNNNNNNNNONNNNDNNNONNNNNONNNNNNNCNNNECONNNDDNNNNNNNOCENNNNNNOENNNNNNNNNNNNNNNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONONNNNNNNNNNNNNNNNNNNOOHNNNNNNNNNNNNNNNNHOOOOOOOOOOOOOOOOPPFPKFIGGPFPFNNNNNNNNNNNNNNNNNNMNNNHNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOPPPIGEGIKTIKRGFPPPPEKGPPPPTIPPPPPPPPPPNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNMNNMNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNONNNNNNNNNMNNNNCNNNNNNNNNNNMNNNCNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHPPGPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNPPPGPFIPPIPPPPPPPPPPPGFGPPPPPGGPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNONNONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFKIFFFFNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGPPGPPPPPPPGPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOFIOONNNNNNNNNNNOONNNNNNPKGGGRRKGPKKFKPPPRGIPPPPPRPFPKGPPPFFGFPIPPPHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNNOONHNMNNHNMNNOONNNNNNMNNNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMMMSHPPPPPPPKPPPPPPPPPPPPPPPPFKGGGFFFPGKPNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNMNONONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOGGPPGPPPPPPFGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO","n":["AddForeignUtxoError","AddUtxoError","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeAllowed","ChangeForbidden","ChangeSet","ChangeSpendPolicy","CreateParams","CreateWithPersistError","Custom","Descriptor","Descriptor","Descriptor","External","Foreign","Genesis","HdKeyPaths","Internal","InvalidChangeSet","InvalidOutpoint","InvalidTxid","IsDust","KeychainKind","LoadError","LoadMismatch","LoadParams","LoadWithPersistError","Local","LocalOutput","Mismatch","MissingDescriptor","MissingGenesis","MissingNetwork","MissingUtxo","Network","OnlyChange","Persist","Persist","PersistedWallet","Shuffle","SignOptions","TxBuilder","TxOrdering","UnexpectedConnectedToHash","UnknownUtxo","Untouched","Update","Utxo","WALLET_SCHEMA_NAME","WALLET_TABLE_NAME","Wallet","WeightedUtxo","add","add_signer","address","all_unbounded_spk_iters","allow_all_sighashes","allow_grinding","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_byte","as_ref","as_ref","assume_height","balance","bitcoin","borrow","borrow","borrow","borrow","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","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","change_descriptor","checkpoints","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_selection","confirmation_time","confirmed","create","create","create","create","create_wallet","create_wallet_async","create_wallet_no_persist","create_with_params","default","default","default","default","deref","derivation_index","derivation_index","derivation_of_spk","descriptor","descriptor","descriptor","descriptor_checksum","descriptors","deserialize","deserialize","deserialize","deserialize","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error","export","file_store","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","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_sqlite","genesis_hash","genesis_hash","get_psbt_input","get_signers","get_tx","get_utxo","graph","hash","hash","immature","index","indexer","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","is_dust","is_empty","is_mine","is_spent","keychain","keychain","keychains","keymap","keymap","keys","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","load","load","load","load_wallet","load_wallet_async","load_wallet_no_persist","load_with_params","local_chain","local_chain","lookahead","lookahead","mark_used","merge","miniscript","network","network","network","network","new","new","next_derivation_index","next_unused_address","outpoint","outpoint","partial_cmp","peek_address","persist","persist","persist","persist_to_sqlite","policies","psbt","public_descriptor","reveal_addresses_to","reveal_next_address","rusqlite","rusqlite_impl","satisfaction_weight","secp_ctx","sent_and_received","sequence","serde","serde_json","serialize","serialize","serialize","serialize","set_keymap","set_keymaps","sign","sign_with_tap_internal_key","signer","signer","spk_index","staged","staged","start_full_scan","start_sync_with_revealed_spks","take_staged","tap_leaves_options","template","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trust_witness_utxo","trusted_pending","trusted_spendable","try_finalize","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_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","try_into","try_into","try_into","try_into","tx_builder","tx_graph","tx_graph","txout","txout","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unbroadcast_transactions","unmark_used","untrusted_pending","utxo","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","foreign_utxo","input_txid","connected_to_hash","expected_hash","expected","expected","expected","keychain","loaded","loaded","loaded","input_sort","output_sort","outpoint","psbt_input","sequence","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","Bare","Bare","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","FALSE","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Pkh","Pkh","Policy","ScriptContext","Segwitv0","Sh","Sh","Sh","Single","TRUE","TapKeyOrigins","Tr","Tr","Tr","Wpkh","Wpkh","Wpkh","Wsh","Wsh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","descriptor_id","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","ExternalAndInternalAreTheSame","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","eq","fmt","fmt","from","from","from","from","from","from","from","from","into","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","build","build","build","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_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","BuildFeeBumpError","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","csv","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","label","serialize","to_string","try_from","try_into","type_id","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_default_with_aux_rand","generate_with_aux_rand","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","n","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","SCHEMAS_TABLE_NAME","migrate_schema","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Psbt","Segwitv0","SighashTaproot","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","remove","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","Custom","InvalidOutpoint","InvalidTxid","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone_into","clone_into","clone_into","cmp","coin_selection","current_height","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","equivalent","equivalent","fee_absolute","fee_rate","finish","finish_with_aux_rand","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","include_output_redeem_witness_script","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","policy_path","set_recipients","sighash","sort_tx","sort_tx_with_aux_rand","to_owned","to_owned","to_owned","to_string","to_string","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","foreign_utxo","input_txid","input_sort","output_sort"],"q":[[0,"bdk_wallet"],[430,"bdk_wallet::AddForeignUtxoError"],[432,"bdk_wallet::ApplyBlockError"],[434,"bdk_wallet::LoadMismatch"],[441,"bdk_wallet::TxOrdering"],[443,"bdk_wallet::Utxo"],[446,"bdk_wallet::coin_selection"],[538,"bdk_wallet::coin_selection::Error"],[540,"bdk_wallet::coin_selection::Excess"],[545,"bdk_wallet::descriptor"],[805,"bdk_wallet::descriptor::checksum"],[807,"bdk_wallet::descriptor::error"],[840,"bdk_wallet::descriptor::policy"],[999,"bdk_wallet::descriptor::policy::BuildSatisfaction"],[1002,"bdk_wallet::descriptor::policy::Satisfaction"],[1013,"bdk_wallet::descriptor::policy::SatisfiableItem"],[1023,"bdk_wallet::descriptor::template"],[1207,"bdk_wallet::error"],[1278,"bdk_wallet::error::CreateTxError"],[1284,"bdk_wallet::export"],[1307,"bdk_wallet::keys"],[1623,"bdk_wallet::psbt"],[1627,"bdk_wallet::rusqlite_impl"],[1629,"bdk_wallet::signer"],[1815,"bdk_wallet::signer::SignerContext"],[1816,"bdk_wallet::tx_builder"],[1931,"bdk_wallet::tx_builder::AddForeignUtxoError"],[1933,"bdk_wallet::tx_builder::TxOrdering"],[1935,"bdk_chain::balance"],[1936,"bdk_wallet::wallet"],[1937,"bdk_wallet::types"],[1938,"bdk_wallet::wallet::signer"],[1939,"alloc::sync"],[1940,"bitcoin::blockdata::script::owned"],[1941,"bdk_chain"],[1942,"core::iter::traits::iterator"],[1943,"core::clone"],[1944,"alloc::collections::btree::map"],[1945,"bitcoin::blockdata::block"],[1946,"bdk_chain::local_chain"],[1947,"core::result"],[1948,"bdk_chain::chain_data"],[1949,"bitcoin::blockdata::transaction"],[1950,"core::iter::traits::collect"],[1951,"core::convert"],[1952,"bdk_chain::tx_graph"],[1953,"bdk_wallet::wallet::coin_selection"],[1954,"bdk_wallet::wallet::tx_builder"],[1955,"bdk_wallet::wallet::error"],[1956,"bitcoin_units::amount"],[1957,"bitcoin_units::fee_rate"],[1958,"bdk_wallet::wallet::changeset"],[1959,"core::cmp"],[1960,"rusqlite::transaction"],[1961,"bdk_file_store::store"],[1962,"bdk_wallet::wallet::params"],[1963,"rusqlite"],[1964,"bdk_wallet::wallet::persisted"],[1965,"core::option"],[1966,"bitcoin::blockdata::script::borrowed"],[1967,"alloc::string"],[1968,"serde::de"],[1969,"bitcoin::psbt"],[1970,"core::fmt"],[1971,"bdk_chain::indexer::keychain_txout"],[1972,"bdk_chain::indexed_tx_graph"],[1973,"bdk_chain::spk_client"],[1974,"bitcoin::psbt::map::input"],[1975,"core::hash"],[1976,"bdk_wallet::wallet::utils"],[1977,"miniscript::descriptor"],[1978,"core::iter::traits::double_ended"],[1979,"bitcoin::network"],[1980,"secp256k1::context::alloc_only"],[1981,"secp256k1"],[1982,"serde::ser"],[1983,"core::any"],[1984,"alloc::vec"],[1985,"bitcoin::address"],[1986,"miniscript"],[1987,"miniscript::miniscript"],[1988,"miniscript::miniscript::decode"],[1989,"miniscript::miniscript::context"],[1990,"miniscript::iter::tree"],[1991,"miniscript::descriptor::key"],[1992,"miniscript::miniscript::satisfy"],[1993,"miniscript::plan"],[1994,"bitcoin_hashes::sha256"],[1995,"miniscript::miniscript::hash256"],[1996,"bitcoin_hashes::ripemd160"],[1997,"bitcoin_hashes::hash160"],[1998,"bitcoin::crypto::key"],[1999,"secp256k1::context"],[2000,"bdk_chain::descriptor_ext"],[2001,"miniscript::blanket_traits"],[2002,"miniscript::miniscript::analyzable"],[2003,"core::ops::range"],[2004,"core::ops::function"],[2005,"miniscript::descriptor::bare"],[2006,"miniscript::descriptor::tr"],[2007,"miniscript::descriptor::segwitv0"],[2008,"miniscript::descriptor::sh"],[2009,"miniscript::miniscript::types"],[2010,"miniscript::miniscript::types::extra_props"],[2011,"miniscript::expression"],[2012,"miniscript::miniscript::iter"],[2013,"miniscript::policy::semantic"],[2014,"miniscript::policy"],[2015,"bitcoin_units::weight"],[2016,"base58ck::error"],[2017,"hex_conservative::error"],[2018,"bitcoin::bip32"],[2019,"bitcoin::psbt::error"],[2020,"bdk_wallet::wallet::export"],[2021,"miniscript::descriptor::sortedmulti"],[2022,"core::str::traits"],[2023,"core::default"],[2024,"rand_core"],[2025,"rusqlite::error"],[2026,"core::marker"],[2027,"bitcoin::blockdata::script::push_bytes::primitive"],[2028,"bitcoin::blockdata::locktime::absolute"],[2029,"bdk_chain::rusqlite_impl"]],"i":[0,0,0,0,0,72,258,258,0,0,0,0,259,71,61,62,5,42,62,0,5,59,256,256,0,0,0,0,0,0,42,0,61,61,61,61,256,62,258,59,71,0,259,0,0,0,72,257,259,0,0,43,43,0,0,1,3,53,3,64,64,3,3,3,3,5,5,3,64,3,0,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,3,3,3,3,3,0,26,43,3,1,5,40,41,42,43,26,1,5,40,41,42,43,26,5,0,40,1,3,3,3,3,47,47,47,3,52,1,43,26,53,3,40,3,0,43,0,3,52,1,5,40,43,1,5,40,41,42,43,59,53,61,62,1,1,5,5,40,40,41,41,42,42,53,53,0,0,0,3,1,1,5,40,41,42,43,59,59,71,71,3,26,53,53,61,61,62,72,72,0,47,52,1,5,40,41,42,43,43,43,43,43,59,59,71,3,26,26,26,53,61,61,62,72,43,47,52,3,3,3,3,26,5,40,1,53,43,3,3,3,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,90,43,3,40,40,53,3,47,52,0,26,3,3,3,3,3,3,3,3,52,52,52,3,3,43,47,52,3,43,0,47,52,3,43,47,52,3,3,42,40,5,3,3,3,3,43,3,0,3,3,3,0,0,41,3,3,42,0,0,1,5,40,43,3,3,3,64,0,0,3,3,3,3,3,3,64,0,1,5,40,41,42,43,26,1,59,71,53,61,72,1,3,64,1,1,64,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,0,3,43,42,40,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,3,3,3,1,41,0,47,52,1,5,40,41,42,43,59,71,3,26,53,61,62,72,0,262,262,263,263,264,265,266,266,264,265,266,267,267,268,268,268,114,114,0,115,0,0,0,0,0,114,0,115,0,114,115,113,108,109,110,114,115,113,108,109,110,108,109,110,108,109,110,111,108,109,110,0,108,109,110,113,113,114,114,115,113,108,109,110,114,115,113,108,109,110,114,115,113,108,109,110,113,110,113,113,108,109,110,114,114,115,113,108,109,110,114,115,113,108,109,110,114,115,113,108,109,110,114,115,113,108,109,110,269,269,270,271,271,270,271,91,272,116,0,0,0,0,0,0,122,0,0,124,0,0,126,91,272,116,0,0,0,91,272,116,126,122,0,91,272,116,91,272,116,91,272,116,126,116,143,144,122,122,116,116,143,144,122,116,143,144,122,122,122,122,0,124,143,144,124,144,124,124,143,144,124,143,144,124,124,143,144,124,143,144,124,143,144,0,116,143,144,122,116,143,144,122,116,143,144,122,122,116,116,116,116,116,116,122,116,122,116,143,144,122,116,116,143,143,144,144,122,122,0,116,122,122,153,116,122,116,116,116,143,144,122,122,116,122,116,116,116,116,116,116,116,143,144,122,122,122,116,122,122,122,116,122,122,122,116,116,122,122,116,116,143,144,122,116,143,144,122,122,116,48,91,116,116,122,122,122,116,122,122,124,143,144,122,116,122,116,124,143,144,116,116,116,116,116,116,116,116,116,116,116,116,116,116,122,124,122,116,122,122,116,143,144,122,124,143,144,116,116,0,122,116,122,116,122,122,116,116,122,116,122,124,143,144,122,0,116,143,144,122,116,122,116,124,124,116,122,116,143,144,122,116,143,144,122,122,116,143,144,122,116,116,143,144,122,122,0,0,51,51,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,193,190,190,0,194,0,0,193,192,0,193,193,190,190,190,193,194,154,190,194,194,0,0,0,154,154,192,193,193,0,0,193,193,193,192,192,193,194,97,195,190,154,192,193,194,97,195,190,154,192,193,194,97,195,154,192,193,194,97,195,154,97,195,195,192,193,194,97,195,190,192,192,193,193,194,194,97,97,195,195,190,190,192,193,194,97,195,190,190,154,192,193,194,194,97,97,195,190,154,97,192,195,193,97,192,193,194,97,195,190,154,193,194,195,97,195,97,97,192,193,194,97,195,195,192,193,194,97,195,154,190,192,193,194,97,195,190,154,192,193,194,97,195,190,154,192,193,194,97,195,190,154,192,193,194,97,195,190,154,273,273,273,274,275,276,275,276,275,276,275,276,275,276,277,278,279,280,281,282,282,281,283,284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,196,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,197,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,198,200,201,202,204,206,207,208,209,210,211,212,0,83,213,0,83,83,35,83,35,83,83,0,83,83,83,83,83,213,83,83,83,83,83,35,35,83,35,213,83,83,213,83,35,213,83,35,213,213,213,213,83,83,35,35,213,83,83,83,83,83,83,35,213,83,35,213,213,83,35,213,83,35,213,83,35,213,83,35,213,83,35,285,285,286,286,287,288,0,0,289,215,215,215,215,215,215,215,215,215,215,215,215,289,215,215,215,215,215,215,215,187,0,0,0,0,232,232,0,0,222,0,0,0,0,187,187,187,124,0,0,121,187,187,177,126,232,225,0,225,0,0,121,126,177,0,0,0,0,121,0,222,177,126,0,290,126,225,218,223,121,219,187,217,126,177,220,221,222,225,218,223,121,219,187,217,126,177,220,221,222,217,124,124,124,124,124,124,124,124,124,218,121,219,217,126,177,220,221,222,218,121,219,217,126,177,220,221,222,217,126,220,222,219,219,218,126,126,217,121,187,217,126,177,220,221,222,121,121,217,217,126,126,177,177,220,220,221,221,222,222,223,121,219,187,187,217,217,126,126,177,177,220,221,222,217,225,225,225,218,223,121,219,187,187,187,217,126,126,177,220,221,222,223,223,126,177,217,126,126,232,235,235,232,232,235,225,126,217,126,220,222,225,218,223,121,219,187,217,126,177,220,221,222,126,199,205,218,218,223,126,177,205,225,218,218,126,177,225,225,126,290,121,126,177,290,121,290,121,126,126,217,220,221,217,0,126,124,217,217,0,217,124,217,126,220,221,124,223,217,126,220,222,124,217,217,217,217,126,124,217,0,218,121,219,217,126,177,220,221,222,177,187,217,126,177,124,124,217,225,218,223,121,219,187,217,126,177,220,221,222,225,218,223,121,219,187,217,126,177,220,221,222,225,218,223,121,219,187,217,126,177,220,221,222,225,218,223,121,219,187,217,126,177,220,221,222,0,242,242,242,0,0,248,244,248,65,244,248,65,0,65,65,65,245,65,65,65,65,65,65,65,248,244,65,245,65,0,0,0,0,0,0,0,0,245,0,0,65,84,64,64,84,64,244,65,245,246,6,84,64,248,244,65,245,246,6,84,64,248,84,244,245,246,6,84,64,248,244,245,246,6,84,64,248,244,6,6,84,64,248,246,249,249,246,246,246,244,245,6,248,244,244,245,245,6,6,248,248,84,244,65,65,245,246,6,84,64,248,244,244,244,65,245,246,6,84,64,248,244,249,246,246,246,84,244,65,245,246,6,84,64,248,246,84,244,6,84,253,246,246,246,7,246,64,84,64,244,245,246,6,84,64,248,65,64,64,244,65,245,246,6,84,64,248,244,65,245,246,6,84,64,248,244,65,245,246,6,84,64,248,244,65,245,246,6,84,64,248,291,0,0,258,258,0,259,256,256,256,258,259,0,0,257,259,34,34,34,34,34,34,34,34,34,34,257,256,259,258,34,257,256,259,258,34,34,259,258,34,259,258,258,34,34,259,258,34,34,34,34,34,258,258,258,34,34,34,34,34,257,257,256,256,259,258,34,257,256,259,258,258,34,34,257,256,259,258,34,34,34,34,34,258,34,34,34,259,259,34,259,258,257,256,34,257,256,259,258,34,257,256,259,258,34,257,256,259,258,34,34,34,257,256,259,258,262,262,267,267],"f":"```````````````````````````````````````````````````````{{bb}b}{{{h{df}}jl{A`{n}}}Ab}`{{{h{f}}}{{An{j{`{{Aj{}{{Ad{{Ah{Af}}}}}}Al}}}}}}``{{{h{df}}{h{B`}}Bb}{{Bf{AbBd}}}}{{{h{df}}{h{B`}}BbBh}{{Bf{AbBj}}}}{{{h{df}}c}Ab{{Cb{}{{Ad{{C`{{h{Bl}}Bn}}}}}}}}{{{h{df}}c}{{Bf{AbBd}}}{{Cf{Cd}}}}{{{h{j}}}Ch}{{{h{j}}}{{h{{Cj{Ch}}}}}}{{{h{f}}}{{h{{Cn{Cl}}}}}}`{{{h{f}}}b}`{{{h{c}}}{{h{e}}}{}{}}000000000000000{{{h{dc}}}{{h{de}}}{}{}}000000000000000{{{h{df}}D`}{{Bf{{Dd{Db}}Df}}}}{{{h{df}}}{{Dd{Db}}}}{{{h{f}}{h{Bl}}}{{Bf{DhDj}}}}{{{h{f}}{h{Bl}}}{{Bf{DlDj}}}}{{{h{df}}{h{Bl}}}Ab}```{{{h{f}}}Dn}{{{h{b}}}b}{{{h{j}}}j}{{{h{E`}}}E`}{{{h{Eb}}}Eb}{{{h{Ed}}}Ed}{{{h{Ef}}}Ef}{{{h{Cd}}}Cd}{{{h{c}}{h{de}}}Ab{}{}}000000{{{h{j}}{h{j}}}Eh}```{{{h{dEj}}c}{{Bf{fe}}}{}{}}{{{h{d{El{Ef}}}}c}{{Bf{fe}}}{}{}}{{cc}En{F`Al}}{{{h{dFb}}c}{{Bf{fe}}}{}{}}{{En{h{dc}}}{{Bf{Fd}}}{}}0{En{{Bf{fFf}}}}0{{}Fh}{{}b}{{}Ef}{{}Cd}{{{h{Fj}}}{{h{c}}}{}}{{{h{f}}j}{{Fl{Bb}}}}`{{{h{f}}{h{Fn}}}{{Fl{{C`{jBb}}}}}}```{{{h{f}}j}G`}{{Fhcc}FhF`}{c{{Bf{b}}}Gb}{c{{Bf{j}}}Gb}{c{{Bf{E`}}}Gb}{c{{Bf{Ef}}}Gb}{{{h{b}}{h{b}}}Gd}{{{h{j}}{h{j}}}Gd}{{{h{E`}}{h{E`}}}Gd}{{{h{Eb}}{h{Eb}}}Gd}{{{h{Ed}}{h{Ed}}}Gd}{{{h{Ef}}{h{Ef}}}Gd}{{{h{{Gf{c}}}}{h{{Gf{c}}}}}GdGh}{{{h{Fj}}{h{Fj}}}Gd}{{{h{Gj}}{h{Gj}}}Gd}{{{h{Gl}}{h{Gl}}}Gd}{{{h{c}}{h{e}}}Gd{}{}}00000000000```{{{h{f}}{h{dGn}}H`}{{Bf{GdHb}}}}{{{h{b}}{h{dHd}}}{{Bf{AbHf}}}}0{{{h{j}}{h{dHd}}}Hh}{{{h{E`}}{h{dHd}}}Hh}{{{h{Eb}}{h{dHd}}}Hh}{{{h{Ed}}{h{dHd}}}Hh}{{{h{Ef}}{h{dHd}}}Hh}{{{h{{Gf{c}}}}{h{dHd}}}HhHj}{{{h{{Gf{c}}}}{h{dHd}}}HhHl}{{{h{{Hn{c}}}}{h{dHd}}}HhHj}{{{h{{Hn{c}}}}{h{dHd}}}HhHl}{{{h{f}}{h{dHd}}}Hh}{{{h{Cd}}{h{dHd}}}Hh}{{{h{Fj}}{h{dHd}}}Hh}0{{{h{Gj}}{h{dHd}}}Hh}0{{{h{Gl}}{h{dHd}}}Hh}{{{h{I`}}{h{dHd}}}Hh}0`{cc{}}000000{{{Ib{Cl}}}Ef}{IdEf}2{{{Ih{ClIf}}}Ef}{IfEf}4{Gl{{Gf{c}}}{}}55{{{Ij{j}}}Cd}6{IlCd}7{GlGj}888{{{h{Ej}}}{{In{Ef}}}}{{EnJ`}En}{{FhJ`}Fh}{{{h{f}}E`{Fl{Jb}}Gd}{{Bf{JdJf}}}}{{{h{f}}j}{{A`{Jh}}}}{{{h{f}}D`}{{Fl{{Jj{{A`{Bl}}Cl}}}}}}{{{h{f}}Jl}{{Fl{E`}}}}`{{{h{j}}{h{dc}}}AbJn}{{{h{E`}}{h{dc}}}AbJn}```{{{h{df}}Bh}{{Bf{GdK`}}}}{{{h{df}}Bl}Gd}{{{h{df}}JlKb}Ab}{ce{}{}}000000000000000{{{h{Kd}}{h{Fn}}}Gd}{{{h{Ef}}}Gd}{{{h{f}}{h{Fn}}}Gd}```{{{h{f}}}{{`{{Aj{}{{Ad{{C`{{h{j}}{h{Kf}}}}}}}}}}}}{{EnjKh}En}{{FhjKh}Fh}``{{{h{f}}}Kj}{{{h{f}}}{{`{{Aj{}{{Ad{E`}}}}}}}}0{{{h{f}}j}{{`{{Kl{}{{Ad{Fj}}}}}}}}{{{h{d{El{Ef}}}}c}{{Bf{{Fl{f}}e}}}{}{}}{{{h{dFb}}c}{{Bf{{Fl{f}}e}}}{}{}}{{}Fh}{{{h{dEj}}c}{{Bf{{Fl{f}}e}}}{}{}}{{Fh{h{dc}}}{{Bf{{Fl{Fd}}}}}{}}0{{FhEf}{{Bf{{Fl{f}}Gj}}}}{{EfFh}{{Bf{{Fl{f}}Gj}}}}{{{h{f}}}{{h{Kn}}}}`{{EnBb}En}{{FhBb}Fh}{{{h{df}}jBb}Gd}{{{h{dEf}}Ef}Ab}`{{EnL`}En}{{FhL`}Fh}{{{h{f}}}L`}`{{cc}EnF`}={{{h{f}}j}Bb}{{{h{df}}j}Fj}{{{h{Ed}}}Jl}`{{{h{j}}{h{j}}}{{Fl{Eh}}}}{{{h{f}}jBb}Fj}{{{h{dFb}}{h{c}}}{{Bf{Abe}}}{}{}}{{{h{d{El{Ef}}}}{h{c}}}{{Bf{Abe}}}{}{}}{{{h{dEj}}{h{c}}}{{Bf{Abe}}}{}{}}{{{h{Ef}}{h{Ej}}}{{In{Ab}}}}{{{h{f}}j}{{Bf{{Fl{Lb}}Ff}}}}`{{{h{f}}j}{{h{Kf}}}}{{{h{df}}jBb}{{`{{Aj{}{{Ad{Fj}}}}}}}}:```{{{h{f}}}{{h{{Lf{Ld}}}}}}{{{h{f}}{h{Bl}}}{{C`{DhDh}}}}{{{h{Ed}}}{{Fl{Lh}}}}``{{{h{b}}c}BfLj}{{{h{j}}c}BfLj}{{{h{E`}}c}BfLj}{{{h{Ef}}c}BfLj}{{{h{df}}jKh}Ab}{{{h{df}}c}Ab{{Cb{}{{Ad{{C`{jKh}}}}}}}}{{{h{f}}{h{dGn}}H`}{{Bf{GdHb}}}}```{{{h{f}}}{{h{{Ll{j}}}}}}{{{h{f}}}{{Fl{{h{Ef}}}}}}{{{h{df}}}{{h{dc}}}{}}{{{h{f}}}{{Ln{j}}}}{{{h{f}}}M`}{{{h{df}}}{{Fl{Ef}}}}``{{{h{c}}}e{}{}}000000{{{h{c}}}G`{}}00000{{{h{b}}}Dh}{{{h{f}}}{{`{{Aj{}{{Ad{{Jj{{A`{Bl}}Cl}}}}}}}}}}``1`{c{{Bf{e}}}{}{}}0000000000000000000000000000000`{{{h{f}}}{{h{{Cn{Cl}}}}}}`{{{h{Ed}}}{{h{Kb}}}}`{{{h{c}}}Mb{}}000000000000000{{{h{f}}j}{{`{{Aj{}{{Ad{{Ah{Af}}}}}}Al}}}}{{{h{f}}}{{`{{Aj{}{{Ad{{Md{{A`{Bl}}Cl}}}}}}}}}}{{{h{df}}jBb}Gd}``{{}{{h{Mf}}}}{ce{}{}}000000000000000{{c{Fl{c}}L`{h{{Lf{Ld}}}}}{{Bf{G`Ff}}}F`}`````````````````````````````{{{h{c}}}{{h{e}}}{}{}}00000{{{h{dc}}}{{h{de}}}{}{}}00000{{{h{Mh}}}Mh}{{{h{Mj}}}Mj}{{{h{Ml}}}Ml}{{{h{c}}{h{de}}}Ab{}{}}00{{{h{Mn}}{N`{Eb}}{N`{Eb}}DlBn{h{Fn}}}{{Bf{NbNd}}}}{{{h{Mh}}{N`{Eb}}{N`{Eb}}DlBn{h{Fn}}}{{Bf{NbNd}}}}{{{h{Mj}}{N`{Eb}}{N`{Eb}}DlBn{h{Fn}}}{{Bf{NbNd}}}}{{{h{Ml}}{N`{Eb}}{N`{Eb}}DlBn{h{Fn}}}{{Bf{NbNd}}}}{{BnDl{h{Fn}}}Nf}{{}Mh}{{}Mj}{{}Ml}``{{{h{Nd}}{h{dHd}}}Hh}0{{{h{Nf}}{h{dHd}}}Hh}{{{h{Nb}}{h{dHd}}}Hh}{{{h{Mh}}{h{dHd}}}Hh}{{{h{Mj}}{h{dHd}}}Hh}{{{h{Ml}}{h{dHd}}}Hh}{cc{}}00000{ce{}{}}00000{{{h{Nb}}}Bn}{BnMl}`1{{{h{c}}}e{}{}}00{{{h{c}}}G`{}}{c{{Bf{e}}}{}{}}00000000000{{{h{c}}}Mb{}}00000666666`````````````````````````````````````````````{{{h{{Nh{c}}}}L`}{{Bf{NjNl}}}{NnO`}}{{}Ob}0{{{h{{Od{ce}}}}}{{h{{Of{ce}}}}}NnOh}{{{h{{h{{Od{ce}}}}}}}{{Oj{{h{{Od{ce}}}}}}}NnOh}{{{h{{Nh{Ol}}}}Bb}{{Bf{{Nh{On}}A@`}}}}{{{h{c}}}{{h{e}}}{}{}}000{{{h{dc}}}{{h{de}}}{}{}}000{{{h{{Od{ce}}}}}{{N`{{h{{Od{ce}}}}}}}NnOh}{{{h{{Od{ce}}}}{h{g}}}{{A@d{{A@b{c}}}}}{O`Nn}Oh{{A@f{c}}}}0`{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbA@j}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{h{{Od{cAAn}}}}}{{Bf{AbA@j}}}Nn}{{{h{{Od{cAB`}}}}}{{Bf{AbA@j}}}Nn}2022102102{{{h{c}}}{{Bf{AbA@j}}}Nn}00{{{h{{Of{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbA@j}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{h{{Of{cAAn}}}}}{{Bf{AbA@j}}}Nn}{{{h{{Of{cAB`}}}}}{{Bf{AbA@j}}}Nn}{{{h{{Cj{{N`{Ch}}}}}}}{{Bf{AbA@j}}}}00`{{{h{{Nh{c}}}}}{{Nh{c}}}{AlNn}}{{{h{AAn}}}AAn}{{{h{AB`}}}AB`}{{{h{{Od{ce}}}}}{{Od{ce}}}{AlNn}{AlOh}}{{{h{c}}{h{de}}}Ab{}{}}000{{{h{{Nh{c}}}}{h{{Nh{c}}}}}Eh{ABbNn}}{{{h{AAn}}{h{AAn}}}Eh}{{{h{AB`}}{h{AB`}}}Eh}{{{h{{Od{ce}}}}{h{{Od{ce}}}}}EhNnOh}{{{h{{Od{ce}}}}}GdNnOh}{{{h{{Nh{Ol}}}}Bb}{{Bf{{Nh{On}}A@`}}}}{{{h{{Nh{On}}}}{h{{Lf{c}}}}}{{Bf{{Nh{ABd}}A@`}}}ABf}{{{h{{Nh{Ol}}}}{h{{Lf{c}}}}Bb}{{Bf{{Nh{ABd}}A@`}}}ABf}{{{h{{Nh{c}}}}}ABhNn}{{{h{{Nh{Ol}}}}}ABj}{c{{Bf{{Nh{e}}}}}GbABl}{c{{Bf{{Od{eg}}}}}GbABlOh}{{{h{{Nh{Ol}}}}}Bn}{{{h{{Od{ce}}}}}Af{O`Nn}Oh}{{{h{{Nh{c}}}}{h{{Nh{c}}}}}Gd{GhNn}}{{{h{AAn}}{h{AAn}}}Gd}{{{h{AB`}}{h{AB`}}}Gd}{{{h{{Od{ce}}}}{h{{Od{ce}}}}}GdNnOh}{{{h{c}}{h{e}}}Gd{}{}}0000000`{{{h{{Nh{c}}}}}{{Bf{AfNl}}}{NnO`}}`{{{h{{Od{ce}}}}{h{ABn}}}{{Bf{AbAC`}}}NnOh}{{{h{ACb}}{h{Jh}}ACd{h{{Lf{Ld}}}}}{{Bf{{Fl{Lb}}Ff}}}}{{{h{{Nh{Ol}}}}{h{Jh}}ACd{h{{Lf{Ld}}}}}{{Bf{{Fl{Lb}}Ff}}}}{{{h{{Od{Olc}}}}{h{Jh}}ACd{h{{Lf{Ld}}}}}{{Bf{{Fl{Lb}}Ff}}}Oh}{{{h{{Nh{Ol}}}}{h{{Lf{c}}}}{h{Fn}}{ACf{Bb}}}{{Bf{{Fl{{C`{Bb{Nh{ABd}}}}}}A@`}}}ABf}{{{h{{Nh{c}}}}{h{dHd}}}{{Bf{AbHf}}}Nn}0{{{h{AAn}}{h{dHd}}}{{Bf{AbHf}}}}{{{h{AB`}}{h{dHd}}}{{Bf{AbHf}}}}{{{h{{Od{ce}}}}{h{dHd}}}{{Bf{AbHf}}}NnOh}0{{{h{{Nh{c}}}}e}GdNn{{ACj{{h{c}}}{{ACh{Gd}}}}}}{{{h{{Od{ce}}}}g}GdNnOh{{ACj{{h{c}}}{{ACh{Gd}}}}}}{{{ACl{c}}}{{Nh{c}}}Nn}{{{ACn{c}}}{{Nh{c}}}Nn}{{{AD`{c}}}{{Nh{c}}}Nn}{{{ADb{c}}}{{Nh{c}}}Nn}{{{ADd{c}}}{{Nh{c}}}Nn}{cc{}}{{{ADf{c}}}{{Nh{c}}}Nn}111{{{Of{ce}}}{{Bf{{Od{ce}}Nl}}}NnOh}{{{Of{ce}}ADhADj}{{Od{ce}}}NnOh}{{{h{Mf}}}{{Bf{{Nh{c}}Nl}}}ABl}{{{h{Mf}}}{{Bf{{Od{ce}}Nl}}}ABlOh}{{{h{Mf}}{h{ABn}}}{{Bf{{Od{ce}}Nl}}}ABlOh}1{{{h{ADl}}}{{Bf{{Nh{c}}Nl}}}ABl}{{{h{ADl}}}{{Bf{{Od{ce}}Nl}}}ABlOh}{{{h{{Od{ce}}}}ADn}{{Fl{{h{{Od{ce}}}}}}}NnOh}{{{h{{Od{ce}}}}ADn}{{Fl{c}}}NnOh}{{{h{{Nh{c}}}}e}{{Bf{{C`{{N`{{N`{Ch}}}}Af}}Nl}}}{NnO`}{{AE`{c}}}}0{{{h{{Od{ce}}}}}GdNnOh}0{{{h{{Nh{Ol}}}}}Gd}{{{h{{Nh{c}}}}{h{de}}}Ab{AEbNn}Jn}{{{h{AAn}}{h{dc}}}AbJn}{{{h{AB`}}{h{dc}}}AbJn}{{{h{{Od{ce}}}}{h{dg}}}AbNnOhJn}{ce{}{}}000{{{Od{ce}}}{{Of{ce}}}NnOh}{{{Nh{Ol}}}{{Bf{{N`{{Nh{Ol}}}}Nl}}}}{{F`{h{{Lf{Ld}}}}L`}{{Bf{{C`{KfKh}}Ff}}}}{{Kf{h{{Lf{Ld}}}}L`}{{Bf{{C`{KfKh}}Ff}}}}99:{{{h{{Od{ce}}}}}{{AEd{ce}}}NnOh}{{{h{{Od{ce}}}}}{{AEf{ce}}}NnOh}{{{h{{Nh{c}}}}}{{Bf{{AEh{c}}Nl}}}Nn}{{{h{{Od{ce}}}}}{{Bf{{AEh{c}}Nl}}}NnOh}{{{h{{Od{ce}}}}}{{Bf{AbAEj}}}NnOh}{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Fl{ADn}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{h{{Od{cAAn}}}}}{{Fl{ADn}}}Nn}{{{h{{Od{cAB`}}}}}{{Fl{ADn}}}Nn}{{{h{{Od{ce}}}}}{{Bf{ADnNl}}}NnOh}{{{h{{Nh{c}}}}}{{Bf{ADnNl}}}Nn}1{{{h{{Nh{c}}}}}{{Bf{AElNl}}}Nn}{{}{{h{Mf}}}}00{{{Od{cAEn}}}{{Bf{{Nh{c}}Nl}}}Nn}{c{{Nh{c}}}Nn}{c{{Bf{{Nh{c}}Nl}}}Nn}{{{Od{cAAn}}}{{Bf{{Nh{c}}Nl}}}Nn}{{ADn{N`{c}}}{{Bf{{Nh{c}}Nl}}}Nn}{{{ADf{c}}}{{Nh{c}}}Nn}{{{ADb{c}}}{{Nh{c}}}Nn}4{{{Od{cAB`}}}{{Bf{{Nh{c}}Nl}}}Nn}3{{c{Fl{{AF`{c}}}}}{{Bf{{Nh{c}}Nl}}}Nn}614`{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbNl}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{h{Fn}}}{{Bf{{Od{c}}Nl}}}Oh}{{{h{{Lf{c}}}}{h{Mf}}}{{Bf{{C`{{Nh{Ol}}{An{OlAFb}}}}Nl}}}AFd}1{{{h{Fn}}{h{ABn}}}{{Bf{{Od{c}}Nl}}}Oh}{{{h{{Nh{c}}}}{h{{Nh{c}}}}}{{Fl{Eh}}}{AFfNn}}{{{h{AAn}}{h{AAn}}}{{Fl{Eh}}}}{{{h{AB`}}{h{AB`}}}{{Fl{Eh}}}}{{{h{{Od{ce}}}}{h{{Od{ce}}}}}{{Fl{Eh}}}NnOh}{{{h{c}}}ADnNn}00{{{Nh{On}}{h{c}}}{{Bf{AFh{Nh{On}}}}}{{A@f{On}}}}0`{{{h{{Od{ce}}}}}GdNnOh}{{{h{{Nh{c}}}}}{{Bf{AbNl}}}Nn}{{{h{{Od{ce}}}}}{{Bf{AbAC`}}}NnOh}{{{h{{Nh{c}}}}{h{dAFj}}e}{{Bf{AbNl}}}{NnO`}{{AE`{c}}}}{{{h{{Od{ce}}}}g}{{Bf{{N`{{N`{Ch}}}}Nl}}}{O`Nn}Oh{{AE`{c}}}}0{{{h{{Nh{c}}}}}{{Bf{AfNl}}}{NnO`}}{{{h{{Nh{c}}}}}Af{NnO`}}{{{h{{Od{ce}}}}}ADnNnOh}{{{h{{Nh{c}}}}e}BfNnLj}{{{h{{Od{ce}}}}g}BfNnOhLj}{{}AFl}00{{{h{{Od{ce}}}}{h{{An{AAjc}}}}}{{Od{ce}}}NnOh}`{{{h{c}}}e{}{}}000{{{h{c}}}G`{}}0{{{h{{Nh{Ol}}}}{h{{An{OlAFb}}}}}G`}{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbNl}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}0{{{h{{Nh{c}}}}{h{di}}}{{Bf{{AFn{g}}}}}NnNn{}{{AG`{ceg}}}}{{{h{{Od{ce}}}}{h{dk}}}{{Bf{{AFn{i}}}}}NnOhNn{}{{AG`{cgi}}}}{c{{Bf{e}}}{}{}}0000000`{{{h{c}}}Mb{}}000={ce{}{}}000{{{h{{Od{ce}}}}}GdNnOh}{{{h{Mf}}}{{Bf{G`Ff}}}}{{{h{Mf}}}{{Bf{{AGb{Ch}}Ff}}}}``````````````{{{h{c}}}{{h{e}}}{}{}}{{{h{dc}}}{{h{de}}}{}{}}{{{h{Ff}}{h{Ff}}}Gd}{{{h{Ff}}{h{dHd}}}Hh}0{AGdFf}{cc{}}{AGfFf}{NlFf}{AGhFf}{AGjFf}{AGlFf}{AGnFf}?{{{h{c}}}G`{}}{c{{Bf{e}}}{}{}}0{{{h{c}}}Mb{}}{ce{}{}}```````````````````````````````````???????>>>>>>>{{{h{AH`}}}AH`}{{{h{AHb}}}AHb}{{{h{AHd}}}AHd}{{{h{Lb}}}Lb}{{{h{AHf}}}AHf}{{{h{ACd}}}ACd}{{{h{c}}{h{de}}}Ab{}{}}00000``{{}AHf}{{{h{AH`}}{h{AH`}}}Gd}{{{h{AHb}}{h{AHb}}}Gd}{{{h{AHd}}{h{AHd}}}Gd}{{{h{Lb}}{h{Lb}}}Gd}{{{h{AHf}}{h{AHf}}}Gd}{{{h{AGl}}{h{AGl}}}Gd}{{{h{c}}{h{e}}}Gd{}{}}00000000000{{{h{AH`}}{h{dHd}}}Hh}{{{h{AHb}}{h{dHd}}}Hh}{{{h{AHd}}{h{dHd}}}Hh}{{{h{Lb}}{h{dHd}}}Hh}{{{h{AHf}}{h{dHd}}}Hh}{{{h{AGl}}{h{dHd}}}Hh}0{{{h{ACd}}{h{dHd}}}Hh}{cc{}}00{GdAHd}{AHbLb}2222{{{h{Lb}}{h{{An{G`{N`{ADn}}}}}}}{{Bf{AHfAGl}}}}{{{h{AH`}}{h{dc}}}AbJn}{{{h{AHf}}{h{dc}}}AbJn}{{{h{AHb}}}G`}`{ce{}{}}000000{{{h{AHb}}}Gd}{{{h{AHd}}}Gd}{{{h{AHf}}}Gd}`{{{h{AHf}}{h{AHf}}}{{Fl{Eh}}}}{{{h{Lb}}}Gd}`{{{h{AH`}}c}BfLj}{{{h{AHb}}c}BfLj}{{{h{AHd}}c}BfLj}{{{h{Lb}}c}BfLj}{{{h{AHf}}c}BfLj}`{{{h{c}}}e{}{}}00000{{{h{c}}}G`{}}{c{{Bf{e}}}{}{}}0000000000000{{{h{c}}}Mb{}}000000>>>>>>>``````````````````````````````````````{{{h{c}}}{{h{e}}}{}{}}00000000000{{{h{dc}}}{{h{de}}}{}{}}00000000000{{AHhL`}{{Bf{AHjFf}}}}{{{AHl{c}}L`}{{Bf{AHjFf}}}{{AHn{AAn}}}}{{{AI`{c}}L`}{{Bf{AHjFf}}}{{AHn{AB`}}}}{{{AIb{c}}L`}{{Bf{AHjFf}}}{{AHn{AB`}}}}{{{AId{c}}L`}{{Bf{AHjFf}}}{{AHn{AIf}}}}{{{AIh{c}}L`}{{Bf{AHjFf}}}{{AIj{AAn}}}}{{{AIl{c}}L`}{{Bf{AHjFf}}}{{AIj{AAn}}}}{{{AIn{c}}L`}{{Bf{AHjFf}}}{{AIj{AB`}}}}{{{AJ`{c}}L`}{{Bf{AHjFf}}}{{AIj{AB`}}}}{{{AJb{c}}L`}{{Bf{AHjFf}}}{{AIj{AB`}}}}{{{AJd{c}}L`}{{Bf{AHjFf}}}{{AIj{AB`}}}}{{{AJf{c}}L`}{{Bf{AHjFf}}}{{AIj{AIf}}}}{{{AJh{c}}L`}{{Bf{AHjFf}}}{{AIj{AIf}}}}{{{h{{AHl{c}}}}}{{AHl{c}}}{Al{AHn{AAn}}}}{{{h{{AI`{c}}}}}{{AI`{c}}}{Al{AHn{AB`}}}}{{{h{{AIb{c}}}}}{{AIb{c}}}{Al{AHn{AB`}}}}{{{h{{AId{c}}}}}{{AId{c}}}{Al{AHn{AIf}}}}{{{h{{AIh{c}}}}}{{AIh{c}}}{Al{AIj{AAn}}}}{{{h{{AIl{c}}}}}{{AIl{c}}}{Al{AIj{AAn}}}}{{{h{{AIn{c}}}}}{{AIn{c}}}{Al{AIj{AB`}}}}{{{h{{AJ`{c}}}}}{{AJ`{c}}}{Al{AIj{AB`}}}}{{{h{{AJb{c}}}}}{{AJb{c}}}{Al{AIj{AB`}}}}{{{h{{AJd{c}}}}}{{AJd{c}}}{Al{AIj{AB`}}}}{{{h{{AJf{c}}}}}{{AJf{c}}}{Al{AIj{AIf}}}}{{{h{{AJh{c}}}}}{{AJh{c}}}{Al{AIj{AIf}}}}{{{h{c}}{h{de}}}Ab{}{}}00000000000{{{h{{AHl{c}}}}{h{dHd}}}Hh{Hj{AHn{AAn}}}}{{{h{{AI`{c}}}}{h{dHd}}}Hh{Hj{AHn{AB`}}}}{{{h{{AIb{c}}}}{h{dHd}}}Hh{Hj{AHn{AB`}}}}{{{h{{AId{c}}}}{h{dHd}}}Hh{Hj{AHn{AIf}}}}{{{h{{AIh{c}}}}{h{dHd}}}Hh{Hj{AIj{AAn}}}}{{{h{{AIl{c}}}}{h{dHd}}}Hh{Hj{AIj{AAn}}}}{{{h{{AIn{c}}}}{h{dHd}}}Hh{Hj{AIj{AB`}}}}{{{h{{AJ`{c}}}}{h{dHd}}}Hh{Hj{AIj{AB`}}}}{{{h{{AJb{c}}}}{h{dHd}}}Hh{Hj{AIj{AB`}}}}{{{h{{AJd{c}}}}{h{dHd}}}Hh{Hj{AIj{AB`}}}}{{{h{{AJf{c}}}}{h{dHd}}}Hh{Hj{AIj{AIf}}}}{{{h{{AJh{c}}}}{h{dHd}}}Hh{Hj{AIj{AIf}}}}{cc{}}00000000000{ce{}{}}00000000000{{AHj{h{{Lf{Ld}}}}L`}{{Bf{{C`{KfKh}}Ff}}}}{{c{h{{Lf{Ld}}}}L`}{{Bf{{C`{{Nh{Ol}}{An{OlAFb}}}}Ff}}}{}}00000000000{{{h{c}}}e{}{}}00000000000{c{{Bf{e}}}{}{}}00000000000000000000000{{{h{c}}}Mb{}}00000000000555555555555``````````````````````````````{{{h{c}}}{{h{e}}}{}{}}00{{{h{dc}}}{{h{de}}}{}{}}00{{{h{AJj}}}AJj}{{{h{c}}{h{de}}}Ab{}{}}{{{h{AJj}}{h{dHd}}}Hh}0{{{h{Jf}}{h{dHd}}}Hh}0{{{h{Df}}{h{dHd}}}Hh}0={NdJf}{AJjJf}?{AGlJf}{AJlJf}{FfJf}{cc{}}{ce{}{}}00{{{h{c}}}e{}{}}{{{h{c}}}G`{}}00{c{{Bf{e}}}{}{}}00000{{{h{c}}}Mb{}}00444``````````{{{h{c}}}{{h{e}}}{}{}}{{{h{dc}}}{{h{de}}}{}{}}{{{h{AJn}}}{{Fl{G`}}}}{{{h{AJn}}}G`}{c{{Bf{AJn}}}Gb}{{{h{f}}{h{Mf}}Gd}{{Bf{AJn{h{Mf}}}}}}{{{h{AJn}}{h{dHd}}}Hh}0<{{{h{Mf}}}{{Bf{AJnc}}}{}}<``{{{h{AJn}}c}BfLj};::9=```````````````````````````````````````````{{}AK`}{{}Ob}{{OlBb}{{Bf{OnA@`}}}};;;;;;;;;;;;::::::::::::{{{h{{AKb{ce}}}}{h{g}}}{{A@d{{A@b{c}}}}}{O`Nn}Oh{{A@f{c}}}}{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbA@j}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}00000{{{h{c}}}{{Bf{AbA@j}}}Nn}{{{h{{Of{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbA@j}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{h{{Cj{{N`{Ch}}}}}}}{{Bf{AbA@j}}}}{{{h{{AKd{ce}}}}}{{AKd{ce}}}AlOh}{{{h{Ob}}}Ob}{{{h{AKf}}}AKf}{{{h{{AKb{ce}}}}}{{AKb{ce}}}{AlNn}{AlOh}}{{{h{Ol}}}Ol}{{{h{AFb}}}AFb}{{{h{AKh}}}AKh}{{{h{AKj}}}AKj}{{{h{AKl}}}AKl}{{{h{c}}{h{de}}}Ab{}{}}00000000{{{h{{AKb{ce}}}}{h{{AKb{ce}}}}}Eh{ABbNn}{ABbOh}}{{{h{Ol}}{h{Ol}}}Eh}{{{h{AKh}}{h{AKh}}}Eh}{{{h{AKl}}{h{AKl}}}Eh}`{{}AKf}{{{h{{AKd{ce}}}}}{{h{g}}}{}Oh{}}{{OlBb}{{Bf{OnA@`}}}}{c{{Bf{Ol}}}Gb}{{{h{{AKb{ce}}}}}Af{O`Nn}Oh}{{{h{Ob}}{h{Ob}}}Gd}{{{h{AGf}}{h{AGf}}}Gd}{{{h{{AKb{ce}}}}{h{{AKb{ce}}}}}Gd{GhNn}{GhOh}}{{{h{Ol}}{h{Ol}}}Gd}{{{h{AFb}}{h{AFb}}}Gd}{{{h{AKh}}{h{AKh}}}Gd}{{{h{AKj}}{h{AKj}}}Gd}{{{h{AKl}}{h{AKl}}}Gd}{{{h{c}}{h{e}}}Gd{}{}}0000000000000{{{h{{AKn{c}}}}{h{dHd}}}Hh{HjOh}}{{{h{Ob}}{h{dHd}}}Hh}{{{h{AKf}}{h{dHd}}}Hh}{{{h{AGf}}{h{dHd}}}Hh}0{{{h{{AKb{ce}}}}{h{dHd}}}{{Bf{AbHf}}}NnOh}0{{{h{Ol}}{h{dHd}}}{{Bf{AbHf}}}}0{{{h{AFb}}{h{dHd}}}{{Bf{AbHf}}}}0{{{h{AKh}}{h{dHd}}}{{Bf{AbHf}}}}{{{h{AKj}}{h{dHd}}}{{Bf{AbHf}}}}{{{h{AKl}}{h{dHd}}}{{Bf{AbHf}}}}{{{h{{AKb{ce}}}}g}GdNnOh{{ACj{{h{c}}}{{ACh{Gd}}}}}}{cc{}}{AL`{{ALb{c}}}Oh}{ALd{{ALb{c}}}Oh}2222{NlAGf}{AGnAGf}44{OnOl}55555{{OlAK`}{{AKn{c}}}Oh}{{AFbAK`}{{AKn{c}}}Oh}{{{h{Mf}}}{{Bf{Ol}}}}{{{h{Mf}}}{{Bf{AFb}}}}{{{h{ADl}}}{{Bf{{AKb{ce}}Nl}}}{ALfNn}Oh}{{{h{Ol}}}{{Fl{ALh}}}}{{{h{Ol}}}{{N`{ALh}}}}{c{{Bf{{AKd{{AM`{}{{ALj{e}}{ALl{c}}{ALn{g}}}}i}}g}}}{}{{AMb{{Cj{Ch}}}}AMd}HjOh}{{}{{Bf{{AKd{AMfc}}e}}}Oh{}}{{{h{dc}}}{{Bf{{AKd{AMfe}}g}}}{AMhAMj}Oh{}}{{c{h{de}}}{{Bf{{AKd{{AM`{}{{ALj{g}}{ALl{c}}{ALn{i}}}}k}}i}}}{}{AMhAMj}{{AMb{{Cj{Ch}}}}AMd}HjOh}{{ce}{{Bf{{AKd{{AM`{}{{ALj{e}}{ALl{c}}{ALn{g}}}}i}}g}}}{}{{AMb{{Cj{Ch}}}}AMd}HjOh}{c{{Bf{{AKd{AMfe}}g}}}{}Oh{}}{{{h{{ALb{c}}}}}GdOh}{{{h{Ol}}}Gd}{{{h{{AKb{ce}}}}{h{dg}}}Ab{AEbNn}{AEbOh}Jn}{{{h{Ol}}{h{dc}}}AbJn}{{{h{AKh}}{h{dc}}}AbJn}{{{h{AKl}}{h{dc}}}AbJn}{ce{}{}}00000000000{OlAMl}{AHn{{Bf{{AKn{c}}AGf}}}Oh}{{AIj{Fl{AMn}}ALh}{{Bf{{AKn{c}}AGf}}}Oh}{{{AKd{ec}}{Fl{AMn}}ALh}{{Bf{{AKn{c}}AGf}}}Oh{{AIj{c}}}}{{{AKd{ec}}}{{Bf{{AKn{c}}AGf}}}Oh{{AHn{c}}}}{{{AKn{c}}}{{Bf{{AKn{c}}AGf}}}Oh}{Ol{{Bf{{AKn{c}}AGf}}}Oh}{AFb{{Bf{{AKn{c}}AGf}}}Oh}{AIj{{Bf{{ALb{c}}AGf}}}Oh}{{{ALb{c}}}{{Bf{{ALb{c}}AGf}}}Oh}{{{AKd{ec}}}{{Bf{{ALb{c}}AGf}}}Oh{{AIj{c}}}}{{{AKd{ce}}}c{}Oh}{Ol{{N`{Ol}}}}{AFb{{N`{AFb}}}}{{{ALb{c}}L`}{{Fl{AL`}}}Oh}{{{ALb{c}}L`{h{{Lf{e}}}}}ALdOhAFd}{{{h{Ol}}}Gd}{{}Gd}{{{h{Ob}}}Gd}2{{{h{AFb}}}Gd}212133{{{h{{AKb{ce}}}}}ADnNnOh}``{{{h{{AKb{ce}}}}}{{Bf{{AEh{c}}Nl}}}NnOh}{{}AK`}{{{h{Ol}}}AN`}{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Fl{ADn}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}44{{{h{AK`}}{h{AK`}}}AK`}5{{}{{h{Mf}}}}{{ADn{N`{c}}}{{Bf{{AKb{ce}}Nl}}}NnOh}{{{h{Ol}}}ADn}``{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbNl}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}{{{AKn{c}}AK`}{{AKn{c}}}Oh}{{{h{{AKb{ce}}}}{h{{AKb{ce}}}}}{{Fl{Eh}}}{AFfNn}{AFfOh}}{{{h{Ol}}{h{Ol}}}{{Fl{Eh}}}}{{{h{AKh}}{h{AKh}}}{{Fl{Eh}}}}{{{h{AKl}}{h{AKl}}}{{Fl{Eh}}}}{{{h{c}}}ADnNn}{{{h{{AKb{ce}}}}}{{h{{Cj{c}}}}}NnOh}{{{h{{AKb{ce}}}}}{{Bf{AbNl}}}NnOh}{{{h{{AKb{ce}}}}g}{{Bf{{N`{{N`{Ch}}}}Nl}}}{O`Nn}Oh{{AE`{c}}}}{{{h{{AKb{ce}}}}}ADnNnOh}{{{h{Ol}}c}BfLj}{{}AFl}{{{h{{AKb{ce}}}}}{{Of{ce}}}{O`Nn}Oh}{{}AK`}{{{h{c}}}e{}{}}00000000{{{h{AFb}}{h{{Lf{c}}}}}{{Bf{OlANb}}}AFd}{{{h{c}}}G`{}}000{{{h{{Od{c{Oh{}{{A@h{e}}}}}}}}}{{Bf{AbNl}}}Nn{{AAl{}{{A@l{A@n}}{AA`{AAb}}{AAd{AAf}}{AAh{AAj}}}}NnNnNnNn}}0{{{h{{AKb{ce}}}}{h{dk}}}{{Bf{{AKb{ge}}{AFn{i}}}}}NnOhNn{}{{AG`{cgi}}}}{c{{Bf{e}}}{}{}}00000000000000000000000{{{h{c}}}Mb{}}00000000000{ce{}{}}00000000000`{{{h{ANd}}}{{Fl{Dh}}}}{{{h{ANd}}}{{Fl{Dl}}}}{{{h{ANd}}ADn}{{Fl{Kb}}}}`{{{h{Ej}}{h{Mf}}{h{{Cj{{h{{Cj{{h{Mf}}}}}}}}}}}{{Bf{AbANf}}}}````````````````````````````````````{{{h{dJh}}ANhl{A`{n}}}{{Fl{{A`{n}}}}}}``{{{h{Jh}}{h{{Lf{Ld}}}}}Kh}`{{{h{c}}}{{h{e}}}{}{}}0000000{{{h{dc}}}{{h{de}}}{}{}}0000000{{Kh{h{{Nh{Ol}}}}{h{{Lf{Ld}}}}}Jh}{{{h{ANh}}}ANh}{{{h{ANj}}}ANj}{{{h{{ANl{c}}}}}{{ANl{c}}}{AlANnHjAl}}{{{h{l}}}l}{{{h{Jh}}}Jh}{{{h{H`}}}H`}{{{h{AO`}}}AO`}{{{h{c}}{h{de}}}Ab{}{}}000000{{{h{ANh}}{h{ANh}}}Eh}{{{h{l}}{h{l}}}Eh}{{}l}{{}Jh}{{}H`}{{}AO`}{{{h{{ANl{c}}}}}{{h{e}}}{ANnHjAl}{}}{{{h{AOb}}}{{Fl{AFb}}}}0{{{h{{ANl{{AOd{AL`}}}}}}}{{Fl{AFb}}}}{{{h{{ANl{{AOf{AL`}}}}}}}{{Fl{AFb}}}}{{{h{{ANl{AOh}}}}}{{Fl{AFb}}}}{{{h{ANh}}{h{ANh}}}Gd}{{{h{ANj}}{h{ANj}}}Gd}{{{h{l}}{h{l}}}Gd}{{{h{AO`}}{h{AO`}}}Gd}{{{h{c}}{h{e}}}Gd{}{}}0000000{{{h{Jh}}ANh}{{Fl{{h{{A`{n}}}}}}}}{{{h{ANh}}{h{dHd}}}Hh}{{{h{Hb}}{h{dHd}}}Hh}0{{{h{ANj}}{h{dHd}}}Hh}{{{h{{ANl{c}}}}{h{dHd}}}Hh{HjANnHjAl}}{{{h{l}}{h{dHd}}}Hh}{{{h{Jh}}{h{dHd}}}Hh}{{{h{H`}}{h{dHd}}}Hh}{{{h{AO`}}{h{dHd}}}Hh}{AN`ANh}{AAjANh}{cc{}}0000000{{{h{ANh}}{h{dc}}}AbJn}{{{h{AOb}}{h{{Lf{Ld}}}}}ANh}{{{h{{ANl{{AOd{AL`}}}}}}{h{{Lf{Ld}}}}}ANh}{{{h{{ANl{AOh}}}}{h{{Lf{Ld}}}}}ANh}{{{h{{ANl{{AOf{AL`}}}}}}{h{{Lf{Ld}}}}}ANh}{{{h{Jh}}}{{N`{{h{ANh}}}}}}{ce{}{}}0000000{{cANj}{{ANl{c}}}{ANnHjAl}}{{}Jh}{{{h{ANh}}{h{ANh}}}{{Fl{Eh}}}}{{{h{l}}{h{l}}}{{Fl{Eh}}}}{{{h{dJh}}ANhl}{{Fl{{A`{n}}}}}}{{{h{AOj}}{h{dGn}}ADn{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}}{{{h{{ANl{{AOf{AL`}}}}}}{h{dGn}}ADn{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}}{{{h{{ANl{AOh}}}}{h{dGn}}ADn{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}}{{{h{{ANl{{AOd{AL`}}}}}}{h{dGn}}ADn{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}}{{{h{n}}{h{dGn}}{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}}{{{h{c}}{h{dGn}}{h{H`}}{h{{Lf{Ld}}}}}{{Bf{AbHb}}}{}}`{{{h{Jh}}}{{N`{{h{{A`{n}}}}}}}}`{{{h{c}}}e{}{}}000000{{{h{c}}}G`{}}``{c{{Bf{e}}}{}{}}000000000000000{{{h{c}}}Mb{}}0000000{ce{}{}}0000000````````````````{{{h{d{Dd{c}}}}{h{e}}}{{h{d{Dd{c}}}}}{}{{AOn{AOl}}}}{{{h{d{Dd{c}}}}JlJdAEl}{{Bf{{h{d{Dd{c}}}}B@`}}}{}}{{{h{d{Dd{c}}}}JlJdAElLh}{{Bf{{h{d{Dd{c}}}}B@`}}}{}}{{{h{d{Dd{c}}}}}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}AfDh}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}Jl}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}Jl}{{Bf{{h{d{Dd{c}}}}B@b}}}{}}{{{h{d{Dd{c}}}}{h{{Cj{Jl}}}}}{{Bf{{h{d{Dd{c}}}}B@b}}}{}}{{{h{d{Dd{c}}}}Gd}{{h{d{Dd{c}}}}}{}}{{{h{c}}}{{h{e}}}{}{}}0000{{{h{dc}}}{{h{de}}}{}{}}0000{{{h{d{Dd{c}}}}B@d}{{h{d{Dd{c}}}}}{}}{{{h{{Dd{c}}}}}{{Dd{c}}}Al}{{{h{B@f}}}B@f}{{{h{B@d}}}B@d}{{{h{c}}{h{de}}}Ab{}{}}00{{{h{B@d}}{h{B@d}}}Eh}{{{Dd{c}}e}{{Dd{e}}}{}Mn}{{{h{d{Dd{c}}}}Bb}{{h{d{Dd{c}}}}}{}}{{}B@f}{{}B@d}{{{h{d{Dd{c}}}}}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}Af}{{h{d{Dd{c}}}}}{}}11{{{h{d{Dd{c}}}}Lh}{{h{d{Dd{c}}}}}{}}{{{h{B@d}}{h{B@d}}}Gd}{{{h{c}}{h{e}}}Gd{}{}}0{{{h{d{Dd{c}}}}Dh}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}Dl}{{h{d{Dd{c}}}}}{}}{{{Dd{c}}}{{Bf{GnJf}}}Mn}{{{Dd{c}}{h{de}}}{{Bf{GnJf}}}MnAMj}{{{h{{Dd{c}}}}{h{dHd}}}HhHj}{{{h{B@b}}{h{dHd}}}Hh}0{{{h{B@`}}{h{dHd}}}Hh}0{{{h{B@f}}{h{dHd}}}Hh}{{{h{B@d}}{h{dHd}}}Hh}{cc{}}0000{{{h{B@d}}{h{dc}}}AbJn}?{ce{}{}}0000{{{h{d{Dd{c}}}}}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}B@h}{{h{d{Dd{c}}}}}{}}11{{{h{d{Dd{c}}}}B@f}{{h{d{Dd{c}}}}}{}}{{{h{B@d}}{h{B@d}}}{{Fl{Eh}}}}{{{h{d{Dd{c}}}}{An{G`{N`{ADn}}}}j}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}{N`{{C`{AfDh}}}}}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}Jb}{{h{d{Dd{c}}}}}{}}{{{h{B@f}}{h{dBl}}}Ab}{{{h{B@f}}{h{dBl}}{h{dc}}}AbAMj}{{{h{c}}}e{}{}}00{{{h{c}}}G`{}}0{c{{Bf{e}}}{}{}}000000000{{{h{c}}}Mb{}}0000{{{h{d{Dd{c}}}}{N`{Jl}}}{{h{d{Dd{c}}}}}{}}{{{h{d{Dd{c}}}}B@j}{{h{d{Dd{c}}}}}{}}?????````","D":"G@b","p":[[5,"Balance",0,1935],[0,"mut"],[5,"Wallet",0,1936],[1,"reference"],[6,"KeychainKind",0,1937],[5,"SignerOrdering",1629,1938],[10,"TransactionSigner",1629,1938],[5,"Arc",1939],[1,"unit"],[17,"Item"],[5,"ScriptBuf",1940],[8,"Indexed",1941],[10,"Iterator",1942],[10,"Clone",1943],[5,"BTreeMap",1944],[5,"Block",1945],[1,"u32"],[5,"CannotConnectError",1946],[6,"Result",1947],[5,"BlockId",1948],[6,"ApplyHeaderError",1946],[5,"Transaction",1949],[1,"u64"],[1,"tuple"],[10,"IntoIterator",1950],[5,"Update",0,1936],[10,"Into",1951],[1,"u8"],[1,"slice"],[5,"ConfirmationBlockTime",1948],[5,"TxGraph",1952],[5,"Txid",1949],[8,"DefaultCoinSelectionAlgorithm",446,1953],[5,"TxBuilder",1816,1954],[6,"BuildFeeBumpError",1207,1955],[5,"Amount",1956],[6,"CalculateFeeError",1952],[5,"FeeRate",1957],[5,"CheckPointIter",1946],[5,"LocalOutput",0,1937],[5,"WeightedUtxo",0,1937],[6,"Utxo",0,1937],[5,"ChangeSet",0,1958],[6,"Ordering",1959],[5,"Transaction",1960],[5,"Store",1961],[5,"CreateParams",0,1962],[10,"IntoWalletDescriptor",545],[5,"Connection",1963],[8,"PersistedWallet",0,1964],[6,"Error",807],[5,"LoadParams",0,1962],[5,"AddressInfo",0,1936],[6,"Option",1965],[5,"Script",1966],[5,"String",1967],[10,"Deserializer",1968],[1,"bool"],[6,"LoadWithPersistError",0,1964],[10,"PartialEq",1959],[6,"LoadError",0,1936],[6,"LoadMismatch",0,1936],[5,"Psbt",1969],[5,"SignOptions",1629,1938],[6,"SignerError",1629,1938],[5,"Formatter",1970],[5,"Error",1970],[8,"Result",1970],[10,"Debug",1970],[10,"Display",1970],[6,"CreateWithPersistError",0,1964],[6,"ApplyBlockError",0,1936],[5,"ChangeSet",1952],[5,"ChangeSet",1946],[5,"ChangeSet",1971],[5,"ChangeSet",1972],[5,"FullScanResult",1973],[5,"SyncResult",1973],[8,"Result",1963],[5,"BlockHash",1945],[5,"PsbtSighashType",1974],[5,"Input",1974],[6,"CreateTxError",1207,1955],[5,"SignersContainer",1629,1938],[5,"CanonicalTx",1952],[5,"OutPoint",1949],[10,"Hasher",1975],[5,"AlterCheckPointError",1946],[5,"TxOut",1949],[10,"IsDust",0,1976],[8,"ExtendedDescriptor",545],[8,"KeyMap",1307,1977],[5,"CheckPoint",1946],[10,"DoubleEndedIterator",1978],[5,"LocalChain",1946],[6,"Network",1979],[5,"Policy",840],[6,"All",1980],[5,"Secp256k1",1981],[5,"Sequence",1949],[10,"Serializer",1982],[5,"KeychainTxOutIndex",1971],[5,"FullScanRequest",1973],[5,"SyncRequest",1973],[5,"TypeId",1983],[5,"TxNode",1952],[1,"str"],[5,"LargestFirstCoinSelection",446,1953],[5,"OldestFirstCoinSelection",446,1953],[5,"BranchAndBoundCoinSelection",446,1953],[10,"CoinSelectionAlgorithm",446,1953],[5,"Vec",1984],[5,"CoinSelectionResult",446,1953],[6,"Error",446,1953],[6,"Excess",446,1953],[6,"Descriptor",545,1977],[5,"Address",1985],[6,"Error",1986],[10,"MiniscriptKey",1986],[10,"ToPublicKey",1986],[6,"ScriptContextEnum",1307],[5,"Miniscript",545,1987],[6,"Terminal",1988],[10,"ScriptContext",1307,1989],[6,"Tree",1990],[6,"DescriptorPublicKey",1307,1991],[5,"DefiniteDescriptorKey",1991],[6,"ConversionError",1991],[6,"Placeholder",1992],[5,"Satisfaction",1992],[10,"AssetProvider",1993],[17,"Key"],[6,"ScriptContextError",1989],[17,"Sha256"],[5,"Hash",1994],[17,"Hash256"],[5,"Hash",1995],[17,"Ripemd160"],[5,"Hash",1996],[17,"Hash160"],[5,"Hash",1997],[10,"ParseableKey",1988],[6,"Legacy",545,1989],[6,"Segwitv0",545,1989],[10,"Ord",1959],[5,"PublicKey",1998],[10,"Verification",1999],[6,"DescriptorType",1977],[5,"DescriptorId",2000],[10,"FromStrKey",2001],[5,"ExtParams",2002],[6,"AnalysisError",2002],[10,"ExtractPolicy",545],[6,"BuildSatisfaction",840],[5,"Range",2003],[17,"Output"],[10,"FnMut",2004],[5,"Bare",2005],[5,"Tr",2006],[5,"Pkh",2005],[5,"Wsh",2007],[5,"Sh",2008],[5,"Wpkh",2007],[5,"Type",2009],[5,"ExtData",2010],[5,"Tree",2011],[1,"usize"],[10,"Satisfier",1992],[10,"Hash",1975],[5,"Iter",2012],[5,"PkIter",2012],[6,"Policy",2013],[6,"LiftError",2014],[5,"Weight",2015],[6,"BareCtx",1989],[6,"TapTree",2006],[6,"DescriptorSecretKey",1307,1991],[10,"Signing",1999],[10,"PartialOrd",1959],[5,"Plan",1993],[5,"TxIn",1949],[6,"SigType",1989],[6,"TranslateErr",1986],[10,"Translator",1986],[1,"array"],[6,"ParsePublicKeyError",1998],[6,"KeyError",1307],[6,"Error",2016],[6,"HexToBytesError",2017],[6,"PolicyError",840],[6,"Error",2018],[6,"PkOrF",840],[6,"SatisfiableItem",840],[6,"Satisfaction",840],[5,"Condition",840],[10,"DescriptorTemplate",1023],[8,"DescriptorTemplateOut",1023],[5,"P2Pkh",1023],[10,"IntoDescriptorKey",1307],[5,"P2Wpkh_P2Sh",1023],[5,"P2Wpkh",1023],[5,"P2TR",1023],[6,"Tap",1989],[5,"Bip44",1023],[10,"DerivableKey",1307],[5,"Bip44Public",1023],[5,"Bip49",1023],[5,"Bip49Public",1023],[5,"Bip84",1023],[5,"Bip84Public",1023],[5,"Bip86",1023],[5,"Bip86Public",1023],[6,"MiniscriptPsbtError",1207,1955],[6,"Error",2019],[5,"FullyNodedExport",1284,2020],[8,"ValidNetworks",1307],[5,"SortedMultiVec",1307,2021],[5,"GeneratedKey",1307],[5,"PrivateKeyGenerateOptions",1307],[5,"SinglePub",1307,1991],[5,"SinglePriv",1307,1991],[6,"SinglePubKey",1307,1991],[6,"DescriptorKey",1307],[5,"Xpriv",2018],[6,"ExtendedKey",1307],[5,"Xpub",2018],[10,"FromStr",2022],[5,"DerivationPath",2018],[17,"Entropy"],[17,"Options"],[17,"Error"],[10,"GeneratableKey",1307],[10,"AsMut",1951],[10,"Default",2023],[10,"GeneratableDefaultOptions",1307],[10,"CryptoRng",2024],[10,"RngCore",2024],[5,"Assets",1993],[8,"KeySource",2018],[5,"Fingerprint",2018],[5,"DescriptorKeyParseError",1991],[10,"PsbtUtils",1623],[6,"Error",2025],[6,"SignerId",1629,1938],[6,"SignerContext",1629,1938],[5,"SignerWrapper",1629,1938],[10,"Sized",2026],[6,"TapLeavesOptions",1629,1938],[10,"SignerCommon",1629,1938],[5,"DescriptorMultiXKey",1991],[5,"DescriptorXKey",1991],[5,"PrivateKey",1998],[10,"InputSigner",1629,1938],[5,"PushBytes",2027],[10,"AsRef",1951],[6,"AddForeignUtxoError",1816,1954],[6,"AddUtxoError",1816,1954],[6,"ChangeSpendPolicy",1816,1954],[6,"TxOrdering",1816,1954],[6,"LockTime",2028],[1,"i32"],[15,"InvalidTxid",1931],[15,"UnexpectedConnectedToHash",432],[15,"Network",434],[15,"Genesis",434],[15,"Descriptor",434],[15,"Custom",1933],[15,"Foreign",443],[15,"InsufficientFunds",538],[15,"Change",540],[15,"NoChange",540],[8,"DerivedDescriptor",545],[15,"PsbtTimelocks",999],[15,"Complete",1002],[15,"Partial",1002],[15,"PartialComplete",1002],[15,"Sha256Preimage",1013],[15,"Hash256Preimage",1013],[15,"Ripemd160Preimage",1013],[15,"Hash160Preimage",1013],[15,"Thresh",1013],[15,"Multisig",1013],[15,"AbsoluteTimelock",1013],[15,"RelativeTimelock",1013],[15,"RbfSequenceCsv",1278],[15,"LockTime",1278],[15,"FeeTooLow",1278],[15,"FeeRateTooLow",1278],[8,"WalletExport",1284],[10,"ExtScriptContext",1307],[15,"Tap",1815]],"r":[[0,1954],[1,1954],[2,1936],[3,1936],[4,1935],[8,1958],[9,1954],[10,1962],[11,1964],[19,545],[24,1976],[25,1937],[26,1936],[27,1936],[28,1962],[29,1964],[31,1937],[41,1964],[43,1938],[44,1954],[45,1954],[49,1936],[50,1937],[53,1936],[54,1937],[127,1936],[177,1936],[178,1936],[310,1941],[325,1936],[326,1936],[334,545],[386,1936],[429,1936],[448,1953],[450,1953],[451,1953],[452,1953],[453,1953],[454,1953],[456,1953],[458,1953],[481,1953],[549,1977],[551,1991],[558,1989],[559,1987],[564,840],[565,1989],[566,1989],[600,805],[1207,1955],[1210,1955],[1218,1955],[1284,2020],[1285,2020],[1310,1991],[1311,1991],[1326,1977],[1336,1989],[1341,1991],[1342,1991],[1343,1991],[1344,2021],[1627,2029],[1628,2029],[1636,1938],[1653,1938],[1654,1938],[1655,1938],[1656,1938],[1657,1938],[1658,1938],[1659,1938],[1660,1938],[1662,1938],[1663,1938],[1816,1954],[1817,1954],[1820,1954],[1827,1954],[1828,1954]],"b":[[130,"impl-PersistWith%3CTransaction%3C\'c%3E%3E-for-Wallet"],[131,"impl-PersistWith%3CStore%3CChangeSet%3E%3E-for-Wallet"],[132,"impl-Wallet"],[133,"impl-PersistWith%3CConnection%3E-for-Wallet"],[181,"impl-Display-for-Balance"],[182,"impl-Debug-for-Balance"],[188,"impl-Debug-for-LoadWithPersistError%3CE%3E"],[189,"impl-Display-for-LoadWithPersistError%3CE%3E"],[190,"impl-Debug-for-CreateWithPersistError%3CE%3E"],[191,"impl-Display-for-CreateWithPersistError%3CE%3E"],[194,"impl-Display-for-AddressInfo"],[195,"impl-Debug-for-AddressInfo"],[196,"impl-Debug-for-LoadError"],[197,"impl-Display-for-LoadError"],[199,"impl-Display-for-ApplyBlockError"],[200,"impl-Debug-for-ApplyBlockError"],[209,"impl-From%3CChangeSet%3CConfirmationBlockTime%3E%3E-for-ChangeSet"],[210,"impl-From%3CChangeSet%3E-for-ChangeSet"],[212,"impl-From%3CChangeSet%3CConfirmationBlockTime,+ChangeSet%3E%3E-for-ChangeSet"],[213,"impl-From%3CChangeSet%3E-for-ChangeSet"],[218,"impl-From%3CFullScanResult%3CKeychainKind%3E%3E-for-Update"],[220,"impl-From%3CSyncResult%3E-for-Update"],[273,"impl-PersistWith%3CStore%3CChangeSet%3E%3E-for-Wallet"],[274,"impl-PersistWith%3CConnection%3E-for-Wallet"],[275,"impl-Wallet"],[276,"impl-PersistWith%3CTransaction%3C\'c%3E%3E-for-Wallet"],[300,"impl-PersistWith%3CConnection%3E-for-Wallet"],[301,"impl-PersistWith%3CStore%3CChangeSet%3E%3E-for-Wallet"],[302,"impl-PersistWith%3CTransaction%3C\'c%3E%3E-for-Wallet"],[328,"impl-Wallet"],[329,"impl-Staged-for-Wallet"],[487,"impl-Display-for-Error"],[488,"impl-Debug-for-Error"],[638,"impl-Descriptor%3CDefiniteDescriptorKey%3E"],[639,"impl-Descriptor%3CDescriptorPublicKey%3E"],[666,"impl-Display-for-Descriptor%3CPk%3E"],[667,"impl-Debug-for-Descriptor%3CPk%3E"],[670,"impl-Display-for-Miniscript%3CPk,+Ctx%3E"],[671,"impl-Debug-for-Miniscript%3CPk,+Ctx%3E"],[674,"impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[675,"impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[676,"impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[677,"impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[678,"impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[680,"impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[824,"impl-Display-for-Error"],[825,"impl-Debug-for-Error"],[826,"impl-From%3CParsePublicKeyError%3E-for-Error"],[828,"impl-From%3CKeyError%3E-for-Error"],[829,"impl-From%3CError%3E-for-Error"],[830,"impl-From%3CError%3E-for-Error"],[831,"impl-From%3CHexToBytesError%3E-for-Error"],[832,"impl-From%3CPolicyError%3E-for-Error"],[833,"impl-From%3CError%3E-for-Error"],[927,"impl-Display-for-PolicyError"],[928,"impl-Debug-for-PolicyError"],[1245,"impl-Display-for-MiniscriptPsbtError"],[1246,"impl-Debug-for-MiniscriptPsbtError"],[1247,"impl-Debug-for-CreateTxError"],[1248,"impl-Display-for-CreateTxError"],[1249,"impl-Debug-for-BuildFeeBumpError"],[1250,"impl-Display-for-BuildFeeBumpError"],[1252,"impl-From%3CError%3E-for-CreateTxError"],[1253,"impl-From%3CMiniscriptPsbtError%3E-for-CreateTxError"],[1255,"impl-From%3CPolicyError%3E-for-CreateTxError"],[1256,"impl-From%3CError%3E-for-CreateTxError"],[1257,"impl-From%3CError%3E-for-CreateTxError"],[1294,"impl-Debug-for-FullyNodedExport"],[1295,"impl-Display-for-FullyNodedExport"],[1440,"impl-Debug-for-KeyError"],[1441,"impl-Display-for-KeyError"],[1442,"impl-Debug-for-SortedMultiVec%3CPk,+Ctx%3E"],[1443,"impl-Display-for-SortedMultiVec%3CPk,+Ctx%3E"],[1444,"impl-Debug-for-DescriptorPublicKey"],[1445,"impl-Display-for-DescriptorPublicKey"],[1446,"impl-Debug-for-DescriptorSecretKey"],[1447,"impl-Display-for-DescriptorSecretKey"],[1453,"impl-From%3CXpriv%3E-for-ExtendedKey%3CCtx%3E"],[1454,"impl-From%3CXpub%3E-for-ExtendedKey%3CCtx%3E"],[1459,"impl-From%3CError%3E-for-KeyError"],[1460,"impl-From%3CError%3E-for-KeyError"],[1503,"impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1504,"impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1710,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1711,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1712,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1727,"impl-Debug-for-SignerError"],[1728,"impl-Display-for-SignerError"],[1735,"impl-From%3CFingerprint%3E-for-SignerId"],[1736,"impl-From%3CHash%3E-for-SignerId"],[1747,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1748,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1749,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1765,"impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1766,"impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E"],[1767,"impl-InputSigner-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1875,"impl-Debug-for-AddUtxoError"],[1876,"impl-Display-for-AddUtxoError"],[1877,"impl-Debug-for-AddForeignUtxoError"],[1878,"impl-Display-for-AddForeignUtxoError"]],"c":"OjAAAAEAAAAAAAUAEAAAAH4CyALUAgYFhQXtBQ==","e":"OzAAAAEAAA4EhgAUAAAAOAAAAEMAAQBHACAAbQAAAHEADgCDAAEAhgAAAIsABACYABkAtAAAALYAEwDSAAEA1QABANgAAADbAAAA3QAAAN8AAADrAAEABAEAABIBAQAVAQAAIAEAACsBAAAtAQIANgEAADwBBQBHAQAASgEAAE8BDQBjAR8AiAEPAJ4BDwDMAREA3wECAOMBAgDoAQYA/wEbACcCAAA1AgAASQIBAEwCAABOAgcAWQIAAFsCAQBeAgAAYQIBAGQCAQBoAgEAawIBAG4CAQBxAgsAggIDAIcCCwCYAgEAmwIMAKkCAACvAgAAvAIDAMcCAADNAgEA0QIBANgCAQDuAgMA8wIBAAEDAQAEAwEACAMFABMDBwAcAwMAIQMDADYDBQA9AwUARAMEAGwDGQCIAxoApgMBAK0DAQC8AwAAvwMEAMUDIgAOBBcAJwQvAG8ESADWBA0A5QQBAOgEAgDvBA8ACQUBAA0FAAAPBQEAEgUAABYFBQBKBRcAbAUVAIMFAQCGBQAAiAUkAK4FAQC0BQEAuAUAAMAFAQDNBQMA3QUAAOAFBADmBQEA9gUBAPsFAAAFBgAACgYDABMGAAAXBggAIQYDACgGLwCHBg8AmAYUAK8GDgC/BgoA0gYAANQGAgDiBgEA5gYCAOoGAADuBgcA+AYfADEHCQA8BwYARQcBAEwHAgBTBwYAXwcAAGsHAABxBxMAhwcEAA=="}],\ ["example_bitcoind_rpc_polling",{"t":"PSISSSGPSPFGSPPNNNNHNNNNNNNNNNONNNNNNNNNNNNNNHNOOOHNNNNNNNNNNNNNNNONNNOO","n":["Block","CHANNEL_BOUND","ChangeSet","DB_COMMIT_DELAY","DB_MAGIC","DB_PATH","Emission","Live","MEMPOOL_EMIT_DELAY","Mempool","RpcArgs","RpcCommands","STDOUT_PRINT_DELAY","Sync","Tip","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","await_flag","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fallback_height","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","main","new_client","rpc_cookie","rpc_password","rpc_user","start_ctrlc_handler","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","url","vzip","vzip","vzip","rpc_args","rpc_args"],"q":[[0,"example_bitcoind_rpc_polling"],[70,"example_bitcoind_rpc_polling::RpcCommands"],[72,"clap::builder::command"],[73,"core::sync::atomic"],[74,"core::time"],[75,"core::fmt"],[76,"clap::parser::matches::arg_matches"],[77,"clap::error"],[78,"core::result"],[79,"anyhow"],[80,"bitcoincore_rpc::client"],[81,"alloc::sync"],[82,"core::any"]],"i":[10,0,0,0,0,0,0,8,0,10,0,0,0,8,10,7,7,8,8,0,10,7,8,10,7,8,7,8,7,8,7,10,7,8,10,7,8,7,8,7,8,8,10,7,8,0,7,7,7,7,0,7,8,10,7,8,10,7,8,10,7,8,7,8,7,8,7,10,7,8,21,22],"f":"```````````````{bb}000{{{f{d}}h}j}{{{f{c}}}{{f{e}}}{}{}}00{{{f{lc}}}{{f{le}}}{}{}}00{{{f{n}}}n}{{{f{A`}}}A`}{{{f{c}}{f{le}}}Ab{}{}}0`{{{f{Ad}}{f{lAf}}}Ah}{{{f{n}}{f{lAf}}}Ah}{{{f{A`}}{f{lAf}}}Ah}{cc{}}00{{{f{Aj}}}{{An{nAl}}}}{{{f{Aj}}}{{An{A`Al}}}}{{{f{lAj}}}{{An{nAl}}}}{{{f{lAj}}}{{An{A`Al}}}}{{{f{B`}}}j}{ce{}{}}00{{}{{Bb{Ab}}}}{{{f{n}}}{{Bb{Bd}}}}```{{}{{Bf{d}}}}{{{f{c}}}e{}{}}0{c{{An{e}}}{}{}}00000{{{f{c}}}Bh{}}00{{{f{ln}}{f{Aj}}}{{An{AbAl}}}}{{{f{lA`}}{f{Aj}}}{{An{AbAl}}}}{{{f{ln}}{f{lAj}}}{{An{AbAl}}}}{{{f{lA`}}{f{lAj}}}{{An{AbAl}}}}`:::``","D":"Bb","p":[[8,"Command",72],[5,"AtomicBool",73],[1,"reference"],[5,"Duration",74],[1,"bool"],[0,"mut"],[5,"RpcArgs",0],[6,"RpcCommands",0],[1,"unit"],[6,"Emission",0],[5,"Formatter",75],[8,"Result",75],[5,"ArgMatches",76],[5,"Error",77],[6,"Result",78],[1,"str"],[8,"Result",79],[5,"Client",80],[5,"Arc",81],[5,"TypeId",82],[15,"Sync",70],[15,"Live",70]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADcACgAAAAEAAwAAAAUAAgAKAAIADwAPACAAAgAmAAQALgABADMADwBEAAQA"}],\ -["example_cli",{"t":"PGFPPPGGFPPFPGIIPPPPPPPIPPPGEONNNNNNNNENNNNNNNNNNNNNNNNOOENNNNNNNNNNNOOHOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOOOOHONNNNNNNNNNOONHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOO","n":["Address","AddressCmd","Args","Balance","BranchAndBound","ChainSpecific","CoinSelectionAlgo","Commands","CreateTxChange","External","Index","Init","Internal","Keychain","KeychainChangeSet","KeychainTxGraph","LargestFirst","List","List","New","NewestFirst","Next","OldestFirst","PlannedUtxo","Send","SmallestFirst","TxOut","TxOutCmd","anyhow","args","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands","augment_subcommands","augment_subcommands_for_update","augment_subcommands_for_update","augment_subcommands_for_update","bdk_file_store","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_descriptor","change_keychain","clap","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","command","cp_limit","create_tx","db","db_path","default","descriptor","deserialize","eq","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_str","handle_commands","has_subcommand","has_subcommand","has_subcommand","index","index","index","index_changeset","init","init_changeset","into","into","into","into","into","into","into","into","into_app","into_app_for_update","keymap","network","partial_cmp","planned_utxos","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","change","addr_cmd","address","chain_specific","coin_select","txout_cmd","value","confirmed","spent","unconfirmed","unspent"],"q":[[0,"example_cli"],[176,"example_cli::AddressCmd"],[177,"example_cli::Commands"],[183,"example_cli::TxOutCmd"],[187,"clap::builder::command"],[188,"core::clone"],[189,"clap::derive"],[190,"core::cmp"],[191,"miniscript::descriptor::key"],[192,"alloc::collections::btree::map"],[193,"bitcoin::address"],[194,"bitcoin::blockdata::transaction"],[195,"core::option"],[196,"anyhow"],[197,"bdk_chain::tx_data_traits"],[198,"bdk_chain::chain_oracle"],[199,"core::result"],[200,"serde::de"],[201,"core::fmt"],[202,"clap::parser::matches::arg_matches"],[203,"clap::error"],[204,"std::sync::mutex"],[205,"bdk_file_store::store"],[206,"bitcoin::network"],[207,"core::default"],[208,"serde::ser"],[209,"core::convert"],[210,"core::marker"],[211,"core::ops::function"],[212,"bdk_tmp_plan"],[213,"alloc::vec"],[214,"alloc::string"],[215,"core::any"]],"i":[4,0,0,4,8,4,0,0,0,11,9,0,11,0,0,0,8,9,10,9,8,9,8,0,4,8,4,0,0,52,34,34,4,9,10,4,9,10,0,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,34,21,0,4,8,9,10,11,4,8,9,10,11,11,34,34,0,52,34,8,34,11,11,11,11,4,8,8,9,10,11,11,21,52,34,4,8,9,10,11,34,4,9,10,34,4,9,10,8,0,4,9,10,14,21,52,21,0,52,21,52,34,4,8,9,10,11,34,34,52,34,11,0,11,4,8,9,10,11,8,11,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,34,4,9,10,34,4,9,10,21,52,34,4,8,9,10,11,60,61,62,62,62,63,62,64,64,64,64],"f":"``````````````````````````````{bb}0000000`{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{fc}}}{{d{fe}}}{}{}}0000000```{{{d{{h{ce}}}}}{{h{ce}}}{jl}{jn}}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{c}}{d{fe}}}Ah{}{}}0000{{{d{Af}}{d{Af}}}Aj}``{{{d{f{Al{c}}}}{d{e}}{d{{Bb{AnB`}}}}A`BdBf}{{C`{{Bn{Bh{Bl{Bj}}}}}}}CbCd}``{{}A`}`{c{{Cf{Af}}}Ch}{{{d{Af}}{d{Af}}}Cj}{{{d{c}}{d{e}}}Cj{}{}}0{{{d{{h{ce}}}}{d{fCl}}}Cn{D`l}{D`n}}{{{d{A`}}{d{fCl}}}Cn}0{{{d{Ab}}{d{fCl}}}Cn}{{{d{Ad}}{d{fCl}}}Cn}{{{d{Af}}{d{fCl}}}Cn}0{cc{}}0000000{{{d{Db}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{Db}}}{{Cf{{h{ce}}Df}}}ln}{{{d{Db}}}{{Cf{AbDf}}}}{{{d{Db}}}{{Cf{AdDf}}}}{{{d{fDb}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{{h{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{AbDf}}}}{{{d{fDb}}}{{Cf{AdDf}}}}{{{d{Dh}}}{{Cf{A`c}}}{}}{{{d{{Dj{{Al{c}}}}}}{d{{Dj{{Dl{e}}}}}}{d{{Dj{g}}}}{d{{Bb{AnB`}}}}Dnk{h{mi}}}{{C`{Ah}}}Cb{E`EbEdEf{Ej{{Eh{c}}}}ElEnD`}Cdn{{Fb{i{d{Bh}}}{{F`{{C`{Ah}}}}}}}l}{{{d{Dh}}}Cj}00````{{{d{{Ff{Fd}}}}{d{Dh}}}{{C`{{Fh{ceg}}}}}ln{E`EbEfEdD`ElEn}}`{ce{}{}}0000000{{}b}0``{{{d{Af}}{d{Af}}}{{Bl{Aj}}}}{{{d{{Al{c}}}}{d{e}}{d{{Fj{g}}}}}{{Cf{{Fn{{Fl{gc}}}}}}}CbCd{jG`}}{{{d{Af}}c}CfGb}{{{d{c}}}e{}{}}0000{{{d{c}}}Gd{}}0{c{{Cf{e}}}{}{}}000000000000000{{{d{c}}}Gf{}}0000000{{{d{f{Dd{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{Db}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{Db}}}{{Cf{AhDf}}}}{{{d{f{Dd{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{fDb}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{fDb}}}{{Cf{AhDf}}}}{ce{}{}}0000000```````````","D":"E`","p":[[8,"Command",187],[1,"reference"],[0,"mut"],[6,"Commands",0],[10,"Clone",188],[10,"Subcommand",189],[10,"Args",189],[6,"CoinSelectionAlgo",0],[6,"AddressCmd",0],[6,"TxOutCmd",0],[6,"Keychain",0],[1,"unit"],[6,"Ordering",190],[8,"KeychainTxGraph",0],[6,"DescriptorPublicKey",191],[6,"DescriptorSecretKey",191],[5,"BTreeMap",192],[5,"Address",193],[1,"u64"],[5,"Transaction",194],[5,"CreateTxChange",0],[6,"Option",195],[1,"tuple"],[8,"Result",196],[10,"Anchor",197],[10,"ChainOracle",198],[6,"Result",199],[10,"Deserializer",200],[1,"bool"],[5,"Formatter",201],[8,"Result",201],[10,"Debug",201],[5,"ArgMatches",202],[5,"Args",0],[5,"Error",203],[1,"str"],[5,"Mutex",204],[5,"Store",205],[6,"Network",206],[10,"Default",207],[10,"Merge",197],[10,"DeserializeOwned",200],[10,"Serialize",208],[8,"KeychainChangeSet",0],[10,"From",209],[10,"Send",210],[10,"Sync",210],[17,"Output"],[10,"FnOnce",211],[1,"u8"],[1,"slice"],[5,"Init",0],[5,"Assets",212],[8,"PlannedUtxo",0],[5,"Vec",213],[10,"CanDerive",212],[10,"Serializer",208],[5,"String",214],[5,"TypeId",215],[15,"List",176],[15,"Address",177],[15,"Send",177],[15,"TxOut",177],[15,"List",183]],"r":[],"b":[[81,"impl-Display-for-CoinSelectionAlgo"],[82,"impl-Debug-for-CoinSelectionAlgo"],[85,"impl-Display-for-Keychain"],[86,"impl-Debug-for-Keychain"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJMAEQAAAAAAAgABAAUABQANAAQAFQAAABcAAQAaAAAAHAABAB8AKQBKAA0AYAAMAG4AAABwAAAAewABAH4AMgCyAAAAtAACAA=="}],\ +["example_cli",{"t":"PGFPPPGGFPPFPGIIPPPPPPPIPPPGEONNNNNNNNENNNNNNNNNNNNNNNNOOENNNNNNNNNNNOOHOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOOOOHONNNNNNNNNNOONHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOO","n":["Address","AddressCmd","Args","Balance","BranchAndBound","ChainSpecific","CoinSelectionAlgo","Commands","CreateTxChange","External","Index","Init","Internal","Keychain","KeychainChangeSet","KeychainTxGraph","LargestFirst","List","List","New","NewestFirst","Next","OldestFirst","PlannedUtxo","Send","SmallestFirst","TxOut","TxOutCmd","anyhow","args","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands","augment_subcommands","augment_subcommands_for_update","augment_subcommands_for_update","augment_subcommands_for_update","bdk_file_store","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_descriptor","change_keychain","clap","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","command","cp_limit","create_tx","db","db_path","default","descriptor","deserialize","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_str","handle_commands","has_subcommand","has_subcommand","has_subcommand","index","index","index","index_changeset","init","init_changeset","into","into","into","into","into","into","into","into","into_app","into_app_for_update","keymap","network","partial_cmp","planned_utxos","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","change","addr_cmd","address","chain_specific","coin_select","txout_cmd","value","confirmed","spent","unconfirmed","unspent"],"q":[[0,"example_cli"],[177,"example_cli::AddressCmd"],[178,"example_cli::Commands"],[184,"example_cli::TxOutCmd"],[188,"clap::builder::command"],[189,"core::clone"],[190,"clap::derive"],[191,"core::cmp"],[192,"miniscript::descriptor::key"],[193,"alloc::collections::btree::map"],[194,"bitcoin::address"],[195,"bitcoin::blockdata::transaction"],[196,"core::option"],[197,"anyhow"],[198,"bdk_chain::tx_data_traits"],[199,"bdk_chain::chain_oracle"],[200,"core::result"],[201,"serde::de"],[202,"core::fmt"],[203,"clap::parser::matches::arg_matches"],[204,"clap::error"],[205,"std::sync::mutex"],[206,"bdk_file_store::store"],[207,"bitcoin::network"],[208,"core::default"],[209,"serde::ser"],[210,"core::convert"],[211,"core::marker"],[212,"core::ops::function"],[213,"bdk_tmp_plan"],[214,"alloc::vec"],[215,"alloc::string"],[216,"core::any"]],"i":[4,0,0,4,8,4,0,0,0,11,9,0,11,0,0,0,8,9,10,9,8,9,8,0,4,8,4,0,0,52,34,34,4,9,10,4,9,10,0,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,34,21,0,4,8,9,10,11,4,8,9,10,11,11,34,34,0,52,34,8,34,11,11,11,11,11,4,8,8,9,10,11,11,21,52,34,4,8,9,10,11,34,4,9,10,34,4,9,10,8,0,4,9,10,14,21,52,21,0,52,21,52,34,4,8,9,10,11,34,34,52,34,11,0,11,4,8,9,10,11,8,11,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,21,52,34,4,8,9,10,11,34,4,9,10,34,4,9,10,21,52,34,4,8,9,10,11,60,61,62,62,62,63,62,64,64,64,64],"f":"``````````````````````````````{bb}0000000`{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{fc}}}{{d{fe}}}{}{}}0000000```{{{d{{h{ce}}}}}{{h{ce}}}{jl}{jn}}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{c}}{d{fe}}}Ah{}{}}0000{{{d{Af}}{d{Af}}}Aj}``{{{d{f{Al{c}}}}{d{e}}{d{{Bb{AnB`}}}}A`BdBf}{{C`{{Bn{Bh{Bl{Bj}}}}}}}CbCd}``{{}A`}`{c{{Cf{Af}}}Ch}{{{d{Af}}{d{Af}}}Cj}{{{d{c}}{d{e}}}Cj{}{}}00{{{d{{h{ce}}}}{d{fCl}}}Cn{D`l}{D`n}}{{{d{A`}}{d{fCl}}}Cn}0{{{d{Ab}}{d{fCl}}}Cn}{{{d{Ad}}{d{fCl}}}Cn}{{{d{Af}}{d{fCl}}}Cn}0{cc{}}0000000{{{d{Db}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{Db}}}{{Cf{{h{ce}}Df}}}ln}{{{d{Db}}}{{Cf{AbDf}}}}{{{d{Db}}}{{Cf{AdDf}}}}{{{d{fDb}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{{h{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{AbDf}}}}{{{d{fDb}}}{{Cf{AdDf}}}}{{{d{Dh}}}{{Cf{A`c}}}{}}{{{d{{Dj{{Al{c}}}}}}{d{{Dj{{Dl{e}}}}}}{d{{Dj{g}}}}{d{{Bb{AnB`}}}}Dnk{h{mi}}}{{C`{Ah}}}Cb{E`EbEdEf{Ej{{Eh{c}}}}ElEnD`}Cdn{{Fb{i{d{Bh}}}{{F`{{C`{Ah}}}}}}}l}{{{d{Dh}}}Cj}00````{{{d{{Ff{Fd}}}}{d{Dh}}}{{C`{{Fh{ceg}}}}}ln{E`EbEfEdD`ElEn}}`{ce{}{}}0000000{{}b}0``{{{d{Af}}{d{Af}}}{{Bl{Aj}}}}{{{d{{Al{c}}}}{d{e}}{d{{Fj{g}}}}}{{Cf{{Fn{{Fl{gc}}}}}}}CbCd{jG`}}{{{d{Af}}c}CfGb}{{{d{c}}}e{}{}}0000{{{d{c}}}Gd{}}0{c{{Cf{e}}}{}{}}000000000000000{{{d{c}}}Gf{}}0000000{{{d{f{Dd{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{Db}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{Db}}}{{Cf{AhDf}}}}{{{d{f{Dd{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{fDb}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{fDb}}}{{Cf{AhDf}}}}{ce{}{}}0000000```````````","D":"E`","p":[[8,"Command",188],[1,"reference"],[0,"mut"],[6,"Commands",0],[10,"Clone",189],[10,"Subcommand",190],[10,"Args",190],[6,"CoinSelectionAlgo",0],[6,"AddressCmd",0],[6,"TxOutCmd",0],[6,"Keychain",0],[1,"unit"],[6,"Ordering",191],[8,"KeychainTxGraph",0],[6,"DescriptorPublicKey",192],[6,"DescriptorSecretKey",192],[5,"BTreeMap",193],[5,"Address",194],[1,"u64"],[5,"Transaction",195],[5,"CreateTxChange",0],[6,"Option",196],[1,"tuple"],[8,"Result",197],[10,"Anchor",198],[10,"ChainOracle",199],[6,"Result",200],[10,"Deserializer",201],[1,"bool"],[5,"Formatter",202],[8,"Result",202],[10,"Debug",202],[5,"ArgMatches",203],[5,"Args",0],[5,"Error",204],[1,"str"],[5,"Mutex",205],[5,"Store",206],[6,"Network",207],[10,"Default",208],[10,"Merge",198],[10,"DeserializeOwned",201],[10,"Serialize",209],[8,"KeychainChangeSet",0],[10,"From",210],[10,"Send",211],[10,"Sync",211],[17,"Output"],[10,"FnOnce",212],[1,"u8"],[1,"slice"],[5,"Init",0],[5,"Assets",213],[8,"PlannedUtxo",0],[5,"Vec",214],[10,"CanDerive",213],[10,"Serializer",209],[5,"String",215],[5,"TypeId",216],[15,"List",177],[15,"Address",178],[15,"Send",178],[15,"TxOut",178],[15,"List",184]],"r":[],"b":[[82,"impl-Debug-for-CoinSelectionAlgo"],[83,"impl-Display-for-CoinSelectionAlgo"],[86,"impl-Display-for-Keychain"],[87,"impl-Debug-for-Keychain"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJQAEQAAAAAAAgABAAUABQANAAQAFQAAABcAAQAaAAAAHAABAB8AKQBKAA4AYQAMAG8AAABxAAAAfAABAH8AMgCzAAAAtQACAA=="}],\ ["example_electrum",{"t":"ISSFGPFPNNNNNNONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["ChangeSet","DB_MAGIC","DB_PATH","ElectrumArgs","ElectrumCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","batch_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","electrum_args","electrum_url","eq","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","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_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","electrum_args","electrum_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":[[0,"example_electrum"],[71,"example_electrum::ElectrumCommands"],[80,"clap::builder::command"],[81,"bitcoin::network"],[82,"electrum_client::client"],[83,"anyhow"],[84,"core::fmt"],[85,"clap::parser::matches::arg_matches"],[86,"clap::error"],[87,"core::result"],[88,"core::any"]],"i":[0,0,0,0,0,8,0,8,4,9,4,9,8,8,9,8,4,9,8,4,9,4,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,8,4,9,9,9,0,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,19,20,19,20,19,20,19,19,19],"f":"````````{bb}00000`{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00{{{d{h}}j}{{n{l}}}}{{{d{A`}}}A`}{{{d{h}}}h}{{{d{Ab}}}Ab}{{{d{c}}{d{fe}}}Ad{}{}}00{{{d{A`}}}h}`{{{d{Ab}}{d{Ab}}}Af}{{{d{A`}}{d{fAh}}}Aj}{{{d{h}}{d{fAh}}}Aj}{{{d{Ab}}{d{fAh}}}Aj}{cc{}}00{{{d{Al}}}{{B`{A`An}}}}{{{d{Al}}}{{B`{hAn}}}}{{{d{Al}}}{{B`{AbAn}}}}{{{d{fAl}}}{{B`{A`An}}}}{{{d{fAl}}}{{B`{hAn}}}}{{{d{fAl}}}{{B`{AbAn}}}}{{{d{Bb}}}Af}{ce{}{}}00{{}b}0{{}{{n{Ad}}}}{{{d{c}}}e{}{}}00{c{{B`{e}}}{}{}}00000{{{d{c}}}Bd{}}00{{{d{fA`}}{d{Al}}}{{B`{AdAn}}}}{{{d{fh}}{d{Al}}}{{B`{AdAn}}}}{{{d{fAb}}{d{Al}}}{{B`{AdAn}}}}{{{d{fA`}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fh}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fAb}}{d{fAl}}}{{B`{AdAn}}}};;;`````````","D":"An","p":[[8,"Command",80],[1,"reference"],[0,"mut"],[5,"ElectrumArgs",0],[6,"Network",81],[5,"Client",82],[8,"Result",83],[6,"ElectrumCommands",0],[5,"ScanOptions",0],[1,"unit"],[1,"bool"],[5,"Formatter",84],[8,"Result",84],[5,"ArgMatches",85],[5,"Error",86],[6,"Result",87],[1,"str"],[5,"TypeId",88],[15,"Sync",71],[15,"Scan",71]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEACAAAAAUABwAAAAkABQAQAA0AHwADACYABgAwABcASQADAA=="}],\ ["example_esplora",{"t":"ISSFGPFPNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["ChangeSet","DB_MAGIC","DB_PATH","EsploraArgs","EsploraCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","eq","esplora_args","esplora_url","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","parallel_requests","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_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","esplora_args","esplora_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":[[0,"example_esplora"],[71,"example_esplora::EsploraCommands"],[80,"clap::builder::command"],[81,"bitcoin::network"],[82,"esplora_client::blocking"],[83,"anyhow"],[84,"core::fmt"],[85,"clap::parser::matches::arg_matches"],[86,"clap::error"],[87,"core::result"],[88,"core::any"]],"i":[0,0,0,0,0,8,0,8,4,9,4,9,8,8,8,4,9,8,4,9,4,8,4,9,8,4,9,9,8,4,8,4,9,8,4,9,8,4,9,8,4,9,8,8,4,9,9,9,0,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,19,20,19,20,19,20,19,19,19],"f":"````````{bb}00000{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00{{{d{h}}j}{{n{l}}}}{{{d{A`}}}A`}{{{d{h}}}h}{{{d{Ab}}}Ab}{{{d{c}}{d{fe}}}Ad{}{}}00{{{d{Ab}}{d{Ab}}}Af}{{{d{A`}}}h}`{{{d{A`}}{d{fAh}}}Aj}{{{d{h}}{d{fAh}}}Aj}{{{d{Ab}}{d{fAh}}}Aj}{cc{}}00{{{d{Al}}}{{B`{A`An}}}}{{{d{Al}}}{{B`{hAn}}}}{{{d{Al}}}{{B`{AbAn}}}}{{{d{fAl}}}{{B`{A`An}}}}{{{d{fAl}}}{{B`{hAn}}}}{{{d{fAl}}}{{B`{AbAn}}}}{{{d{Bb}}}Af}{ce{}{}}00{{}b}0{{}{{n{Ad}}}}`{{{d{c}}}e{}{}}00{c{{B`{e}}}{}{}}00000{{{d{c}}}Bd{}}00{{{d{fA`}}{d{Al}}}{{B`{AdAn}}}}{{{d{fh}}{d{Al}}}{{B`{AdAn}}}}{{{d{fAb}}{d{Al}}}{{B`{AdAn}}}}{{{d{fA`}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fh}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fAb}}{d{fAl}}}{{B`{AdAn}}}};;;`````````","D":"An","p":[[8,"Command",80],[1,"reference"],[0,"mut"],[5,"EsploraArgs",0],[6,"Network",81],[5,"BlockingClient",82],[8,"Result",83],[6,"EsploraCommands",0],[5,"ScanOptions",0],[1,"unit"],[1,"bool"],[5,"Formatter",84],[8,"Result",84],[5,"ArgMatches",85],[5,"Error",86],[6,"Result",87],[1,"str"],[5,"TypeId",88],[15,"Sync",71],[15,"Scan",71]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEACAAAAAUABwAAAAkAFAAfAAIAJQAGAC8AAgAzABQASQADAA=="}],\ -["wallet_electrum_example",{"t":"SSSSH","n":["BATCH_SIZE","DB_MAGIC","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_electrum_example"],[5,"anyhow"],[6,"core::result"]],"i":[0,0,0,0,0],"f":"````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",5],[6,"Result",6]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA"}],\ -["wallet_esplora_async",{"t":"SSSH","n":["PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_async"],[4,"anyhow"],[5,"core::result"]],"i":[0,0,0,0],"f":"```{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",4],[6,"Result",5]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAAAAQACAAMABAA="}],\ -["wallet_esplora_blocking",{"t":"SSSSH","n":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_blocking"],[5,"anyhow"],[6,"core::result"]],"i":[0,0,0,0,0],"f":"````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",5],[6,"Result",6]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA"}],\ +["wallet_electrum_example",{"t":"SSSSSSSSH","n":["BATCH_SIZE","DB_MAGIC","ELECTRUM_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_electrum_example"],[9,"anyhow"],[10,"core::result"]],"i":[0,0,0,0,0,0,0,0,0],"f":"````````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",9],[6,"Result",10]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAkAAQAAAAkA"}],\ +["wallet_esplora_async",{"t":"SSSSSSSSH","n":["DB_PATH","ESPLORA_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_async"],[9,"anyhow"],[10,"core::result"]],"i":[0,0,0,0,0,0,0,0,0],"f":"````````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",9],[6,"Result",10]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAkAAQAAAAkA"}],\ +["wallet_esplora_blocking",{"t":"SSSSSSSSSH","n":["DB_MAGIC","DB_PATH","ESPLORA_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_blocking"],[10,"anyhow"],[11,"core::result"]],"i":[0,0,0,0,0,0,0,0,0,0],"f":"`````````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",10],[6,"Result",11]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAoAAQAAAAoA"}],\ ["wallet_rpc",{"t":"FPSGPPNNNNNNONOONNNNNNNNNNHOOOOONNNNNNNNONN","n":["Args","Block","DB_MAGIC","Emission","Mempool","SigTerm","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","change_descriptor","client","db_path","descriptor","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","into","into","into_app","into_app_for_update","main","network","rpc_cookie","rpc_pass","rpc_user","start_height","try_from","try_from","try_into","try_into","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","url","vzip","vzip"],"q":[[0,"wallet_rpc"],[43,"clap::builder::command"],[44,"bitcoincore_rpc::client"],[45,"anyhow"],[46,"core::fmt"],[47,"clap::parser::matches::arg_matches"],[48,"clap::error"],[49,"core::result"],[50,"core::any"]],"i":[0,9,0,0,9,9,4,4,4,9,4,9,4,4,4,4,4,9,4,9,4,4,4,9,4,4,0,4,4,4,4,4,4,9,4,9,4,9,4,4,4,4,9],"f":"``````{bb}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0`{{{d{h}}}{{l{j}}}}``{{{d{h}}{d{fn}}}A`}{{{d{Ab}}{d{fn}}}A`}{cc{}}0{{{d{Ad}}}{{Ah{hAf}}}}{{{d{fAd}}}{{Ah{hAf}}}}{ce{}{}}0{{}b}0{{}{{l{Aj}}}}`````{c{{Ah{e}}}{}{}}000{{{d{c}}}Al{}}0{{{d{fh}}{d{Ad}}}{{Ah{AjAf}}}}{{{d{fh}}{d{fAd}}}{{Ah{AjAf}}}}`66","D":"Al","p":[[8,"Command",43],[1,"reference"],[0,"mut"],[5,"Args",0],[5,"Client",44],[8,"Result",45],[5,"Formatter",46],[8,"Result",46],[6,"Emission",0],[5,"ArgMatches",47],[5,"Error",48],[6,"Result",49],[1,"unit"],[5,"TypeId",50]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAB0ACAAAAAAAAgAKAA4AAAARAAEAFQABABkAAgAhAAcAKgABAA=="}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js index dcaedb30e8..5e3a4f31a3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("bdk_chain", 0, "This crate is a collection of core structures for Bitcoin …\nTrait that “anchors” blockchain data to a specific …\nAn Anchor that can be constructed from a given block, …\nMaximum BIP32 derivation index.\nBalance, differentiated into various categories.\nA reference to a block in the canonical chain.\nHow many confirmations are needed f or a coinbase output …\nRepresents a service that tracks the blockchain.\nRepresents the observed position of some chain data.\nA changeset containing crate structures typically …\nAn Anchor implementation that also records the exact …\nBlock height and timestamp at which a transaction is …\nThe chain data is seen as confirmed, and in anchored by A.\nThe transaction is confirmed\nA trait to extend the functionality of a miniscript …\nRepresents the unique ID of a descriptor.\nError type.\nA TxOut with as much data as we can retrieve about it\nA tuple of keychain index and T representing the indexed …\nA tuple of keychain K, derivation index (u32) and a T …\nTrait that makes an object mergeable.\nAn iterator for derived script pubkeys.\nThe chain data is not confirmed and last seen in the …\nThe transaction is unconfirmed\nReturns the BlockId that the associated blockchain data is …\nReturns a reference to the inner hash (sha256, sh256d …\nThe anchor block.\nChanges to the LocalChain.\nThe position of the transaction in outpoint in the overall …\nMaps a ChainPosition<&A> into a ChainPosition<A> by …\nGet the upper bound of the chain data’s confirmation …\nGet the upper bound of the chain data’s confirmation …\nDetermines the upper bound of the confirmation height.\nThe confirmation time of the transaction being anchored.\nConfirmed and immediately spendable balance\nGet a reference to the internal descriptor.\nReturns the descriptor ID, calculated as the sha256 hash …\nReturns the minimum value (in satoshis) at which an output …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct the anchor from a given block, block height and …\nCreates this wrapper type from the inner hash type.\nGet the best chain’s chain tip.\nThe hash of the block.\nThe height of the block.\nAll coinbase outputs not yet matured\nContains the IndexedTxGraph and associated types. Refer to …\nChanges to IndexedTxGraph.\nIndexer provides utilities for indexing transaction data.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nDetermines whether block of BlockId exists as an ancestor …\nReturns whether ChainPosition is confirmed or not.\nReturns whether ConfirmationTime is the confirmed variant.\nWhether the utxo is/was/will be spendable with chain tip.\nReturns whether the structure is considered empty.\nWhether the txout is considered mature.\nWhether this output is on a coinbase transaction.\nThe LocalChain is a local implementation of ChainOracle.\nMerge another object of the same type onto self.\nStores the network type of the transaction data.\nCreate a new script pubkey iterator from descriptor.\nCreate a new script pubkey iterator from descriptor and a …\nThe location of the TxOut.\nThe txid and chain position of the transaction (if any) …\nHelper types for spk-based blockchain clients.\nTake the value, replacing it with the default value.\nTake the value, replacing it with the default value.\nReturns the inner hash (sha256, sh256d etc.).\nGet the whole balance visible to the wallet.\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nModule for structures that store and traverse transactions.\nThe TxOut.\nConstruct an unconfirmed variant using the given last_seen …\nUnconfirmed UTXOs received from an external wallet\nConfirmation height.\nThe last-seen timestamp in unix seconds.\nConfirmation time in unix seconds.\nRepresents changes to an IndexedTxGraph.\nThe IndexedTxGraph combines a TxGraph and an Indexer …\nBatch insert all transactions of the given block of height.\nBatch insert all transactions of the given block of height…\nApplies the ChangeSet to the IndexedTxGraph.\nApply an update directly.\nBatch insert transactions, filtering out those that are …\nBatch insert unconfirmed transactions, filtering out those …\nBatch insert unconfirmed transactions.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a reference of the internal transaction graph.\nTxGraph changeset.\nTransaction index.\nIndexer changeset.\nDetermines the ChangeSet between self and an empty …\nInsert an anchor for a given transaction.\nInsert a unix timestamp of when a transaction is seen in …\nInsert and index a transaction into the graph.\nInsert a floating txout of given outpoint.\nCalls U::from(self).\nCalls U::from(self).\nConstruct a new IndexedTxGraph with a given index.\nThe resultant “changeset” when new transaction data is …\nUtilities for indexing transaction data.\nApply changeset to itself.\nScans a transaction for relevant outpoints, which are …\nScan and index the given outpoint and txout.\nDetermines the ChangeSet between self and an empty Indexer.\nDetermines whether the transaction should be included in …\nKeychainTxOutIndex controls how script pubkeys are …\nSpkTxOutIndex is an index storing TxOuts that have a …\nRepresents updates to the derivation index of a …\nThe default lookahead for a KeychainTxOutIndex\nThe descriptor has already been assigned to a keychain so …\nError returned from KeychainTxOutIndex::insert_descriptor\nThe keychain is already assigned to a descriptor so you can…\nKeychainTxOutIndex controls how script pubkeys are …\nThe keychain doesn’t exist. Most likley hasn’t been …\nGet unbounded spk iterators for all keychains.\nApplies the ChangeSet<K> to the KeychainTxOutIndex<K>\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the descriptor associated with the keychain. Returns …\nReturns the keychain and keychain index associated with …\nReturn a reference to the internal SpkTxOutIndex.\nInsert a descriptor with a keychain associated to it.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the changeset are empty.\nReturns whether the spk under the keychain’s index has …\nIterate over all OutPoints that have TxOuts with script …\nIterate over OutPoints that have script pubkeys derived …\nReturn all keychains and their corresponding descriptors.\nContains the keychains that have been added and their …\nContains for each descriptor_id the last revealed index of …\nGet the last derivation index revealed for keychain. …\nGet the last derivation index that is revealed for each …\nReturns the highest derivation index of the keychain where …\nReturns the highest derivation index of each keychain that …\nGet the lookahead setting.\nStore lookahead scripts until target_index (inclusive).\nMarks the script pubkey at index as used even though the …\nMerge another ChangeSet<K> into self.\nComputes the net value that this transaction gives to the …\nConstruct a KeychainTxOutIndex with the given lookahead.\nGet the next derivation index for keychain. The next index …\nGets the next unused script pubkey in the keychain. I.e., …\nGet the set of indexed outpoints, corresponding to tracked …\nAttempts to reveal the next script pubkey for keychain.\nReveals script pubkeys of the keychain’s descriptor up …\nConvenience method to call Self::reveal_to_target on …\nIterate over revealed spks of the given keychain with …\nIterate over revealed spks of keychains in range\nComputes the total value transfer effect tx has on the …\nReturn the script that exists under the given keychain’s …\nReturn the TxOut of outpoint if it has been indexed, and …\nIterate over known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nGet an unbounded spk iterator over a given keychain. …\nUndoes the effect of mark_used. Returns whether the index …\nIterate over revealed, but unused, spks of the given …\nIterate over revealed, but unused, spks of all keychains.\nThe descriptor you have attempted to reassign\nThe keychain that the descriptor is already assigned to\nThe descriptor that the keychain is already assigned to\nThe keychain that you have attempted to reassign\nAn index storing TxOuts that have a script pubkey that …\nThe script pubkeys that are being tracked by the index.\nReturns the argument unchanged.\nReturns the index associated with the script pubkey.\nAdds a script pubkey to scan for. Returns false and does …\nCalls U::from(self).\nWhether any of the inputs of this transaction spend a …\nReturns whether the script pubkey at index has been used …\nMarks the script pubkey at index as used even though it …\nComputes the net value transfer effect of tx on the script …\nGet a reference to the set of indexed outpoints.\nIterates over all the outputs with script pubkeys in an …\nScans a transaction’s outputs for matching script …\nScan a single TxOut for a matching script pubkey and …\nComputes the total value transfer effect tx has on the …\nReturns the script that has been inserted at the index.\nReturns the txout and script pubkey index of the TxOut at …\nIterate over all known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nUndoes the effect of mark_used. Returns whether the index …\nIterates over all unused script pubkeys in an index range.\nRepresents a failure when trying to insert/remove a …\nThe error type for LocalChain::apply_header_connected_to.\nOccurs when the update cannot connect with the original …\nOccurs when an update does not have a common checkpoint …\nThe ChangeSet represents changes to LocalChain.\nA LocalChain checkpoint is used to find the agreement …\nIterates over checkpoints backwards.\nOccurs when connected_to block conflicts with either the …\nThis is a local implementation of ChainOracle.\nAn error which occurs when a LocalChain is constructed …\nApply the given changeset.\nUpdate the chain with a given Header connecting it with …\nUpdate the chain with a given Header at height which you …\nApplies the given update to the chain.\nGet the BlockId of the checkpoint.\nRemoves blocks from (and inclusive of) the given block_id.\nExtends the checkpoint linked list by a iterator of block …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a checkpoint from a list of BlockIds in …\nConstructs a LocalChain from a BTreeMap of height to …\nConstruct a LocalChain from an initial changeset.\nConstruct LocalChain from genesis hash.\nConstruct a checkpoint from the given header and block …\nConstruct a LocalChain from a given checkpoint tip.\nGet the genesis hash.\nGet checkpoint at height.\nGet checkpoint at given height (if it exists).\nGet the block hash of the checkpoint.\nGet the height of the checkpoint.\nThe checkpoint’s height.\nDerives an initial ChangeSet, meaning that it can be …\nInserts block_id at its height within the chain.\nInsert a BlockId.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterate from this checkpoint in descending height.\nIterate over checkpoints in descending height order.\nConstruct a new base block at the front of a linked list.\nThe original checkpoint’s block hash which cannot be …\nGet the previous checkpoint in the chain\nPuts another checkpoint onto the linked list representing …\nIterate checkpoints over a height range.\nIterate checkpoints over a height range.\nGet the highest checkpoint.\nThe suggested checkpoint to include to connect the two …\nThe attempted update to the original_block hash.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client full scan.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client sync.\nChain on additional OutPoints that will be synced against.\nChain on additional Scripts that will be synced against.\nChain on additional Scripts that will be synced against.\nA checkpoint for the current chain LocalChain::tip. The …\nA checkpoint for the current LocalChain::tip. The full …\nChain on additional Txids that will be synced against.\nThe update to apply to the receiving LocalChain.\nThe update to apply to the receiving TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a new SyncRequest from a given cp tip.\nConstruct a new FullScanRequest from a given chain_tip.\nConstruct a new FullScanRequest from a given chain_tip and …\nThe update to apply to the receiving TxGraph.\nThe update to apply to the receiving LocalChain.\nAdd a closure that will be called for OutPoints previously …\nAdd a closure that will be called for Scripts previously …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for Txids previously …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nLast active indices for the corresponding keychains (K).\nTransactions with these outpoints or spent from these …\nPopulate the request with revealed script pubkeys from …\nSet the OutPoints that will be synced against.\nSet the Scripts that will be synced against.\nSet the Scripts for a given keychain.\nSet the Txids that will be synced against.\nTransactions that spend from or to these indexed script …\nIterators of script pubkeys indexed by the keychain index.\nTransactions with these txids.\nErrors returned by TxGraph::calculate_fee.\nA transaction that is included in the chain, or is still …\nThe ChangeSet represents changes to a TxGraph.\nMissing TxOut for one or more of the inputs of the tx\nWhen the transaction is invalid according to the graph it …\nAn iterator that traverses ancestors of a given root …\nAn iterator that traverses transaction descendants.\nA graph of transactions and spends.\nA transaction node in the TxGraph.\nGet all transaction anchors known by TxGraph.\nIterate over all tx outputs known by TxGraph.\nIterates over the heights of that the new transaction …\nThe blocks that the transaction is “anchored” in.\nAdded anchors.\nApplies ChangeSet to TxGraph.\nExtends this graph with another so that self becomes the …\nGet the total balance of outpoints that are in chain of …\nBatch insert unconfirmed transactions.\nCalculates the fee of a given transaction. Returns …\nHow the transaction is observed as (confirmed or …\nGiven a transaction, return an iterator of txids that …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nIterate over floating txouts known by TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nIterate over all full transactions in the graph.\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nGet a transaction by txid. This only returns Some for full …\nGet a transaction node by txid. This only returns Some for …\nObtains a single tx output (if any) at the specified …\nDetermines the ChangeSet between self and an empty TxGraph.\nInserts the given anchor into TxGraph.\nInserts the given seen_at for txid into TxGraph.\nInserts the given transaction into TxGraph.\nInserts the given TxOut at OutPoint.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether the graph has any transactions or outputs in it.\nAdded last-seen unix timestamps of transactions.\nThe last-seen unix timestamp of the transaction as …\nList graph transactions that are in chain with chain_tip.\nTransform the TxGraph to have Anchors of another type.\nTransform the ChangeSet to have Anchors of another type.\nConstruct a new TxGraph from a list of transactions.\nThe transactions spending from this output.\nGet the total balance of outpoints that are in chain of …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nList graph transactions that are in chain with chain_tip.\nA partial or full representation of the transaction.\nThe transaction node (as part of the graph).\nReturns known outputs of a given txid.\nIterates over the transactions spending from txid.\nTxid of the transaction.\nIterates over all outpoints contained within ChangeSet.\nAdded txouts.\nAdded transactions.\nIterate over graph transactions with no anchors or …\nUpdate the last seen time for all unconfirmed transactions.\nCreates an iterator that filters and maps ancestor …\nCreates an iterator that both filters and maps conflicting …\nCreates an iterator that filters and maps descendants from …") \ No newline at end of file +searchState.loadedDescShard("bdk_chain", 0, "This crate is a collection of core structures for Bitcoin …\nTrait that “anchors” blockchain data to a specific …\nAn Anchor that can be constructed from a given block, …\nMaximum BIP32 derivation index.\nBalance, differentiated into various categories.\nA reference to a block in the canonical chain.\nHow many confirmations are needed f or a coinbase output …\nRepresents a service that tracks the blockchain.\nRepresents the observed position of some chain data.\nType for staged changes.\nAn Anchor implementation that also records the exact …\nBlock height and timestamp at which a transaction is …\nThe chain data is seen as confirmed, and in anchored by A.\nThe transaction is confirmed\nError type of PersistWith::create.\nError type of PersistAsyncWith::create.\nParameters for PersistWith::create.\nParameters for PersistAsyncWith::create.\nA trait to extend the functionality of a miniscript …\nRepresents the unique ID of a descriptor.\nError type.\nA TxOut with as much data as we can retrieve about it\nA wrapper that we use to impl remote traits for types in …\nA tuple of keychain index and T representing the indexed …\nA tuple of keychain K, derivation index (u32) and a T …\nError type of PersistWith::load.\nError type of PersistAsyncWith::load.\nParameters for PersistWith::load.\nParameters for PersistAsyncWith::load.\nTrait that makes an object mergeable.\nTrait that persists the type with an async Db.\nError type of PersistWith::persist.\nError type of PersistAsyncWith::persist.\nTrait that persists the type with Db.\nRepresents a persisted T.\nAn iterator for derived script pubkeys.\nRepresents a type that contains staged changes.\nThe chain data is not confirmed and last seen in the …\nThe transaction is unconfirmed\nReturns the BlockId that the associated blockchain data is …\nReturns a reference to the inner hash (sha256, sh256d …\nThe anchor block.\nThe position of the transaction in outpoint in the overall …\nMaps a ChainPosition<&A> into a ChainPosition<A> by …\nGet the upper bound of the chain data’s confirmation …\nGet the upper bound of the chain data’s confirmation …\nDetermines the upper bound of the confirmation height.\nThe confirmation time of the transaction being anchored.\nConfirmed and immediately spendable balance\nInitialize the Db and create Self.\nInitialize the Db and create Self.\nCreate a new persisted T.\nCreate a new persisted T with async Db.\nGet a reference to the internal descriptor.\nReturns the descriptor ID, calculated as the sha256 hash …\nReturns the minimum value (in satoshis) at which an output …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct the anchor from a given block, block height and …\nCreates this wrapper type from the inner hash type.\nGet the best chain’s chain tip.\nThe hash of the block.\nThe height of the block.\nAll coinbase outputs not yet matured\nContains the IndexedTxGraph and associated types. Refer to …\nIndexer provides utilities for indexing transaction data.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert an iterator of anything into FallibleIterator by …\nDetermines whether block of BlockId exists as an ancestor …\nReturns whether ChainPosition is confirmed or not.\nReturns whether ConfirmationTime is the confirmed variant.\nWhether the utxo is/was/will be spendable with chain tip.\nReturns whether the structure is considered empty.\nWhether the txout is considered mature.\nWhether this output is on a coinbase transaction.\nInitialize the Db and load a previously-persisted Self.\nInitialize the Db and load a previously-persisted Self.\nConstruct a persisted T from Db.\nContruct a persisted T from an async Db.\nThe LocalChain is a local implementation of ChainOracle.\nMerge another object of the same type onto self.\nCreate a new script pubkey iterator from descriptor.\nCreate a new script pubkey iterator from descriptor and a …\nThe location of the TxOut.\nPersist changes to the Db.\nPersist changes to the Db.\nPersist staged changes of T into Db.\nPersist staged changes of T into an async Db.\nModule for stuff\nThe txid and chain position of the transaction (if any) …\nHelper types for spk-based blockchain clients.\nGet mutable reference of staged changes.\nTake the value, replacing it with the default value.\nTake the value, replacing it with the default value.\nReturns the inner hash (sha256, sh256d etc.).\nGet the whole balance visible to the wallet.\nConvert an iterator of Results into FallibleIterator by …\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nModule for structures that store and traverse transactions.\nThe TxOut.\nConstruct an unconfirmed variant using the given last_seen …\nUnconfirmed UTXOs received from an external wallet\nConfirmation height.\nThe last-seen timestamp in unix seconds.\nConfirmation time in unix seconds.\nRepresents changes to an IndexedTxGraph.\nThe IndexedTxGraph combines a TxGraph and an Indexer …\nBatch insert all transactions of the given block of height.\nBatch insert all transactions of the given block of height…\nApplies the ChangeSet to the IndexedTxGraph.\nApply an update directly.\nBatch insert transactions, filtering out those that are …\nBatch insert unconfirmed transactions, filtering out those …\nBatch insert unconfirmed transactions.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a reference of the internal transaction graph.\nTransaction index.\nIndexer changeset.\nDetermines the ChangeSet between self and an empty …\nInsert an anchor for a given transaction.\nInsert a unix timestamp of when a transaction is seen in …\nInsert and index a transaction into the graph.\nInsert a floating txout of given outpoint.\nCalls U::from(self).\nCalls U::from(self).\nConstruct a new IndexedTxGraph with a given index.\nTxGraph changeset.\nThe resultant “changeset” when new transaction data is …\nUtilities for indexing transaction data.\nApply changeset to itself.\nScans a transaction for relevant outpoints, which are …\nScan and index the given outpoint and txout.\nDetermines the ChangeSet between self and an empty Indexer.\nDetermines whether the transaction should be included in …\nKeychainTxOutIndex controls how script pubkeys are …\nSpkTxOutIndex is an index storing TxOuts that have a …\nRepresents updates to the derivation index of a …\nThe default lookahead for a KeychainTxOutIndex\nThe descriptor has already been assigned to a keychain so …\nError returned from KeychainTxOutIndex::insert_descriptor\nThe keychain is already assigned to a descriptor so you can…\nKeychainTxOutIndex controls how script pubkeys are …\nName for table that stores last revealed indices per …\nSchema name for the changeset.\nGet unbounded spk iterators for all keychains.\nApplies the ChangeSet<K> to the KeychainTxOutIndex<K>\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct KeychainTxOutIndex from sqlite database and …\nGets the descriptor associated with the keychain. Returns …\nReturns the keychain and keychain index associated with …\nReturn a reference to the internal SpkTxOutIndex.\nInsert a descriptor with a keychain associated to it.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the changeset are empty.\nReturns whether the spk under the keychain’s index has …\nIterate over all OutPoints that have TxOuts with script …\nIterate over OutPoints that have script pubkeys derived …\nReturn all keychains and their corresponding descriptors.\nContains for each descriptor_id the last revealed index of …\nGet the last derivation index revealed for keychain. …\nGet the last derivation index that is revealed for each …\nReturns the highest derivation index of the keychain where …\nReturns the highest derivation index of each keychain that …\nGet the lookahead setting.\nStore lookahead scripts until target_index (inclusive).\nMarks the script pubkey at index as used even though the …\nMerge another ChangeSet into self.\nComputes the net value that this transaction gives to the …\nConstruct a KeychainTxOutIndex with the given lookahead.\nGet the next derivation index for keychain. The next index …\nGets the next unused script pubkey in the keychain. I.e., …\nGet the set of indexed outpoints, corresponding to tracked …\nPersist changeset to the sqlite database.\nAttempts to reveal the next script pubkey for keychain.\nReveals script pubkeys of the keychain’s descriptor up …\nConvenience method to call Self::reveal_to_target on …\nIterate over revealed spks of the given keychain with …\nIterate over revealed spks of keychains in range\nComputes the total value transfer effect tx has on the …\nReturn the script that exists under the given keychain’s …\nReturn the TxOut of outpoint if it has been indexed, and …\nIterate over known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nGet an unbounded spk iterator over a given keychain. …\nUndoes the effect of mark_used. Returns whether the index …\nIterate over revealed, but unused, spks of the given …\nIterate over revealed, but unused, spks of all keychains.\nThe descriptor you have attempted to reassign\nThe keychain that the descriptor is already assigned to\nThe descriptor that the keychain is already assigned to\nThe keychain that you have attempted to reassign\nAn index storing TxOuts that have a script pubkey that …\nThe script pubkeys that are being tracked by the index.\nReturns the argument unchanged.\nReturns the index associated with the script pubkey.\nAdds a script pubkey to scan for. Returns false and does …\nCalls U::from(self).\nWhether any of the inputs of this transaction spend a …\nReturns whether the script pubkey at index has been used …\nMarks the script pubkey at index as used even though it …\nComputes the net value transfer effect of tx on the script …\nGet a reference to the set of indexed outpoints.\nIterates over all the outputs with script pubkeys in an …\nScans a transaction’s outputs for matching script …\nScan a single TxOut for a matching script pubkey and …\nComputes the total value transfer effect tx has on the …\nReturns the script that has been inserted at the index.\nReturns the txout and script pubkey index of the TxOut at …\nIterate over all known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nUndoes the effect of mark_used. Returns whether the index …\nIterates over all unused script pubkeys in an index range.\nRepresents a failure when trying to insert/remove a …\nThe error type for LocalChain::apply_header_connected_to.\nName of sqlite table that stores blocks of LocalChain.\nOccurs when the update cannot connect with the original …\nOccurs when an update does not have a common checkpoint …\nThe ChangeSet represents changes to LocalChain.\nA LocalChain checkpoint is used to find the agreement …\nIterates over checkpoints backwards.\nOccurs when connected_to block conflicts with either the …\nThis is a local implementation of ChainOracle.\nAn error which occurs when a LocalChain is constructed …\nSchema name for the changeset.\nApply the given changeset.\nUpdate the chain with a given Header connecting it with …\nUpdate the chain with a given Header at height which you …\nApplies the given update to the chain.\nGet the BlockId of the checkpoint.\nChanges to the LocalChain blocks.\nRemoves blocks from (and inclusive of) the given block_id.\nExtends the checkpoint linked list by a iterator of block …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a checkpoint from a list of BlockIds in …\nConstructs a LocalChain from a BTreeMap of height to …\nConstruct a LocalChain from an initial changeset.\nConstruct LocalChain from genesis hash.\nConstruct a checkpoint from the given header and block …\nConstruct a LocalChain from sqlite database.\nConstruct a LocalChain from a given checkpoint tip.\nGet the genesis hash.\nGet checkpoint at height.\nGet checkpoint at given height (if it exists).\nGet the block hash of the checkpoint.\nGet the height of the checkpoint.\nThe checkpoint’s height.\nDerives an initial ChangeSet, meaning that it can be …\nInserts block_id at its height within the chain.\nInsert a BlockId.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert an iterator of anything into FallibleIterator by …\nIterate from this checkpoint in descending height.\nIterate over checkpoints in descending height order.\nConstruct a new base block at the front of a linked list.\nThe original checkpoint’s block hash which cannot be …\nPersist changeset to the sqlite database.\nGet the previous checkpoint in the chain\nPuts another checkpoint onto the linked list representing …\nIterate checkpoints over a height range.\nIterate checkpoints over a height range.\nGet the highest checkpoint.\nConvert an iterator of Results into FallibleIterator by …\nThe suggested checkpoint to include to connect the two …\nThe attempted update to the original_block hash.\nTable name for schemas.\nRuns logic that initializes/migrates the table schemas.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client full scan.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client sync.\nChain on additional OutPoints that will be synced against.\nChain on additional Scripts that will be synced against.\nChain on additional Scripts that will be synced against.\nA checkpoint for the current chain LocalChain::tip. The …\nA checkpoint for the current LocalChain::tip. The full …\nChain on additional Txids that will be synced against.\nThe update to apply to the receiving LocalChain.\nThe update to apply to the receiving TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a new SyncRequest from a given cp tip.\nConstruct a new FullScanRequest from a given chain_tip.\nConstruct a new FullScanRequest from a given chain_tip and …\nThe update to apply to the receiving TxGraph.\nThe update to apply to the receiving LocalChain.\nAdd a closure that will be called for OutPoints previously …\nAdd a closure that will be called for Scripts previously …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for Txids previously …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nLast active indices for the corresponding keychains (K).\nTransactions with these outpoints or spent from these …\nPopulate the request with revealed script pubkeys from …\nSet the OutPoints that will be synced against.\nSet the Scripts that will be synced against.\nSet the Scripts for a given keychain.\nSet the Txids that will be synced against.\nTransactions that spend from or to these indexed script …\nIterators of script pubkeys indexed by the keychain index.\nTransactions with these txids.\nName of table that stores Anchors.\nErrors returned by TxGraph::calculate_fee.\nA transaction that is included in the chain, or is still …\nThe ChangeSet represents changes to a TxGraph.\nMissing TxOut for one or more of the inputs of the tx\nWhen the transaction is invalid according to the graph it …\nSchema name for tx_graph::ChangeSet.\nName of table that stores floating txouts.\nName of table that stores full transactions and last_seen …\nAn iterator that traverses ancestors of a given root …\nAn iterator that traverses transaction descendants.\nA graph of transactions and spends.\nA transaction node in the TxGraph.\nGet all transaction anchors known by TxGraph.\nIterate over all tx outputs known by TxGraph.\nIterates over the heights of that the new transaction …\nThe blocks that the transaction is “anchored” in.\nAdded anchors.\nApplies ChangeSet to TxGraph.\nExtends this graph with another so that self becomes the …\nGet the total balance of outpoints that are in chain of …\nBatch insert unconfirmed transactions.\nCalculates the fee of a given transaction. Returns …\nHow the transaction is observed as (confirmed or …\nGiven a transaction, return an iterator of txids that …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nIterate over floating txouts known by TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a TxGraph from an sqlite database.\nIterate over all full transactions in the graph.\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nGet a transaction by txid. This only returns Some for full …\nGet a transaction node by txid. This only returns Some for …\nObtains a single tx output (if any) at the specified …\nDetermines the ChangeSet between self and an empty TxGraph.\nInserts the given anchor into TxGraph.\nInserts the given seen_at for txid into TxGraph.\nInserts the given transaction into TxGraph.\nInserts the given TxOut at OutPoint.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert an iterator of anything into FallibleIterator by …\nConvert an iterator of anything into FallibleIterator by …\nWhether the graph has any transactions or outputs in it.\nAdded last-seen unix timestamps of transactions.\nThe last-seen unix timestamp of the transaction as …\nList graph transactions that are in chain with chain_tip.\nTransform the TxGraph to have Anchors of another type.\nTransform the ChangeSet to have Anchors of another type.\nConstruct a new TxGraph from a list of transactions.\nThe transactions spending from this output.\nPersist changeset to the sqlite database.\nConvert an iterator of Results into FallibleIterator by …\nConvert an iterator of Results into FallibleIterator by …\nGet the total balance of outpoints that are in chain of …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nList graph transactions that are in chain with chain_tip.\nA partial or full representation of the transaction.\nThe transaction node (as part of the graph).\nReturns known outputs of a given txid.\nIterates over the transactions spending from txid.\nTxid of the transaction.\nIterates over all outpoints contained within ChangeSet.\nAdded txouts.\nAdded transactions.\nIterate over graph transactions with no anchors or …\nUpdate the last seen time for all unconfirmed transactions.\nCreates an iterator that filters and maps ancestor …\nCreates an iterator that both filters and maps conflicting …\nCreates an iterator that filters and maps descendants from …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js index 08bb00356a..2bf9ac1d79 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("bdk_coin_select", 0, "Bnb represents the current state of the BnB algorithm.\nDetermines how we should limit rounds of branch and bound.\nStrategy in which we should branch.\nCoinSelector selects and deselects from a set of …\nWe continue exploring subtrees of this node, starting with …\nClosure to decide the branching strategy, alongside a …\nMin absolute fee is not met\nMin drain value is not met\nWe skip both the inclusion and omission branches of this …\nWe continue exploring ONLY the omission branch of this …\nTxin “base” fields include outpoint (32+4) and …\nThe target fee (given the feerate) is not met\nThe target is not met\nA WeightedValue represents an input candidate for …\nCompare the advertised score with the current best. The …\nAttempt to backtrack to the previously selected node’s …\nThe weight of the template transaction, including fixed …\nReturns the ExcessStrategy that results in the least waste.\nThis is a variation of the Branch and Bound Coin Selection …\nCurrent excess.\nCurrent weight of template tx + selected inputs.\nAdditional weight if we include the drain (change) output.\nThis is the effective target value.\nEffective value of this input candidate: …\nReturns feerate in sats/wu.\nContinue down this branch and skip the inclusion branch if …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe total number of inputs; so we can calculate extra …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nTurns our Bnb state into an iterator.\nWhether this WeightedValue contains at least one segwit …\nThe feerate\nAdditional leeway for the target value.\nThe minimum absolute fee. I.e., needed for RBF.\nMinimum value allowed for a drain (change) output.\nCreates a new Bnb.\nCreate a new WeightedValue that represents a single input.\nAbsolute value sum of all selected inputs.\nEffective value sum of all selected inputs.\nWaste sum of all selected inputs.\nWeight sum of all selected inputs.\nWeight of spending the drain (change) output in the future.\nThe feerate we should try and achieve in sats per weight …\nThe value we need to select. If the value is None, then …\nTotal value of the UTXO(s) that this WeightedValue …\nTotal weight of including this/these UTXO(s). txin fields: …") \ No newline at end of file +searchState.loadedDescShard("bdk_coin_select", 0, "Bnb represents the current state of the BnB algorithm.\nDetermines how we should limit rounds of branch and bound.\nStrategy in which we should branch.\nCoinSelector selects and deselects from a set of …\nWe continue exploring subtrees of this node, starting with …\nClosure to decide the branching strategy, alongside a …\nMin absolute fee is not met\nMin drain value is not met\nWe skip both the inclusion and omission branches of this …\nWe continue exploring ONLY the omission branch of this …\nTxin “base” fields include outpoint (32+4) and …\nThe target fee (given the feerate) is not met\nThe target is not met\nA WeightedValue represents an input candidate for …\nCompare the advertised score with the current best. The …\nAttempt to backtrack to the previously selected node’s …\nThe weight of the template transaction, including fixed …\nReturns the ExcessStrategy that results in the least waste.\nThis is a variation of the Branch and Bound Coin Selection …\nCurrent excess.\nCurrent weight of template tx + selected inputs.\nAdditional weight if we include the drain (change) output.\nThis is the effective target value.\nEffective value of this input candidate: …\nReturns feerate in sats/wu.\nContinue down this branch and skip the inclusion branch if …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe total number of inputs; so we can calculate extra …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert an iterator of anything into FallibleIterator by …\nTurns our Bnb state into an iterator.\nWhether this WeightedValue contains at least one segwit …\nThe feerate\nAdditional leeway for the target value.\nThe minimum absolute fee. I.e., needed for RBF.\nMinimum value allowed for a drain (change) output.\nCreates a new Bnb.\nCreate a new WeightedValue that represents a single input.\nAbsolute value sum of all selected inputs.\nEffective value sum of all selected inputs.\nWaste sum of all selected inputs.\nWeight sum of all selected inputs.\nWeight of spending the drain (change) output in the future.\nThe feerate we should try and achieve in sats per weight …\nThe value we need to select. If the value is None, then …\nConvert an iterator of Results into FallibleIterator by …\nTotal value of the UTXO(s) that this WeightedValue …\nTotal weight of including this/these UTXO(s). txin fields: …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js index 0c5a49584a..3952c025bf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("bdk_file_store", 0, "BDK File Store\nError type for Store::aggregate_changesets.\nFailure to decode data from the file.\nIterator over entries in a file store.\nError that occurs due to problems encountered with the …\nMagic bytes do not match what is expected.\nFailure to read from the file.\nIO error, this may mean that the file is too short.\nError type for EntryIter.\nPersists an append-only list of changesets (C) to a single …\nLoads all the changesets that have been stored as one …\nAppend a new changeset to the file and truncate the file …\nThe partially-aggregated changeset.\nCreate a new Store file in write-only mode; error if the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterates over the stored changeset from first to last, …\nThe error returned by EntryIter.\nOpen an existing Store.\nAttempt to open existing Store file; create it if the file …") \ No newline at end of file +searchState.loadedDescShard("bdk_file_store", 0, "BDK File Store\nError type for Store::aggregate_changesets.\nFailure to decode data from the file.\nIterator over entries in a file store.\nError that occurs due to problems encountered with the …\nMagic bytes do not match what is expected.\nFailure to read from the file.\nIO error, this may mean that the file is too short.\nError type for EntryIter.\nPersists an append-only list of changesets (C) to a single …\nLoads all the changesets that have been stored as one …\nAppend a new changeset to the file and truncate the file …\nThe partially-aggregated changeset.\nCreate a new Store file in write-only mode; error if the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nConvert an iterator of anything into FallibleIterator by …\nIterates over the stored changeset from first to last, …\nThe error returned by EntryIter.\nOpen an existing Store.\nAttempt to open existing Store file; create it if the file …\nConvert an iterator of Results into FallibleIterator by …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js deleted file mode 100644 index 199cd41cfa..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js +++ /dev/null @@ -1 +0,0 @@ -searchState.loadedDescShard("bdk_sqlite", 0, "BDK SQLite\nError that occurs while reading or writing change sets …\nInvalid network, cannot change the one already stored in …\nSQLite error.\nPersists data in to a relational schema based SQLite …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCreates a new store from a Connection.\nRead the entire database and return the aggregate …\nWrite the given changeset atomically.") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js index 4d651ef22b..baba55b1cf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("bdk_wallet", 0, "BDK Wallet\nExternal keychain, used for deriving recipient addresses.\nA UTXO owned by another wallet.\nInternal keychain, used for deriving change addresses.\nTypes of keychains\nA UTXO owned by the local wallet.\nAn unspent output owned by a Wallet.\nAn unspent transaction output (UTXO).\nA Utxo with its satisfaction_weight.\nReturn KeychainKind as a byte\nThe confirmation time for transaction containing this utxo\nThe derivation index for the script pubkey in the wallet\nDescriptors\nMacro to write full descriptors with code\nMacro to write descriptor fragments with code\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether this UTXO is spent or not\nType of keychain\nKey formats\nGet the location of the UTXO\nReference to a transaction output\nAdditional functions on the rust-bitcoin Psbt structure.\nThe weight of the witness data and scriptSig expressed in …\nGet the sequence number if an explicit sequence number has …\nGet the TxOut of the UTXO\nTransaction output\nThe UTXO\nGet the version of BDK at runtime\nWallet\nThe location of the output.\nThe information about the input we require to add it to a …\nThe nSequence value to set for this input.\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nAlias for a Descriptor that contains extended derived keys\nScript descriptor\nThe descriptor pubkey, either a single pubkey or an xpub.\nAlias for a Descriptor that can contain extended keys …\nTrait implemented on Descriptors to add a method to …\nThe 0 combinator.\nAlias for the type of maps that represent derivation paths …\nTrait for types which can be converted into an …\nThe consensus key associated with the type. Must be a …\nLegacy ScriptContext To be used as P2SH scripts For …\nThe top-level miniscript abstract syntax tree (AST).\nMultiple extended public keys.\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nThe ScriptContext for Miniscript. Additional type …\nSegwitv0 ScriptContext\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nSingle public key.\nThe 1 combinator.\nAlias for the type of maps that represent taproot key …\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nExtended public key (xpub).\nComputes the Bitcoin address of the descriptor, if one …\nGet a reference to the inner AstElem representing the root …\nReplaces all wildcards (i.e. /*) in the descriptor with a …\nEnumerates all child nodes of the current AST node (self) …\nAttempt to produce a non-malleable witness template given …\nAttempt to produce a malleable witness template given the …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nDescriptor checksum\nWhether the given miniscript contains a raw pkh fragment\nDeprecated name for Self::at_derivation_index.\nConvert all the public keys in the descriptor to …\nConvert all the public keys in the descriptor to …\nGet the DescriptorType of Descriptor\nEncode as a Bitcoin script\nDescriptor errors\nComputes the the underlying script before any hashing is …\nAdditional information helpful for extra analysis.\nCheck whether the miniscript follows the given Extra …\nExtract the spending policy\nUtility method for deriving the descriptor at each index …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nAdd type information(Type and Extdata) to Miniscript based …\nCreate a new Miniscript from a Terminal node and a Type …\nParse a Miniscript from string and perform sanity checks …\nAttempt to parse an Miniscripts that don’t follow the …\nAttempt to parse an insane(scripts don’t clear sanity …\nParse an expression tree into a descriptor.\nParse an expression tree into a Miniscript. As a general …\nReturns child node with given index, if any\nReturns Option::Some with cloned n’th public key from …\nReturns satisfying non-malleable witness and scriptSig to …\nReturns a possilbly mallable satisfying non-malleable …\nWhether the miniscript contains a combination of timelocks\nWhether the miniscript has repeated Pk or Pkh\nWhether or not the descriptor has any wildcards i.e. /*.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nExtracts the AstElem representing the root of the …\nGet as many descriptors as different paths in this …\nConvert to wallet descriptor\nWhether or not the descriptor has any wildcards\nWhether this descriptor contains a key that has multiple …\nWhether the miniscript is malleable\nCreates a new Iter iterator that will iterate over all …\nCreates a new PkIter iterator that will iterate over all …\nLifting corresponds to conversion of a miniscript into a …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. For …\nComputes an upper bound on the weight of a satisfying …\nMaximum number of witness elements used to satisfy the …\nComputes an upper bound on the difference between a …\nLocal helper function to display error messages with …\nCreate a new bare descriptor from witness script Errors …\nCreate a new pk descriptor\nCreate a new PkH descriptor\nCreate a new sh for a given redeem script Errors when …\nCreate a new sh sortedmulti descriptor with threshold k …\nCreate a new sh wrapper for the given wpkh descriptor\nCreate a new sh wrapper for the given wsh descriptor\nCreate a new sh wrapped wpkh from Pk. Errors when …\nCreate a new sh wrapped wsh descriptor with witness script …\nCreate a new sh wrapped wsh sortedmulti descriptor from …\nCreate new tr descriptor Errors when miniscript exceeds …\nCreate a new Wpkh descriptor Will return Err if …\nCreate a new wsh descriptor from witness script Errors …\nCreate a new wsh sorted multi descriptor Errors when …\nA node in the AST.\nOther top level checks that are context specific\nAttempt to parse a Script into Miniscript representation.\nParse a descriptor that may contain secret keys\nAttempt to parse an insane(scripts don’t clear sanity …\nAttempt to parse an miniscript with extra features that …\nGet the len of public key when serialized based on context …\nReturns a plan if the provided assets are sufficient to …\nReturns a plan if the provided assets are sufficient to …\nDescriptor policy\nWhether all spend paths of miniscript require a signature\nChecks whether the descriptor is safe.\nCheck whether the underlying Miniscript is safe under the …\nAttempts to produce a non-malleable satisfying witness and …\nAttempt to produce non-malleable satisfying witness for the\nAttempt to produce a malleable satisfying witness for the …\nComputes the scriptCode of a transaction output.\nComputes the scriptpubkey of the descriptor.\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nSubstitutes raw public keys hashes with the public keys as …\nDescriptor templates\nSerialize a descriptor to string with its secret keys\nCheck top level consensus rules.\nCheck whether the top-level is type B\nConverts a descriptor using abstract keys to one using …\nTranslates a struct from one generic to another where the …\nThe correctness and malleability type information for the …\nComputes the scriptSig that will be in place for an …\nWhether the miniscript can exceed the resource …\nCompute the checksum of a descriptor, excludes any …\nCompute the checksum bytes of a descriptor, excludes any …\nError during base58 decoding\nBIP32 error\nErrors related to the parsing and usage of descriptors\nThe provided wallet descriptors are identical\nThe descriptor contains hardened derivation steps on …\nHex decoding error\nInvalid byte found in the descriptor checksum\nThe provided descriptor doesn’t match its checksum\nInvalid HD Key path, such as having a wildcard but a …\nError thrown while working with keys\nMiniscript error\nThe descriptor contains multipath keys\nKey-related error\nError while extracting and manipulating policies\nReturns the argument unchanged.\nCalls U::from(self).\nAbsolute timeclock timestamp\nCan not add to an item that is Satisfaction::None or …\nCan not add to an item that is …\nOptions to build the satisfaction field in the policy\nCan satisfy the policy item\nAn extra condition that must be satisfied but that is out …\nType for a map of sets of Condition items keyed by each set…\nECDSA Signature for a raw public key\nAn extended key fingerprint\nType for a map of folded sets of Condition items keyed by …\nSHA256 then RIPEMD160 preimage hash\nDouble SHA256 preimage hash\nIncompatible conditions (not currently used)\nIndex out of range for an item to satisfy a …\nCan not merge CSV or timelock values unless both are less …\nMulti-signature public keys with threshold count\nCannot satisfy or contribute to the policy item\nDon’t generate satisfaction field\nNot enough items are selected to satisfy a …\nOnly a partial satisfaction of some kind of threshold …\nCan reach the threshold of some kind of threshold policy\nA unique identifier for a key\nDescriptor spending policy\nErrors that can happen while extracting and manipulating …\nAnalyze the given PSBT to check for existing signatures\nLike Psbt variant and also check for expired timelocks\nA legacy public key\nRelative timelock locktime\nRIPEMD160 preimage hash\nRepresent if and how much a policy item is satisfied by …\nAn item that needs to be satisfied\nSchnorr Signature for a raw public key\nSHA256 preimage hash\nThreshold items with threshold count\nA x-only public key\nHow the wallet’s descriptor can satisfy this policy node\nOptional CheckSequenceVerify condition\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the conditions that are set by the spending policy …\nReturns a unique id for the SatisfiableItem\nIdentifier for this policy node\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the SatisfiableItem is a leaf item\nReturns whether the Satisfaction is a leaf item\nReturns true if there are no extra conditions to verify\nType of this policy node\nReturn whether or not a specific path in the policy tree …\nHow much a given PSBT already satisfies this policy node …\nOptional timelock condition\nCurrent blockchain height\nThe highest confirmation height between the inputs CSV …\nGiven PSBT\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nThe items that can be satisfied by the descriptor or are …\nThe items that can be satisfied by the descriptor\nThreshold\nThreshold\nTotal number of items\nTotal number of items\nWhether the items are sorted in lexicographic order (used …\nWhether the items are sorted in lexicographic order (used …\nThe digest value\nThe digest value\nThe digest value\nThe digest value\nThe policy items\nThe raw public key or extended key fingerprint\nThe required threshold count\nThe required threshold count\nThe timelock value\nThe timelock value\nBIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)\nBIP44 public template. Expands to pkh(key/{0,1}/*)\nBIP49 template. Expands to …\nBIP49 public template. Expands to sh(wpkh(key/{0,1}/*))\nBIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)\nBIP84 public template. Expands to wpkh(key/{0,1}/*)\nBIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)\nBIP86 public template. Expands to tr(key/{0,1}/*)\nTrait for descriptor templates that can be built into a …\nType alias for the return type of DescriptorTemplate, …\nP2PKH template. Expands to a descriptor pkh(key)\nP2TR template. Expands to a descriptor tr(key)\nP2WPKH template. Expands to a descriptor wpkh(key)\nP2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))\nBuild the complete descriptor\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nBIP32 error\nTrait for keys that can be derived.\nContainer for public or secret keys\nThe descriptor pubkey, either a single pubkey or an xpub.\nThe descriptor secret key, either a single private key or …\nType specifying the amount of entropy required e.g. [u8;32]\nReturned error in case of failure\nTrait that adds extra useful methods to ScriptContexts\nEnum for extended keys that can be either xprv or xpub\nA bitcoin public key (compressed or uncompressed).\nTrait that allows generating a key with the default options\nTrait for keys that can be generated\nOutput of a GeneratableKey key generation\nTrait for objects that can be turned into a public or …\nThe key has an invalid checksum\nThe key is not valid for the given network\nThe key cannot exist in the given script context\nThe consensus key associated with the type. Must be a …\nErrors thrown while working with keys\nAlias type for a map of public key to secret key\nLegacy scripts\nCustom error message\nMiniscript error\nMultiple extended private keys.\nMultiple extended public keys.\nExtra options required by the generate_with_entropy\nA private extended key, aka an xprv\nOptions for generating a PrivateKey\nA public extended key, aka an xpub\nThe ScriptContext for Miniscript. Additional type …\nEnum representation of the known valid ScriptContexts\nSegwitv0 scripts\nSingle public key.\nSingle private key.\nA descriptor bitcoin::PrivateKey with optional origin …\nA descriptor SinglePubKey with optional origin information.\nSingle public key without any origin or range information.\nContents of a “sortedmulti” descriptor\nTaproot scripts\nSet of valid networks for a key\nAn xonly public key.\nExtended private key (xpriv).\nExtended public key (xpub).\nCreate a set containing mainnet, testnet, signet, and …\nReturns the ScriptContext as a ScriptContextEnum\nReplaces any wildcard (i.e. /*) in the key with a …\nAttempt to produce a witness template given the assets …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nWhether the generated key should be “compressed” or not\nDeprecated name for Self::at_derivation_index.\nEncode as a Bitcoin script\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate an instance given a public key and a set of valid …\nCreate an instance given a secret key and a set of valid …\nParse an expression tree into a SortedMultiVec\nFull path, from the master key\nReturns a vector containing the full derivation paths from …\nGenerate a key given the options with random entropy.\nGenerate a key with the default options and a random …\nGenerate a key with the default options and a random …\nGenerate a key given the options with random entropy.\nGenerate a key given the extra options and the entropy\nGenerate a key with the default options and a given entropy\nReturn whether or not the key contains the private data\nWhether or not the key has a wildcard\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nTurn the key into a DescriptorKey within the requested …\nConsume self and turn it into a DescriptorKey by adding …\nConsume self and turn it into an ExtendedKey\nConsumes self and returns the key\nGet as many keys as derivation paths in this key.\nGet as many keys as derivation paths in this key.\nTransform the ExtendedKey into an Xpriv for the given …\nTransform the ExtendedKey into an Xpub for the given …\nWhether or not the key has a wildcard\nReturns whether the script context is Legacy\nReturns whether the script context is …\nWhether or not this key has multiple derivation paths.\nWhether or not this key has multiple derivation paths.\nReturns whether the script context is Segwitv0\nReturns whether the script context is …\nReturns whether the script context is Tap, aka Taproot or …\nReturns whether the script context is …\nThe threshold value for the multisig.\nThe public key.\nThe private key.\nCreate a set only containing mainnet\nThe fingerprint of the master key associated with this …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. In …\nMaximum number of witness elements used to satisfy the …\nCompute the intersection of two sets\nThe number of keys in the multisig.\nLocal helper function to display error messages with …\nCreate a new instance of SortedMultiVec given a list of …\nOrigin information (fingerprint and derivation path).\nOrigin information (fingerprint and derivation path).\nOther top level checks that are context specific\nOverride the computed set of valid networks\nGet the len of public key when serialized based on context …\nAccessor for the public keys in the multisig.\nutility function to sanity a sorted multi vec\nAttempt to produce a satisfying witness for the witness …\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nCreate Terminal::Multi containing sorted pubkeys\nCreate a set containing testnet and regtest\nReturns the public version of this key.\nCheck top level consensus rules.\nCheck whether the top-level is type B\nThis will panic if fpk returns an uncompressed key when …\nTrait to add functions to extract utxos and calculate fees.\nThe total transaction fee amount, sum of input amounts …\nThe transaction’s fee rate. This value will only be …\nGet the TxOut for the specified input index, if it doesn’…\nA derived address and the index it was found at. For …\nAn error that may occur when applying a block to Wallet.\nBalance, differentiated into various categories.\nOccurs when the update chain cannot connect with original …\nThe changes made to a wallet by applying an Update.\nThere was problem with the passed-in descriptor(s).\nThere was a problem with the passed-in descriptor(s).\nThere is a problem with the passed-in descriptor.\nTrait to check if a value is below the dust limit. We are …\nThe error type when loading a Wallet from a ChangeSet.\nThe loaded desccriptor does not match what was provided.\nThe loaded genesis hash does not match what was provided.\nThe loaded network type does not match what was provided.\nData loaded from persistence is missing descriptor.\nData loaded from persistence is missing genesis hash.\nData loaded from persistence is missing network type.\nThe error type when constructing a fresh Wallet.\nError type for when we try load a Wallet from persistence …\nOccurs when the connected_to hash does not match the hash …\nAn update to Wallet.\nA Bitcoin wallet\nAdd an external signer\nAddress\nGet unbounded script pubkey iterators for both Internal …\nIntroduces a block of height to the wallet, and tries to …\nApplies relevant transactions from block of height to the …\nApply relevant unconfirmed transactions to the wallet.\nApplies an update to the wallet and stages the changes …\nReturn the balance, separated into available, …\nBump the fee of a transaction previously created with this …\nStart building a transaction.\nCalculates the fee of a given transaction. Returns …\nCalculate the FeeRate for a given transaction.\nInforms the wallet that you no longer intend to broadcast …\nChanges to the LocalChain.\nUpdate for the wallet’s internal LocalChain.\nGet all the checkpoints the wallet is currently storing …\nCoin selection\nConfirmed and immediately spendable balance\nThe derivation index of this wallet. It will return None …\nFinds how the wallet derived the script pubkey spk.\nReturn the checksum of the public descriptor associated to …\nErrors that can be thrown by the Wallet\nWallet export\nFinalize a PSBT, i.e., for each input determine if …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nget the corresponding PSBT Input for a LocalUtxo\nGet the signers\nGet a single transaction from the wallet as a CanonicalTx …\nReturns the utxo owned by this wallet corresponding to …\nUpdate for the wallet’s internal TxGraph.\nAll coinbase outputs not yet matured\nChild index of this address\nChanges to IndexedTxGraph.\nAdd a new checkpoint to the wallet’s internal view of …\nAdd a transaction to the wallet’s internal view of the …\nInserts a TxOut at OutPoint into the wallet’s …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCheck whether or not a value is below dust limit\nReturn whether or not a script is part of this wallet …\nType of keychain\nIterator over all keychains in this wallet\nContains the last active derivation indices per keychain (K…\nReturns the latest checkpoint.\nList all relevant outputs (includes both spent and …\nReturn the list of unspent outputs of this wallet\nList addresses that are revealed but unused.\nLoad Wallet from the given previously persisted ChangeSet.\nGet a reference to the inner LocalChain.\nMarks an address used of the given keychain at index.\nGet the Bitcoin network the wallet is using.\nStores the network type of the transaction data.\nInitialize an empty Wallet.\nEither loads Wallet from the given ChangeSet or …\nEither loads Wallet from a ChangeSet or initializes it if …\nInitialize an empty Wallet with a custom genesis hash.\nThe index of the next address that you would get if you …\nGet the next unused address for the given keychain, i.e. …\nPeek an address of the given keychain at index without …\nReturn the spending policies for the wallet’s descriptor\nReturns the descriptor used to create addresses for a …\nReveal addresses up to and including the target index and …\nAttempt to reveal the next address of the given keychain.\nReturn the secp256k1 context used for all signing …\nCompute the tx’s sent and received Amounts.\nSign a transaction with all the wallet’s signers, in the …\nGeneralized signers\nGet a reference to the inner KeychainTxOutIndex.\nGet a reference of the staged ChangeSet that are yet to be …\nCreate a `FullScanRequest for this wallet.\nCreate a partial SyncRequest for this wallet for all …\nTake the staged ChangeSet to be persisted now (if any).\nGet the whole balance visible to the wallet.\nIterate over the transactions in the wallet.\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nTransaction builder\nGet a reference to the inner TxGraph.\nGet an unbounded script pubkey iterator for the given …\nIterate over transactions in the wallet that are unseen …\nUndoes the effect of mark_used and returns whether the …\nUnconfirmed UTXOs received from an external wallet\nDeterministically generate a unique name given the …\nBlock hash of connected_to.\nExpected block hash of connected_to, as derived from block.\nThe expected genesis block hash.\nThe expected network type.\nThe block hash loaded from persistence.\nThe network type loaded from persistence.\nThe descriptor loaded from persistence.\nThe keychain of the descriptor not matching\nBranch and bound coin selection tries to avoid needing a …\nBranch and bound coin selection possible attempts with …\nBranch and bound coin selection\nIt’s possible to create spendable output from excess …\nTrait for generalized coin selection algorithms\nResult of a successful coin selection\nDefault coin selection algorithm used by TxBuilder if not …\nErrors that can be thrown by the coin_selection module\nRemaining amount after performing coin selection\nWallet’s UTXO set is not enough to cover recipient’s …\nSimple and dumb coin selection\nIt’s not possible to create spendable output from excess …\nOldestFirstCoinSelection always picks the utxo with the …\nPerform the coin selection\nDecide if change can be created\nRemaining amount after deducing fees and outgoing outputs\nTotal fee amount for the selected utxos in satoshis\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe total value of the inputs selected from the local …\nCreate new instance with target size for change output\nList of outputs selected for use as inputs\nThe total value of the inputs selected.\nSats available for spending\nSats needed for some transaction\nEffective amount available to create change after …\nThe calculated fee for the drain TxOut with the selected …\nThreshold to consider amount as dust for this particular …\nThe deducted change output fee\nExceeding amount of current selection over outgoing value …\nError returned from Wallet::build_fee_bump\nThere was an error with coin selection\nDescriptor key conversion error\nError returned from TxBuilder::finish\nThere was a problem with the descriptors passed in\nWhen bumping a tx the fee rate requested is lower than …\nNode doesn’t have data to estimate a fee rate\nWhen bumping a tx the absolute fee requested is lower than …\nTrying to replace a tx that has a sequence >= 0xFFFFFFFE\nRequested LockTime is less than is required to spend from …\nMiniscript PSBT error\nErrors returned by miniscript when updating inconsistent …\nIn order to use the TxBuilder::add_global_xpubs option …\nMissing non_witness_utxo on foreign utxo for given OutPoint\nCannot build a tx without recipients\nmanually_selected_only option is selected but no utxo has …\nOutput created is under the dust limit, 546 satoshis\nReturn error type for …\nThere was a problem while extracting and manipulating …\nPartially signed bitcoin transaction error\nCannot enable RBF with a Sequence >= 0xFFFFFFFE\nCannot enable RBF with Sequence given a required OP_CSV\nSpending policy is not compatible with this KeychainKind\nHappens when trying to bump a transaction that is already …\nThrown when a tx is not found in the internal database\nHappens when trying to spend an UTXO that is not in the …\nHappens when trying to spend an UTXO that is not in the …\nReturn error type for PsbtExt::update_input_with_descriptor\nRequested invalid transaction version ‘0’\nRequested transaction version 1, but at least 2 is needed …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRequired OP_CSV Sequence\nGiven RBF Sequence\nRequested LockTime\nRequired LockTime\nRequired fee absolute value Amount\nRequired fee rate\nStructure that contains the export of a wallet\nAlias for FullyNodedExport\nEarliest block to rescan when looking for the wallet’s …\nEarliest block to rescan when looking for the wallet’s …\nReturn the internal descriptor, if present\nReturn the external descriptor\nExport a wallet\nReturns the argument unchanged.\nCalls U::from(self).\nArbitrary label for the wallet\nArbitrary label for the wallet\nThe signer will sign all the leaves it has a key for.\nDummy identifier\nThe signer won’t sign the specified leaves.\nTo be used only by external libraries implementing …\nThe fingerprint of a BIP32 extended key\nThe signer won’t sign leaves other than the ones …\nInput index is out of range\nPSBT Input signer\nThe private key in use has the right fingerprint but …\nThe non_witness_utxo specified is invalid\nInvalid SIGHASH for the signing context in use\nLegacy context\nMiniscript PSBT error\nThe fingerprint and derivation path are missing from the …\nThe private key is missing for the required public key\nThe non_witness_utxo field of the transaction is required …\nThe witness_script field of the transaction is required to …\nThe witness_utxo field of the transaction is required to …\nThe psbt contains a non-SIGHASH_ALL sighash in one of its …\nThe signer won’t sign any leaf.\nBitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …\nPSBT sign error.\nSegwit v0 context (BIP 143)\nError while computing the hash to sign a Taproot input.\nOptions for a software signer\nCommon signer methods\nSigning context\nSigning error\nIdentifier of a signer in the SignersContainers. Used as a …\nDefines the order in which signers are called\nWrapper to pair a signer with its context\nContainer for multiple signers\nTaproot context (BIP 340)\nCustomize which taproot script-path leaves the signer …\nPSBT signer\nThe user canceled the operation\nAdds an external signer to the container for the specified …\nWhether the signer should use the sighash_type set in the …\nWhether we should grind ECDSA signature to ensure signing …\nCreate a map of public keys to secret keys\nWhether the wallet should assume a specific height has …\nBuild a new signer container from a KeyMap\nReturn the secret key for the signer\nFinds the signer with lowest ordering for a given id in …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the SignerId for this signer\nReturns the list of identifiers of all the signers in the …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCreate a wrapped signer from a signer and a context\nDefault constructor\nRemoves a signer from the container and returns it\nSign a single psbt input\nSign all the inputs of the psbt\nWhether we should try to sign a taproot transaction with …\nReturns the list of signers in the container, sorted by …\nSpecifies which Taproot script-spend leaves we should sign …\nWhether the signer should trust the witness_utxo, if the …\nWhether to try finalizing the PSBT after the inputs are …\nWhether the signer can sign for the internal key or not\nError returned from TxBuilder::add_foreign_utxo.\nError returned from TxBuilder::add_utxo and …\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nPolicy regarding the use of change outputs when creating a …\nProvide custom comparison functions for sorting\nRequested outpoint doesn’t exist in the tx (vout greater …\nForeign utxo outpoint txid does not match PSBT input txid\nForeign utxo missing witness_utxo or non_witness_utxo\nOnly use change outputs (see TxBuilder::only_spend_change)\nRandomized (default)\nA transaction builder\nOrdering of the transaction’s inputs and outputs\nHappens when trying to spend an UTXO that is not in the …\nUnchanged\nAdd data as an output, using OP_RETURN\nAdd a foreign UTXO i.e. a UTXO not owned by this wallet.\nSame as add_foreign_utxo but allows to set the nSequence …\nFill-in the PSBT_GLOBAL_XPUB field with the extended keys …\nAdd a recipient to the internal list\nAdd a utxo to the internal list of unspendable utxos\nAdd a utxo to the internal list of utxos that must be spent\nAdd the list of outpoints to the internal list of UTXOs …\nSet whether or not the dust limit is checked.\nSet a specific ChangeSpendPolicy. See …\nChoose the coin selection algorithm\nSet the current blockchain height.\nDo not spend change outputs\nSets the address to drain excess coins to.\nSpend all the available inputs. This respects filters like …\nEnable signaling RBF\nEnable signaling RBF with a specific nSequence value\nSet an absolute fee The fee_absolute method refers to the …\nSet a custom fee rate.\nFinish building the transaction.\nFinish building the transaction.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nFill-in the psbt::Output::redeem_script and …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nOnly spend utxos added by add_utxo.\nUse a specific nLockTime while creating the transaction\nOnly spend change outputs\nOnly Fill-in the psbt::Input::witness_utxo field when …\nChoose the ordering for inputs and outputs of the …\nSet the policy path to use while creating the transaction …\nReplace the recipients already added with a new list\nSign with a specific sig hash\nSort transaction inputs and outputs by TxOrdering variant.\nSort transaction inputs and outputs by TxOrdering variant.\nReplace the internal list of unspendable utxos with a new …\nBuild a transaction with a specific version\nForeign UTXO outpoint\nPSBT input txid\nTransaction inputs sort function\nTransaction outputs sort function") \ No newline at end of file +searchState.loadedDescShard("bdk_wallet", 0, "BDK Wallet\nError returned from TxBuilder::add_foreign_utxo.\nError returned from TxBuilder::add_utxo and …\nA derived address and the index it was found at. For …\nAn error that may occur when applying a block to Wallet.\nBalance, differentiated into various categories.\nOccurs when the update chain cannot connect with original …\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nA changeset for Wallet.\nPolicy regarding the use of change outputs when creating a …\nParameters for Wallet::create or PersistedWallet::create.\nError type for PersistedWallet::create.\nProvide custom comparison functions for sorting\nOccurs when the loaded changeset cannot contruct Wallet.\nThere was a problem with the passed-in descriptor(s).\nDescriptor’s DescriptorId does not match.\nExternal keychain, used for deriving recipient addresses.\nA UTXO owned by another wallet.\nGenesis hash does not match.\nInternal keychain, used for deriving change addresses.\nOccurs when the loaded changeset cannot construct Wallet.\nRequested outpoint doesn’t exist in the tx (vout greater …\nForeign utxo outpoint txid does not match PSBT input txid\nTrait to check if a value is below the dust limit. We are …\nTypes of keychains\nThe error type when loading a Wallet from a ChangeSet.\nRepresents a mismatch with what is loaded and what is …\nParameters for Wallet::load or PersistedWallet::load.\nError type for PersistedWallet::load.\nA UTXO owned by the local wallet.\nAn unspent output owned by a Wallet.\nData loaded is unexpected.\nData loaded from persistence is missing descriptor.\nData loaded from persistence is missing genesis hash.\nData loaded from persistence is missing network type.\nForeign utxo missing witness_utxo or non_witness_utxo\nNetwork does not match.\nOnly use change outputs (see TxBuilder::only_spend_change)\nError from persistence.\nError from persistence.\nRepresents a persisted wallet.\nRandomized (default)\nOptions for a software signer\nA transaction builder\nOrdering of the transaction’s inputs and outputs\nOccurs when the connected_to hash does not match the hash …\nHappens when trying to spend an UTXO that is not in the …\nUnchanged\nAn update to Wallet.\nAn unspent transaction output (UTXO).\nSchema name for wallet.\nName of table to store wallet descriptors and network.\nA Bitcoin wallet\nA Utxo with its satisfaction_weight.\nAdd an external signer\nAddress\nGet unbounded script pubkey iterators for both Internal …\nWhether the signer should use the sighash_type set in the …\nWhether we should grind ECDSA signature to ensure signing …\nIntroduces a block of height to the wallet, and tries to …\nApplies relevant transactions from block of height to the …\nApply relevant unconfirmed transactions to the wallet.\nApplies an update to the wallet and stages the changes …\nReturn KeychainKind as a byte\nWhether the wallet should assume a specific height has …\nReturn the balance, separated into available, …\nBump the fee of a transaction previously created with this …\nStart building a transaction.\nCalculates the fee of a given transaction. Returns …\nCalculate the FeeRate for a given transaction.\nInforms the wallet that you no longer intend to broadcast …\nUpdate for the wallet’s internal LocalChain.\nDescriptor for change addresses.\nGet all the checkpoints the wallet is currently storing …\nCoin selection\nThe confirmation time for transaction containing this utxo\nConfirmed and immediately spendable balance\nBuild a new Wallet.\nCreate PersistedWallet with the given Db.\nCreate PersistedWallet with the given async Db.\nCreate Wallet without persistence.\nCreate a new Wallet with given params.\nThe derivation index of this wallet. It will return None …\nThe derivation index for the script pubkey in the wallet\nFinds how the wallet derived the script pubkey spk.\nDescriptors\nDescriptor for recipient addresses.\nMacro to write full descriptors with code\nReturn the checksum of the public descriptor associated to …\nChecks that descriptor of keychain matches this, and …\nErrors that can be thrown by the Wallet\nWallet export\nFinalize a PSBT, i.e., for each input determine if …\nMacro to write descriptor fragments with code\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nRecover a ChangeSet from sqlite database.\nUse a custom genesis_hash.\nCheck for a genesis_hash.\nget the corresponding PSBT Input for a LocalUtxo\nGet the signers\nGet a single transaction from the wallet as a CanonicalTx …\nReturns the utxo owned by this wallet corresponding to …\nUpdate for the wallet’s internal TxGraph.\nAll coinbase outputs not yet matured\nChild index of this address\nChanges to KeychainTxOutIndex.\nAdd a new checkpoint to the wallet’s internal view of …\nAdd a transaction to the wallet’s internal view of the …\nInserts a TxOut at OutPoint into the wallet’s …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCheck whether or not a value is below dust limit\nReturn whether or not a script is part of this wallet …\nWhether this UTXO is spent or not\nType of keychain\nType of keychain\nIterator over all keychains in this wallet\nExtend the given keychain’s keymap.\nExtend the given keychain’s keymap.\nKey formats\nContains the last active derivation indices per keychain (K…\nReturns the latest checkpoint.\nList all relevant outputs (includes both spent and …\nReturn the list of unspent outputs of this wallet\nList addresses that are revealed but unused.\nBuild Wallet by loading from persistence or ChangeSet.\nLoad PersistedWallet with the given Db.\nLoad PersistedWallet with the given async Db.\nLoad Wallet without persistence.\nLoad Wallet from the given previously persisted ChangeSet …\nGet a reference to the inner LocalChain.\nChanges to the LocalChain.\nUse custom lookahead value.\nUse custom lookahead value.\nMarks an address used of the given keychain at index.\nMerge another ChangeSet into itself.\nSet network.\nCheck for network.\nGet the Bitcoin network the wallet is using.\nStores the network type of the transaction data.\nConstruct parameters with provided descriptor, …\nConstruct parameters with default values.\nThe index of the next address that you would get if you …\nGet the next unused address for the given keychain, i.e. …\nGet the location of the UTXO\nReference to a transaction output\nPeek an address of the given keychain at index without …\nPersist ChangeSet to sqlite database.\nReturn the spending policies for the wallet’s descriptor\nAdditional functions on the rust-bitcoin Psbt structure.\nReturns the descriptor used to create addresses for a …\nReveal addresses up to and including the target index and …\nAttempt to reveal the next address of the given keychain.\nModule for stuff\nThe weight of the witness data and scriptSig expressed in …\nReturn the secp256k1 context used for all signing …\nCompute the tx’s sent and received Amounts.\nGet the sequence number if an explicit sequence number has …\nSet the keymap for a given keychain.\nSet the keymap for each keychain.\nSign a transaction with all the wallet’s signers, in the …\nWhether we should try to sign a taproot transaction with …\nGeneralized signers\nGet a reference to the inner KeychainTxOutIndex.\nGet a reference of the staged ChangeSet that are yet to be …\nCreate a `FullScanRequest for this wallet.\nCreate a partial SyncRequest for this wallet for all …\nTake the staged ChangeSet to be persisted now (if any).\nSpecifies which Taproot script-spend leaves we should sign …\nGet the whole balance visible to the wallet.\nIterate over the transactions in the wallet.\nWhether the signer should trust the witness_utxo, if the …\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nWhether to try finalizing the PSBT after the inputs are …\nTransaction builder\nGet a reference to the inner TxGraph.\nChanges to TxGraph.\nGet the TxOut of the UTXO\nTransaction output\nGet an unbounded script pubkey iterator for the given …\nIterate over transactions in the wallet that are unseen …\nUndoes the effect of mark_used and returns whether the …\nUnconfirmed UTXOs received from an external wallet\nThe UTXO\nGet the version of bdk_wallet at runtime.\nDeterministically generate a unique name given the …\nForeign UTXO outpoint\nPSBT input txid\nBlock hash of connected_to.\nExpected block hash of connected_to, as derived from block.\nThe expected network.\nThe expected genesis hash.\nThe expected descriptor.\nKeychain identifying the descriptor.\nThe network that is loaded.\nThe genesis hash that is loaded.\nThe loaded descriptor.\nTransaction inputs sort function\nTransaction outputs sort function\nThe location of the output.\nThe information about the input we require to add it to a …\nThe nSequence value to set for this input.\nBranch and bound coin selection tries to avoid needing a …\nBranch and bound coin selection possible attempts with …\nBranch and bound coin selection\nIt’s possible to create spendable output from excess …\nTrait for generalized coin selection algorithms\nResult of a successful coin selection\nDefault coin selection algorithm used by TxBuilder if not …\nErrors that can be thrown by the coin_selection module\nRemaining amount after performing coin selection\nWallet’s UTXO set is not enough to cover recipient’s …\nSimple and dumb coin selection\nIt’s not possible to create spendable output from excess …\nOldestFirstCoinSelection always picks the utxo with the …\nPerform the coin selection\nDecide if change can be created\nRemaining amount after deducing fees and outgoing outputs\nTotal fee amount for the selected utxos in satoshis\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe total value of the inputs selected from the local …\nCreate new instance with target size for change output\nList of outputs selected for use as inputs\nThe total value of the inputs selected.\nSats available for spending\nSats needed for some transaction\nEffective amount available to create change after …\nThe calculated fee for the drain TxOut with the selected …\nThreshold to consider amount as dust for this particular …\nThe deducted change output fee\nExceeding amount of current selection over outgoing value …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nAlias for a Descriptor that contains extended derived keys\nScript descriptor\nThe descriptor pubkey, either a single pubkey or an xpub.\nAlias for a Descriptor that can contain extended keys …\nTrait implemented on Descriptors to add a method to …\nThe 0 combinator.\nAlias for the type of maps that represent derivation paths …\nTrait for types which can be converted into an …\nThe consensus key associated with the type. Must be a …\nLegacy ScriptContext To be used as P2SH scripts For …\nThe top-level miniscript abstract syntax tree (AST).\nMultiple extended public keys.\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nThe ScriptContext for Miniscript. Additional type …\nSegwitv0 ScriptContext\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nSingle public key.\nThe 1 combinator.\nAlias for the type of maps that represent taproot key …\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nExtended public key (xpub).\nComputes the Bitcoin address of the descriptor, if one …\nGet a reference to the inner AstElem representing the root …\nReplaces all wildcards (i.e. /*) in the descriptor with a …\nEnumerates all child nodes of the current AST node (self) …\nAttempt to produce a non-malleable witness template given …\nAttempt to produce a malleable witness template given the …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nDescriptor checksum\nWhether the given miniscript contains a raw pkh fragment\nDeprecated name for Self::at_derivation_index.\nConvert all the public keys in the descriptor to …\nConvert all the public keys in the descriptor to …\nGet the DescriptorType of Descriptor\nEncode as a Bitcoin script\nDescriptor errors\nComputes the the underlying script before any hashing is …\nAdditional information helpful for extra analysis.\nCheck whether the miniscript follows the given Extra …\nExtract the spending policy\nUtility method for deriving the descriptor at each index …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nAdd type information(Type and Extdata) to Miniscript based …\nCreate a new Miniscript from a Terminal node and a Type …\nParse a Miniscript from string and perform sanity checks …\nAttempt to parse an Miniscripts that don’t follow the …\nAttempt to parse an insane(scripts don’t clear sanity …\nParse an expression tree into a descriptor.\nParse an expression tree into a Miniscript. As a general …\nReturns child node with given index, if any\nReturns Option::Some with cloned n’th public key from …\nReturns satisfying non-malleable witness and scriptSig to …\nReturns a possilbly mallable satisfying non-malleable …\nWhether the miniscript contains a combination of timelocks\nWhether the miniscript has repeated Pk or Pkh\nWhether or not the descriptor has any wildcards i.e. /*.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nExtracts the AstElem representing the root of the …\nGet as many descriptors as different paths in this …\nConvert to wallet descriptor\nWhether or not the descriptor has any wildcards\nWhether this descriptor contains a key that has multiple …\nWhether the miniscript is malleable\nCreates a new Iter iterator that will iterate over all …\nCreates a new PkIter iterator that will iterate over all …\nLifting corresponds to conversion of a miniscript into a …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. For …\nComputes an upper bound on the weight of a satisfying …\nMaximum number of witness elements used to satisfy the …\nComputes an upper bound on the difference between a …\nLocal helper function to display error messages with …\nCreate a new bare descriptor from witness script Errors …\nCreate a new pk descriptor\nCreate a new PkH descriptor\nCreate a new sh for a given redeem script Errors when …\nCreate a new sh sortedmulti descriptor with threshold k …\nCreate a new sh wrapper for the given wpkh descriptor\nCreate a new sh wrapper for the given wsh descriptor\nCreate a new sh wrapped wpkh from Pk. Errors when …\nCreate a new sh wrapped wsh descriptor with witness script …\nCreate a new sh wrapped wsh sortedmulti descriptor from …\nCreate new tr descriptor Errors when miniscript exceeds …\nCreate a new Wpkh descriptor Will return Err if …\nCreate a new wsh descriptor from witness script Errors …\nCreate a new wsh sorted multi descriptor Errors when …\nA node in the AST.\nOther top level checks that are context specific\nAttempt to parse a Script into Miniscript representation.\nParse a descriptor that may contain secret keys\nAttempt to parse an insane(scripts don’t clear sanity …\nAttempt to parse an miniscript with extra features that …\nGet the len of public key when serialized based on context …\nReturns a plan if the provided assets are sufficient to …\nReturns a plan if the provided assets are sufficient to …\nDescriptor policy\nWhether all spend paths of miniscript require a signature\nChecks whether the descriptor is safe.\nCheck whether the underlying Miniscript is safe under the …\nAttempts to produce a non-malleable satisfying witness and …\nAttempt to produce non-malleable satisfying witness for the\nAttempt to produce a malleable satisfying witness for the …\nComputes the scriptCode of a transaction output.\nComputes the scriptpubkey of the descriptor.\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nSubstitutes raw public keys hashes with the public keys as …\nDescriptor templates\nSerialize a descriptor to string with its secret keys\nCheck top level consensus rules.\nCheck whether the top-level is type B\nConverts a descriptor using abstract keys to one using …\nTranslates a struct from one generic to another where the …\nThe correctness and malleability type information for the …\nComputes the scriptSig that will be in place for an …\nWhether the miniscript can exceed the resource …\nCompute the checksum of a descriptor, excludes any …\nCompute the checksum bytes of a descriptor, excludes any …\nError during base58 decoding\nBIP32 error\nErrors related to the parsing and usage of descriptors\nThe provided wallet descriptors are identical\nThe descriptor contains hardened derivation steps on …\nHex decoding error\nInvalid byte found in the descriptor checksum\nThe provided descriptor doesn’t match its checksum\nInvalid HD Key path, such as having a wildcard but a …\nError thrown while working with keys\nMiniscript error\nThe descriptor contains multipath keys\nKey-related error\nError while extracting and manipulating policies\nReturns the argument unchanged.\nCalls U::from(self).\nAbsolute timeclock timestamp\nCan not add to an item that is Satisfaction::None or …\nCan not add to an item that is …\nOptions to build the satisfaction field in the policy\nCan satisfy the policy item\nAn extra condition that must be satisfied but that is out …\nType for a map of sets of Condition items keyed by each set…\nECDSA Signature for a raw public key\nAn extended key fingerprint\nType for a map of folded sets of Condition items keyed by …\nSHA256 then RIPEMD160 preimage hash\nDouble SHA256 preimage hash\nIncompatible conditions (not currently used)\nIndex out of range for an item to satisfy a …\nCan not merge CSV or timelock values unless both are less …\nMulti-signature public keys with threshold count\nCannot satisfy or contribute to the policy item\nDon’t generate satisfaction field\nNot enough items are selected to satisfy a …\nOnly a partial satisfaction of some kind of threshold …\nCan reach the threshold of some kind of threshold policy\nA unique identifier for a key\nDescriptor spending policy\nErrors that can happen while extracting and manipulating …\nAnalyze the given PSBT to check for existing signatures\nLike Psbt variant and also check for expired timelocks\nA legacy public key\nRelative timelock locktime\nRIPEMD160 preimage hash\nRepresent if and how much a policy item is satisfied by …\nAn item that needs to be satisfied\nSchnorr Signature for a raw public key\nSHA256 preimage hash\nThreshold items with threshold count\nA x-only public key\nHow the wallet’s descriptor can satisfy this policy node\nOptional CheckSequenceVerify condition\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the conditions that are set by the spending policy …\nReturns a unique id for the SatisfiableItem\nIdentifier for this policy node\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the SatisfiableItem is a leaf item\nReturns whether the Satisfaction is a leaf item\nReturns true if there are no extra conditions to verify\nType of this policy node\nReturn whether or not a specific path in the policy tree …\nHow much a given PSBT already satisfies this policy node …\nOptional timelock condition\nCurrent blockchain height\nThe highest confirmation height between the inputs CSV …\nGiven PSBT\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nThe items that can be satisfied by the descriptor or are …\nThe items that can be satisfied by the descriptor\nThreshold\nThreshold\nTotal number of items\nTotal number of items\nWhether the items are sorted in lexicographic order (used …\nWhether the items are sorted in lexicographic order (used …\nThe digest value\nThe digest value\nThe digest value\nThe digest value\nThe policy items\nThe raw public key or extended key fingerprint\nThe required threshold count\nThe required threshold count\nThe timelock value\nThe timelock value\nBIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)\nBIP44 public template. Expands to pkh(key/{0,1}/*)\nBIP49 template. Expands to …\nBIP49 public template. Expands to sh(wpkh(key/{0,1}/*))\nBIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)\nBIP84 public template. Expands to wpkh(key/{0,1}/*)\nBIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)\nBIP86 public template. Expands to tr(key/{0,1}/*)\nTrait for descriptor templates that can be built into a …\nType alias for the return type of DescriptorTemplate, …\nP2PKH template. Expands to a descriptor pkh(key)\nP2TR template. Expands to a descriptor tr(key)\nP2WPKH template. Expands to a descriptor wpkh(key)\nP2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))\nBuild the complete descriptor\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nError returned from Wallet::build_fee_bump\nThere was an error with coin selection\nDescriptor key conversion error\nError returned from TxBuilder::finish\nThere was a problem with the descriptors passed in\nWhen bumping a tx the fee rate requested is lower than …\nNode doesn’t have data to estimate a fee rate\nWhen bumping a tx the absolute fee requested is lower than …\nTrying to replace a tx that has a sequence >= 0xFFFFFFFE\nRequested LockTime is less than is required to spend from …\nMiniscript PSBT error\nErrors returned by miniscript when updating inconsistent …\nIn order to use the TxBuilder::add_global_xpubs option …\nMissing non_witness_utxo on foreign utxo for given OutPoint\nCannot build a tx without recipients\nmanually_selected_only option is selected but no utxo has …\nOutput created is under the dust limit, 546 satoshis\nReturn error type for …\nThere was a problem while extracting and manipulating …\nPartially signed bitcoin transaction error\nCannot enable RBF with a Sequence >= 0xFFFFFFFE\nCannot enable RBF with Sequence given a required OP_CSV\nSpending policy is not compatible with this KeychainKind\nHappens when trying to bump a transaction that is already …\nThrown when a tx is not found in the internal database\nHappens when trying to spend an UTXO that is not in the …\nHappens when trying to spend an UTXO that is not in the …\nReturn error type for PsbtExt::update_input_with_descriptor\nRequested invalid transaction version ‘0’\nRequested transaction version 1, but at least 2 is needed …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRequired OP_CSV Sequence\nGiven RBF Sequence\nRequested LockTime\nRequired LockTime\nRequired fee absolute value Amount\nRequired fee rate\nStructure that contains the export of a wallet\nAlias for FullyNodedExport\nEarliest block to rescan when looking for the wallet’s …\nEarliest block to rescan when looking for the wallet’s …\nReturn the internal descriptor, if present\nReturn the external descriptor\nExport a wallet\nReturns the argument unchanged.\nCalls U::from(self).\nArbitrary label for the wallet\nArbitrary label for the wallet\nBIP32 error\nTrait for keys that can be derived.\nContainer for public or secret keys\nThe descriptor pubkey, either a single pubkey or an xpub.\nThe descriptor secret key, either a single private key or …\nType specifying the amount of entropy required e.g. [u8;32]\nReturned error in case of failure\nTrait that adds extra useful methods to ScriptContexts\nEnum for extended keys that can be either xprv or xpub\nA bitcoin public key (compressed or uncompressed).\nTrait that allows generating a key with the default options\nTrait for keys that can be generated\nOutput of a GeneratableKey key generation\nTrait for objects that can be turned into a public or …\nThe key has an invalid checksum\nThe key is not valid for the given network\nThe key cannot exist in the given script context\nThe consensus key associated with the type. Must be a …\nErrors thrown while working with keys\nAlias type for a map of public key to secret key\nLegacy scripts\nCustom error message\nMiniscript error\nMultiple extended private keys.\nMultiple extended public keys.\nExtra options required by the generate_with_entropy\nA private extended key, aka an xprv\nOptions for generating a PrivateKey\nA public extended key, aka an xpub\nThe ScriptContext for Miniscript. Additional type …\nEnum representation of the known valid ScriptContexts\nSegwitv0 scripts\nSingle public key.\nSingle private key.\nA descriptor bitcoin::PrivateKey with optional origin …\nA descriptor SinglePubKey with optional origin information.\nSingle public key without any origin or range information.\nContents of a “sortedmulti” descriptor\nTaproot scripts\nSet of valid networks for a key\nAn xonly public key.\nExtended private key (xpriv).\nExtended public key (xpub).\nCreate a set containing mainnet, testnet, signet, and …\nReturns the ScriptContext as a ScriptContextEnum\nReplaces any wildcard (i.e. /*) in the key with a …\nAttempt to produce a witness template given the assets …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nWhether the generated key should be “compressed” or not\nDeprecated name for Self::at_derivation_index.\nEncode as a Bitcoin script\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate an instance given a public key and a set of valid …\nCreate an instance given a secret key and a set of valid …\nParse an expression tree into a SortedMultiVec\nFull path, from the master key\nReturns a vector containing the full derivation paths from …\nGenerate a key given the options with random entropy.\nGenerate a key with the default options and a random …\nGenerate a key with the default options and a random …\nGenerate a key given the options with random entropy.\nGenerate a key given the extra options and the entropy\nGenerate a key with the default options and a given entropy\nReturn whether or not the key contains the private data\nWhether or not the key has a wildcard\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nTurn the key into a DescriptorKey within the requested …\nConsume self and turn it into a DescriptorKey by adding …\nConsume self and turn it into an ExtendedKey\nConsumes self and returns the key\nGet as many keys as derivation paths in this key.\nGet as many keys as derivation paths in this key.\nTransform the ExtendedKey into an Xpriv for the given …\nTransform the ExtendedKey into an Xpub for the given …\nWhether or not the key has a wildcard\nReturns whether the script context is Legacy\nReturns whether the script context is …\nWhether or not this key has multiple derivation paths.\nWhether or not this key has multiple derivation paths.\nReturns whether the script context is Segwitv0\nReturns whether the script context is …\nReturns whether the script context is Tap, aka Taproot or …\nReturns whether the script context is …\nThe threshold value for the multisig.\nThe public key.\nThe private key.\nCreate a set only containing mainnet\nThe fingerprint of the master key associated with this …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. In …\nMaximum number of witness elements used to satisfy the …\nCompute the intersection of two sets\nThe number of keys in the multisig.\nLocal helper function to display error messages with …\nCreate a new instance of SortedMultiVec given a list of …\nOrigin information (fingerprint and derivation path).\nOrigin information (fingerprint and derivation path).\nOther top level checks that are context specific\nOverride the computed set of valid networks\nGet the len of public key when serialized based on context …\nAccessor for the public keys in the multisig.\nutility function to sanity a sorted multi vec\nAttempt to produce a satisfying witness for the witness …\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nCreate Terminal::Multi containing sorted pubkeys\nCreate a set containing testnet and regtest\nReturns the public version of this key.\nCheck top level consensus rules.\nCheck whether the top-level is type B\nThis will panic if fpk returns an uncompressed key when …\nTrait to add functions to extract utxos and calculate fees.\nThe total transaction fee amount, sum of input amounts …\nThe transaction’s fee rate. This value will only be …\nGet the TxOut for the specified input index, if it doesn’…\nTable name for schemas.\nRuns logic that initializes/migrates the table schemas.\nThe signer will sign all the leaves it has a key for.\nDummy identifier\nThe signer won’t sign the specified leaves.\nTo be used only by external libraries implementing …\nThe fingerprint of a BIP32 extended key\nThe signer won’t sign leaves other than the ones …\nInput index is out of range\nPSBT Input signer\nThe private key in use has the right fingerprint but …\nThe non_witness_utxo specified is invalid\nInvalid SIGHASH for the signing context in use\nLegacy context\nMiniscript PSBT error\nThe fingerprint and derivation path are missing from the …\nThe private key is missing for the required public key\nThe non_witness_utxo field of the transaction is required …\nThe witness_script field of the transaction is required to …\nThe witness_utxo field of the transaction is required to …\nThe psbt contains a non-SIGHASH_ALL sighash in one of its …\nThe signer won’t sign any leaf.\nBitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …\nPSBT sign error.\nSegwit v0 context (BIP 143)\nError while computing the hash to sign a Taproot input.\nOptions for a software signer\nCommon signer methods\nSigning context\nSigning error\nIdentifier of a signer in the SignersContainers. Used as a …\nDefines the order in which signers are called\nWrapper to pair a signer with its context\nContainer for multiple signers\nTaproot context (BIP 340)\nCustomize which taproot script-path leaves the signer …\nPSBT signer\nThe user canceled the operation\nAdds an external signer to the container for the specified …\nWhether the signer should use the sighash_type set in the …\nWhether we should grind ECDSA signature to ensure signing …\nCreate a map of public keys to secret keys\nWhether the wallet should assume a specific height has …\nBuild a new signer container from a KeyMap\nReturn the secret key for the signer\nReturn the secret key for the signer\nFinds the signer with lowest ordering for a given id in …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the SignerId for this signer\nReturns the list of identifiers of all the signers in the …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCreate a wrapped signer from a signer and a context\nDefault constructor\nRemoves a signer from the container and returns it\nSign a single psbt input\nSign all the inputs of the psbt\nWhether we should try to sign a taproot transaction with …\nReturns the list of signers in the container, sorted by …\nSpecifies which Taproot script-spend leaves we should sign …\nWhether the signer should trust the witness_utxo, if the …\nWhether to try finalizing the PSBT after the inputs are …\nWhether the signer can sign for the internal key or not\nError returned from TxBuilder::add_foreign_utxo.\nError returned from TxBuilder::add_utxo and …\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nPolicy regarding the use of change outputs when creating a …\nProvide custom comparison functions for sorting\nRequested outpoint doesn’t exist in the tx (vout greater …\nForeign utxo outpoint txid does not match PSBT input txid\nForeign utxo missing witness_utxo or non_witness_utxo\nOnly use change outputs (see TxBuilder::only_spend_change)\nRandomized (default)\nA transaction builder\nOrdering of the transaction’s inputs and outputs\nHappens when trying to spend an UTXO that is not in the …\nUnchanged\nAdd data as an output, using OP_RETURN\nAdd a foreign UTXO i.e. a UTXO not owned by this wallet.\nSame as add_foreign_utxo but allows to set the nSequence …\nFill-in the PSBT_GLOBAL_XPUB field with the extended keys …\nAdd a recipient to the internal list\nAdd a utxo to the internal list of unspendable utxos\nAdd a utxo to the internal list of utxos that must be spent\nAdd the list of outpoints to the internal list of UTXOs …\nSet whether or not the dust limit is checked.\nSet a specific ChangeSpendPolicy. See …\nChoose the coin selection algorithm\nSet the current blockchain height.\nDo not spend change outputs\nSets the address to drain excess coins to.\nSpend all the available inputs. This respects filters like …\nEnable signaling RBF\nEnable signaling RBF with a specific nSequence value\nSet an absolute fee The fee_absolute method refers to the …\nSet a custom fee rate.\nFinish building the transaction.\nFinish building the transaction.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nFill-in the psbt::Output::redeem_script and …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nOnly spend utxos added by add_utxo.\nUse a specific nLockTime while creating the transaction\nOnly spend change outputs\nOnly Fill-in the psbt::Input::witness_utxo field when …\nChoose the ordering for inputs and outputs of the …\nSet the policy path to use while creating the transaction …\nReplace the recipients already added with a new list\nSign with a specific sig hash\nSort transaction inputs and outputs by TxOrdering variant.\nSort transaction inputs and outputs by TxOrdering variant.\nReplace the internal list of unspendable utxos with a new …\nBuild a transaction with a specific version\nForeign UTXO outpoint\nPSBT input txid\nTransaction inputs sort function\nTransaction outputs sort function") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html index 8b93b7ff46..d75e264032 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html @@ -1 +1 @@ -Settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js index 68e2f724f6..438d05c9ee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js @@ -1,15 +1,14 @@ var srcIndex = new Map(JSON.parse('[\ ["bdk_bitcoind_rpc",["",[],["lib.rs"]]],\ -["bdk_chain",["",[["indexer",[],["keychain_txout.rs","spk_txout.rs"]]],["balance.rs","chain_data.rs","chain_oracle.rs","changeset.rs","descriptor_ext.rs","example_utils.rs","indexed_tx_graph.rs","indexer.rs","lib.rs","local_chain.rs","spk_client.rs","spk_iter.rs","tx_data_traits.rs","tx_graph.rs"]]],\ +["bdk_chain",["",[["indexer",[],["keychain_txout.rs","spk_txout.rs"]]],["balance.rs","chain_data.rs","chain_oracle.rs","descriptor_ext.rs","example_utils.rs","indexed_tx_graph.rs","indexer.rs","lib.rs","local_chain.rs","persist.rs","rusqlite_impl.rs","spk_client.rs","spk_iter.rs","tx_data_traits.rs","tx_graph.rs"]]],\ ["bdk_coin_select",["",[],["bnb.rs","coin_selector.rs","lib.rs"]]],\ ["bdk_electrum",["",[],["bdk_electrum_client.rs","lib.rs"]]],\ ["bdk_esplora",["",[],["async_ext.rs","blocking_ext.rs","lib.rs"]]],\ ["bdk_file_store",["",[],["entry_iter.rs","lib.rs","store.rs"]]],\ ["bdk_hwi",["",[],["lib.rs","signer.rs"]]],\ -["bdk_sqlite",["",[],["lib.rs","schema.rs","store.rs"]]],\ ["bdk_testenv",["",[],["lib.rs"]]],\ ["bdk_tmp_plan",["",[],["lib.rs","plan_impls.rs","requirements.rs","template.rs"]]],\ -["bdk_wallet",["",[["descriptor",[],["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]],["keys",[],["mod.rs"]],["psbt",[],["mod.rs"]],["wallet",[],["coin_selection.rs","error.rs","export.rs","mod.rs","signer.rs","tx_builder.rs","utils.rs"]]],["lib.rs","types.rs"]]],\ +["bdk_wallet",["",[["descriptor",[],["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]],["keys",[],["mod.rs"]],["psbt",[],["mod.rs"]],["wallet",[],["changeset.rs","coin_selection.rs","error.rs","export.rs","mod.rs","params.rs","persisted.rs","signer.rs","tx_builder.rs","utils.rs"]]],["lib.rs","types.rs"]]],\ ["example_bitcoind_rpc_polling",["",[],["main.rs"]]],\ ["example_cli",["",[],["lib.rs"]]],\ ["example_electrum",["",[],["main.rs"]]],\ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/changeset.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/changeset.rs.html deleted file mode 100644 index 63fdc697eb..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/changeset.rs.html +++ /dev/null @@ -1,187 +0,0 @@ -changeset.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
    -
    /// A changeset containing [`crate`] structures typically persisted together.
    -#[cfg(feature = "miniscript")]
    -#[derive(Debug, Clone, PartialEq)]
    -#[cfg_attr(
    -    feature = "serde",
    -    derive(crate::serde::Deserialize, crate::serde::Serialize),
    -    serde(
    -        crate = "crate::serde",
    -        bound(
    -            deserialize = "A: Ord + crate::serde::Deserialize<'de>, K: Ord + crate::serde::Deserialize<'de>",
    -            serialize = "A: Ord + crate::serde::Serialize, K: Ord + crate::serde::Serialize",
    -        ),
    -    )
    -)]
    -pub struct CombinedChangeSet<K, A> {
    -    /// Changes to the [`LocalChain`](crate::local_chain::LocalChain).
    -    pub chain: crate::local_chain::ChangeSet,
    -    /// Changes to [`IndexedTxGraph`](crate::indexed_tx_graph::IndexedTxGraph).
    -    pub indexed_tx_graph:
    -        crate::indexed_tx_graph::ChangeSet<A, crate::indexer::keychain_txout::ChangeSet<K>>,
    -    /// Stores the network type of the transaction data.
    -    pub network: Option<bitcoin::Network>,
    -}
    -
    -#[cfg(feature = "miniscript")]
    -impl<K, A> core::default::Default for CombinedChangeSet<K, A> {
    -    fn default() -> Self {
    -        Self {
    -            chain: core::default::Default::default(),
    -            indexed_tx_graph: core::default::Default::default(),
    -            network: None,
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "miniscript")]
    -impl<K: Ord, A: crate::Anchor> crate::Merge for CombinedChangeSet<K, A> {
    -    fn merge(&mut self, other: Self) {
    -        crate::Merge::merge(&mut self.chain, other.chain);
    -        crate::Merge::merge(&mut self.indexed_tx_graph, other.indexed_tx_graph);
    -        if other.network.is_some() {
    -            debug_assert!(
    -                self.network.is_none() || self.network == other.network,
    -                "network type must either be just introduced or remain the same"
    -            );
    -            self.network = other.network;
    -        }
    -    }
    -
    -    fn is_empty(&self) -> bool {
    -        self.chain.is_empty() && self.indexed_tx_graph.is_empty() && self.network.is_none()
    -    }
    -}
    -
    -#[cfg(feature = "miniscript")]
    -impl<K, A> From<crate::local_chain::ChangeSet> for CombinedChangeSet<K, A> {
    -    fn from(chain: crate::local_chain::ChangeSet) -> Self {
    -        Self {
    -            chain,
    -            ..Default::default()
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "miniscript")]
    -impl<K, A> From<crate::indexed_tx_graph::ChangeSet<A, crate::indexer::keychain_txout::ChangeSet<K>>>
    -    for CombinedChangeSet<K, A>
    -{
    -    fn from(
    -        indexed_tx_graph: crate::indexed_tx_graph::ChangeSet<
    -            A,
    -            crate::indexer::keychain_txout::ChangeSet<K>,
    -        >,
    -    ) -> Self {
    -        Self {
    -            indexed_tx_graph,
    -            ..Default::default()
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "miniscript")]
    -impl<K, A> From<crate::indexer::keychain_txout::ChangeSet<K>> for CombinedChangeSet<K, A> {
    -    fn from(indexer: crate::indexer::keychain_txout::ChangeSet<K>) -> Self {
    -        Self {
    -            indexed_tx_graph: crate::indexed_tx_graph::ChangeSet {
    -                indexer,
    -                ..Default::default()
    -            },
    -            ..Default::default()
    -        }
    -    }
    -}
    -
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html index 81849a9d3e..8beb87a3b4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html @@ -336,9 +336,35 @@ 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
    //! Contains the [`IndexedTxGraph`] and associated types. Refer to the
     //! [`IndexedTxGraph`] documentation for more.
    -use alloc::vec::Vec;
    +use core::fmt::Debug;
    +
    +use alloc::vec::Vec;
     use bitcoin::{Block, OutPoint, Transaction, TxOut, Txid};
     
     use crate::{
    @@ -385,21 +411,24 @@
         pub fn apply_changeset(&mut self, changeset: ChangeSet<A, I::ChangeSet>) {
             self.index.apply_changeset(changeset.indexer);
     
    -        for tx in &changeset.graph.txs {
    +        for tx in &changeset.tx_graph.txs {
                 self.index.index_tx(tx);
             }
    -        for (&outpoint, txout) in &changeset.graph.txouts {
    +        for (&outpoint, txout) in &changeset.tx_graph.txouts {
                 self.index.index_txout(outpoint, txout);
             }
     
    -        self.graph.apply_changeset(changeset.graph);
    +        self.graph.apply_changeset(changeset.tx_graph);
         }
     
         /// Determines the [`ChangeSet`] between `self` and an empty [`IndexedTxGraph`].
         pub fn initial_changeset(&self) -> ChangeSet<A, I::ChangeSet> {
             let graph = self.graph.initial_changeset();
             let indexer = self.index.initial_changeset();
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     }
     
    @@ -427,21 +456,30 @@
         pub fn apply_update(&mut self, update: TxGraph<A>) -> ChangeSet<A, I::ChangeSet> {
             let graph = self.graph.apply_update(update);
             let indexer = self.index_tx_graph_changeset(&graph);
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     
         /// Insert a floating `txout` of given `outpoint`.
         pub fn insert_txout(&mut self, outpoint: OutPoint, txout: TxOut) -> ChangeSet<A, I::ChangeSet> {
             let graph = self.graph.insert_txout(outpoint, txout);
             let indexer = self.index_tx_graph_changeset(&graph);
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     
         /// Insert and index a transaction into the graph.
         pub fn insert_tx(&mut self, tx: Transaction) -> ChangeSet<A, I::ChangeSet> {
             let graph = self.graph.insert_tx(tx);
             let indexer = self.index_tx_graph_changeset(&graph);
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     
         /// Insert an `anchor` for a given transaction.
    @@ -489,7 +527,10 @@
                 }
             }
     
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     
         /// Batch insert unconfirmed transactions, filtering out those that are irrelevant.
    @@ -523,7 +564,10 @@
                     .map(|(tx, seen_at)| (tx.clone(), seen_at)),
             );
     
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     
         /// Batch insert unconfirmed transactions.
    @@ -541,7 +585,10 @@
         ) -> ChangeSet<A, I::ChangeSet> {
             let graph = self.graph.batch_insert_unconfirmed(txs);
             let indexer = self.index_tx_graph_changeset(&graph);
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
         }
     }
     
    @@ -574,9 +621,9 @@
                 if self.index.is_tx_relevant(tx) {
                     let txid = tx.compute_txid();
                     let anchor = A::from_block_position(block, block_id, tx_pos);
    -                changeset.graph.merge(self.graph.insert_tx(tx.clone()));
    +                changeset.tx_graph.merge(self.graph.insert_tx(tx.clone()));
                     changeset
    -                    .graph
    +                    .tx_graph
                         .merge(self.graph.insert_anchor(txid, anchor));
                 }
             }
    @@ -603,7 +650,16 @@
                 graph.merge(self.graph.insert_tx(tx.clone()));
             }
             let indexer = self.index_tx_graph_changeset(&graph);
    -        ChangeSet { graph, indexer }
    +        ChangeSet {
    +            tx_graph: graph,
    +            indexer,
    +        }
    +    }
    +}
    +
    +impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I> {
    +    fn as_ref(&self) -> &TxGraph<A> {
    +        &self.graph
         }
     }
     
    @@ -623,7 +679,7 @@
     #[must_use]
     pub struct ChangeSet<A, IA> {
         /// [`TxGraph`] changeset.
    -    pub graph: tx_graph::ChangeSet<A>,
    +    pub tx_graph: tx_graph::ChangeSet<A>,
         /// [`Indexer`] changeset.
         pub indexer: IA,
     }
    @@ -631,7 +687,7 @@
     impl<A, IA: Default> Default for ChangeSet<A, IA> {
         fn default() -> Self {
             Self {
    -            graph: Default::default(),
    +            tx_graph: Default::default(),
                 indexer: Default::default(),
             }
         }
    @@ -639,39 +695,31 @@
     
     impl<A: Anchor, IA: Merge> Merge for ChangeSet<A, IA> {
         fn merge(&mut self, other: Self) {
    -        self.graph.merge(other.graph);
    +        self.tx_graph.merge(other.tx_graph);
             self.indexer.merge(other.indexer);
         }
     
         fn is_empty(&self) -> bool {
    -        self.graph.is_empty() && self.indexer.is_empty()
    +        self.tx_graph.is_empty() && self.indexer.is_empty()
         }
     }
     
     impl<A, IA: Default> From<tx_graph::ChangeSet<A>> for ChangeSet<A, IA> {
         fn from(graph: tx_graph::ChangeSet<A>) -> Self {
             Self {
    -            graph,
    +            tx_graph: graph,
                 ..Default::default()
             }
         }
     }
     
     #[cfg(feature = "miniscript")]
    -impl<A, K> From<crate::indexer::keychain_txout::ChangeSet<K>>
    -    for ChangeSet<A, crate::indexer::keychain_txout::ChangeSet<K>>
    -{
    -    fn from(indexer: crate::indexer::keychain_txout::ChangeSet<K>) -> Self {
    +impl<A> From<crate::keychain_txout::ChangeSet> for ChangeSet<A, crate::keychain_txout::ChangeSet> {
    +    fn from(indexer: crate::keychain_txout::ChangeSet) -> Self {
             Self {
    -            graph: Default::default(),
    +            tx_graph: Default::default(),
                 indexer,
             }
         }
     }
    -
    -impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I> {
    -    fn as_ref(&self) -> &TxGraph<A> {
    -        &self.graph
    -    }
    -}
     

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/keychain_txout.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/keychain_txout.rs.html index 2fcf0c068e..3fc05f2949 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/keychain_txout.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/keychain_txout.rs.html @@ -879,71 +879,6 @@ 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
    //! [`KeychainTxOutIndex`] controls how script pubkeys are revealed for multiple keychains and
     //! indexes [`TxOut`]s with them.
     
    @@ -951,7 +886,8 @@
         collections::*,
         miniscript::{Descriptor, DescriptorPublicKey},
         spk_iter::BIP32_MAX_INDEX,
    -    DescriptorExt, DescriptorId, Indexed, Indexer, KeychainIndexed, SpkIterator, SpkTxOutIndex,
    +    spk_txout::SpkTxOutIndex,
    +    DescriptorExt, DescriptorId, Indexed, Indexer, KeychainIndexed, SpkIterator,
     };
     use alloc::{borrow::ToOwned, vec::Vec};
     use bitcoin::{Amount, OutPoint, Script, ScriptBuf, SignedAmount, Transaction, TxOut, Txid};
    @@ -1081,7 +1017,7 @@
     }
     
     impl<K: Clone + Ord + Debug> Indexer for KeychainTxOutIndex<K> {
    -    type ChangeSet = ChangeSet<K>;
    +    type ChangeSet = ChangeSet;
     
         fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet {
             let mut changeset = ChangeSet::default();
    @@ -1100,7 +1036,7 @@
         }
     
         fn index_tx(&mut self, tx: &bitcoin::Transaction) -> Self::ChangeSet {
    -        let mut changeset = ChangeSet::<K>::default();
    +        let mut changeset = ChangeSet::default();
             let txid = tx.compute_txid();
             for (op, txout) in tx.output.iter().enumerate() {
                 changeset.merge(self.index_txout(OutPoint::new(txid, op as u32), txout));
    @@ -1110,10 +1046,6 @@
     
         fn initial_changeset(&self) -> Self::ChangeSet {
             ChangeSet {
    -            keychains_added: self
    -                .keychains()
    -                .map(|(k, v)| (k.clone(), v.clone()))
    -                .collect(),
                 last_revealed: self.last_revealed.clone().into_iter().collect(),
             }
         }
    @@ -1300,7 +1232,7 @@
         /// keychain <-> descriptor is a one-to-one mapping that cannot be changed. Attempting to do so
         /// will return a [`InsertDescriptorError<K>`].
         ///
    -    /// `[KeychainTxOutIndex]` will prevent you from inserting two descriptors which derive the same
    +    /// [`KeychainTxOutIndex`] will prevent you from inserting two descriptors which derive the same
         /// script pubkey at index 0, but it's up to you to ensure that descriptors don't collide at
         /// other indices. If they do nothing catastrophic happens at the `KeychainTxOutIndex` level
         /// (one keychain just becomes the defacto owner of that spk arbitrarily) but this may have
    @@ -1310,8 +1242,7 @@
             &mut self,
             keychain: K,
             descriptor: Descriptor<DescriptorPublicKey>,
    -    ) -> Result<ChangeSet<K>, InsertDescriptorError<K>> {
    -        let mut changeset = ChangeSet::<K>::default();
    +    ) -> Result<bool, InsertDescriptorError<K>> {
             let did = descriptor.descriptor_id();
             if !self.keychain_to_descriptor_id.contains_key(&keychain)
                 && !self.descriptor_id_to_keychain.contains_key(&did)
    @@ -1320,33 +1251,31 @@
                 self.keychain_to_descriptor_id.insert(keychain.clone(), did);
                 self.descriptor_id_to_keychain.insert(did, keychain.clone());
                 self.replenish_inner_index(did, &keychain, self.lookahead);
    -            changeset
    -                .keychains_added
    -                .insert(keychain.clone(), descriptor);
    -        } else {
    -            if let Some(existing_desc_id) = self.keychain_to_descriptor_id.get(&keychain) {
    -                let descriptor = self.descriptors.get(existing_desc_id).expect("invariant");
    -                if *existing_desc_id != did {
    -                    return Err(InsertDescriptorError::KeychainAlreadyAssigned {
    -                        existing_assignment: descriptor.clone(),
    -                        keychain,
    -                    });
    -                }
    +            return Ok(true);
    +        }
    +
    +        if let Some(existing_desc_id) = self.keychain_to_descriptor_id.get(&keychain) {
    +            let descriptor = self.descriptors.get(existing_desc_id).expect("invariant");
    +            if *existing_desc_id != did {
    +                return Err(InsertDescriptorError::KeychainAlreadyAssigned {
    +                    existing_assignment: descriptor.clone(),
    +                    keychain,
    +                });
                 }
    +        }
     
    -            if let Some(existing_keychain) = self.descriptor_id_to_keychain.get(&did) {
    -                let descriptor = self.descriptors.get(&did).expect("invariant").clone();
    +        if let Some(existing_keychain) = self.descriptor_id_to_keychain.get(&did) {
    +            let descriptor = self.descriptors.get(&did).expect("invariant").clone();
     
    -                if *existing_keychain != keychain {
    -                    return Err(InsertDescriptorError::DescriptorAlreadyAssigned {
    -                        existing_assignment: existing_keychain.clone(),
    -                        descriptor,
    -                    });
    -                }
    +            if *existing_keychain != keychain {
    +                return Err(InsertDescriptorError::DescriptorAlreadyAssigned {
    +                    existing_assignment: existing_keychain.clone(),
    +                    descriptor,
    +                });
                 }
             }
     
    -        Ok(changeset)
    +        Ok(false)
         }
     
         /// Gets the descriptor associated with the keychain. Returns `None` if the keychain doesn't
    @@ -1573,7 +1502,7 @@
         }
     
         /// Convenience method to call [`Self::reveal_to_target`] on multiple keychains.
    -    pub fn reveal_to_target_multi(&mut self, keychains: &BTreeMap<K, u32>) -> ChangeSet<K> {
    +    pub fn reveal_to_target_multi(&mut self, keychains: &BTreeMap<K, u32>) -> ChangeSet {
             let mut changeset = ChangeSet::default();
     
             for (keychain, &index) in keychains {
    @@ -1602,7 +1531,7 @@
             &mut self,
             keychain: &K,
             target_index: u32,
    -    ) -> Option<(Vec<Indexed<ScriptBuf>>, ChangeSet<K>)> {
    +    ) -> Option<(Vec<Indexed<ScriptBuf>>, ChangeSet)> {
             let mut changeset = ChangeSet::default();
             let mut spks: Vec<Indexed<ScriptBuf>> = vec![];
             while let Some((i, new)) = self.next_index(keychain) {
    @@ -1633,7 +1562,7 @@
         ///  1. The descriptor has no wildcard and already has one script revealed.
         ///  2. The descriptor has already revealed scripts up to the numeric bound.
         ///  3. There is no descriptor associated with the given keychain.
    -    pub fn reveal_next_spk(&mut self, keychain: &K) -> Option<(Indexed<ScriptBuf>, ChangeSet<K>)> {
    +    pub fn reveal_next_spk(&mut self, keychain: &K) -> Option<(Indexed<ScriptBuf>, ChangeSet)> {
             let (next_index, new) = self.next_index(keychain)?;
             let mut changeset = ChangeSet::default();
     
    @@ -1663,7 +1592,7 @@
         /// could be revealed (see [`reveal_next_spk`] for when this happens).
         ///
         /// [`reveal_next_spk`]: Self::reveal_next_spk
    -    pub fn next_unused_spk(&mut self, keychain: &K) -> Option<(Indexed<ScriptBuf>, ChangeSet<K>)> {
    +    pub fn next_unused_spk(&mut self, keychain: &K) -> Option<(Indexed<ScriptBuf>, ChangeSet)> {
             let next_unused = self
                 .unused_keychain_spks(keychain)
                 .next()
    @@ -1726,26 +1655,11 @@
         }
     
         /// Applies the `ChangeSet<K>` to the [`KeychainTxOutIndex<K>`]
    -    ///
    -    /// Keychains added by the `keychains_added` field of `ChangeSet<K>` respect the one-to-one
    -    /// keychain <-> descriptor invariant by silently ignoring attempts to violate it (but will
    -    /// panic if `debug_assertions` are enabled).
    -    pub fn apply_changeset(&mut self, changeset: ChangeSet<K>) {
    -        let ChangeSet {
    -            keychains_added,
    -            last_revealed,
    -        } = changeset;
    -        for (keychain, descriptor) in keychains_added {
    -            let _ignore_invariant_violation = self.insert_descriptor(keychain, descriptor);
    -        }
    -
    -        for (&desc_id, &index) in &last_revealed {
    +    pub fn apply_changeset(&mut self, changeset: ChangeSet) {
    +        for (&desc_id, &index) in &changeset.last_revealed {
                 let v = self.last_revealed.entry(desc_id).or_default();
                 *v = index.max(*v);
    -        }
    -
    -        for did in last_revealed.keys() {
    -            self.replenish_inner_index_did(*did, self.lookahead);
    +            self.replenish_inner_index_did(desc_id, self.lookahead);
             }
         }
     }
    @@ -1806,49 +1720,24 @@
     /// `keychains_added` is *not* monotone, once it is set any attempt to change it is subject to the
     /// same *one-to-one* keychain <-> descriptor mapping invariant as [`KeychainTxOutIndex`] itself.
     ///
    -/// [`apply_changeset`]: KeychainTxOutIndex::apply_changeset
    -/// [`Merge`]: Self::merge
    -#[derive(Clone, Debug, PartialEq)]
    +/// [`KeychainTxOutIndex`]: crate::keychain_txout::KeychainTxOutIndex
    +/// [`apply_changeset`]: crate::keychain_txout::KeychainTxOutIndex::apply_changeset
    +/// [`merge`]: Self::merge
    +#[derive(Clone, Debug, Default, PartialEq)]
     #[cfg_attr(
         feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(
    -        crate = "serde_crate",
    -        bound(
    -            deserialize = "K: Ord + serde::Deserialize<'de>",
    -            serialize = "K: Ord + serde::Serialize"
    -        )
    -    )
    +    serde(crate = "serde_crate")
     )]
     #[must_use]
    -pub struct ChangeSet<K> {
    -    /// Contains the keychains that have been added and their respective descriptor
    -    pub keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
    +pub struct ChangeSet {
         /// Contains for each descriptor_id the last revealed index of derivation
         pub last_revealed: BTreeMap<DescriptorId, u32>,
     }
     
    -impl<K: Ord> Merge for ChangeSet<K> {
    -    /// Merge another [`ChangeSet<K>`] into self.
    -    ///
    -    /// For the `keychains_added` field this method respects the invariants of
    -    /// [`insert_descriptor`]. `last_revealed` always becomes the larger of the two.
    -    ///
    -    /// [`insert_descriptor`]: KeychainTxOutIndex::insert_descriptor
    +impl Merge for ChangeSet {
    +    /// Merge another [`ChangeSet`] into self.
         fn merge(&mut self, other: Self) {
    -        for (new_keychain, new_descriptor) in other.keychains_added {
    -            // enforce 1-to-1 invariance
    -            if !self.keychains_added.contains_key(&new_keychain)
    -                // FIXME: very inefficient
    -                && self
    -                    .keychains_added
    -                    .values()
    -                    .all(|descriptor| descriptor != &new_descriptor)
    -            {
    -                self.keychains_added.insert(new_keychain, new_descriptor);
    -            }
    -        }
    -
             // for `last_revealed`, entries of `other` will take precedence ONLY if it is greater than
             // what was originally in `self`.
             for (desc_id, index) in other.last_revealed {
    @@ -1868,26 +1757,7 @@
     
         /// Returns whether the changeset are empty.
         fn is_empty(&self) -> bool {
    -        self.last_revealed.is_empty() && self.keychains_added.is_empty()
    -    }
    -}
    -
    -impl<K> Default for ChangeSet<K> {
    -    fn default() -> Self {
    -        Self {
    -            last_revealed: BTreeMap::default(),
    -            keychains_added: BTreeMap::default(),
    -        }
    -    }
    -}
    -
    -#[derive(Clone, Debug, Eq, PartialEq)]
    -/// The keychain doesn't exist. Most likley hasn't been inserted with [`KeychainTxOutIndex::insert_descriptor`].
    -pub struct NoSuchKeychain<K>(K);
    -
    -impl<K: Debug> core::fmt::Display for NoSuchKeychain<K> {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    -        write!(f, "no such keychain {:?} exists", &self.0)
    +        self.last_revealed.is_empty()
         }
     }
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/spk_txout.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/spk_txout.rs.html index 2ce5310d0d..03012b52b2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/spk_txout.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexer/spk_txout.rs.html @@ -542,7 +542,7 @@ /// # Example /// /// ```rust - /// # use bdk_chain::SpkTxOutIndex; + /// # use bdk_chain::spk_txout::SpkTxOutIndex; /// /// // imagine our spks are indexed like (keychain, derivation_index). /// let txout_index = SpkTxOutIndex::<(u32, u32)>::default(); diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html index e4e2ba998b..e65be067db 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html @@ -104,6 +104,28 @@ 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
    //! This crate is a collection of core structures for [Bitcoin Dev Kit].
     //!
     //! The goal of this crate is to give wallets the mechanisms needed to:
    @@ -134,7 +156,7 @@
     pub mod indexed_tx_graph;
     pub use indexed_tx_graph::IndexedTxGraph;
     pub mod indexer;
    -pub use indexer::spk_txout::*;
    +pub use indexer::spk_txout;
     pub use indexer::Indexer;
     pub mod local_chain;
     mod tx_data_traits;
    @@ -143,6 +165,8 @@
     pub use tx_graph::TxGraph;
     mod chain_oracle;
     pub use chain_oracle::*;
    +mod persist;
    +pub use persist::*;
     
     #[doc(hidden)]
     pub mod example_utils;
    @@ -156,15 +180,18 @@
     #[cfg(feature = "miniscript")]
     mod spk_iter;
     #[cfg(feature = "miniscript")]
    +pub use indexer::keychain_txout;
    +#[cfg(feature = "miniscript")]
     pub use spk_iter::*;
    -mod changeset;
    -pub use changeset::*;
    +#[cfg(feature = "rusqlite")]
    +pub mod rusqlite_impl;
     pub mod spk_client;
     
     #[allow(unused_imports)]
     #[macro_use]
     extern crate alloc;
    -
    +#[cfg(feature = "rusqlite")]
    +pub extern crate rusqlite_crate as rusqlite;
     #[cfg(feature = "serde")]
     pub extern crate serde_crate as serde;
     
    @@ -210,4 +237,21 @@
     pub type Indexed<T> = (u32, T);
     /// A tuple of keychain `K`, derivation index (`u32`) and a `T` associated with them.
     pub type KeychainIndexed<K, T> = ((K, u32), T);
    +
    +/// A wrapper that we use to impl remote traits for types in our crate or dependency crates.
    +pub struct Impl<T>(pub T);
    +
    +impl<T> From<T> for Impl<T> {
    +    fn from(value: T) -> Self {
    +        Self(value)
    +    }
    +}
    +
    +impl<T> core::ops::Deref for Impl<T> {
    +    type Target = T;
    +
    +    fn deref(&self) -> &Self::Target {
    +        &self.0
    +    }
    +}
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html index 94771ced01..bbd3248e0c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html @@ -849,23 +849,68 @@ 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
    //! The [`LocalChain`] is a local implementation of [`ChainOracle`].
     
     use core::convert::Infallible;
     use core::ops::RangeBounds;
     
     use crate::collections::BTreeMap;
    -use crate::{BlockId, ChainOracle};
    +use crate::{BlockId, ChainOracle, Merge};
     use alloc::sync::Arc;
     use bitcoin::block::Header;
     use bitcoin::BlockHash;
     
    -/// The [`ChangeSet`] represents changes to [`LocalChain`].
    -///
    -/// The key represents the block height, and the value either represents added a new [`CheckPoint`]
    -/// (if [`Some`]), or removing a [`CheckPoint`] (if [`None`]).
    -pub type ChangeSet = BTreeMap<u32, Option<BlockHash>>;
    -
     /// A [`LocalChain`] checkpoint is used to find the agreement point between two chains and as a
     /// transaction anchor.
     ///
    @@ -1067,7 +1112,7 @@
     
         /// Apply `changeset` to the checkpoint.
         fn apply_changeset(mut self, changeset: &ChangeSet) -> Result<CheckPoint, MissingGenesisError> {
    -        if let Some(start_height) = changeset.keys().next().cloned() {
    +        if let Some(start_height) = changeset.blocks.keys().next().cloned() {
                 // changes after point of agreement
                 let mut extension = BTreeMap::default();
                 // point of agreement
    @@ -1082,7 +1127,7 @@
                     }
                 }
     
    -            for (&height, &hash) in changeset {
    +            for (&height, &hash) in &changeset.blocks {
                     match hash {
                         Some(hash) => {
                             extension.insert(height, hash);
    @@ -1182,7 +1227,7 @@
     
         /// Construct a [`LocalChain`] from an initial `changeset`.
         pub fn from_changeset(changeset: ChangeSet) -> Result<Self, MissingGenesisError> {
    -        let genesis_entry = changeset.get(&0).copied().flatten();
    +        let genesis_entry = changeset.blocks.get(&0).copied().flatten();
             let genesis_hash = match genesis_entry {
                 Some(hash) => hash,
                 None => return Err(MissingGenesisError),
    @@ -1372,12 +1417,14 @@
             }
     
             let mut changeset = ChangeSet::default();
    -        changeset.insert(block_id.height, Some(block_id.hash));
    +        changeset
    +            .blocks
    +            .insert(block_id.height, Some(block_id.hash));
             self.apply_changeset(&changeset)
                 .map_err(|_| AlterCheckPointError {
                     height: 0,
                     original_hash: self.genesis_hash(),
    -                update_hash: changeset.get(&0).cloned().flatten(),
    +                update_hash: changeset.blocks.get(&0).cloned().flatten(),
                 })?;
             Ok(changeset)
         }
    @@ -1399,7 +1446,7 @@
                 if cp_id.height < block_id.height {
                     break;
                 }
    -            changeset.insert(cp_id.height, None);
    +            changeset.blocks.insert(cp_id.height, None);
                 if cp_id == block_id {
                     remove_from = Some(cp);
                 }
    @@ -1420,13 +1467,16 @@
         /// Derives an initial [`ChangeSet`], meaning that it can be applied to an empty chain to
         /// recover the current chain.
         pub fn initial_changeset(&self) -> ChangeSet {
    -        self.tip
    -            .iter()
    -            .map(|cp| {
    -                let block_id = cp.block_id();
    -                (block_id.height, Some(block_id.hash))
    -            })
    -            .collect()
    +        ChangeSet {
    +            blocks: self
    +                .tip
    +                .iter()
    +                .map(|cp| {
    +                    let block_id = cp.block_id();
    +                    (block_id.height, Some(block_id.hash))
    +                })
    +                .collect(),
    +        }
         }
     
         /// Iterate over checkpoints in descending height order.
    @@ -1438,7 +1488,7 @@
     
         fn _check_changeset_is_applied(&self, changeset: &ChangeSet) -> bool {
             let mut curr_cp = self.tip.clone();
    -        for (height, exp_hash) in changeset.iter().rev() {
    +        for (height, exp_hash) in changeset.blocks.iter().rev() {
                 match curr_cp.get(*height) {
                     Some(query_cp) => {
                         if query_cp.height() != *height || Some(query_cp.hash()) != *exp_hash {
    @@ -1481,6 +1531,58 @@
         }
     }
     
    +/// The [`ChangeSet`] represents changes to [`LocalChain`].
    +#[derive(Debug, Default, Clone, PartialEq)]
    +#[cfg_attr(
    +    feature = "serde",
    +    derive(serde::Deserialize, serde::Serialize),
    +    serde(crate = "serde_crate")
    +)]
    +pub struct ChangeSet {
    +    /// Changes to the [`LocalChain`] blocks.
    +    ///
    +    /// The key represents the block height, and the value either represents added a new [`CheckPoint`]
    +    /// (if [`Some`]), or removing a [`CheckPoint`] (if [`None`]).
    +    pub blocks: BTreeMap<u32, Option<BlockHash>>,
    +}
    +
    +impl Merge for ChangeSet {
    +    fn merge(&mut self, other: Self) {
    +        Merge::merge(&mut self.blocks, other.blocks)
    +    }
    +
    +    fn is_empty(&self) -> bool {
    +        self.blocks.is_empty()
    +    }
    +}
    +
    +impl<B: IntoIterator<Item = (u32, Option<BlockHash>)>> From<B> for ChangeSet {
    +    fn from(blocks: B) -> Self {
    +        Self {
    +            blocks: blocks.into_iter().collect(),
    +        }
    +    }
    +}
    +
    +impl FromIterator<(u32, Option<BlockHash>)> for ChangeSet {
    +    fn from_iter<T: IntoIterator<Item = (u32, Option<BlockHash>)>>(iter: T) -> Self {
    +        Self {
    +            blocks: iter.into_iter().collect(),
    +        }
    +    }
    +}
    +
    +impl FromIterator<(u32, BlockHash)> for ChangeSet {
    +    fn from_iter<T: IntoIterator<Item = (u32, BlockHash)>>(iter: T) -> Self {
    +        Self {
    +            blocks: iter
    +                .into_iter()
    +                .map(|(height, hash)| (height, Some(hash)))
    +                .collect(),
    +        }
    +    }
    +}
    +
     /// An error which occurs when a [`LocalChain`] is constructed without a genesis checkpoint.
     #[derive(Clone, Debug, PartialEq)]
     pub struct MissingGenesisError;
    @@ -1612,7 +1714,7 @@
             match (curr_orig.as_ref(), curr_update.as_ref()) {
                 // Update block that doesn't exist in the original chain
                 (o, Some(u)) if Some(u.height()) > o.map(|o| o.height()) => {
    -                changeset.insert(u.height(), Some(u.hash()));
    +                changeset.blocks.insert(u.height(), Some(u.hash()));
                     prev_update = curr_update.take();
                 }
                 // Original block that isn't in the update
    @@ -1664,9 +1766,9 @@
                     } else {
                         // We have an invalidation height so we set the height to the updated hash and
                         // also purge all the original chain block hashes above this block.
    -                    changeset.insert(u.height(), Some(u.hash()));
    +                    changeset.blocks.insert(u.height(), Some(u.hash()));
                         for invalidated_height in potentially_invalidated_heights.drain(..) {
    -                        changeset.insert(invalidated_height, None);
    +                        changeset.blocks.insert(invalidated_height, None);
                         }
                         prev_orig_was_invalidated = true;
                     }
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/persist.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/persist.rs.html
    new file mode 100644
    index 0000000000..98d7dee0ba
    --- /dev/null
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/persist.rs.html
    @@ -0,0 +1,339 @@
    +persist.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
    +
    use core::{
    +    future::Future,
    +    ops::{Deref, DerefMut},
    +    pin::Pin,
    +};
    +
    +use alloc::boxed::Box;
    +
    +use crate::Merge;
    +
    +/// Represents a type that contains staged changes.
    +pub trait Staged {
    +    /// Type for staged changes.
    +    type ChangeSet: Merge;
    +
    +    /// Get mutable reference of staged changes.
    +    fn staged(&mut self) -> &mut Self::ChangeSet;
    +}
    +
    +/// Trait that persists the type with `Db`.
    +///
    +/// Methods of this trait should not be called directly.
    +pub trait PersistWith<Db>: Staged + Sized {
    +    /// Parameters for [`PersistWith::create`].
    +    type CreateParams;
    +    /// Parameters for [`PersistWith::load`].
    +    type LoadParams;
    +    /// Error type of [`PersistWith::create`].
    +    type CreateError;
    +    /// Error type of [`PersistWith::load`].
    +    type LoadError;
    +    /// Error type of [`PersistWith::persist`].
    +    type PersistError;
    +
    +    /// Initialize the `Db` and create `Self`.
    +    fn create(db: &mut Db, params: Self::CreateParams) -> Result<Self, Self::CreateError>;
    +
    +    /// Initialize the `Db` and load a previously-persisted `Self`.
    +    fn load(db: &mut Db, params: Self::LoadParams) -> Result<Option<Self>, Self::LoadError>;
    +
    +    /// Persist changes to the `Db`.
    +    fn persist(
    +        db: &mut Db,
    +        changeset: &<Self as Staged>::ChangeSet,
    +    ) -> Result<(), Self::PersistError>;
    +}
    +
    +type FutureResult<'a, T, E> = Pin<Box<dyn Future<Output = Result<T, E>> + Send + 'a>>;
    +
    +/// Trait that persists the type with an async `Db`.
    +pub trait PersistAsyncWith<Db>: Staged + Sized {
    +    /// Parameters for [`PersistAsyncWith::create`].
    +    type CreateParams;
    +    /// Parameters for [`PersistAsyncWith::load`].
    +    type LoadParams;
    +    /// Error type of [`PersistAsyncWith::create`].
    +    type CreateError;
    +    /// Error type of [`PersistAsyncWith::load`].
    +    type LoadError;
    +    /// Error type of [`PersistAsyncWith::persist`].
    +    type PersistError;
    +
    +    /// Initialize the `Db` and create `Self`.
    +    fn create(db: &mut Db, params: Self::CreateParams) -> FutureResult<Self, Self::CreateError>;
    +
    +    /// Initialize the `Db` and load a previously-persisted `Self`.
    +    fn load(db: &mut Db, params: Self::LoadParams) -> FutureResult<Option<Self>, Self::LoadError>;
    +
    +    /// Persist changes to the `Db`.
    +    fn persist<'a>(
    +        db: &'a mut Db,
    +        changeset: &'a <Self as Staged>::ChangeSet,
    +    ) -> FutureResult<'a, (), Self::PersistError>;
    +}
    +
    +/// Represents a persisted `T`.
    +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
    +pub struct Persisted<T> {
    +    inner: T,
    +}
    +
    +impl<T> Persisted<T> {
    +    /// Create a new persisted `T`.
    +    pub fn create<Db>(db: &mut Db, params: T::CreateParams) -> Result<Self, T::CreateError>
    +    where
    +        T: PersistWith<Db>,
    +    {
    +        T::create(db, params).map(|inner| Self { inner })
    +    }
    +
    +    /// Create a new persisted `T` with async `Db`.
    +    pub async fn create_async<Db>(
    +        db: &mut Db,
    +        params: T::CreateParams,
    +    ) -> Result<Self, T::CreateError>
    +    where
    +        T: PersistAsyncWith<Db>,
    +    {
    +        T::create(db, params).await.map(|inner| Self { inner })
    +    }
    +
    +    /// Construct a persisted `T` from `Db`.
    +    pub fn load<Db>(db: &mut Db, params: T::LoadParams) -> Result<Option<Self>, T::LoadError>
    +    where
    +        T: PersistWith<Db>,
    +    {
    +        Ok(T::load(db, params)?.map(|inner| Self { inner }))
    +    }
    +
    +    /// Contruct a persisted `T` from an async `Db`.
    +    pub async fn load_async<Db>(
    +        db: &mut Db,
    +        params: T::LoadParams,
    +    ) -> Result<Option<Self>, T::LoadError>
    +    where
    +        T: PersistAsyncWith<Db>,
    +    {
    +        Ok(T::load(db, params).await?.map(|inner| Self { inner }))
    +    }
    +
    +    /// Persist staged changes of `T` into `Db`.
    +    ///
    +    /// If the database errors, the staged changes will not be cleared.
    +    pub fn persist<Db>(&mut self, db: &mut Db) -> Result<bool, T::PersistError>
    +    where
    +        T: PersistWith<Db>,
    +    {
    +        let stage = T::staged(&mut self.inner);
    +        if stage.is_empty() {
    +            return Ok(false);
    +        }
    +        T::persist(db, &*stage)?;
    +        stage.take();
    +        Ok(true)
    +    }
    +
    +    /// Persist staged changes of `T` into an async `Db`.
    +    ///
    +    /// If the database errors, the staged changes will not be cleared.
    +    pub async fn persist_async<'a, Db>(
    +        &'a mut self,
    +        db: &'a mut Db,
    +    ) -> Result<bool, T::PersistError>
    +    where
    +        T: PersistAsyncWith<Db>,
    +    {
    +        let stage = T::staged(&mut self.inner);
    +        if stage.is_empty() {
    +            return Ok(false);
    +        }
    +        T::persist(db, &*stage).await?;
    +        stage.take();
    +        Ok(true)
    +    }
    +}
    +
    +impl<T> Deref for Persisted<T> {
    +    type Target = T;
    +
    +    fn deref(&self) -> &Self::Target {
    +        &self.inner
    +    }
    +}
    +
    +impl<T> DerefMut for Persisted<T> {
    +    fn deref_mut(&mut self) -> &mut Self::Target {
    +        &mut self.inner
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/rusqlite_impl.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/rusqlite_impl.rs.html new file mode 100644 index 0000000000..4b89fdfbea --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/rusqlite_impl.rs.html @@ -0,0 +1,1061 @@ +rusqlite_impl.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
    +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
    +
    //! Module for stuff
    +
    +use crate::*;
    +use core::str::FromStr;
    +
    +use alloc::{borrow::ToOwned, boxed::Box, string::ToString, sync::Arc, vec::Vec};
    +use bitcoin::consensus::{Decodable, Encodable};
    +use rusqlite;
    +use rusqlite::named_params;
    +use rusqlite::types::{FromSql, FromSqlError, FromSqlResult, ToSql, ToSqlOutput, ValueRef};
    +use rusqlite::OptionalExtension;
    +use rusqlite::Transaction;
    +
    +/// Table name for schemas.
    +pub const SCHEMAS_TABLE_NAME: &str = "bdk_schemas";
    +
    +/// Initialize the schema table.
    +fn init_schemas_table(db_tx: &Transaction) -> rusqlite::Result<()> {
    +    let sql = format!("CREATE TABLE IF NOT EXISTS {}( name TEXT PRIMARY KEY NOT NULL, version INTEGER NOT NULL ) STRICT", SCHEMAS_TABLE_NAME);
    +    db_tx.execute(&sql, ())?;
    +    Ok(())
    +}
    +
    +/// Get schema version of `schema_name`.
    +fn schema_version(db_tx: &Transaction, schema_name: &str) -> rusqlite::Result<Option<u32>> {
    +    let sql = format!(
    +        "SELECT version FROM {} WHERE name=:name",
    +        SCHEMAS_TABLE_NAME
    +    );
    +    db_tx
    +        .query_row(&sql, named_params! { ":name": schema_name }, |row| {
    +            row.get::<_, u32>("version")
    +        })
    +        .optional()
    +}
    +
    +/// Set the `schema_version` of `schema_name`.
    +fn set_schema_version(
    +    db_tx: &Transaction,
    +    schema_name: &str,
    +    schema_version: u32,
    +) -> rusqlite::Result<()> {
    +    let sql = format!(
    +        "REPLACE INTO {}(name, version) VALUES(:name, :version)",
    +        SCHEMAS_TABLE_NAME,
    +    );
    +    db_tx.execute(
    +        &sql,
    +        named_params! { ":name": schema_name, ":version": schema_version },
    +    )?;
    +    Ok(())
    +}
    +
    +/// Runs logic that initializes/migrates the table schemas.
    +pub fn migrate_schema(
    +    db_tx: &Transaction,
    +    schema_name: &str,
    +    versioned_scripts: &[&[&str]],
    +) -> rusqlite::Result<()> {
    +    init_schemas_table(db_tx)?;
    +    let current_version = schema_version(db_tx, schema_name)?;
    +    let exec_from = current_version.map_or(0_usize, |v| v as usize + 1);
    +    let scripts_to_exec = versioned_scripts.iter().enumerate().skip(exec_from);
    +    for (version, &script) in scripts_to_exec {
    +        set_schema_version(db_tx, schema_name, version as u32)?;
    +        for statement in script {
    +            db_tx.execute(statement, ())?;
    +        }
    +    }
    +    Ok(())
    +}
    +
    +impl FromSql for Impl<bitcoin::Txid> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        bitcoin::Txid::from_str(value.as_str()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::Txid> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.to_string().into())
    +    }
    +}
    +
    +impl FromSql for Impl<bitcoin::BlockHash> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        bitcoin::BlockHash::from_str(value.as_str()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::BlockHash> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.to_string().into())
    +    }
    +}
    +
    +#[cfg(feature = "miniscript")]
    +impl FromSql for Impl<DescriptorId> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        DescriptorId::from_str(value.as_str()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +#[cfg(feature = "miniscript")]
    +impl ToSql for Impl<DescriptorId> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.to_string().into())
    +    }
    +}
    +
    +impl FromSql for Impl<bitcoin::Transaction> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        bitcoin::Transaction::consensus_decode_from_finite_reader(&mut value.as_bytes()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::Transaction> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        let mut bytes = Vec::<u8>::new();
    +        self.consensus_encode(&mut bytes).map_err(to_sql_error)?;
    +        Ok(bytes.into())
    +    }
    +}
    +
    +impl FromSql for Impl<bitcoin::ScriptBuf> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        Ok(bitcoin::Script::from_bytes(value.as_bytes()?)
    +            .to_owned()
    +            .into())
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::ScriptBuf> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.as_bytes().into())
    +    }
    +}
    +
    +impl FromSql for Impl<bitcoin::Amount> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        Ok(bitcoin::Amount::from_sat(value.as_i64()?.try_into().map_err(from_sql_error)?).into())
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::Amount> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        let amount: i64 = self.to_sat().try_into().map_err(to_sql_error)?;
    +        Ok(amount.into())
    +    }
    +}
    +
    +impl<A: Anchor + serde_crate::de::DeserializeOwned> FromSql for Impl<A> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        serde_json::from_str(value.as_str()?)
    +            .map(Impl)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +impl<A: Anchor + serde_crate::Serialize> ToSql for Impl<A> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        serde_json::to_string(&self.0)
    +            .map(Into::into)
    +            .map_err(to_sql_error)
    +    }
    +}
    +
    +#[cfg(feature = "miniscript")]
    +impl FromSql for Impl<miniscript::Descriptor<miniscript::DescriptorPublicKey>> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        miniscript::Descriptor::from_str(value.as_str()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +#[cfg(feature = "miniscript")]
    +impl ToSql for Impl<miniscript::Descriptor<miniscript::DescriptorPublicKey>> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.to_string().into())
    +    }
    +}
    +
    +impl FromSql for Impl<bitcoin::Network> {
    +    fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> {
    +        bitcoin::Network::from_str(value.as_str()?)
    +            .map(Self)
    +            .map_err(from_sql_error)
    +    }
    +}
    +
    +impl ToSql for Impl<bitcoin::Network> {
    +    fn to_sql(&self) -> rusqlite::Result<ToSqlOutput<'_>> {
    +        Ok(self.to_string().into())
    +    }
    +}
    +
    +fn from_sql_error<E: std::error::Error + Send + Sync + 'static>(err: E) -> FromSqlError {
    +    FromSqlError::Other(Box::new(err))
    +}
    +
    +fn to_sql_error<E: std::error::Error + Send + Sync + 'static>(err: E) -> rusqlite::Error {
    +    rusqlite::Error::ToSqlConversionFailure(Box::new(err))
    +}
    +
    +impl<A> tx_graph::ChangeSet<A>
    +where
    +    A: Anchor + Clone + Ord + serde::Serialize + serde::de::DeserializeOwned,
    +{
    +    /// Schema name for [`tx_graph::ChangeSet`].
    +    pub const SCHEMA_NAME: &'static str = "bdk_txgraph";
    +    /// Name of table that stores full transactions and `last_seen` timestamps.
    +    pub const TXS_TABLE_NAME: &'static str = "bdk_txs";
    +    /// Name of table that stores floating txouts.
    +    pub const TXOUTS_TABLE_NAME: &'static str = "bdk_txouts";
    +    /// Name of table that stores [`Anchor`]s.
    +    pub const ANCHORS_TABLE_NAME: &'static str = "bdk_anchors";
    +
    +    /// Initialize sqlite tables.
    +    fn init_sqlite_tables(db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        let schema_v0: &[&str] = &[
    +            // full transactions
    +            &format!(
    +                "CREATE TABLE {} ( \
    +                txid TEXT PRIMARY KEY NOT NULL, \
    +                raw_tx BLOB, \
    +                last_seen INTEGER \
    +                ) STRICT",
    +                Self::TXS_TABLE_NAME,
    +            ),
    +            // floating txouts
    +            &format!(
    +                "CREATE TABLE {} ( \
    +                txid TEXT NOT NULL, \
    +                vout INTEGER NOT NULL, \
    +                value INTEGER NOT NULL, \
    +                script BLOB NOT NULL, \
    +                PRIMARY KEY (txid, vout) \
    +                ) STRICT",
    +                Self::TXOUTS_TABLE_NAME,
    +            ),
    +            // anchors
    +            &format!(
    +                "CREATE TABLE {} ( \
    +                txid TEXT NOT NULL REFERENCES {} (txid), \
    +                block_height INTEGER NOT NULL, \
    +                block_hash TEXT NOT NULL, \
    +                anchor BLOB NOT NULL, \
    +                PRIMARY KEY (txid, block_height, block_hash) \
    +                ) STRICT",
    +                Self::ANCHORS_TABLE_NAME,
    +                Self::TXS_TABLE_NAME,
    +            ),
    +        ];
    +        migrate_schema(db_tx, Self::SCHEMA_NAME, &[schema_v0])
    +    }
    +
    +    /// Construct a [`TxGraph`] from an sqlite database.
    +    pub fn from_sqlite(db_tx: &rusqlite::Transaction) -> rusqlite::Result<Self> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut changeset = Self::default();
    +
    +        let mut statement = db_tx.prepare(&format!(
    +            "SELECT txid, raw_tx, last_seen FROM {}",
    +            Self::TXS_TABLE_NAME,
    +        ))?;
    +        let row_iter = statement.query_map([], |row| {
    +            Ok((
    +                row.get::<_, Impl<bitcoin::Txid>>("txid")?,
    +                row.get::<_, Option<Impl<bitcoin::Transaction>>>("raw_tx")?,
    +                row.get::<_, Option<u64>>("last_seen")?,
    +            ))
    +        })?;
    +        for row in row_iter {
    +            let (Impl(txid), tx, last_seen) = row?;
    +            if let Some(Impl(tx)) = tx {
    +                changeset.txs.insert(Arc::new(tx));
    +            }
    +            if let Some(last_seen) = last_seen {
    +                changeset.last_seen.insert(txid, last_seen);
    +            }
    +        }
    +
    +        let mut statement = db_tx.prepare(&format!(
    +            "SELECT txid, vout, value, script FROM {}",
    +            Self::TXOUTS_TABLE_NAME,
    +        ))?;
    +        let row_iter = statement.query_map([], |row| {
    +            Ok((
    +                row.get::<_, Impl<bitcoin::Txid>>("txid")?,
    +                row.get::<_, u32>("vout")?,
    +                row.get::<_, Impl<bitcoin::Amount>>("value")?,
    +                row.get::<_, Impl<bitcoin::ScriptBuf>>("script")?,
    +            ))
    +        })?;
    +        for row in row_iter {
    +            let (Impl(txid), vout, Impl(value), Impl(script_pubkey)) = row?;
    +            changeset.txouts.insert(
    +                bitcoin::OutPoint { txid, vout },
    +                bitcoin::TxOut {
    +                    value,
    +                    script_pubkey,
    +                },
    +            );
    +        }
    +
    +        let mut statement = db_tx.prepare(&format!(
    +            "SELECT json(anchor), txid FROM {}",
    +            Self::ANCHORS_TABLE_NAME,
    +        ))?;
    +        let row_iter = statement.query_map([], |row| {
    +            Ok((
    +                row.get::<_, Impl<A>>("json(anchor)")?,
    +                row.get::<_, Impl<bitcoin::Txid>>("txid")?,
    +            ))
    +        })?;
    +        for row in row_iter {
    +            let (Impl(anchor), Impl(txid)) = row?;
    +            changeset.anchors.insert((anchor, txid));
    +        }
    +
    +        Ok(changeset)
    +    }
    +
    +    /// Persist `changeset` to the sqlite database.
    +    pub fn persist_to_sqlite(&self, db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut statement = db_tx.prepare_cached(&format!(
    +            "INSERT INTO {}(txid, raw_tx) VALUES(:txid, :raw_tx) ON CONFLICT(txid) DO UPDATE SET raw_tx=:raw_tx",
    +            Self::TXS_TABLE_NAME,
    +        ))?;
    +        for tx in &self.txs {
    +            statement.execute(named_params! {
    +                ":txid": Impl(tx.compute_txid()),
    +                ":raw_tx": Impl(tx.as_ref().clone()),
    +            })?;
    +        }
    +
    +        let mut statement = db_tx
    +            .prepare_cached(&format!(
    +                "INSERT INTO {}(txid, last_seen) VALUES(:txid, :last_seen) ON CONFLICT(txid) DO UPDATE SET last_seen=:last_seen",
    +                Self::TXS_TABLE_NAME,
    +            ))?;
    +        for (&txid, &last_seen) in &self.last_seen {
    +            statement.execute(named_params! {
    +                ":txid": Impl(txid),
    +                ":last_seen": Some(last_seen),
    +            })?;
    +        }
    +
    +        let mut statement = db_tx.prepare_cached(&format!(
    +            "REPLACE INTO {}(txid, vout, value, script) VALUES(:txid, :vout, :value, :script)",
    +            Self::TXOUTS_TABLE_NAME,
    +        ))?;
    +        for (op, txo) in &self.txouts {
    +            statement.execute(named_params! {
    +                ":txid": Impl(op.txid),
    +                ":vout": op.vout,
    +                ":value": Impl(txo.value),
    +                ":script": Impl(txo.script_pubkey.clone()),
    +            })?;
    +        }
    +
    +        let mut statement = db_tx.prepare_cached(&format!(
    +            "REPLACE INTO {}(txid, block_height, block_hash, anchor) VALUES(:txid, :block_height, :block_hash, jsonb(:anchor))",
    +            Self::ANCHORS_TABLE_NAME,
    +        ))?;
    +        for (anchor, txid) in &self.anchors {
    +            let anchor_block = anchor.anchor_block();
    +            statement.execute(named_params! {
    +                ":txid": Impl(*txid),
    +                ":block_height": anchor_block.height,
    +                ":block_hash": Impl(anchor_block.hash),
    +                ":anchor": Impl(anchor.clone()),
    +            })?;
    +        }
    +
    +        Ok(())
    +    }
    +}
    +
    +impl local_chain::ChangeSet {
    +    /// Schema name for the changeset.
    +    pub const SCHEMA_NAME: &'static str = "bdk_localchain";
    +    /// Name of sqlite table that stores blocks of [`LocalChain`](local_chain::LocalChain).
    +    pub const BLOCKS_TABLE_NAME: &'static str = "bdk_blocks";
    +
    +    /// Initialize sqlite tables for persisting [`local_chain::LocalChain`].
    +    fn init_sqlite_tables(db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        let schema_v0: &[&str] = &[
    +            // blocks
    +            &format!(
    +                "CREATE TABLE {} ( \
    +                block_height INTEGER PRIMARY KEY NOT NULL, \
    +                block_hash TEXT NOT NULL \
    +                ) STRICT",
    +                Self::BLOCKS_TABLE_NAME,
    +            ),
    +        ];
    +        migrate_schema(db_tx, Self::SCHEMA_NAME, &[schema_v0])
    +    }
    +
    +    /// Construct a [`LocalChain`](local_chain::LocalChain) from sqlite database.
    +    pub fn from_sqlite(db_tx: &rusqlite::Transaction) -> rusqlite::Result<Self> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut changeset = Self::default();
    +
    +        let mut statement = db_tx.prepare(&format!(
    +            "SELECT block_height, block_hash FROM {}",
    +            Self::BLOCKS_TABLE_NAME,
    +        ))?;
    +        let row_iter = statement.query_map([], |row| {
    +            Ok((
    +                row.get::<_, u32>("block_height")?,
    +                row.get::<_, Impl<bitcoin::BlockHash>>("block_hash")?,
    +            ))
    +        })?;
    +        for row in row_iter {
    +            let (height, Impl(hash)) = row?;
    +            changeset.blocks.insert(height, Some(hash));
    +        }
    +
    +        Ok(changeset)
    +    }
    +
    +    /// Persist `changeset` to the sqlite database.
    +    pub fn persist_to_sqlite(&self, db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut replace_statement = db_tx.prepare_cached(&format!(
    +            "REPLACE INTO {}(block_height, block_hash) VALUES(:block_height, :block_hash)",
    +            Self::BLOCKS_TABLE_NAME,
    +        ))?;
    +        let mut delete_statement = db_tx.prepare_cached(&format!(
    +            "DELETE FROM {} WHERE block_height=:block_height",
    +            Self::BLOCKS_TABLE_NAME,
    +        ))?;
    +        for (&height, &hash) in &self.blocks {
    +            match hash {
    +                Some(hash) => replace_statement.execute(named_params! {
    +                    ":block_height": height,
    +                    ":block_hash": Impl(hash),
    +                })?,
    +                None => delete_statement.execute(named_params! {
    +                    ":block_height": height,
    +                })?,
    +            };
    +        }
    +
    +        Ok(())
    +    }
    +}
    +
    +#[cfg(feature = "miniscript")]
    +impl keychain_txout::ChangeSet {
    +    /// Schema name for the changeset.
    +    pub const SCHEMA_NAME: &'static str = "bdk_keychaintxout";
    +    /// Name for table that stores last revealed indices per descriptor id.
    +    pub const LAST_REVEALED_TABLE_NAME: &'static str = "bdk_descriptor_last_revealed";
    +
    +    /// Initialize sqlite tables for persisting
    +    /// [`KeychainTxOutIndex`](keychain_txout::KeychainTxOutIndex).
    +    fn init_sqlite_tables(db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        let schema_v0: &[&str] = &[
    +            // last revealed
    +            &format!(
    +                "CREATE TABLE {} ( \
    +                descriptor_id TEXT PRIMARY KEY NOT NULL, \
    +                last_revealed INTEGER NOT NULL \
    +                ) STRICT",
    +                Self::LAST_REVEALED_TABLE_NAME,
    +            ),
    +        ];
    +        migrate_schema(db_tx, Self::SCHEMA_NAME, &[schema_v0])
    +    }
    +
    +    /// Construct [`KeychainTxOutIndex`](keychain_txout::KeychainTxOutIndex) from sqlite database
    +    /// and given parameters.
    +    pub fn from_sqlite(db_tx: &rusqlite::Transaction) -> rusqlite::Result<Self> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut changeset = Self::default();
    +
    +        let mut statement = db_tx.prepare(&format!(
    +            "SELECT descriptor_id, last_revealed FROM {}",
    +            Self::LAST_REVEALED_TABLE_NAME,
    +        ))?;
    +        let row_iter = statement.query_map([], |row| {
    +            Ok((
    +                row.get::<_, Impl<DescriptorId>>("descriptor_id")?,
    +                row.get::<_, u32>("last_revealed")?,
    +            ))
    +        })?;
    +        for row in row_iter {
    +            let (Impl(descriptor_id), last_revealed) = row?;
    +            changeset.last_revealed.insert(descriptor_id, last_revealed);
    +        }
    +
    +        Ok(changeset)
    +    }
    +
    +    /// Persist `changeset` to the sqlite database.
    +    pub fn persist_to_sqlite(&self, db_tx: &rusqlite::Transaction) -> rusqlite::Result<()> {
    +        Self::init_sqlite_tables(db_tx)?;
    +
    +        let mut statement = db_tx.prepare_cached(&format!(
    +            "REPLACE INTO {}(descriptor_id, last_revealed) VALUES(:descriptor_id, :last_revealed)",
    +            Self::LAST_REVEALED_TABLE_NAME,
    +        ))?;
    +        for (&descriptor_id, &last_revealed) in &self.last_revealed {
    +            statement.execute(named_params! {
    +                ":descriptor_id": Impl(descriptor_id),
    +                ":last_revealed": last_revealed,
    +            })?;
    +        }
    +
    +        Ok(())
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html index 622331f611..2848713117 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html @@ -37,19 +37,19 @@ 37 38 39 -40 -41
    //! HWI Signer
     //!
     //! This crate contains HWISigner, an implementation of a [`TransactionSigner`] to be
     //! used with hardware wallets.
     //! ```no_run
     //! # use bdk_wallet::bitcoin::Network;
    +//! # use bdk_wallet::descriptor::Descriptor;
     //! # use bdk_wallet::signer::SignerOrdering;
     //! # use bdk_hwi::HWISigner;
     //! # use bdk_wallet::{KeychainKind, SignOptions, Wallet};
     //! # use hwi::HWIClient;
     //! # use std::sync::Arc;
    +//! # use std::str::FromStr;
     //! #
     //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
     //! let mut devices = HWIClient::enumerate()?;
    @@ -59,11 +59,7 @@
     //! let first_device = devices.remove(0)?;
     //! let custom_signer = HWISigner::from_device(&first_device, Network::Testnet.into())?;
     //!
    -//! # let mut wallet = Wallet::new(
    -//! #     "",
    -//! #     "",
    -//! #     Network::Testnet,
    -//! # )?;
    +//! # let mut wallet = Wallet::create("", "").network(Network::Testnet).create_wallet_no_persist()?;
     //! #
     //! // Adding the hardware signer to the BDK wallet
     //! wallet.add_signer(
    @@ -76,7 +72,7 @@
     //! # }
     //! ```
     //!
    -//! [`TransactionSigner`]: bdk_wallet::wallet::signer::TransactionSigner
    +//! [`TransactionSigner`]: bdk_wallet::signer::TransactionSigner
     
     mod signer;
     pub use signer::*;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html
    index 47a166bc75..09b79fa0aa 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html
    @@ -177,7 +177,7 @@
     //             Arc::new(custom_signer),
     //         );
     //
    -//         let addr = wallet.get_address(bdk_wallet::wallet::AddressIndex::LastUnused);
    +//         let addr = wallet.get_address(bdk_wallet::AddressIndex::LastUnused);
     //         let mut builder = wallet.build_tx();
     //         builder.drain_to(addr.script_pubkey()).drain_wallet();
     //         let (mut psbt, _) = builder.finish().unwrap();
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html
    deleted file mode 100644
    index 3a4bc2ad3a..0000000000
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html
    +++ /dev/null
    @@ -1,69 +0,0 @@
    -lib.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
    -
    #![doc = include_str!("../README.md")]
    -// only enables the `doc_cfg` feature when the `docsrs` configuration attribute is defined
    -#![cfg_attr(docsrs, feature(doc_cfg))]
    -
    -mod schema;
    -mod store;
    -
    -use bdk_chain::bitcoin::Network;
    -pub use rusqlite;
    -pub use store::Store;
    -
    -/// Error that occurs while reading or writing change sets with the SQLite database.
    -#[derive(Debug)]
    -pub enum Error {
    -    /// Invalid network, cannot change the one already stored in the database.
    -    Network { expected: Network, given: Network },
    -    /// SQLite error.
    -    Sqlite(rusqlite::Error),
    -}
    -
    -impl core::fmt::Display for Error {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    -        match self {
    -            Self::Network { expected, given } => write!(
    -                f,
    -                "network error trying to read or write change set, expected {}, given {}",
    -                expected, given
    -            ),
    -            Self::Sqlite(e) => write!(f, "sqlite error reading or writing changeset: {}", e),
    -        }
    -    }
    -}
    -
    -impl std::error::Error for Error {}
    -
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html deleted file mode 100644 index 9424d4ce58..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html +++ /dev/null @@ -1,193 +0,0 @@ -schema.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
    -
    use crate::Store;
    -use rusqlite::{named_params, Connection, Error};
    -
    -const SCHEMA_0: &str = include_str!("../schema/schema_0.sql");
    -const MIGRATIONS: &[&str] = &[SCHEMA_0];
    -
    -/// Schema migration related functions.
    -impl<K, A> Store<K, A> {
    -    /// Migrate sqlite db schema to latest version.
    -    pub(crate) fn migrate(conn: &mut Connection) -> Result<(), Error> {
    -        let stmts = &MIGRATIONS
    -            .iter()
    -            .flat_map(|stmt| {
    -                // remove comment lines
    -                let s = stmt
    -                    .split('\n')
    -                    .filter(|l| !l.starts_with("--") && !l.is_empty())
    -                    .collect::<Vec<_>>()
    -                    .join(" ");
    -                // split into statements
    -                s.split(';')
    -                    // remove extra spaces
    -                    .map(|s| {
    -                        s.trim()
    -                            .split(' ')
    -                            .filter(|s| !s.is_empty())
    -                            .collect::<Vec<_>>()
    -                            .join(" ")
    -                    })
    -                    .collect::<Vec<_>>()
    -            })
    -            // remove empty statements
    -            .filter(|s| !s.is_empty())
    -            .collect::<Vec<String>>();
    -
    -        let version = Self::get_schema_version(conn)?;
    -        let stmts = &stmts[(version as usize)..];
    -
    -        // begin transaction, all migration statements and new schema version commit or rollback
    -        let tx = conn.transaction()?;
    -
    -        // execute every statement and return `Some` new schema version
    -        // if execution fails, return `Error::Rusqlite`
    -        // if no statements executed returns `None`
    -        let new_version = stmts
    -            .iter()
    -            .enumerate()
    -            .map(|version_stmt| {
    -                tx.execute(version_stmt.1.as_str(), [])
    -                    // map result value to next migration version
    -                    .map(|_| version_stmt.0 as i32 + version + 1)
    -            })
    -            .last()
    -            .transpose()?;
    -
    -        // if `Some` new statement version, set new schema version
    -        if let Some(version) = new_version {
    -            Self::set_schema_version(&tx, version)?;
    -        }
    -
    -        // commit transaction
    -        tx.commit()?;
    -        Ok(())
    -    }
    -
    -    fn get_schema_version(conn: &Connection) -> rusqlite::Result<i32> {
    -        let statement = conn.prepare_cached("SELECT version FROM version");
    -        match statement {
    -            Err(Error::SqliteFailure(e, Some(msg))) => {
    -                if msg == "no such table: version" {
    -                    Ok(0)
    -                } else {
    -                    Err(Error::SqliteFailure(e, Some(msg)))
    -                }
    -            }
    -            Ok(mut stmt) => {
    -                let mut rows = stmt.query([])?;
    -                match rows.next()? {
    -                    Some(row) => {
    -                        let version: i32 = row.get(0)?;
    -                        Ok(version)
    -                    }
    -                    None => Ok(0),
    -                }
    -            }
    -            _ => Ok(0),
    -        }
    -    }
    -
    -    fn set_schema_version(conn: &Connection, version: i32) -> rusqlite::Result<usize> {
    -        conn.execute(
    -            "UPDATE version SET version=:version",
    -            named_params! {":version": version},
    -        )
    -    }
    -}
    -
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html deleted file mode 100644 index 6b6299f912..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html +++ /dev/null @@ -1,1469 +0,0 @@ -store.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
    -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
    -
    use bdk_chain::bitcoin::consensus::{deserialize, serialize};
    -use bdk_chain::bitcoin::hashes::Hash;
    -use bdk_chain::bitcoin::{Amount, Network, OutPoint, ScriptBuf, Transaction, TxOut};
    -use bdk_chain::bitcoin::{BlockHash, Txid};
    -use bdk_chain::miniscript::descriptor::{Descriptor, DescriptorPublicKey};
    -use rusqlite::{named_params, Connection};
    -use serde::{Deserialize, Serialize};
    -use std::collections::{BTreeMap, BTreeSet};
    -use std::fmt::Debug;
    -use std::marker::PhantomData;
    -use std::str::FromStr;
    -use std::sync::{Arc, Mutex};
    -
    -use crate::Error;
    -use bdk_chain::CombinedChangeSet;
    -use bdk_chain::{
    -    indexed_tx_graph, indexer::keychain_txout, local_chain, tx_graph, Anchor, DescriptorExt,
    -    DescriptorId, Merge,
    -};
    -
    -/// Persists data in to a relational schema based [SQLite] database file.
    -///
    -/// The changesets loaded or stored represent changes to keychain and blockchain data.
    -///
    -/// [SQLite]: https://www.sqlite.org/index.html
    -pub struct Store<K, A> {
    -    // A rusqlite connection to the SQLite database. Uses a Mutex for thread safety.
    -    conn: Mutex<Connection>,
    -    keychain_marker: PhantomData<K>,
    -    anchor_marker: PhantomData<A>,
    -}
    -
    -impl<K, A> Debug for Store<K, A> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    -        Debug::fmt(&self.conn, f)
    -    }
    -}
    -
    -impl<K, A> Store<K, A>
    -where
    -    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    -    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    -{
    -    /// Creates a new store from a [`Connection`].
    -    pub fn new(mut conn: Connection) -> Result<Self, rusqlite::Error> {
    -        Self::migrate(&mut conn)?;
    -
    -        Ok(Self {
    -            conn: Mutex::new(conn),
    -            keychain_marker: Default::default(),
    -            anchor_marker: Default::default(),
    -        })
    -    }
    -
    -    pub(crate) fn db_transaction(&mut self) -> Result<rusqlite::Transaction, Error> {
    -        let connection = self.conn.get_mut().expect("unlocked connection mutex");
    -        connection.transaction().map_err(Error::Sqlite)
    -    }
    -}
    -
    -/// Network table related functions.
    -impl<K, A> Store<K, A> {
    -    /// Insert [`Network`] for which all other tables data is valid.
    -    ///
    -    /// Error if trying to insert different network value.
    -    fn insert_network(
    -        current_network: &Option<Network>,
    -        db_transaction: &rusqlite::Transaction,
    -        network_changeset: &Option<Network>,
    -    ) -> Result<(), Error> {
    -        if let Some(network) = network_changeset {
    -            match current_network {
    -                // if no network change do nothing
    -                Some(current_network) if current_network == network => Ok(()),
    -                // if new network not the same as current, error
    -                Some(current_network) => Err(Error::Network {
    -                    expected: *current_network,
    -                    given: *network,
    -                }),
    -                // insert network if none exists
    -                None => {
    -                    let insert_network_stmt = &mut db_transaction
    -                        .prepare_cached("INSERT INTO network (name) VALUES (:name)")
    -                        .expect("insert network statement");
    -                    let name = network.to_string();
    -                    insert_network_stmt
    -                        .execute(named_params! {":name": name })
    -                        .map_err(Error::Sqlite)?;
    -                    Ok(())
    -                }
    -            }
    -        } else {
    -            Ok(())
    -        }
    -    }
    -
    -    /// Select the valid [`Network`] for this database, or `None` if not set.
    -    fn select_network(db_transaction: &rusqlite::Transaction) -> Result<Option<Network>, Error> {
    -        let mut select_network_stmt = db_transaction
    -            .prepare_cached("SELECT name FROM network WHERE rowid = 1")
    -            .expect("select network statement");
    -
    -        let network = select_network_stmt
    -            .query_row([], |row| {
    -                let network = row.get_unwrap::<usize, String>(0);
    -                let network = Network::from_str(network.as_str()).expect("valid network");
    -                Ok(network)
    -            })
    -            .map_err(Error::Sqlite);
    -        match network {
    -            Ok(network) => Ok(Some(network)),
    -            Err(Error::Sqlite(rusqlite::Error::QueryReturnedNoRows)) => Ok(None),
    -            Err(e) => Err(e),
    -        }
    -    }
    -}
    -
    -/// Block table related functions.
    -impl<K, A> Store<K, A> {
    -    /// Insert or delete local chain blocks.
    -    ///
    -    /// Error if trying to insert existing block hash.
    -    fn insert_or_delete_blocks(
    -        db_transaction: &rusqlite::Transaction,
    -        chain_changeset: &local_chain::ChangeSet,
    -    ) -> Result<(), Error> {
    -        for (height, hash) in chain_changeset.iter() {
    -            match hash {
    -                // add new hash at height
    -                Some(hash) => {
    -                    let insert_block_stmt = &mut db_transaction
    -                        .prepare_cached("INSERT INTO block (hash, height) VALUES (:hash, :height)")
    -                        .expect("insert block statement");
    -                    let hash = hash.to_string();
    -                    insert_block_stmt
    -                        .execute(named_params! {":hash": hash, ":height": height })
    -                        .map_err(Error::Sqlite)?;
    -                }
    -                // delete block at height
    -                None => {
    -                    let delete_block_stmt = &mut db_transaction
    -                        .prepare_cached("DELETE FROM block WHERE height IS :height")
    -                        .expect("delete block statement");
    -                    delete_block_stmt
    -                        .execute(named_params! {":height": height })
    -                        .map_err(Error::Sqlite)?;
    -                }
    -            }
    -        }
    -
    -        Ok(())
    -    }
    -
    -    /// Select all blocks.
    -    fn select_blocks(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeMap<u32, Option<BlockHash>>, Error> {
    -        let mut select_blocks_stmt = db_transaction
    -            .prepare_cached("SELECT height, hash FROM block")
    -            .expect("select blocks statement");
    -
    -        let blocks = select_blocks_stmt
    -            .query_map([], |row| {
    -                let height = row.get_unwrap::<usize, u32>(0);
    -                let hash = row.get_unwrap::<usize, String>(1);
    -                let hash = Some(BlockHash::from_str(hash.as_str()).expect("block hash"));
    -                Ok((height, hash))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        blocks
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -}
    -
    -/// Keychain table related functions.
    -///
    -/// The keychain objects are stored as [`JSONB`] data.
    -/// [`JSONB`]: https://sqlite.org/json1.html#jsonb
    -impl<K, A> Store<K, A>
    -where
    -    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    -    A: Anchor + Send,
    -{
    -    /// Insert keychain with descriptor and last active index.
    -    ///
    -    /// If keychain exists only update last active index.
    -    fn insert_keychains(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        let keychain_changeset = &tx_graph_changeset.indexer;
    -        for (keychain, descriptor) in keychain_changeset.keychains_added.iter() {
    -            let insert_keychain_stmt = &mut db_transaction
    -                .prepare_cached("INSERT INTO keychain (keychain, descriptor, descriptor_id) VALUES (jsonb(:keychain), :descriptor, :descriptor_id)")
    -                .expect("insert keychain statement");
    -            let keychain_json = serde_json::to_string(keychain).expect("keychain json");
    -            let descriptor_id = descriptor.descriptor_id().to_byte_array();
    -            let descriptor = descriptor.to_string();
    -            insert_keychain_stmt.execute(named_params! {":keychain": keychain_json, ":descriptor": descriptor, ":descriptor_id": descriptor_id })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -
    -    /// Update descriptor last revealed index.
    -    fn update_last_revealed(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        let keychain_changeset = &tx_graph_changeset.indexer;
    -        for (descriptor_id, last_revealed) in keychain_changeset.last_revealed.iter() {
    -            let update_last_revealed_stmt = &mut db_transaction
    -                .prepare_cached(
    -                    "UPDATE keychain SET last_revealed = :last_revealed
    -                              WHERE descriptor_id = :descriptor_id",
    -                )
    -                .expect("update last revealed statement");
    -            let descriptor_id = descriptor_id.to_byte_array();
    -            update_last_revealed_stmt.execute(named_params! {":descriptor_id": descriptor_id, ":last_revealed": * last_revealed })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -
    -    /// Select keychains added.
    -    fn select_keychains(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeMap<K, Descriptor<DescriptorPublicKey>>, Error> {
    -        let mut select_keychains_added_stmt = db_transaction
    -            .prepare_cached("SELECT json(keychain), descriptor FROM keychain")
    -            .expect("select keychains statement");
    -
    -        let keychains = select_keychains_added_stmt
    -            .query_map([], |row| {
    -                let keychain = row.get_unwrap::<usize, String>(0);
    -                let keychain = serde_json::from_str::<K>(keychain.as_str()).expect("keychain");
    -                let descriptor = row.get_unwrap::<usize, String>(1);
    -                let descriptor = Descriptor::from_str(descriptor.as_str()).expect("descriptor");
    -                Ok((keychain, descriptor))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        keychains
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -
    -    /// Select descriptor last revealed indexes.
    -    fn select_last_revealed(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeMap<DescriptorId, u32>, Error> {
    -        let mut select_last_revealed_stmt = db_transaction
    -            .prepare_cached(
    -                "SELECT descriptor, last_revealed FROM keychain WHERE last_revealed IS NOT NULL",
    -            )
    -            .expect("select last revealed statement");
    -
    -        let last_revealed = select_last_revealed_stmt
    -            .query_map([], |row| {
    -                let descriptor = row.get_unwrap::<usize, String>(0);
    -                let descriptor = Descriptor::from_str(descriptor.as_str()).expect("descriptor");
    -                let descriptor_id = descriptor.descriptor_id();
    -                let last_revealed = row.get_unwrap::<usize, u32>(1);
    -                Ok((descriptor_id, last_revealed))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        last_revealed
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -}
    -
    -/// Tx (transaction) and txout (transaction output) table related functions.
    -impl<K, A> Store<K, A> {
    -    /// Insert transactions.
    -    ///
    -    /// Error if trying to insert existing txid.
    -    fn insert_txs(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        for tx in tx_graph_changeset.graph.txs.iter() {
    -            let insert_tx_stmt = &mut db_transaction
    -                .prepare_cached("INSERT INTO tx (txid, whole_tx) VALUES (:txid, :whole_tx) ON CONFLICT (txid) DO UPDATE SET whole_tx = :whole_tx WHERE txid = :txid")
    -                .expect("insert or update tx whole_tx statement");
    -            let txid = tx.compute_txid().to_string();
    -            let whole_tx = serialize(&tx);
    -            insert_tx_stmt
    -                .execute(named_params! {":txid": txid, ":whole_tx": whole_tx })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -
    -    /// Select all transactions.
    -    fn select_txs(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeSet<Arc<Transaction>>, Error> {
    -        let mut select_tx_stmt = db_transaction
    -            .prepare_cached("SELECT whole_tx FROM tx WHERE whole_tx IS NOT NULL")
    -            .expect("select tx statement");
    -
    -        let txs = select_tx_stmt
    -            .query_map([], |row| {
    -                let whole_tx = row.get_unwrap::<usize, Vec<u8>>(0);
    -                let whole_tx: Transaction = deserialize(&whole_tx).expect("transaction");
    -                Ok(Arc::new(whole_tx))
    -            })
    -            .map_err(Error::Sqlite)?;
    -
    -        txs.into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -
    -    /// Select all transactions with last_seen values.
    -    fn select_last_seen(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeMap<Txid, u64>, Error> {
    -        // load tx last_seen
    -        let mut select_last_seen_stmt = db_transaction
    -            .prepare_cached("SELECT txid, last_seen FROM tx WHERE last_seen IS NOT NULL")
    -            .expect("select tx last seen statement");
    -
    -        let last_seen = select_last_seen_stmt
    -            .query_map([], |row| {
    -                let txid = row.get_unwrap::<usize, String>(0);
    -                let txid = Txid::from_str(&txid).expect("txid");
    -                let last_seen = row.get_unwrap::<usize, u64>(1);
    -                Ok((txid, last_seen))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        last_seen
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -
    -    /// Insert txouts.
    -    ///
    -    /// Error if trying to insert existing outpoint.
    -    fn insert_txouts(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        for txout in tx_graph_changeset.graph.txouts.iter() {
    -            let insert_txout_stmt = &mut db_transaction
    -                .prepare_cached("INSERT INTO txout (txid, vout, value, script) VALUES (:txid, :vout, :value, :script)")
    -                .expect("insert txout statement");
    -            let txid = txout.0.txid.to_string();
    -            let vout = txout.0.vout;
    -            let value = txout.1.value.to_sat();
    -            let script = txout.1.script_pubkey.as_bytes();
    -            insert_txout_stmt.execute(named_params! {":txid": txid, ":vout": vout, ":value": value, ":script": script })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -
    -    /// Select all transaction outputs.
    -    fn select_txouts(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeMap<OutPoint, TxOut>, Error> {
    -        // load tx outs
    -        let mut select_txout_stmt = db_transaction
    -            .prepare_cached("SELECT txid, vout, value, script FROM txout")
    -            .expect("select txout statement");
    -
    -        let txouts = select_txout_stmt
    -            .query_map([], |row| {
    -                let txid = row.get_unwrap::<usize, String>(0);
    -                let txid = Txid::from_str(&txid).expect("txid");
    -                let vout = row.get_unwrap::<usize, u32>(1);
    -                let outpoint = OutPoint::new(txid, vout);
    -                let value = row.get_unwrap::<usize, u64>(2);
    -                let script_pubkey = row.get_unwrap::<usize, Vec<u8>>(3);
    -                let script_pubkey = ScriptBuf::from_bytes(script_pubkey);
    -                let txout = TxOut {
    -                    value: Amount::from_sat(value),
    -                    script_pubkey,
    -                };
    -                Ok((outpoint, txout))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        txouts
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -
    -    /// Update transaction last seen times.
    -    fn update_last_seen(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        for tx_last_seen in tx_graph_changeset.graph.last_seen.iter() {
    -            let insert_or_update_tx_stmt = &mut db_transaction
    -                .prepare_cached("INSERT INTO tx (txid, last_seen) VALUES (:txid, :last_seen) ON CONFLICT (txid) DO UPDATE SET last_seen = :last_seen WHERE txid = :txid")
    -                .expect("insert or update tx last_seen statement");
    -            let txid = tx_last_seen.0.to_string();
    -            let last_seen = *tx_last_seen.1;
    -            insert_or_update_tx_stmt
    -                .execute(named_params! {":txid": txid, ":last_seen": last_seen })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -}
    -
    -/// Anchor table related functions.
    -impl<K, A> Store<K, A>
    -where
    -    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    -    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    -{
    -    /// Insert anchors.
    -    fn insert_anchors(
    -        db_transaction: &rusqlite::Transaction,
    -        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>>,
    -    ) -> Result<(), Error> {
    -        // serde_json::to_string
    -        for anchor in tx_graph_changeset.graph.anchors.iter() {
    -            let insert_anchor_stmt = &mut db_transaction
    -                .prepare_cached("INSERT INTO anchor_tx (block_hash, anchor, txid) VALUES (:block_hash, jsonb(:anchor), :txid)")
    -                .expect("insert anchor statement");
    -            let block_hash = anchor.0.anchor_block().hash.to_string();
    -            let anchor_json = serde_json::to_string(&anchor.0).expect("anchor json");
    -            let txid = anchor.1.to_string();
    -            insert_anchor_stmt.execute(named_params! {":block_hash": block_hash, ":anchor": anchor_json, ":txid": txid })
    -                .map_err(Error::Sqlite)?;
    -        }
    -        Ok(())
    -    }
    -
    -    /// Select all anchors.
    -    fn select_anchors(
    -        db_transaction: &rusqlite::Transaction,
    -    ) -> Result<BTreeSet<(A, Txid)>, Error> {
    -        // serde_json::from_str
    -        let mut select_anchor_stmt = db_transaction
    -            .prepare_cached("SELECT block_hash, json(anchor), txid FROM anchor_tx")
    -            .expect("select anchor statement");
    -        let anchors = select_anchor_stmt
    -            .query_map([], |row| {
    -                let hash = row.get_unwrap::<usize, String>(0);
    -                let hash = BlockHash::from_str(hash.as_str()).expect("block hash");
    -                let anchor = row.get_unwrap::<usize, String>(1);
    -                let anchor: A = serde_json::from_str(anchor.as_str()).expect("anchor");
    -                // double check anchor blob block hash matches
    -                assert_eq!(hash, anchor.anchor_block().hash);
    -                let txid = row.get_unwrap::<usize, String>(2);
    -                let txid = Txid::from_str(&txid).expect("txid");
    -                Ok((anchor, txid))
    -            })
    -            .map_err(Error::Sqlite)?;
    -        anchors
    -            .into_iter()
    -            .map(|row| row.map_err(Error::Sqlite))
    -            .collect()
    -    }
    -}
    -
    -/// Functions to read and write all [`CombinedChangeSet`] data.
    -impl<K, A> Store<K, A>
    -where
    -    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    -    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    -{
    -    /// Write the given `changeset` atomically.
    -    pub fn write(&mut self, changeset: &CombinedChangeSet<K, A>) -> Result<(), Error> {
    -        // no need to write anything if changeset is empty
    -        if changeset.is_empty() {
    -            return Ok(());
    -        }
    -
    -        let db_transaction = self.db_transaction()?;
    -
    -        let network_changeset = &changeset.network;
    -        let current_network = Self::select_network(&db_transaction)?;
    -        Self::insert_network(&current_network, &db_transaction, network_changeset)?;
    -
    -        let chain_changeset = &changeset.chain;
    -        Self::insert_or_delete_blocks(&db_transaction, chain_changeset)?;
    -
    -        let tx_graph_changeset = &changeset.indexed_tx_graph;
    -        Self::insert_keychains(&db_transaction, tx_graph_changeset)?;
    -        Self::update_last_revealed(&db_transaction, tx_graph_changeset)?;
    -        Self::insert_txs(&db_transaction, tx_graph_changeset)?;
    -        Self::insert_txouts(&db_transaction, tx_graph_changeset)?;
    -        Self::insert_anchors(&db_transaction, tx_graph_changeset)?;
    -        Self::update_last_seen(&db_transaction, tx_graph_changeset)?;
    -        db_transaction.commit().map_err(Error::Sqlite)
    -    }
    -
    -    /// Read the entire database and return the aggregate [`CombinedChangeSet`].
    -    pub fn read(&mut self) -> Result<Option<CombinedChangeSet<K, A>>, Error> {
    -        let db_transaction = self.db_transaction()?;
    -
    -        let network = Self::select_network(&db_transaction)?;
    -        let chain = Self::select_blocks(&db_transaction)?;
    -        let keychains_added = Self::select_keychains(&db_transaction)?;
    -        let last_revealed = Self::select_last_revealed(&db_transaction)?;
    -        let txs = Self::select_txs(&db_transaction)?;
    -        let last_seen = Self::select_last_seen(&db_transaction)?;
    -        let txouts = Self::select_txouts(&db_transaction)?;
    -        let anchors = Self::select_anchors(&db_transaction)?;
    -
    -        let graph: tx_graph::ChangeSet<A> = tx_graph::ChangeSet {
    -            txs,
    -            txouts,
    -            anchors,
    -            last_seen,
    -        };
    -
    -        let indexer = keychain_txout::ChangeSet {
    -            keychains_added,
    -            last_revealed,
    -        };
    -
    -        let indexed_tx_graph: indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<K>> =
    -            indexed_tx_graph::ChangeSet { graph, indexer };
    -
    -        if network.is_none() && chain.is_empty() && indexed_tx_graph.is_empty() {
    -            Ok(None)
    -        } else {
    -            Ok(Some(CombinedChangeSet {
    -                chain,
    -                indexed_tx_graph,
    -                network,
    -            }))
    -        }
    -    }
    -}
    -
    -#[cfg(test)]
    -mod test {
    -    use super::*;
    -    use crate::store::Merge;
    -    use bdk_chain::bitcoin::consensus::encode::deserialize;
    -    use bdk_chain::bitcoin::constants::genesis_block;
    -    use bdk_chain::bitcoin::hashes::hex::FromHex;
    -    use bdk_chain::bitcoin::transaction::Transaction;
    -    use bdk_chain::bitcoin::Network::Testnet;
    -    use bdk_chain::bitcoin::{secp256k1, BlockHash, OutPoint};
    -    use bdk_chain::miniscript::Descriptor;
    -    use bdk_chain::CombinedChangeSet;
    -    use bdk_chain::{indexed_tx_graph, tx_graph, BlockId, ConfirmationBlockTime, DescriptorExt};
    -    use std::str::FromStr;
    -    use std::sync::Arc;
    -
    -    #[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Hash, Debug, Serialize, Deserialize)]
    -    enum Keychain {
    -        External { account: u32, name: String },
    -        Internal { account: u32, name: String },
    -    }
    -
    -    #[test]
    -    fn insert_and_load_aggregate_changesets_with_confirmation_block_time_anchor() {
    -        let (test_changesets, agg_test_changesets) =
    -            create_test_changesets(&|height, time, hash| ConfirmationBlockTime {
    -                confirmation_time: time,
    -                block_id: (height, hash).into(),
    -            });
    -
    -        let conn = Connection::open_in_memory().expect("in memory connection");
    -        let mut store = Store::<Keychain, ConfirmationBlockTime>::new(conn)
    -            .expect("create new memory db store");
    -
    -        test_changesets.iter().for_each(|changeset| {
    -            store.write(changeset).expect("write changeset");
    -        });
    -
    -        let agg_changeset = store.read().expect("aggregated changeset");
    -
    -        assert_eq!(agg_changeset, Some(agg_test_changesets));
    -    }
    -
    -    #[test]
    -    fn insert_and_load_aggregate_changesets_with_blockid_anchor() {
    -        let (test_changesets, agg_test_changesets) =
    -            create_test_changesets(&|height, _time, hash| BlockId { height, hash });
    -
    -        let conn = Connection::open_in_memory().expect("in memory connection");
    -        let mut store = Store::<Keychain, BlockId>::new(conn).expect("create new memory db store");
    -
    -        test_changesets.iter().for_each(|changeset| {
    -            store.write(changeset).expect("write changeset");
    -        });
    -
    -        let agg_changeset = store.read().expect("aggregated changeset");
    -
    -        assert_eq!(agg_changeset, Some(agg_test_changesets));
    -    }
    -
    -    fn create_test_changesets<A: Anchor + Copy>(
    -        anchor_fn: &dyn Fn(u32, u64, BlockHash) -> A,
    -    ) -> (
    -        Vec<CombinedChangeSet<Keychain, A>>,
    -        CombinedChangeSet<Keychain, A>,
    -    ) {
    -        let secp = &secp256k1::Secp256k1::signing_only();
    -
    -        let network_changeset = Some(Testnet);
    -
    -        let block_hash_0: BlockHash = genesis_block(Testnet).block_hash();
    -        let block_hash_1 =
    -            BlockHash::from_str("00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206")
    -                .unwrap();
    -        let block_hash_2 =
    -            BlockHash::from_str("000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820")
    -                .unwrap();
    -
    -        let block_changeset = [
    -            (0, Some(block_hash_0)),
    -            (1, Some(block_hash_1)),
    -            (2, Some(block_hash_2)),
    -        ]
    -        .into();
    -
    -        let ext_keychain = Keychain::External {
    -            account: 0,
    -            name: "ext test".to_string(),
    -        };
    -        let (ext_desc, _ext_keymap) = Descriptor::parse_descriptor(secp, "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*)").unwrap();
    -        let ext_desc_id = ext_desc.descriptor_id();
    -        let int_keychain = Keychain::Internal {
    -            account: 0,
    -            name: "int test".to_string(),
    -        };
    -        let (int_desc, _int_keymap) = Descriptor::parse_descriptor(secp, "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/1/*)").unwrap();
    -        let int_desc_id = int_desc.descriptor_id();
    -
    -        let tx0_hex = Vec::<u8>::from_hex("01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000").unwrap();
    -        let tx0: Arc<Transaction> = Arc::new(deserialize(tx0_hex.as_slice()).unwrap());
    -        let tx1_hex = Vec::<u8>::from_hex("010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025151feffffff0200f2052a010000001600149243f727dd5343293eb83174324019ec16c2630f0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402205e423a8754336ca99dbe16509b877ef1bf98d008836c725005b3c787c41ebe46022047246e4467ad7cc7f1ad98662afcaf14c115e0095a227c7b05c5182591c23e7e01000120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap();
    -        let tx1: Arc<Transaction> = Arc::new(deserialize(tx1_hex.as_slice()).unwrap());
    -        let tx2_hex = Vec::<u8>::from_hex("01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000").unwrap();
    -        let tx2: Arc<Transaction> = Arc::new(deserialize(tx2_hex.as_slice()).unwrap());
    -
    -        let outpoint0_0 = OutPoint::new(tx0.compute_txid(), 0);
    -        let txout0_0 = tx0.output.first().unwrap().clone();
    -        let outpoint1_0 = OutPoint::new(tx1.compute_txid(), 0);
    -        let txout1_0 = tx1.output.first().unwrap().clone();
    -
    -        let anchor1 = anchor_fn(1, 1296667328, block_hash_1);
    -        let anchor2 = anchor_fn(2, 1296688946, block_hash_2);
    -
    -        let tx_graph_changeset = tx_graph::ChangeSet::<A> {
    -            txs: [tx0.clone(), tx1.clone()].into(),
    -            txouts: [(outpoint0_0, txout0_0), (outpoint1_0, txout1_0)].into(),
    -            anchors: [(anchor1, tx0.compute_txid()), (anchor1, tx1.compute_txid())].into(),
    -            last_seen: [
    -                (tx0.compute_txid(), 1598918400),
    -                (tx1.compute_txid(), 1598919121),
    -                (tx2.compute_txid(), 1608919121),
    -            ]
    -            .into(),
    -        };
    -
    -        let keychain_changeset = keychain_txout::ChangeSet {
    -            keychains_added: [(ext_keychain, ext_desc), (int_keychain, int_desc)].into(),
    -            last_revealed: [(ext_desc_id, 124), (int_desc_id, 421)].into(),
    -        };
    -
    -        let graph_changeset: indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<Keychain>> =
    -            indexed_tx_graph::ChangeSet {
    -                graph: tx_graph_changeset,
    -                indexer: keychain_changeset,
    -            };
    -
    -        // test changesets to write to db
    -        let mut changesets = Vec::new();
    -
    -        changesets.push(CombinedChangeSet {
    -            chain: block_changeset,
    -            indexed_tx_graph: graph_changeset,
    -            network: network_changeset,
    -        });
    -
    -        // create changeset that sets the whole tx2 and updates it's lastseen where before there was only the txid and last_seen
    -        let tx_graph_changeset2 = tx_graph::ChangeSet::<A> {
    -            txs: [tx2.clone()].into(),
    -            txouts: BTreeMap::default(),
    -            anchors: BTreeSet::default(),
    -            last_seen: [(tx2.compute_txid(), 1708919121)].into(),
    -        };
    -
    -        let graph_changeset2: indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<Keychain>> =
    -            indexed_tx_graph::ChangeSet {
    -                graph: tx_graph_changeset2,
    -                indexer: keychain_txout::ChangeSet::default(),
    -            };
    -
    -        changesets.push(CombinedChangeSet {
    -            chain: local_chain::ChangeSet::default(),
    -            indexed_tx_graph: graph_changeset2,
    -            network: None,
    -        });
    -
    -        // create changeset that adds a new anchor2 for tx0 and tx1
    -        let tx_graph_changeset3 = tx_graph::ChangeSet::<A> {
    -            txs: BTreeSet::default(),
    -            txouts: BTreeMap::default(),
    -            anchors: [(anchor2, tx0.compute_txid()), (anchor2, tx1.compute_txid())].into(),
    -            last_seen: BTreeMap::default(),
    -        };
    -
    -        let graph_changeset3: indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<Keychain>> =
    -            indexed_tx_graph::ChangeSet {
    -                graph: tx_graph_changeset3,
    -                indexer: keychain_txout::ChangeSet::default(),
    -            };
    -
    -        changesets.push(CombinedChangeSet {
    -            chain: local_chain::ChangeSet::default(),
    -            indexed_tx_graph: graph_changeset3,
    -            network: None,
    -        });
    -
    -        // aggregated test changesets
    -        let agg_test_changesets =
    -            changesets
    -                .iter()
    -                .fold(CombinedChangeSet::<Keychain, A>::default(), |mut i, cs| {
    -                    i.merge(cs.clone());
    -                    i
    -                });
    -
    -        (changesets, agg_test_changesets)
    -    }
    -}
    -
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html index a91b6a2cd5..ddb9b3dddb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html @@ -140,7 +140,7 @@ use core::fmt; /// Errors related to the parsing and usage of descriptors -#[derive(Debug)] +#[derive(Debug, PartialEq)] pub enum Error { /// Invalid HD Key path, such as having a wildcard but a length != 1 InvalidHdKeyPath, diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html index 3c6993704a..82782df080 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html @@ -898,6 +898,22 @@ 898 899 900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1012,6 +1028,16 @@
         }
     }
     
    +impl IntoWalletDescriptor for String {
    +    fn into_wallet_descriptor(
    +        self,
    +        secp: &SecpCtx,
    +        network: Network,
    +    ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
    +        self.as_str().into_wallet_descriptor(secp, network)
    +    }
    +}
    +
     impl IntoWalletDescriptor for ExtendedDescriptor {
         fn into_wallet_descriptor(
             self,
    @@ -1181,15 +1207,10 @@
         }
     }
     
    -/// Wrapper for `IntoWalletDescriptor` that performs additional checks on the keys contained in the
    -/// descriptor
    -pub(crate) fn into_wallet_descriptor_checked<T: IntoWalletDescriptor>(
    -    inner: T,
    -    secp: &SecpCtx,
    -    network: Network,
    -) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
    -    let (descriptor, keymap) = inner.into_wallet_descriptor(secp, network)?;
    -
    +/// Extra checks for [`ExtendedDescriptor`].
    +pub(crate) fn check_wallet_descriptor(
    +    descriptor: &Descriptor<DescriptorPublicKey>,
    +) -> Result<(), DescriptorError> {
         // Ensure the keys don't contain any hardened derivation steps or hardened wildcards
         let descriptor_contains_hardened_steps = descriptor.for_any_key(|k| {
             if let DescriptorPublicKey::XPub(DescriptorXKey {
    @@ -1216,7 +1237,7 @@
         // issues
         descriptor.sanity_check()?;
     
    -    Ok((descriptor, keymap))
    +    Ok(())
     }
     
     #[doc(hidden)]
    @@ -1755,22 +1776,31 @@
         }
     
         #[test]
    -    fn test_into_wallet_descriptor_checked() {
    +    fn test_check_wallet_descriptor() {
             let secp = Secp256k1::new();
     
             let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0'/1/2/*)";
    -        let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
    +        let (descriptor, _) = descriptor
    +            .into_wallet_descriptor(&secp, Network::Testnet)
    +            .expect("must parse");
    +        let result = check_wallet_descriptor(&descriptor);
     
             assert_matches!(result, Err(DescriptorError::HardenedDerivationXpub));
     
             let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/<0;1>/*)";
    -        let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
    +        let (descriptor, _) = descriptor
    +            .into_wallet_descriptor(&secp, Network::Testnet)
    +            .expect("must parse");
    +        let result = check_wallet_descriptor(&descriptor);
     
             assert_matches!(result, Err(DescriptorError::MultiPath));
     
             // repeated pubkeys
             let descriptor = "wsh(multi(2,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*))";
    -        let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
    +        let (descriptor, _) = descriptor
    +            .into_wallet_descriptor(&secp, Network::Testnet)
    +            .expect("must parse");
    +        let result = check_wallet_descriptor(&descriptor);
     
             assert!(result.is_err());
         }
    @@ -1782,8 +1812,10 @@
             let secp = Secp256k1::new();
     
             let descriptor = "sh(wsh(sortedmulti(3,tpubDEsqS36T4DVsKJd9UH8pAKzrkGBYPLEt9jZMwpKtzh1G6mgYehfHt9WCgk7MJG5QGSFWf176KaBNoXbcuFcuadAFKxDpUdMDKGBha7bY3QM/0/*,tpubDF3cpwfs7fMvXXuoQbohXtLjNM6ehwYT287LWtmLsd4r77YLg6MZg4vTETx5MSJ2zkfigbYWu31VA2Z2Vc1cZugCYXgS7FQu6pE8V6TriEH/0/*,tpubDE1SKfcW76Tb2AASv5bQWMuScYNAdoqLHoexw13sNDXwmUhQDBbCD3QAedKGLhxMrWQdMDKENzYtnXPDRvexQPNuDrLj52wAjHhNEm8sJ4p/0/*,tpubDFLc6oXwJmhm3FGGzXkfJNTh2KitoY3WhmmQvuAjMhD8YbyWn5mAqckbxXfm2etM3p5J6JoTpSrMqRSTfMLtNW46poDaEZJ1kjd3csRSjwH/0/*,tpubDEWD9NBeWP59xXmdqSNt4VYdtTGwbpyP8WS962BuqpQeMZmX9Pur14dhXdZT5a7wR1pK6dPtZ9fP5WR493hPzemnBvkfLLYxnUjAKj1JCQV/0/*,tpubDEHyZkkwd7gZWCTgQuYQ9C4myF2hMEmyHsBCCmLssGqoqUxeT3gzohF5uEVURkf9TtmeepJgkSUmteac38FwZqirjApzNX59XSHLcwaTZCH/0/*,tpubDEqLouCekwnMUWN486kxGzD44qVgeyuqHyxUypNEiQt5RnUZNJe386TKPK99fqRV1vRkZjYAjtXGTECz98MCsdLcnkM67U6KdYRzVubeCgZ/0/*)))";
    -        let (descriptor, _) =
    -            into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet).unwrap();
    +        let (descriptor, _) = descriptor
    +            .into_wallet_descriptor(&secp, Network::Testnet)
    +            .unwrap();
    +        check_wallet_descriptor(&descriptor).expect("descriptor");
     
             let descriptor = descriptor.at_derivation_index(0).unwrap();
     
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html
    index b57aef1049..9089760aee 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html
    @@ -1926,7 +1926,7 @@
     //! ```
     //! # use std::sync::Arc;
     //! # use bdk_wallet::descriptor::*;
    -//! # use bdk_wallet::wallet::signer::*;
    +//! # use bdk_wallet::signer::*;
     //! # use bdk_wallet::bitcoin::secp256k1::Secp256k1;
     //! use bdk_wallet::descriptor::policy::BuildSatisfaction;
     //! let secp = Secp256k1::new();
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html
    index 0cf858c4c9..1ed8d40ed9 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html
    @@ -995,6 +995,27 @@
     995
     996
     997
    +998
    +999
    +1000
    +1001
    +1002
    +1003
    +1004
    +1005
    +1006
    +1007
    +1008
    +1009
    +1010
    +1011
    +1012
    +1013
    +1014
    +1015
    +1016
    +1017
    +1018
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1078,7 +1099,9 @@
     ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let key_internal =
     ///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -/// let mut wallet = Wallet::new(P2Pkh(key_external), P2Pkh(key_internal), Network::Testnet)?;
    +/// let mut wallet = Wallet::create(P2Pkh(key_external), P2Pkh(key_internal))
    +///     .network(Network::Testnet)
    +///     .create_wallet_no_persist()?;
     ///
     /// assert_eq!(
     ///     wallet
    @@ -1088,6 +1111,7 @@
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct P2Pkh<K: IntoDescriptorKey<Legacy>>(pub K);
     
     impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2Pkh<K> {
    @@ -1110,11 +1134,9 @@
     ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let key_internal =
     ///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -/// let mut wallet = Wallet::new(
    -///     P2Wpkh_P2Sh(key_external),
    -///     P2Wpkh_P2Sh(key_internal),
    -///     Network::Testnet,
    -/// )?;
    +/// let mut wallet = Wallet::create(P2Wpkh_P2Sh(key_external), P2Wpkh_P2Sh(key_internal))
    +///     .network(Network::Testnet)
    +///     .create_wallet_no_persist()?;
     ///
     /// assert_eq!(
     ///     wallet
    @@ -1125,6 +1147,7 @@
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     #[allow(non_camel_case_types)]
    +#[derive(Debug, Clone)]
     pub struct P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(pub K);
     
     impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh_P2Sh<K> {
    @@ -1139,7 +1162,7 @@
     ///
     /// ```
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet};
    +/// # use bdk_wallet::Wallet;
     /// # use bdk_wallet::KeychainKind;
     /// use bdk_wallet::template::P2Wpkh;
     ///
    @@ -1147,7 +1170,9 @@
     ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let key_internal =
     ///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -/// let mut wallet = Wallet::new(P2Wpkh(key_external), P2Wpkh(key_internal), Network::Testnet)?;
    +/// let mut wallet = Wallet::create(P2Wpkh(key_external), P2Wpkh(key_internal))
    +///     .network(Network::Testnet)
    +///     .create_wallet_no_persist()?;
     ///
     /// assert_eq!(
     ///     wallet
    @@ -1157,6 +1182,7 @@
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(pub K);
     
     impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh<K> {
    @@ -1179,7 +1205,9 @@
     ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let key_internal =
     ///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
    -/// let mut wallet = Wallet::new(P2TR(key_external), P2TR(key_internal), Network::Testnet)?;
    +/// let mut wallet = Wallet::create(P2TR(key_external), P2TR(key_internal))
    +///     .network(Network::Testnet)
    +///     .create_wallet_no_persist()?;
     ///
     /// assert_eq!(
     ///     wallet
    @@ -1189,6 +1217,7 @@
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct P2TR<K: IntoDescriptorKey<Tap>>(pub K);
     
     impl<K: IntoDescriptorKey<Tap>> DescriptorTemplate for P2TR<K> {
    @@ -1205,23 +1234,22 @@
     ///
     /// ## Example
     ///
    -/// ```
    +/// ```rust
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip44;
     ///
     /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -/// let mut wallet = Wallet::new(
    -///     Bip44(key.clone(), KeychainKind::External),
    -///     Bip44(key, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// let mut wallet = Wallet::create(Bip44(key.clone(), KeychainKind::External), Bip44(key, KeychainKind::Internal))
    +///     .network(Network::Testnet)
    +///     .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
     
     impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44<K> {
    @@ -1244,21 +1272,23 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{KeychainKind, Wallet};
     /// use bdk_wallet::template::Bip44Public;
     ///
     /// let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
     /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip44Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Bip44Public(key, fingerprint, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +///     )
    +///     .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
     
     impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K> {
    @@ -1281,20 +1311,22 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip49;
     ///
     /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip49(key.clone(), KeychainKind::External),
     ///     Bip49(key, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
     
     impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K> {
    @@ -1317,21 +1349,23 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip49Public;
     ///
     /// let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
     /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip49Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Bip49Public(key, fingerprint, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
     
     impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K> {
    @@ -1354,20 +1388,22 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip84;
     ///
     /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip84(key.clone(), KeychainKind::External),
     ///     Bip84(key, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
     
     impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84<K> {
    @@ -1390,21 +1426,23 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip84Public;
     ///
     /// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
     /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip84Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Bip84Public(key, fingerprint, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
     
     impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84Public<K> {
    @@ -1427,20 +1465,22 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip86;
     ///
     /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip86(key.clone(), KeychainKind::External),
     ///     Bip86(key, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
     
     impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K> {
    @@ -1463,21 +1503,23 @@
     /// ```
     /// # use std::str::FromStr;
     /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
    -/// # use bdk_wallet::{Wallet,  KeychainKind};
    +/// # use bdk_wallet::{Wallet, KeychainKind};
     /// use bdk_wallet::template::Bip86Public;
     ///
     /// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
     /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    -/// let mut wallet = Wallet::new(
    +/// let mut wallet = Wallet::create(
     ///     Bip86Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Bip86Public(key, fingerprint, KeychainKind::Internal),
    -///     Network::Testnet,
    -/// )?;
    +/// )
    +/// .network(Network::Testnet)
    +/// .create_wallet_no_persist()?;
     ///
     /// assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
     /// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    +#[derive(Debug, Clone)]
     pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
     
     impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<K> {
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html
    index b799f8dde8..613d018793 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html
    @@ -1962,7 +1962,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     }
     
     /// Errors thrown while working with [`keys`](crate::keys)
    -#[derive(Debug)]
    +#[derive(Debug, PartialEq)]
     pub enum KeyError {
         /// The key cannot exist in the given script context
         InvalidScriptContext,
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html
    index c8ece7262c..aec59dbe8f 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html
    @@ -45,6 +45,9 @@
     45
     46
     47
    +48
    +49
    +50
     
    #![doc = include_str!("../README.md")]
     // only enables the `doc_cfg` feature when the `docsrs` configuration attribute is defined
     #![cfg_attr(docsrs, feature(doc_cfg))]
    @@ -62,34 +65,37 @@
     #[doc(hidden)]
     #[macro_use]
     pub extern crate alloc;
    -
    +pub extern crate bdk_chain as chain;
    +#[cfg(feature = "file_store")]
    +pub extern crate bdk_file_store as file_store;
    +#[cfg(feature = "keys-bip39")]
    +pub extern crate bip39;
     pub extern crate bitcoin;
     pub extern crate miniscript;
    -extern crate serde;
    -extern crate serde_json;
    -
    -#[cfg(feature = "keys-bip39")]
    -extern crate bip39;
    +pub extern crate serde;
    +pub extern crate serde_json;
     
     pub mod descriptor;
     pub mod keys;
     pub mod psbt;
    -pub(crate) mod types;
    -pub mod wallet;
    +mod types;
    +mod wallet;
     
    +pub(crate) use bdk_chain::collections;
    +#[cfg(feature = "rusqlite")]
    +pub use bdk_chain::rusqlite;
    +#[cfg(feature = "rusqlite")]
    +pub use bdk_chain::rusqlite_impl;
     pub use descriptor::template;
     pub use descriptor::HdKeyPaths;
    +pub use signer;
    +pub use signer::SignOptions;
    +pub use tx_builder::*;
     pub use types::*;
    -pub use wallet::signer;
    -pub use wallet::signer::SignOptions;
    -pub use wallet::tx_builder::TxBuilder;
    -pub use wallet::Wallet;
    +pub use wallet::*;
     
    -/// Get the version of BDK at runtime
    +/// Get the version of [`bdk_wallet`](crate) at runtime.
     pub fn version() -> &'static str {
         env!("CARGO_PKG_VERSION", "unknown")
     }
    -
    -pub use bdk_chain as chain;
    -pub(crate) use bdk_chain::collections;
     
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/changeset.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/changeset.rs.html new file mode 100644 index 0000000000..5c0bd2d618 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/changeset.rs.html @@ -0,0 +1,421 @@ +changeset.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
    +
    use bdk_chain::{
    +    indexed_tx_graph, keychain_txout, local_chain, tx_graph, ConfirmationBlockTime, Merge,
    +};
    +use miniscript::{Descriptor, DescriptorPublicKey};
    +
    +type IndexedTxGraphChangeSet =
    +    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet>;
    +
    +/// A changeset for [`Wallet`](crate::Wallet).
    +#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
    +#[non_exhaustive]
    +pub struct ChangeSet {
    +    /// Descriptor for recipient addresses.
    +    pub descriptor: Option<Descriptor<DescriptorPublicKey>>,
    +    /// Descriptor for change addresses.
    +    pub change_descriptor: Option<Descriptor<DescriptorPublicKey>>,
    +    /// Stores the network type of the transaction data.
    +    pub network: Option<bitcoin::Network>,
    +    /// Changes to the [`LocalChain`](local_chain::LocalChain).
    +    pub local_chain: local_chain::ChangeSet,
    +    /// Changes to [`TxGraph`](tx_graph::TxGraph).
    +    pub tx_graph: tx_graph::ChangeSet<ConfirmationBlockTime>,
    +    /// Changes to [`KeychainTxOutIndex`](keychain_txout::KeychainTxOutIndex).
    +    pub indexer: keychain_txout::ChangeSet,
    +}
    +
    +impl Merge for ChangeSet {
    +    /// Merge another [`ChangeSet`] into itself.
    +    fn merge(&mut self, other: Self) {
    +        if other.descriptor.is_some() {
    +            debug_assert!(
    +                self.descriptor.is_none() || self.descriptor == other.descriptor,
    +                "descriptor must never change"
    +            );
    +            self.descriptor = other.descriptor;
    +        }
    +        if other.change_descriptor.is_some() {
    +            debug_assert!(
    +                self.change_descriptor.is_none()
    +                    || self.change_descriptor == other.change_descriptor,
    +                "change descriptor must never change"
    +            );
    +            self.change_descriptor = other.change_descriptor;
    +        }
    +        if other.network.is_some() {
    +            debug_assert!(
    +                self.network.is_none() || self.network == other.network,
    +                "network must never change"
    +            );
    +            self.network = other.network;
    +        }
    +
    +        Merge::merge(&mut self.local_chain, other.local_chain);
    +        Merge::merge(&mut self.tx_graph, other.tx_graph);
    +        Merge::merge(&mut self.indexer, other.indexer);
    +    }
    +
    +    fn is_empty(&self) -> bool {
    +        self.descriptor.is_none()
    +            && self.change_descriptor.is_none()
    +            && self.network.is_none()
    +            && self.local_chain.is_empty()
    +            && self.tx_graph.is_empty()
    +            && self.indexer.is_empty()
    +    }
    +}
    +
    +#[cfg(feature = "rusqlite")]
    +impl ChangeSet {
    +    /// Schema name for wallet.
    +    pub const WALLET_SCHEMA_NAME: &'static str = "bdk_wallet";
    +    /// Name of table to store wallet descriptors and network.
    +    pub const WALLET_TABLE_NAME: &'static str = "bdk_wallet";
    +
    +    /// Initialize sqlite tables for wallet schema & table.
    +    fn init_wallet_sqlite_tables(
    +        db_tx: &chain::rusqlite::Transaction,
    +    ) -> chain::rusqlite::Result<()> {
    +        let schema_v0: &[&str] = &[&format!(
    +            "CREATE TABLE {} ( \
    +                id INTEGER PRIMARY KEY NOT NULL CHECK (id = 0), \
    +                descriptor TEXT, \
    +                change_descriptor TEXT, \
    +                network TEXT \
    +                ) STRICT;",
    +            Self::WALLET_TABLE_NAME,
    +        )];
    +        crate::rusqlite_impl::migrate_schema(db_tx, Self::WALLET_SCHEMA_NAME, &[schema_v0])
    +    }
    +
    +    /// Recover a [`ChangeSet`] from sqlite database.
    +    pub fn from_sqlite(db_tx: &chain::rusqlite::Transaction) -> chain::rusqlite::Result<Self> {
    +        Self::init_wallet_sqlite_tables(db_tx)?;
    +        use chain::rusqlite::OptionalExtension;
    +        use chain::Impl;
    +        use miniscript::{Descriptor, DescriptorPublicKey};
    +
    +        let mut changeset = Self::default();
    +
    +        let mut wallet_statement = db_tx.prepare(&format!(
    +            "SELECT descriptor, change_descriptor, network FROM {}",
    +            Self::WALLET_TABLE_NAME,
    +        ))?;
    +        let row = wallet_statement
    +            .query_row([], |row| {
    +                Ok((
    +                    row.get::<_, Impl<Descriptor<DescriptorPublicKey>>>("descriptor")?,
    +                    row.get::<_, Impl<Descriptor<DescriptorPublicKey>>>("change_descriptor")?,
    +                    row.get::<_, Impl<bitcoin::Network>>("network")?,
    +                ))
    +            })
    +            .optional()?;
    +        if let Some((Impl(desc), Impl(change_desc), Impl(network))) = row {
    +            changeset.descriptor = Some(desc);
    +            changeset.change_descriptor = Some(change_desc);
    +            changeset.network = Some(network);
    +        }
    +
    +        changeset.local_chain = local_chain::ChangeSet::from_sqlite(db_tx)?;
    +        changeset.tx_graph = tx_graph::ChangeSet::<_>::from_sqlite(db_tx)?;
    +        changeset.indexer = keychain_txout::ChangeSet::from_sqlite(db_tx)?;
    +
    +        Ok(changeset)
    +    }
    +
    +    /// Persist [`ChangeSet`] to sqlite database.
    +    pub fn persist_to_sqlite(
    +        &self,
    +        db_tx: &chain::rusqlite::Transaction,
    +    ) -> chain::rusqlite::Result<()> {
    +        Self::init_wallet_sqlite_tables(db_tx)?;
    +        use chain::rusqlite::named_params;
    +        use chain::Impl;
    +
    +        let mut descriptor_statement = db_tx.prepare_cached(&format!(
    +            "INSERT INTO {}(id, descriptor) VALUES(:id, :descriptor) ON CONFLICT(id) DO UPDATE SET descriptor=:descriptor",
    +            Self::WALLET_TABLE_NAME,
    +        ))?;
    +        if let Some(descriptor) = &self.descriptor {
    +            descriptor_statement.execute(named_params! {
    +                ":id": 0,
    +                ":descriptor": Impl(descriptor.clone()),
    +            })?;
    +        }
    +
    +        let mut change_descriptor_statement = db_tx.prepare_cached(&format!(
    +            "INSERT INTO {}(id, change_descriptor) VALUES(:id, :change_descriptor) ON CONFLICT(id) DO UPDATE SET change_descriptor=:change_descriptor",
    +            Self::WALLET_TABLE_NAME,
    +        ))?;
    +        if let Some(change_descriptor) = &self.change_descriptor {
    +            change_descriptor_statement.execute(named_params! {
    +                ":id": 0,
    +                ":change_descriptor": Impl(change_descriptor.clone()),
    +            })?;
    +        }
    +
    +        let mut network_statement = db_tx.prepare_cached(&format!(
    +            "INSERT INTO {}(id, network) VALUES(:id, :network) ON CONFLICT(id) DO UPDATE SET network=:network",
    +            Self::WALLET_TABLE_NAME,
    +        ))?;
    +        if let Some(network) = self.network {
    +            network_statement.execute(named_params! {
    +                ":id": 0,
    +                ":network": Impl(network),
    +            })?;
    +        }
    +
    +        self.local_chain.persist_to_sqlite(db_tx)?;
    +        self.tx_graph.persist_to_sqlite(db_tx)?;
    +        self.indexer.persist_to_sqlite(db_tx)?;
    +        Ok(())
    +    }
    +}
    +
    +impl From<local_chain::ChangeSet> for ChangeSet {
    +    fn from(chain: local_chain::ChangeSet) -> Self {
    +        Self {
    +            local_chain: chain,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    +impl From<IndexedTxGraphChangeSet> for ChangeSet {
    +    fn from(indexed_tx_graph: IndexedTxGraphChangeSet) -> Self {
    +        Self {
    +            tx_graph: indexed_tx_graph.tx_graph,
    +            indexer: indexed_tx_graph.indexer,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    +impl From<tx_graph::ChangeSet<ConfirmationBlockTime>> for ChangeSet {
    +    fn from(tx_graph: tx_graph::ChangeSet<ConfirmationBlockTime>) -> Self {
    +        Self {
    +            tx_graph,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    +impl From<keychain_txout::ChangeSet> for ChangeSet {
    +    fn from(indexer: keychain_txout::ChangeSet) -> Self {
    +        Self {
    +            indexer,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html index a311c688cc..7403c6c61c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html @@ -1627,10 +1627,10 @@ //! ``` //! # use std::str::FromStr; //! # use bitcoin::*; -//! # use bdk_wallet::wallet::{self, ChangeSet, coin_selection::*, coin_selection}; -//! # use bdk_wallet::wallet::error::CreateTxError; +//! # use bdk_wallet::{self, ChangeSet, coin_selection::*, coin_selection}; +//! # use bdk_wallet::error::CreateTxError; //! # use bdk_wallet::*; -//! # use bdk_wallet::wallet::coin_selection::decide_change; +//! # use bdk_wallet::coin_selection::decide_change; //! # use anyhow::Error; //! #[derive(Debug)] //! struct AlwaysSpendEverything; diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html index 74cfd175e9..a63348624e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html @@ -359,6 +359,11 @@ 359 360 361 +362 +363 +364 +365 +366
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -381,7 +386,7 @@
     //! ```
     //! # use std::str::FromStr;
     //! # use bitcoin::*;
    -//! # use bdk_wallet::wallet::export::*;
    +//! # use bdk_wallet::export::*;
     //! # use bdk_wallet::*;
     //! let import = r#"{
     //!     "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    @@ -390,24 +395,26 @@
     //! }"#;
     //!
     //! let import = FullyNodedExport::from_str(import)?;
    -//! let wallet = Wallet::new(
    -//!     &import.descriptor(),
    -//!     &import.change_descriptor().expect("change descriptor"),
    -//!     Network::Testnet,
    -//! )?;
    +//! let wallet = Wallet::create(
    +//!     import.descriptor(),
    +//!     import.change_descriptor().expect("change descriptor"),
    +//! )
    +//! .network(Network::Testnet)
    +//! .create_wallet_no_persist()?;
     //! # Ok::<_, Box<dyn std::error::Error>>(())
     //! ```
     //!
     //! ### Export a `Wallet`
     //! ```
     //! # use bitcoin::*;
    -//! # use bdk_wallet::wallet::export::*;
    +//! # use bdk_wallet::export::*;
     //! # use bdk_wallet::*;
    -//! let wallet = Wallet::new(
    +//! let wallet = Wallet::create(
     //!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
     //!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)",
    -//!     Network::Testnet,
    -//! )?;
    +//! )
    +//! .network(Network::Testnet)
    +//! .create_wallet_no_persist()?;
     //! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
     //!
     //! println!("Exported: {}", export.to_string());
    @@ -580,12 +587,15 @@
         use bitcoin::{transaction, BlockHash, Network, Transaction};
     
         use super::*;
    -    use crate::wallet::Wallet;
    +    use crate::Wallet;
     
         fn get_test_wallet(descriptor: &str, change_descriptor: &str, network: Network) -> Wallet {
             use crate::wallet::Update;
             use bdk_chain::TxGraph;
    -        let mut wallet = Wallet::new(descriptor, change_descriptor, network).unwrap();
    +        let mut wallet = Wallet::create(descriptor.to_string(), change_descriptor.to_string())
    +            .network(network)
    +            .create_wallet_no_persist()
    +            .expect("must create wallet");
             let transaction = Transaction {
                 input: vec![],
                 output: vec![],
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html
    index dd44e37940..4aef57362c 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html
    @@ -2472,47 +2472,6 @@
     2472
     2473
     2474
    -2475
    -2476
    -2477
    -2478
    -2479
    -2480
    -2481
    -2482
    -2483
    -2484
    -2485
    -2486
    -2487
    -2488
    -2489
    -2490
    -2491
    -2492
    -2493
    -2494
    -2495
    -2496
    -2497
    -2498
    -2499
    -2500
    -2501
    -2502
    -2503
    -2504
    -2505
    -2506
    -2507
    -2508
    -2509
    -2510
    -2511
    -2512
    -2513
    -2514
    -2515
     
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -2527,7 +2486,10 @@
     //! Wallet
     //!
     //! This module defines the [`Wallet`].
    -use crate::collections::{BTreeMap, HashMap};
    +use crate::{
    +    collections::{BTreeMap, HashMap},
    +    descriptor::check_wallet_descriptor,
    +};
     use alloc::{
         boxed::Box,
         string::{String, ToString},
    @@ -2543,8 +2505,8 @@
         },
         spk_client::{FullScanRequest, FullScanResult, SyncRequest, SyncResult},
         tx_graph::{CanonicalTx, TxGraph, TxNode},
    -    BlockId, ChainPosition, ConfirmationBlockTime, ConfirmationTime, FullTxOut, Indexed,
    -    IndexedTxGraph, Merge,
    +    BlockId, ChainPosition, ConfirmationBlockTime, ConfirmationTime, DescriptorExt, FullTxOut,
    +    Indexed, IndexedTxGraph, Merge,
     };
     use bitcoin::sighash::{EcdsaSighashType, TapSighashType};
     use bitcoin::{
    @@ -2553,24 +2515,31 @@
     };
     use bitcoin::{consensus::encode::serialize, transaction, BlockHash, Psbt};
     use bitcoin::{constants::genesis_block, Amount};
    -use bitcoin::{
    -    secp256k1::{All, Secp256k1},
    -    Weight,
    -};
    +use bitcoin::{secp256k1::Secp256k1, Weight};
    +use chain::Staged;
     use core::fmt;
     use core::mem;
     use core::ops::Deref;
     use rand_core::RngCore;
     
     use descriptor::error::Error as DescriptorError;
    -use miniscript::psbt::{PsbtExt, PsbtInputExt, PsbtInputSatisfier};
    +use miniscript::{
    +    descriptor::KeyMap,
    +    psbt::{PsbtExt, PsbtInputExt, PsbtInputSatisfier},
    +};
     
     use bdk_chain::tx_graph::CalculateFeeError;
     
    +mod changeset;
     pub mod coin_selection;
     pub mod export;
    +mod params;
     pub mod signer;
     pub mod tx_builder;
    +pub use changeset::*;
    +pub use params::*;
    +mod persisted;
    +pub use persisted::*;
     pub(crate) mod utils;
     
     pub mod error;
    @@ -2584,8 +2553,8 @@
     
     use crate::descriptor::policy::BuildSatisfaction;
     use crate::descriptor::{
    -    self, calc_checksum, into_wallet_descriptor_checked, DerivedDescriptor, DescriptorMeta,
    -    ExtendedDescriptor, ExtractPolicy, IntoWalletDescriptor, Policy, XKeyUtils,
    +    self, calc_checksum, DerivedDescriptor, DescriptorMeta, ExtendedDescriptor, ExtractPolicy,
    +    IntoWalletDescriptor, Policy, XKeyUtils,
     };
     use crate::psbt::PsbtUtils;
     use crate::signer::SignerError;
    @@ -2625,6 +2594,14 @@
         secp: SecpCtx,
     }
     
    +impl Staged for Wallet {
    +    type ChangeSet = ChangeSet;
    +
    +    fn staged(&mut self) -> &mut Self::ChangeSet {
    +        &mut self.stage
    +    }
    +}
    +
     /// An update to [`Wallet`].
     ///
     /// It updates [`KeychainTxOutIndex`], [`bdk_chain::TxGraph`] and [`local_chain::LocalChain`] atomically.
    @@ -2663,9 +2640,6 @@
         }
     }
     
    -/// The changes made to a wallet by applying an [`Update`].
    -pub type ChangeSet = bdk_chain::CombinedChangeSet<KeychainKind, ConfirmationBlockTime>;
    -
     /// A derived address and the index it was found at.
     /// For convenience this automatically derefs to `Address`
     #[derive(Debug, PartialEq, Eq)]
    @@ -2692,35 +2666,8 @@
         }
     }
     
    -/// The error type when constructing a fresh [`Wallet`].
    -///
    -/// Methods [`new`] and [`new_with_genesis_hash`] may return this error.
    -///
    -/// [`new`]: Wallet::new
    -/// [`new_with_genesis_hash`]: Wallet::new_with_genesis_hash
    -#[derive(Debug)]
    -pub enum NewError {
    -    /// There was problem with the passed-in descriptor(s).
    -    Descriptor(crate::descriptor::DescriptorError),
    -}
    -
    -impl fmt::Display for NewError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        match self {
    -            NewError::Descriptor(e) => e.fmt(f),
    -        }
    -    }
    -}
    -
    -#[cfg(feature = "std")]
    -impl std::error::Error for NewError {}
    -
     /// The error type when loading a [`Wallet`] from a [`ChangeSet`].
    -///
    -/// Method [`load_from_changeset`] may return this error.
    -///
    -/// [`load_from_changeset`]: Wallet::load_from_changeset
    -#[derive(Debug)]
    +#[derive(Debug, PartialEq)]
     pub enum LoadError {
         /// There was a problem with the passed-in descriptor(s).
         Descriptor(crate::descriptor::DescriptorError),
    @@ -2730,6 +2677,8 @@
         MissingGenesis,
         /// Data loaded from persistence is missing descriptor.
         MissingDescriptor(KeychainKind),
    +    /// Data loaded is unexpected.
    +    Mismatch(LoadMismatch),
     }
     
     impl fmt::Display for LoadError {
    @@ -2741,6 +2690,7 @@
                 LoadError::MissingDescriptor(k) => {
                     write!(f, "loaded data is missing descriptor for keychain {k:?}")
                 }
    +            LoadError::Mismatch(mismatch) => write!(f, "data mismatch: {mismatch:?}"),
             }
         }
     }
    @@ -2748,62 +2698,45 @@
     #[cfg(feature = "std")]
     impl std::error::Error for LoadError {}
     
    -/// Error type for when we try load a [`Wallet`] from persistence and creating it if non-existent.
    -///
    -/// Methods [`new_or_load`] and [`new_or_load_with_genesis_hash`] may return this error.
    -///
    -/// [`new_or_load`]: Wallet::new_or_load
    -/// [`new_or_load_with_genesis_hash`]: Wallet::new_or_load_with_genesis_hash
    -#[derive(Debug)]
    -pub enum NewOrLoadError {
    -    /// There is a problem with the passed-in descriptor.
    -    Descriptor(crate::descriptor::DescriptorError),
    -    /// The loaded genesis hash does not match what was provided.
    -    LoadedGenesisDoesNotMatch {
    -        /// The expected genesis block hash.
    -        expected: BlockHash,
    -        /// The block hash loaded from persistence.
    -        got: Option<BlockHash>,
    -    },
    -    /// The loaded network type does not match what was provided.
    -    LoadedNetworkDoesNotMatch {
    -        /// The expected network type.
    +/// Represents a mismatch with what is loaded and what is expected from [`LoadParams`].
    +#[derive(Debug, PartialEq)]
    +pub enum LoadMismatch {
    +    /// Network does not match.
    +    Network {
    +        /// The network that is loaded.
    +        loaded: Network,
    +        /// The expected network.
             expected: Network,
    -        /// The network type loaded from persistence.
    -        got: Option<Network>,
         },
    -    /// The loaded desccriptor does not match what was provided.
    -    LoadedDescriptorDoesNotMatch {
    -        /// The descriptor loaded from persistence.
    -        got: Option<ExtendedDescriptor>,
    -        /// The keychain of the descriptor not matching
    +    /// Genesis hash does not match.
    +    Genesis {
    +        /// The genesis hash that is loaded.
    +        loaded: BlockHash,
    +        /// The expected genesis hash.
    +        expected: BlockHash,
    +    },
    +    /// Descriptor's [`DescriptorId`](bdk_chain::DescriptorId) does not match.
    +    Descriptor {
    +        /// Keychain identifying the descriptor.
             keychain: KeychainKind,
    +        /// The loaded descriptor.
    +        loaded: ExtendedDescriptor,
    +        /// The expected descriptor.
    +        expected: ExtendedDescriptor,
         },
     }
     
    -impl fmt::Display for NewOrLoadError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        match self {
    -            NewOrLoadError::Descriptor(e) => e.fmt(f),
    -            NewOrLoadError::LoadedGenesisDoesNotMatch { expected, got } => {
    -                write!(f, "loaded genesis hash is not {}, got {:?}", expected, got)
    -            }
    -            NewOrLoadError::LoadedNetworkDoesNotMatch { expected, got } => {
    -                write!(f, "loaded network type is not {}, got {:?}", expected, got)
    -            }
    -            NewOrLoadError::LoadedDescriptorDoesNotMatch { got, keychain } => {
    -                write!(
    -                    f,
    -                    "loaded descriptor is different from what was provided, got {:?} for keychain {:?}",
    -                    got, keychain
    -                )
    -            }
    -        }
    +impl From<LoadMismatch> for LoadError {
    +    fn from(mismatch: LoadMismatch) -> Self {
    +        Self::Mismatch(mismatch)
         }
     }
     
    -#[cfg(feature = "std")]
    -impl std::error::Error for NewOrLoadError {}
    +impl<E> From<LoadMismatch> for LoadWithPersistError<E> {
    +    fn from(mismatch: LoadMismatch) -> Self {
    +        Self::InvalidChangeSet(LoadError::Mismatch(mismatch))
    +    }
    +}
     
     /// An error that may occur when applying a block to [`Wallet`].
     #[derive(Debug)]
    @@ -2839,39 +2772,82 @@
     impl std::error::Error for ApplyBlockError {}
     
     impl Wallet {
    -    /// Initialize an empty [`Wallet`].
    -    pub fn new<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: E,
    -        network: Network,
    -    ) -> Result<Self, NewError> {
    -        let genesis_hash = genesis_block(network).block_hash();
    -        Self::new_with_genesis_hash(descriptor, change_descriptor, network, genesis_hash)
    +    /// Build a new [`Wallet`].
    +    ///
    +    /// If you have previously created a wallet, use [`load`](Self::load) instead.
    +    ///
    +    /// # Synopsis
    +    ///
    +    /// ```rust
    +    /// # use bdk_wallet::Wallet;
    +    /// # use bitcoin::Network;
    +    /// # fn main() -> anyhow::Result<()> {
    +    /// # const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +    /// # const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +    /// // Create a non-persisted wallet.
    +    /// let wallet = Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +    ///     .network(Network::Testnet)
    +    ///     .create_wallet_no_persist()?;
    +    ///
    +    /// // Create a wallet that is persisted to SQLite database.
    +    /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
    +    /// # let file_path = temp_dir.path().join("store.db");
    +    /// use bdk_wallet::rusqlite::Connection;
    +    /// let mut conn = Connection::open(file_path)?;
    +    /// let wallet = Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +    ///     .network(Network::Testnet)
    +    ///     .create_wallet(&mut conn)?;
    +    /// # Ok(())
    +    /// # }
    +    /// ```
    +    pub fn create<D>(descriptor: D, change_descriptor: D) -> CreateParams
    +    where
    +        D: IntoWalletDescriptor + Clone + 'static,
    +    {
    +        CreateParams::new(descriptor, change_descriptor)
         }
     
    -    /// Initialize an empty [`Wallet`] with a custom genesis hash.
    +    /// Create a new [`Wallet`] with given `params`.
         ///
    -    /// This is like [`Wallet::new`] with an additional `genesis_hash` parameter. This is useful
    -    /// for syncing from alternative networks.
    -    pub fn new_with_genesis_hash<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: E,
    -        network: Network,
    -        genesis_hash: BlockHash,
    -    ) -> Result<Self, NewError> {
    -        let secp = Secp256k1::new();
    +    /// Refer to [`Wallet::create`] for more.
    +    pub fn create_with_params(params: CreateParams) -> Result<Self, DescriptorError> {
    +        let secp = SecpCtx::new();
    +        let network = params.network;
    +        let genesis_hash = params
    +            .genesis_hash
    +            .unwrap_or(genesis_block(network).block_hash());
             let (chain, chain_changeset) = LocalChain::from_genesis_hash(genesis_hash);
    -        let mut index = KeychainTxOutIndex::<KeychainKind>::default();
    -
    -        let (signers, change_signers) =
    -            create_signers(&mut index, &secp, descriptor, change_descriptor, network)
    -                .map_err(NewError::Descriptor)?;
     
    +        let (descriptor, mut descriptor_keymap) = (params.descriptor)(&secp, network)?;
    +        descriptor_keymap.extend(params.descriptor_keymap);
    +
    +        let (change_descriptor, mut change_descriptor_keymap) =
    +            (params.change_descriptor)(&secp, network)?;
    +        change_descriptor_keymap.extend(params.change_descriptor_keymap);
    +
    +        let signers = Arc::new(SignersContainer::build(
    +            descriptor_keymap,
    +            &descriptor,
    +            &secp,
    +        ));
    +        let change_signers = Arc::new(SignersContainer::build(
    +            change_descriptor_keymap,
    +            &change_descriptor,
    +            &secp,
    +        ));
    +        let index = create_indexer(descriptor, change_descriptor, params.lookahead)?;
    +
    +        let descriptor = index.get_descriptor(&KeychainKind::External).cloned();
    +        let change_descriptor = index.get_descriptor(&KeychainKind::Internal).cloned();
             let indexed_graph = IndexedTxGraph::new(index);
    +        let indexed_graph_changeset = indexed_graph.initial_changeset();
     
    -        let staged = ChangeSet {
    -            chain: chain_changeset,
    -            indexed_tx_graph: indexed_graph.initial_changeset(),
    +        let stage = ChangeSet {
    +            descriptor,
    +            change_descriptor,
    +            local_chain: chain_changeset,
    +            tx_graph: indexed_graph_changeset.tx_graph,
    +            indexer: indexed_graph_changeset.indexer,
                 network: Some(network),
             };
     
    @@ -2881,84 +2857,149 @@
                 network,
                 chain,
                 indexed_graph,
    -            stage: staged,
    +            stage,
                 secp,
             })
         }
     
    -    /// Load [`Wallet`] from the given previously persisted [`ChangeSet`].
    +    /// Build [`Wallet`] by loading from persistence or [`ChangeSet`].
         ///
    -    /// Note that the descriptor secret keys are not persisted to the db; this means that after
    -    /// calling this method the [`Wallet`] **won't** know the secret keys, and as such, won't be
    -    /// able to sign transactions.
    +    /// Note that the descriptor secret keys are not persisted to the db. You can either add
    +    /// signers after-the-fact with [`Wallet::add_signer`] or [`Wallet::set_keymap`]. Or you can
    +    /// add keys when building the wallet using [`LoadParams::keymap`] and/or
    +    /// [`LoadParams::descriptors`].
         ///
    -    /// If you wish to use the wallet to sign transactions, you need to add the secret keys
    -    /// manually to the [`Wallet`]:
    +    /// # Synopsis
         ///
         /// ```rust,no_run
    -    /// # use bdk_wallet::Wallet;
    -    /// # use bdk_wallet::signer::{SignersContainer, SignerOrdering};
    -    /// # use bdk_wallet::descriptor::Descriptor;
    -    /// # use bitcoin::key::Secp256k1;
    -    /// # use bdk_wallet::KeychainKind;
    -    /// use bdk_sqlite::{Store, rusqlite::Connection};
    -    /// #
    -    /// # fn main() -> Result<(), anyhow::Error> {
    +    /// # use bdk_wallet::{Wallet, ChangeSet, KeychainKind};
    +    /// # use bitcoin::{BlockHash, Network, hashes::Hash};
    +    /// # fn main() -> anyhow::Result<()> {
    +    /// # const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +    /// # const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +    /// # let changeset = ChangeSet::default();
    +    /// // Load a wallet from changeset (no persistence).
    +    /// let wallet = Wallet::load()
    +    ///     .load_wallet_no_persist(changeset)?
    +    ///     .expect("must have data to load wallet");
    +    ///
    +    /// // Load a wallet that is persisted to SQLite database.
         /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
         /// # let file_path = temp_dir.path().join("store.db");
    -    /// let conn = Connection::open(file_path).expect("must open connection");
    -    /// let mut db = Store::new(conn).expect("must create db");
    -    /// let secp = Secp256k1::new();
    -    ///
    -    /// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    -    /// let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
    -    ///
    -    /// let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
    -    /// let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
    -    /// let changeset = db.read()?.expect("there must be an existing changeset");
    -    /// let mut wallet = Wallet::load_from_changeset(changeset)?;
    -    ///
    -    /// external_signer_container.signers().into_iter()
    -    ///     .for_each(|s| wallet.add_signer(KeychainKind::External, SignerOrdering::default(), s.clone()));
    -    /// internal_signer_container.signers().into_iter()
    -    ///     .for_each(|s| wallet.add_signer(KeychainKind::Internal, SignerOrdering::default(), s.clone()));
    +    /// # let external_keymap = Default::default();
    +    /// # let internal_keymap = Default::default();
    +    /// # let genesis_hash = BlockHash::all_zeros();
    +    /// let mut conn = bdk_wallet::rusqlite::Connection::open(file_path)?;
    +    /// let mut wallet = Wallet::load()
    +    ///     // check loaded descriptors matches these values and extract private keys
    +    ///     .descriptors(EXTERNAL_DESC, INTERNAL_DESC)
    +    ///     // you can also manually add private keys
    +    ///     .keymap(KeychainKind::External, external_keymap)
    +    ///     .keymap(KeychainKind::Internal, internal_keymap)
    +    ///     // ensure loaded wallet's genesis hash matches this value
    +    ///     .genesis_hash(genesis_hash)
    +    ///     // set a lookahead for our indexer
    +    ///     .lookahead(101)
    +    ///     .load_wallet(&mut conn)?
    +    ///     .expect("must have data to load wallet");
         /// # Ok(())
         /// # }
         /// ```
    +    pub fn load() -> LoadParams {
    +        LoadParams::new()
    +    }
    +
    +    /// Load [`Wallet`] from the given previously persisted [`ChangeSet`] and `params`.
         ///
    -    /// Alternatively, you can call [`Wallet::new_or_load`], which will add the private keys of the
    -    /// passed-in descriptors to the [`Wallet`].
    -    pub fn load_from_changeset(changeset: ChangeSet) -> Result<Self, LoadError> {
    +    /// Refer to [`Wallet::load`] for more.
    +    pub fn load_with_params(
    +        changeset: ChangeSet,
    +        params: LoadParams,
    +    ) -> Result<Option<Self>, LoadError> {
    +        if changeset.is_empty() {
    +            return Ok(None);
    +        }
             let secp = Secp256k1::new();
             let network = changeset.network.ok_or(LoadError::MissingNetwork)?;
    -        let chain =
    -            LocalChain::from_changeset(changeset.chain).map_err(|_| LoadError::MissingGenesis)?;
    -        let mut index = KeychainTxOutIndex::<KeychainKind>::default();
    +        let chain = LocalChain::from_changeset(changeset.local_chain)
    +            .map_err(|_| LoadError::MissingGenesis)?;
    +
    +        let mut descriptor_keymap = params.descriptor_keymap;
             let descriptor = changeset
    -            .indexed_tx_graph
    -            .indexer
    -            .keychains_added
    -            .get(&KeychainKind::External)
    -            .ok_or(LoadError::MissingDescriptor(KeychainKind::External))?
    -            .clone();
    +            .descriptor
    +            .ok_or(LoadError::MissingDescriptor(KeychainKind::External))?;
    +        check_wallet_descriptor(&descriptor).map_err(LoadError::Descriptor)?;
    +
    +        let mut change_descriptor_keymap = params.change_descriptor_keymap;
             let change_descriptor = changeset
    -            .indexed_tx_graph
    -            .indexer
    -            .keychains_added
    -            .get(&KeychainKind::Internal)
    -            .ok_or(LoadError::MissingDescriptor(KeychainKind::Internal))?
    -            .clone();
    +            .change_descriptor
    +            .ok_or(LoadError::MissingDescriptor(KeychainKind::Internal))?;
    +        check_wallet_descriptor(&change_descriptor).map_err(LoadError::Descriptor)?;
    +
    +        // checks
    +        if let Some(exp_network) = params.check_network {
    +            if network != exp_network {
    +                return Err(LoadError::Mismatch(LoadMismatch::Network {
    +                    loaded: network,
    +                    expected: exp_network,
    +                }));
    +            }
    +        }
    +        if let Some(exp_genesis_hash) = params.check_genesis_hash {
    +            if chain.genesis_hash() != exp_genesis_hash {
    +                return Err(LoadError::Mismatch(LoadMismatch::Genesis {
    +                    loaded: chain.genesis_hash(),
    +                    expected: exp_genesis_hash,
    +                }));
    +            }
    +        }
    +        if let Some(exp_descriptor) = params.check_descriptor {
    +            let (exp_descriptor, keymap) =
    +                (exp_descriptor)(&secp, network).map_err(LoadError::Descriptor)?;
    +            descriptor_keymap.extend(keymap);
    +
    +            if descriptor.descriptor_id() != exp_descriptor.descriptor_id() {
    +                return Err(LoadError::Mismatch(LoadMismatch::Descriptor {
    +                    keychain: KeychainKind::External,
    +                    loaded: descriptor,
    +                    expected: exp_descriptor,
    +                }));
    +            }
    +        }
    +        if let Some(exp_change_descriptor) = params.check_change_descriptor {
    +            let (exp_change_descriptor, keymap) =
    +                (exp_change_descriptor)(&secp, network).map_err(LoadError::Descriptor)?;
    +            change_descriptor_keymap.extend(keymap);
    +
    +            if change_descriptor.descriptor_id() != exp_change_descriptor.descriptor_id() {
    +                return Err(LoadError::Mismatch(LoadMismatch::Descriptor {
    +                    keychain: KeychainKind::Internal,
    +                    loaded: change_descriptor,
    +                    expected: exp_change_descriptor,
    +                }));
    +            }
    +        }
     
    -        let (signers, change_signers) =
    -            create_signers(&mut index, &secp, descriptor, change_descriptor, network)
    -                .expect("Can't fail: we passed in valid descriptors, recovered from the changeset");
    +        let signers = Arc::new(SignersContainer::build(
    +            descriptor_keymap,
    +            &descriptor,
    +            &secp,
    +        ));
    +        let change_signers = Arc::new(SignersContainer::build(
    +            change_descriptor_keymap,
    +            &change_descriptor,
    +            &secp,
    +        ));
    +        let index = create_indexer(descriptor, change_descriptor, params.lookahead)
    +            .map_err(LoadError::Descriptor)?;
     
             let mut indexed_graph = IndexedTxGraph::new(index);
    -        indexed_graph.apply_changeset(changeset.indexed_tx_graph);
    +        indexed_graph.apply_changeset(changeset.indexer.into());
    +        indexed_graph.apply_changeset(changeset.tx_graph.into());
     
             let stage = ChangeSet::default();
     
    -        Ok(Wallet {
    +        Ok(Some(Wallet {
                 signers,
                 change_signers,
                 chain,
    @@ -2966,146 +3007,7 @@
                 stage,
                 network,
                 secp,
    -        })
    -    }
    -
    -    /// Either loads [`Wallet`] from the given [`ChangeSet`] or initializes it if one does not exist.
    -    ///
    -    /// This method will fail if the loaded [`ChangeSet`] has different parameters to those provided.
    -    ///
    -    /// ```rust,no_run
    -    /// # use bdk_wallet::Wallet;
    -    /// use bdk_sqlite::{Store, rusqlite::Connection};
    -    /// # use bitcoin::Network::Testnet;
    -    /// let conn = Connection::open_in_memory().expect("must open connection");
    -    /// let mut db = Store::new(conn).expect("must create db");
    -    /// let changeset = db.read()?;
    -    ///
    -    /// let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    /// let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    -    ///
    -    /// let mut wallet = Wallet::new_or_load(external_descriptor, internal_descriptor, changeset, Testnet)?;
    -    /// # Ok::<(), anyhow::Error>(())
    -    /// ```
    -    pub fn new_or_load<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: E,
    -        changeset: Option<ChangeSet>,
    -        network: Network,
    -    ) -> Result<Self, NewOrLoadError> {
    -        let genesis_hash = genesis_block(network).block_hash();
    -        Self::new_or_load_with_genesis_hash(
    -            descriptor,
    -            change_descriptor,
    -            changeset,
    -            network,
    -            genesis_hash,
    -        )
    -    }
    -
    -    /// Either loads [`Wallet`] from a [`ChangeSet`] or initializes it if one does not exist, using the
    -    /// provided descriptor, change descriptor, network, and custom genesis hash.
    -    ///
    -    /// This method will fail if the loaded [`ChangeSet`] has different parameters to those provided.
    -    /// This is like [`Wallet::new_or_load`] with an additional `genesis_hash` parameter. This is
    -    /// useful for syncing from alternative networks.
    -    pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>(
    -        descriptor: E,
    -        change_descriptor: E,
    -        changeset: Option<ChangeSet>,
    -        network: Network,
    -        genesis_hash: BlockHash,
    -    ) -> Result<Self, NewOrLoadError> {
    -        if let Some(changeset) = changeset {
    -            let mut wallet = Self::load_from_changeset(changeset).map_err(|e| match e {
    -                LoadError::Descriptor(e) => NewOrLoadError::Descriptor(e),
    -                LoadError::MissingNetwork => NewOrLoadError::LoadedNetworkDoesNotMatch {
    -                    expected: network,
    -                    got: None,
    -                },
    -                LoadError::MissingGenesis => NewOrLoadError::LoadedGenesisDoesNotMatch {
    -                    expected: genesis_hash,
    -                    got: None,
    -                },
    -                LoadError::MissingDescriptor(keychain) => {
    -                    NewOrLoadError::LoadedDescriptorDoesNotMatch {
    -                        got: None,
    -                        keychain,
    -                    }
    -                }
    -            })?;
    -            if wallet.network != network {
    -                return Err(NewOrLoadError::LoadedNetworkDoesNotMatch {
    -                    expected: network,
    -                    got: Some(wallet.network),
    -                });
    -            }
    -            if wallet.chain.genesis_hash() != genesis_hash {
    -                return Err(NewOrLoadError::LoadedGenesisDoesNotMatch {
    -                    expected: genesis_hash,
    -                    got: Some(wallet.chain.genesis_hash()),
    -                });
    -            }
    -
    -            let (expected_descriptor, expected_descriptor_keymap) = descriptor
    -                .into_wallet_descriptor(&wallet.secp, network)
    -                .map_err(NewOrLoadError::Descriptor)?;
    -            let wallet_descriptor = wallet.public_descriptor(KeychainKind::External);
    -            if wallet_descriptor != &expected_descriptor {
    -                return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
    -                    got: Some(wallet_descriptor.clone()),
    -                    keychain: KeychainKind::External,
    -                });
    -            }
    -            // if expected descriptor has private keys add them as new signers
    -            if !expected_descriptor_keymap.is_empty() {
    -                let signer_container = SignersContainer::build(
    -                    expected_descriptor_keymap,
    -                    &expected_descriptor,
    -                    &wallet.secp,
    -                );
    -                signer_container.signers().into_iter().for_each(|signer| {
    -                    wallet.add_signer(
    -                        KeychainKind::External,
    -                        SignerOrdering::default(),
    -                        signer.clone(),
    -                    )
    -                });
    -            }
    -
    -            let (expected_change_descriptor, expected_change_descriptor_keymap) = change_descriptor
    -                .into_wallet_descriptor(&wallet.secp, network)
    -                .map_err(NewOrLoadError::Descriptor)?;
    -            let wallet_change_descriptor = wallet.public_descriptor(KeychainKind::Internal);
    -            if wallet_change_descriptor != &expected_change_descriptor {
    -                return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
    -                    got: Some(wallet_change_descriptor.clone()),
    -                    keychain: KeychainKind::Internal,
    -                });
    -            }
    -            // if expected change descriptor has private keys add them as new signers
    -            if !expected_change_descriptor_keymap.is_empty() {
    -                let signer_container = SignersContainer::build(
    -                    expected_change_descriptor_keymap,
    -                    &expected_change_descriptor,
    -                    &wallet.secp,
    -                );
    -                signer_container.signers().into_iter().for_each(|signer| {
    -                    wallet.add_signer(
    -                        KeychainKind::Internal,
    -                        SignerOrdering::default(),
    -                        signer.clone(),
    -                    )
    -                });
    -            }
    -
    -            Ok(wallet)
    -        } else {
    -            Self::new_with_genesis_hash(descriptor, change_descriptor, network, genesis_hash)
    -                .map_err(|e| match e {
    -                    NewError::Descriptor(e) => NewOrLoadError::Descriptor(e),
    -                })
    -        }
    +        }))
         }
     
         /// Get the Bitcoin network the wallet is using.
    @@ -3157,17 +3059,15 @@
         /// calls to this method before closing the wallet. For example:
         ///
         /// ```rust,no_run
    -    /// # use bdk_wallet::wallet::{Wallet, ChangeSet};
    -    /// # use bdk_wallet::KeychainKind;
    -    /// use bdk_sqlite::{rusqlite::Connection, Store};
    -    /// let conn = Connection::open_in_memory().expect("must open connection");
    -    /// let mut db = Store::new(conn).expect("must create store");
    -    /// # let changeset = ChangeSet::default();
    -    /// # let mut wallet = Wallet::load_from_changeset(changeset).expect("load wallet");
    +    /// # use bdk_wallet::{LoadParams, ChangeSet, KeychainKind};
    +    /// use bdk_chain::rusqlite::Connection;
    +    /// let mut conn = Connection::open_in_memory().expect("must open connection");
    +    /// let mut wallet = LoadParams::new()
    +    ///     .load_wallet(&mut conn)
    +    ///     .expect("database is okay")
    +    ///     .expect("database has data");
         /// let next_address = wallet.reveal_next_address(KeychainKind::External);
    -    /// if let Some(changeset) = wallet.take_staged() {
    -    ///     db.write(&changeset)?;
    -    /// }
    +    /// wallet.persist(&mut conn).expect("write is okay");
         ///
         /// // Now it's safe to show the user their next address!
         /// println!("Next address: {}", next_address.address);
    @@ -3181,7 +3081,7 @@
                 .reveal_next_spk(&keychain)
                 .expect("keychain must exist");
     
    -        stage.merge(indexed_tx_graph::ChangeSet::from(index_changeset).into());
    +        stage.merge(index_changeset.into());
     
             AddressInfo {
                 index,
    @@ -3625,6 +3525,27 @@
             signers.add_external(signer.id(&self.secp), ordering, signer);
         }
     
    +    /// Set the keymap for a given keychain.
    +    pub fn set_keymap(&mut self, keychain: KeychainKind, keymap: KeyMap) {
    +        let wallet_signers = match keychain {
    +            KeychainKind::External => Arc::make_mut(&mut self.signers),
    +            KeychainKind::Internal => Arc::make_mut(&mut self.change_signers),
    +        };
    +        let descriptor = self
    +            .indexed_graph
    +            .index
    +            .get_descriptor(&keychain)
    +            .expect("keychain must exist");
    +        *wallet_signers = SignersContainer::build(keymap, descriptor, &self.secp);
    +    }
    +
    +    /// Set the keymap for each keychain.
    +    pub fn set_keymaps(&mut self, keymaps: impl IntoIterator<Item = (KeychainKind, KeyMap)>) {
    +        for (keychain, keymap) in keymaps {
    +            self.set_keymap(keychain, keymap);
    +        }
    +    }
    +
         /// Get the signers
         ///
         /// ## Example
    @@ -3634,7 +3555,9 @@
         /// # use bdk_wallet::bitcoin::Network;
         /// let descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/0/*)";
         /// let change_descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/1/*)";
    -    /// let wallet = Wallet::new(descriptor, change_descriptor, Network::Testnet)?;
    +    /// let wallet = Wallet::create(descriptor, change_descriptor)
    +    ///     .network(Network::Testnet)
    +    ///     .create_wallet_no_persist()?;
         /// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
         ///     // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
         ///     println!("secret_key: {}", secret_key);
    @@ -3659,8 +3582,8 @@
         /// # use std::str::FromStr;
         /// # use bitcoin::*;
         /// # use bdk_wallet::*;
    -    /// # use bdk_wallet::wallet::ChangeSet;
    -    /// # use bdk_wallet::wallet::error::CreateTxError;
    +    /// # use bdk_wallet::ChangeSet;
    +    /// # use bdk_wallet::error::CreateTxError;
         /// # use anyhow::Error;
         /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
    @@ -4023,8 +3946,8 @@
         /// # use std::str::FromStr;
         /// # use bitcoin::*;
         /// # use bdk_wallet::*;
    -    /// # use bdk_wallet::wallet::ChangeSet;
    -    /// # use bdk_wallet::wallet::error::CreateTxError;
    +    /// # use bdk_wallet::ChangeSet;
    +    /// # use bdk_wallet::error::CreateTxError;
         /// # use anyhow::Error;
         /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
    @@ -4201,8 +4124,8 @@
         /// # use std::str::FromStr;
         /// # use bitcoin::*;
         /// # use bdk_wallet::*;
    -    /// # use bdk_wallet::wallet::ChangeSet;
    -    /// # use bdk_wallet::wallet::error::CreateTxError;
    +    /// # use bdk_wallet::ChangeSet;
    +    /// # use bdk_wallet::error::CreateTxError;
         /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
         /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    @@ -4939,25 +4862,23 @@
         }
     }
     
    -fn create_signers<E: IntoWalletDescriptor>(
    -    index: &mut KeychainTxOutIndex<KeychainKind>,
    -    secp: &Secp256k1<All>,
    -    descriptor: E,
    -    change_descriptor: E,
    -    network: Network,
    -) -> Result<(Arc<SignersContainer>, Arc<SignersContainer>), DescriptorError> {
    -    let descriptor = into_wallet_descriptor_checked(descriptor, secp, network)?;
    -    let change_descriptor = into_wallet_descriptor_checked(change_descriptor, secp, network)?;
    -    let (descriptor, keymap) = descriptor;
    -    let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    -    let _ = index
    +fn create_indexer(
    +    descriptor: ExtendedDescriptor,
    +    change_descriptor: ExtendedDescriptor,
    +    lookahead: u32,
    +) -> Result<KeychainTxOutIndex<KeychainKind>, DescriptorError> {
    +    let mut indexer = KeychainTxOutIndex::<KeychainKind>::new(lookahead);
    +
    +    // let (descriptor, keymap) = descriptor;
    +    // let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    +    assert!(indexer
             .insert_descriptor(KeychainKind::External, descriptor)
    -        .expect("this is the first descriptor we're inserting");
    +        .expect("first descriptor introduced must succeed"));
     
    -    let (descriptor, keymap) = change_descriptor;
    -    let change_signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    -    let _ = index
    -        .insert_descriptor(KeychainKind::Internal, descriptor)
    +    // let (descriptor, keymap) = change_descriptor;
    +    // let change_signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
    +    assert!(indexer
    +        .insert_descriptor(KeychainKind::Internal, change_descriptor)
             .map_err(|e| {
                 use bdk_chain::indexer::keychain_txout::InsertDescriptorError;
                 match e {
    @@ -4968,9 +4889,9 @@
                         unreachable!("this is the first time we're assigning internal")
                     }
                 }
    -        })?;
    +        })?);
     
    -    Ok((signers, change_signers))
    +    Ok(indexer)
     }
     
     /// Transforms a [`FeeRate`] to `f64` with unit as sat/vb.
    @@ -4991,17 +4912,14 @@
         () => {{
             use $crate::bitcoin::{BlockHash, Transaction, absolute, TxOut, Network, hashes::Hash};
             use $crate::chain::{ConfirmationBlockTime, BlockId, TxGraph};
    -        use $crate::wallet::{Update, Wallet};
    -        use $crate::KeychainKind;
    +        use $crate::{Update, KeychainKind, Wallet};
             let descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/0/*)";
             let change_descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/1/*)";
     
    -        let mut wallet = Wallet::new(
    -            descriptor,
    -            change_descriptor,
    -            Network::Regtest,
    -        )
    -        .unwrap();
    +        let mut wallet = Wallet::create(descriptor, change_descriptor)
    +            .network(Network::Regtest)
    +            .create_wallet_no_persist()
    +            .unwrap();
             let address = wallet.peek_address(KeychainKind::External, 0).address;
             let tx = Transaction {
                 version: transaction::Version::ONE,
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/params.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/params.rs.html
    new file mode 100644
    index 0000000000..e0789acf3a
    --- /dev/null
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/params.rs.html
    @@ -0,0 +1,427 @@
    +params.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
    +211
    +212
    +213
    +
    use alloc::boxed::Box;
    +use bdk_chain::{keychain_txout::DEFAULT_LOOKAHEAD, PersistAsyncWith, PersistWith};
    +use bitcoin::{BlockHash, Network};
    +use miniscript::descriptor::KeyMap;
    +
    +use crate::{
    +    descriptor::{DescriptorError, ExtendedDescriptor, IntoWalletDescriptor},
    +    utils::SecpCtx,
    +    KeychainKind, Wallet,
    +};
    +
    +use super::{ChangeSet, LoadError, PersistedWallet};
    +
    +/// This atrocity is to avoid having type parameters on [`CreateParams`] and [`LoadParams`].
    +///
    +/// The better option would be to do `Box<dyn IntoWalletDescriptor>`, but we cannot due to Rust's
    +/// [object safety rules](https://doc.rust-lang.org/reference/items/traits.html#object-safety).
    +type DescriptorToExtract = Box<
    +    dyn FnOnce(&SecpCtx, Network) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>
    +        + 'static,
    +>;
    +
    +fn make_descriptor_to_extract<D>(descriptor: D) -> DescriptorToExtract
    +where
    +    D: IntoWalletDescriptor + 'static,
    +{
    +    Box::new(|secp, network| descriptor.into_wallet_descriptor(secp, network))
    +}
    +
    +/// Parameters for [`Wallet::create`] or [`PersistedWallet::create`].
    +#[must_use]
    +pub struct CreateParams {
    +    pub(crate) descriptor: DescriptorToExtract,
    +    pub(crate) descriptor_keymap: KeyMap,
    +    pub(crate) change_descriptor: DescriptorToExtract,
    +    pub(crate) change_descriptor_keymap: KeyMap,
    +    pub(crate) network: Network,
    +    pub(crate) genesis_hash: Option<BlockHash>,
    +    pub(crate) lookahead: u32,
    +}
    +
    +impl CreateParams {
    +    /// Construct parameters with provided `descriptor`, `change_descriptor` and `network`.
    +    ///
    +    /// Default values: `genesis_hash` = `None`, `lookahead` = [`DEFAULT_LOOKAHEAD`]
    +    pub fn new<D: IntoWalletDescriptor + 'static>(descriptor: D, change_descriptor: D) -> Self {
    +        Self {
    +            descriptor: make_descriptor_to_extract(descriptor),
    +            descriptor_keymap: KeyMap::default(),
    +            change_descriptor: make_descriptor_to_extract(change_descriptor),
    +            change_descriptor_keymap: KeyMap::default(),
    +            network: Network::Bitcoin,
    +            genesis_hash: None,
    +            lookahead: DEFAULT_LOOKAHEAD,
    +        }
    +    }
    +
    +    /// Extend the given `keychain`'s `keymap`.
    +    pub fn keymap(mut self, keychain: KeychainKind, keymap: KeyMap) -> Self {
    +        match keychain {
    +            KeychainKind::External => &mut self.descriptor_keymap,
    +            KeychainKind::Internal => &mut self.change_descriptor_keymap,
    +        }
    +        .extend(keymap);
    +        self
    +    }
    +
    +    /// Set `network`.
    +    pub fn network(mut self, network: Network) -> Self {
    +        self.network = network;
    +        self
    +    }
    +
    +    /// Use a custom `genesis_hash`.
    +    pub fn genesis_hash(mut self, genesis_hash: BlockHash) -> Self {
    +        self.genesis_hash = Some(genesis_hash);
    +        self
    +    }
    +
    +    /// Use custom lookahead value.
    +    pub fn lookahead(mut self, lookahead: u32) -> Self {
    +        self.lookahead = lookahead;
    +        self
    +    }
    +
    +    /// Create [`PersistedWallet`] with the given `Db`.
    +    pub fn create_wallet<Db>(
    +        self,
    +        db: &mut Db,
    +    ) -> Result<PersistedWallet, <Wallet as PersistWith<Db>>::CreateError>
    +    where
    +        Wallet: PersistWith<Db, CreateParams = Self>,
    +    {
    +        PersistedWallet::create(db, self)
    +    }
    +
    +    /// Create [`PersistedWallet`] with the given async `Db`.
    +    pub async fn create_wallet_async<Db>(
    +        self,
    +        db: &mut Db,
    +    ) -> Result<PersistedWallet, <Wallet as PersistAsyncWith<Db>>::CreateError>
    +    where
    +        Wallet: PersistAsyncWith<Db, CreateParams = Self>,
    +    {
    +        PersistedWallet::create_async(db, self).await
    +    }
    +
    +    /// Create [`Wallet`] without persistence.
    +    pub fn create_wallet_no_persist(self) -> Result<Wallet, DescriptorError> {
    +        Wallet::create_with_params(self)
    +    }
    +}
    +
    +/// Parameters for [`Wallet::load`] or [`PersistedWallet::load`].
    +#[must_use]
    +pub struct LoadParams {
    +    pub(crate) descriptor_keymap: KeyMap,
    +    pub(crate) change_descriptor_keymap: KeyMap,
    +    pub(crate) lookahead: u32,
    +    pub(crate) check_network: Option<Network>,
    +    pub(crate) check_genesis_hash: Option<BlockHash>,
    +    pub(crate) check_descriptor: Option<DescriptorToExtract>,
    +    pub(crate) check_change_descriptor: Option<DescriptorToExtract>,
    +}
    +
    +impl LoadParams {
    +    /// Construct parameters with default values.
    +    ///
    +    /// Default values: `lookahead` = [`DEFAULT_LOOKAHEAD`]
    +    pub fn new() -> Self {
    +        Self {
    +            descriptor_keymap: KeyMap::default(),
    +            change_descriptor_keymap: KeyMap::default(),
    +            lookahead: DEFAULT_LOOKAHEAD,
    +            check_network: None,
    +            check_genesis_hash: None,
    +            check_descriptor: None,
    +            check_change_descriptor: None,
    +        }
    +    }
    +
    +    /// Extend the given `keychain`'s `keymap`.
    +    pub fn keymap(mut self, keychain: KeychainKind, keymap: KeyMap) -> Self {
    +        match keychain {
    +            KeychainKind::External => &mut self.descriptor_keymap,
    +            KeychainKind::Internal => &mut self.change_descriptor_keymap,
    +        }
    +        .extend(keymap);
    +        self
    +    }
    +
    +    /// Checks that `descriptor` of `keychain` matches this, and extracts private keys (if
    +    /// avaliable).
    +    pub fn descriptors<D>(mut self, descriptor: D, change_descriptor: D) -> Self
    +    where
    +        D: IntoWalletDescriptor + 'static,
    +    {
    +        self.check_descriptor = Some(make_descriptor_to_extract(descriptor));
    +        self.check_change_descriptor = Some(make_descriptor_to_extract(change_descriptor));
    +        self
    +    }
    +
    +    /// Check for `network`.
    +    pub fn network(mut self, network: Network) -> Self {
    +        self.check_network = Some(network);
    +        self
    +    }
    +
    +    /// Check for a `genesis_hash`.
    +    pub fn genesis_hash(mut self, genesis_hash: BlockHash) -> Self {
    +        self.check_genesis_hash = Some(genesis_hash);
    +        self
    +    }
    +
    +    /// Use custom lookahead value.
    +    pub fn lookahead(mut self, lookahead: u32) -> Self {
    +        self.lookahead = lookahead;
    +        self
    +    }
    +
    +    /// Load [`PersistedWallet`] with the given `Db`.
    +    pub fn load_wallet<Db>(
    +        self,
    +        db: &mut Db,
    +    ) -> Result<Option<PersistedWallet>, <Wallet as PersistWith<Db>>::LoadError>
    +    where
    +        Wallet: PersistWith<Db, LoadParams = Self>,
    +    {
    +        PersistedWallet::load(db, self)
    +    }
    +
    +    /// Load [`PersistedWallet`] with the given async `Db`.
    +    pub async fn load_wallet_async<Db>(
    +        self,
    +        db: &mut Db,
    +    ) -> Result<Option<PersistedWallet>, <Wallet as PersistAsyncWith<Db>>::LoadError>
    +    where
    +        Wallet: PersistAsyncWith<Db, LoadParams = Self>,
    +    {
    +        PersistedWallet::load_async(db, self).await
    +    }
    +
    +    /// Load [`Wallet`] without persistence.
    +    pub fn load_wallet_no_persist(self, changeset: ChangeSet) -> Result<Option<Wallet>, LoadError> {
    +        Wallet::load_with_params(changeset, self)
    +    }
    +}
    +
    +impl Default for LoadParams {
    +    fn default() -> Self {
    +        Self::new()
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/persisted.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/persisted.rs.html new file mode 100644 index 0000000000..4a64038352 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/persisted.rs.html @@ -0,0 +1,343 @@ +persisted.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
    +
    use core::fmt;
    +
    +use crate::{descriptor::DescriptorError, Wallet};
    +
    +/// Represents a persisted wallet.
    +pub type PersistedWallet = bdk_chain::Persisted<Wallet>;
    +
    +#[cfg(feature = "rusqlite")]
    +impl<'c> chain::PersistWith<bdk_chain::rusqlite::Transaction<'c>> for Wallet {
    +    type CreateParams = crate::CreateParams;
    +    type LoadParams = crate::LoadParams;
    +
    +    type CreateError = CreateWithPersistError<bdk_chain::rusqlite::Error>;
    +    type LoadError = LoadWithPersistError<bdk_chain::rusqlite::Error>;
    +    type PersistError = bdk_chain::rusqlite::Error;
    +
    +    fn create(
    +        db: &mut bdk_chain::rusqlite::Transaction<'c>,
    +        params: Self::CreateParams,
    +    ) -> Result<Self, Self::CreateError> {
    +        let mut wallet =
    +            Self::create_with_params(params).map_err(CreateWithPersistError::Descriptor)?;
    +        if let Some(changeset) = wallet.take_staged() {
    +            changeset
    +                .persist_to_sqlite(db)
    +                .map_err(CreateWithPersistError::Persist)?;
    +        }
    +        Ok(wallet)
    +    }
    +
    +    fn load(
    +        conn: &mut bdk_chain::rusqlite::Transaction<'c>,
    +        params: Self::LoadParams,
    +    ) -> Result<Option<Self>, Self::LoadError> {
    +        let changeset =
    +            crate::ChangeSet::from_sqlite(conn).map_err(LoadWithPersistError::Persist)?;
    +        if chain::Merge::is_empty(&changeset) {
    +            return Ok(None);
    +        }
    +        Self::load_with_params(changeset, params).map_err(LoadWithPersistError::InvalidChangeSet)
    +    }
    +
    +    fn persist(
    +        db: &mut bdk_chain::rusqlite::Transaction<'c>,
    +        changeset: &<Self as chain::Staged>::ChangeSet,
    +    ) -> Result<(), Self::PersistError> {
    +        changeset.persist_to_sqlite(db)
    +    }
    +}
    +
    +#[cfg(feature = "rusqlite")]
    +impl chain::PersistWith<bdk_chain::rusqlite::Connection> for Wallet {
    +    type CreateParams = crate::CreateParams;
    +    type LoadParams = crate::LoadParams;
    +
    +    type CreateError = CreateWithPersistError<bdk_chain::rusqlite::Error>;
    +    type LoadError = LoadWithPersistError<bdk_chain::rusqlite::Error>;
    +    type PersistError = bdk_chain::rusqlite::Error;
    +
    +    fn create(
    +        db: &mut bdk_chain::rusqlite::Connection,
    +        params: Self::CreateParams,
    +    ) -> Result<Self, Self::CreateError> {
    +        let mut db_tx = db.transaction().map_err(CreateWithPersistError::Persist)?;
    +        let wallet = chain::PersistWith::create(&mut db_tx, params)?;
    +        db_tx.commit().map_err(CreateWithPersistError::Persist)?;
    +        Ok(wallet)
    +    }
    +
    +    fn load(
    +        db: &mut bdk_chain::rusqlite::Connection,
    +        params: Self::LoadParams,
    +    ) -> Result<Option<Self>, Self::LoadError> {
    +        let mut db_tx = db.transaction().map_err(LoadWithPersistError::Persist)?;
    +        let wallet_opt = chain::PersistWith::load(&mut db_tx, params)?;
    +        db_tx.commit().map_err(LoadWithPersistError::Persist)?;
    +        Ok(wallet_opt)
    +    }
    +
    +    fn persist(
    +        db: &mut bdk_chain::rusqlite::Connection,
    +        changeset: &<Self as chain::Staged>::ChangeSet,
    +    ) -> Result<(), Self::PersistError> {
    +        let db_tx = db.transaction()?;
    +        changeset.persist_to_sqlite(&db_tx)?;
    +        db_tx.commit()
    +    }
    +}
    +
    +#[cfg(feature = "file_store")]
    +impl chain::PersistWith<bdk_file_store::Store<crate::ChangeSet>> for Wallet {
    +    type CreateParams = crate::CreateParams;
    +    type LoadParams = crate::LoadParams;
    +    type CreateError = CreateWithPersistError<std::io::Error>;
    +    type LoadError =
    +        LoadWithPersistError<bdk_file_store::AggregateChangesetsError<crate::ChangeSet>>;
    +    type PersistError = std::io::Error;
    +
    +    fn create(
    +        db: &mut bdk_file_store::Store<crate::ChangeSet>,
    +        params: Self::CreateParams,
    +    ) -> Result<Self, Self::CreateError> {
    +        let mut wallet =
    +            Self::create_with_params(params).map_err(CreateWithPersistError::Descriptor)?;
    +        if let Some(changeset) = wallet.take_staged() {
    +            db.append_changeset(&changeset)
    +                .map_err(CreateWithPersistError::Persist)?;
    +        }
    +        Ok(wallet)
    +    }
    +
    +    fn load(
    +        db: &mut bdk_file_store::Store<crate::ChangeSet>,
    +        params: Self::LoadParams,
    +    ) -> Result<Option<Self>, Self::LoadError> {
    +        let changeset = db
    +            .aggregate_changesets()
    +            .map_err(LoadWithPersistError::Persist)?
    +            .unwrap_or_default();
    +        Self::load_with_params(changeset, params).map_err(LoadWithPersistError::InvalidChangeSet)
    +    }
    +
    +    fn persist(
    +        db: &mut bdk_file_store::Store<crate::ChangeSet>,
    +        changeset: &<Self as chain::Staged>::ChangeSet,
    +    ) -> Result<(), Self::PersistError> {
    +        db.append_changeset(changeset)
    +    }
    +}
    +
    +/// Error type for [`PersistedWallet::load`].
    +#[derive(Debug, PartialEq)]
    +pub enum LoadWithPersistError<E> {
    +    /// Error from persistence.
    +    Persist(E),
    +    /// Occurs when the loaded changeset cannot construct [`Wallet`].
    +    InvalidChangeSet(crate::LoadError),
    +}
    +
    +impl<E: fmt::Display> fmt::Display for LoadWithPersistError<E> {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        match self {
    +            Self::Persist(err) => fmt::Display::fmt(err, f),
    +            Self::InvalidChangeSet(err) => fmt::Display::fmt(&err, f),
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "std")]
    +impl<E: fmt::Debug + fmt::Display> std::error::Error for LoadWithPersistError<E> {}
    +
    +/// Error type for [`PersistedWallet::create`].
    +#[derive(Debug)]
    +pub enum CreateWithPersistError<E> {
    +    /// Error from persistence.
    +    Persist(E),
    +    /// Occurs when the loaded changeset cannot contruct [`Wallet`].
    +    Descriptor(DescriptorError),
    +}
    +
    +impl<E: fmt::Display> fmt::Display for CreateWithPersistError<E> {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        match self {
    +            Self::Persist(err) => fmt::Display::fmt(err, f),
    +            Self::Descriptor(err) => fmt::Display::fmt(&err, f),
    +        }
    +    }
    +}
    +
    +#[cfg(feature = "std")]
    +impl<E: fmt::Debug + fmt::Display> std::error::Error for CreateWithPersistError<E> {}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html index 01de27b7c5..d2ce62a33c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html @@ -1027,6 +1027,8 @@ 1027 1028 1029 +1030 +1031
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
    @@ -1098,7 +1100,9 @@
     //!
     //! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)";
     //! let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)";
    -//! let mut wallet = Wallet::new(descriptor, change_descriptor, Network::Testnet)?;
    +//! let mut wallet = Wallet::create(descriptor, change_descriptor)
    +//!     .network(Network::Testnet)
    +//!     .create_wallet_no_persist()?;
     //! wallet.add_signer(
     //!     KeychainKind::External,
     //!     SignerOrdering(200),
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html
    index ab60760ffb..b10d13cd2c 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html
    @@ -1132,8 +1132,8 @@
     //! # use std::str::FromStr;
     //! # use bitcoin::*;
     //! # use bdk_wallet::*;
    -//! # use bdk_wallet::wallet::ChangeSet;
    -//! # use bdk_wallet::wallet::error::CreateTxError;
    +//! # use bdk_wallet::ChangeSet;
    +//! # use bdk_wallet::error::CreateTxError;
     //! # use anyhow::Error;
     //! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
     //! # let mut wallet = doctest_wallet!();
    @@ -1184,11 +1184,11 @@
     ///
     /// ```
     /// # use bdk_wallet::*;
    -/// # use bdk_wallet::wallet::tx_builder::*;
    +/// # use bdk_wallet::tx_builder::*;
     /// # use bitcoin::*;
     /// # use core::str::FromStr;
    -/// # use bdk_wallet::wallet::ChangeSet;
    -/// # use bdk_wallet::wallet::error::CreateTxError;
    +/// # use bdk_wallet::ChangeSet;
    +/// # use bdk_wallet::error::CreateTxError;
     /// # use anyhow::Error;
     /// # let mut wallet = doctest_wallet!();
     /// # let addr1 = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    @@ -1756,8 +1756,8 @@
         /// # use std::str::FromStr;
         /// # use bitcoin::*;
         /// # use bdk_wallet::*;
    -    /// # use bdk_wallet::wallet::ChangeSet;
    -    /// # use bdk_wallet::wallet::error::CreateTxError;
    +    /// # use bdk_wallet::ChangeSet;
    +    /// # use bdk_wallet::error::CreateTxError;
         /// # use anyhow::Error;
         /// # let to_address =
         /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html
    index 6467394617..738bb984c1 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html
    @@ -428,7 +428,7 @@
     
     type ChangeSet = (
         local_chain::ChangeSet,
    -    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet<Keychain>>,
    +    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet>,
     );
     
     #[derive(Debug)]
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html
    index 22e90dba3a..c903ee17c6 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html
    @@ -777,7 +777,7 @@
     pub type KeychainTxGraph<A> = IndexedTxGraph<A, KeychainTxOutIndex<Keychain>>;
     pub type KeychainChangeSet<A> = (
         local_chain::ChangeSet,
    -    indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet<Keychain>>,
    +    indexed_tx_graph::ChangeSet<A, keychain_txout::ChangeSet>,
     );
     
     #[derive(Parser)]
    @@ -938,7 +938,7 @@
     }
     
     pub struct CreateTxChange {
    -    pub index_changeset: keychain_txout::ChangeSet<Keychain>,
    +    pub index_changeset: keychain_txout::ChangeSet,
         pub change_keychain: Keychain,
         pub index: u32,
     }
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    index 46ec1584fe..3e2ba548e3 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html
    @@ -454,7 +454,7 @@
     
     type ChangeSet = (
         local_chain::ChangeSet,
    -    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet<Keychain>>,
    +    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet>,
     );
     
     fn main() -> anyhow::Result<()> {
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    index 869bc679a7..f73e62804f 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html
    @@ -388,11 +388,11 @@
     };
     
     const DB_MAGIC: &[u8] = b"bdk_example_esplora";
    -const DB_PATH: &str = ".bdk_esplora_example.db";
    +const DB_PATH: &str = "bdk_example_esplora.db";
     
     type ChangeSet = (
         local_chain::ChangeSet,
    -    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet<Keychain>>,
    +    indexed_tx_graph::ChangeSet<ConfirmationBlockTime, keychain_txout::ChangeSet>,
     );
     
     #[derive(Subcommand, Debug, Clone)]
    @@ -450,7 +450,7 @@
                 Network::Bitcoin => "https://blockstream.info/api",
                 Network::Testnet => "https://blockstream.info/testnet/api",
                 Network::Regtest => "http://localhost:3002",
    -            Network::Signet => "https://mempool.space/signet/api",
    +            Network::Signet => "http://signet.bitcoindevkit.net",
                 _ => panic!("unsupported network"),
             });
     
    @@ -462,7 +462,7 @@
     #[derive(Parser, Debug, Clone, PartialEq)]
     pub struct ScanOptions {
         /// Max number of concurrent esplora server requests.
    -    #[clap(long, default_value = "1")]
    +    #[clap(long, default_value = "5")]
         pub parallel_requests: usize,
     }
     
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html
    index ed403a4684..7a71b089e0 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html
    @@ -103,57 +103,57 @@
     103
     104
     105
    -106
    -
    const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    -const SEND_AMOUNT: Amount = Amount::from_sat(5000);
    -const STOP_GAP: usize = 50;
    -const BATCH_SIZE: usize = 5;
    -
    -use anyhow::anyhow;
    +
    use bdk_wallet::file_store::Store;
    +use bdk_wallet::Wallet;
     use std::io::Write;
     use std::str::FromStr;
     
     use bdk_electrum::electrum_client;
     use bdk_electrum::BdkElectrumClient;
    -use bdk_file_store::Store;
    +use bdk_wallet::bitcoin::Network;
     use bdk_wallet::bitcoin::{Address, Amount};
     use bdk_wallet::chain::collections::HashSet;
    -use bdk_wallet::{bitcoin::Network, Wallet};
     use bdk_wallet::{KeychainKind, SignOptions};
     
    +const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    +const SEND_AMOUNT: Amount = Amount::from_sat(5000);
    +const STOP_GAP: usize = 50;
    +const BATCH_SIZE: usize = 5;
    +
    +const NETWORK: Network = Network::Testnet;
    +const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +const ELECTRUM_URL: &str = "ssl://electrum.blockstream.info:60002";
    +
     fn main() -> Result<(), anyhow::Error> {
    -    let db_path = std::env::temp_dir().join("bdk-electrum-example");
    -    let mut db =
    -        Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    -    let changeset = db
    -        .aggregate_changesets()
    -        .map_err(|e| anyhow!("load changes error: {}", e))?;
    -    let mut wallet = Wallet::new_or_load(
    -        external_descriptor,
    -        internal_descriptor,
    -        changeset,
    -        Network::Testnet,
    -    )?;
    +    let db_path = "bdk-electrum-example.db";
    +
    +    let mut db = Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    +
    +    let wallet_opt = Wallet::load()
    +        .descriptors(EXTERNAL_DESC, INTERNAL_DESC)
    +        .network(NETWORK)
    +        .load_wallet(&mut db)?;
    +    let mut wallet = match wallet_opt {
    +        Some(wallet) => wallet,
    +        None => Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +            .network(NETWORK)
    +            .create_wallet(&mut db)?,
    +    };
     
         let address = wallet.next_unused_address(KeychainKind::External);
    -    if let Some(changeset) = wallet.take_staged() {
    -        db.append_changeset(&changeset)?;
    -    }
    +    wallet.persist(&mut db)?;
         println!("Generated Address: {}", address);
     
         let balance = wallet.balance();
         println!("Wallet balance before syncing: {} sats", balance.total());
     
         print!("Syncing...");
    -    let client = BdkElectrumClient::new(electrum_client::Client::new(
    -        "ssl://electrum.blockstream.info:60002",
    -    )?);
    +    let client = BdkElectrumClient::new(electrum_client::Client::new(ELECTRUM_URL)?);
     
         // Populate the electrum client's transaction cache so it doesn't redownload transaction we
         // already have.
    -    client.populate_tx_cache(&wallet);
    +    client.populate_tx_cache(wallet.tx_graph());
     
         let request = wallet
             .start_full_scan()
    @@ -177,9 +177,7 @@
         println!();
     
         wallet.apply_update(update)?;
    -    if let Some(changeset) = wallet.take_staged() {
    -        db.append_changeset(&changeset)?;
    -    }
    +    wallet.persist(&mut db)?;
     
         let balance = wallet.balance();
         println!("Wallet balance after syncing: {} sats", balance.total());
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html
    index 0af6b1c0c9..65fc0cd5f8 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html
    @@ -90,102 +90,61 @@
     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
    -
    use std::{collections::BTreeSet, io::Write, str::FromStr};
    +
    use std::{collections::BTreeSet, io::Write};
     
    +use anyhow::Ok;
     use bdk_esplora::{esplora_client, EsploraAsyncExt};
     use bdk_wallet::{
    -    bitcoin::{Address, Amount, Network, Script},
    +    bitcoin::{Amount, Network},
    +    rusqlite::Connection,
         KeychainKind, SignOptions, Wallet,
     };
     
    -use bdk_sqlite::{rusqlite::Connection, Store};
    -
     const SEND_AMOUNT: Amount = Amount::from_sat(5000);
    -const STOP_GAP: usize = 50;
    +const STOP_GAP: usize = 5;
     const PARALLEL_REQUESTS: usize = 5;
     
    +const DB_PATH: &str = "bdk-example-esplora-async.sqlite";
    +const NETWORK: Network = Network::Signet;
    +const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +const ESPLORA_URL: &str = "http://signet.bitcoindevkit.net";
    +
     #[tokio::main]
     async fn main() -> Result<(), anyhow::Error> {
    -    let db_path = "bdk-esplora-async-example.sqlite";
    -    let conn = Connection::open(db_path)?;
    -    let mut db = Store::new(conn)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    -    let changeset = db.read()?;
    -
    -    let mut wallet = Wallet::new_or_load(
    -        external_descriptor,
    -        internal_descriptor,
    -        changeset,
    -        Network::Signet,
    -    )?;
    +    let mut conn = Connection::open(DB_PATH)?;
    +
    +    let wallet_opt = Wallet::load()
    +        .descriptors(EXTERNAL_DESC, INTERNAL_DESC)
    +        .network(NETWORK)
    +        .load_wallet(&mut conn)?;
    +    let mut wallet = match wallet_opt {
    +        Some(wallet) => wallet,
    +        None => Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +            .network(NETWORK)
    +            .create_wallet(&mut conn)?,
    +    };
     
         let address = wallet.next_unused_address(KeychainKind::External);
    -    if let Some(changeset) = wallet.take_staged() {
    -        db.write(&changeset)?;
    -    }
    -    println!("Generated Address: {}", address);
    +    wallet.persist(&mut conn)?;
    +    println!("Next unused address: ({}) {}", address.index, address);
     
         let balance = wallet.balance();
         println!("Wallet balance before syncing: {} sats", balance.total());
     
         print!("Syncing...");
    -    let client = esplora_client::Builder::new("http://signet.bitcoindevkit.net").build_async()?;
    -
    -    fn generate_inspect(kind: KeychainKind) -> impl FnMut(u32, &Script) + Send + Sync + 'static {
    -        let mut once = Some(());
    -        let mut stdout = std::io::stdout();
    -        move |spk_i, _| {
    -            match once.take() {
    -                Some(_) => print!("\nScanning keychain [{:?}]", kind),
    -                None => print!(" {:<3}", spk_i),
    -            };
    -            stdout.flush().expect("must flush");
    -        }
    -    }
    -    let request = wallet
    -        .start_full_scan()
    -        .inspect_spks_for_all_keychains({
    -            let mut once = BTreeSet::<KeychainKind>::new();
    -            move |keychain, spk_i, _| {
    -                match once.insert(keychain) {
    -                    true => print!("\nScanning keychain [{:?}]", keychain),
    -                    false => print!(" {:<3}", spk_i),
    -                }
    -                std::io::stdout().flush().expect("must flush")
    +    let client = esplora_client::Builder::new(ESPLORA_URL).build_async()?;
    +
    +    let request = wallet.start_full_scan().inspect_spks_for_all_keychains({
    +        let mut once = BTreeSet::<KeychainKind>::new();
    +        move |keychain, spk_i, _| {
    +            if once.insert(keychain) {
    +                print!("\nScanning keychain [{:?}] ", keychain);
                 }
    -        })
    -        .inspect_spks_for_keychain(
    -            KeychainKind::External,
    -            generate_inspect(KeychainKind::External),
    -        )
    -        .inspect_spks_for_keychain(
    -            KeychainKind::Internal,
    -            generate_inspect(KeychainKind::Internal),
    -        );
    +            print!(" {:<3}", spk_i);
    +            std::io::stdout().flush().expect("must flush")
    +        }
    +    });
     
         let mut update = client
             .full_scan(request, STOP_GAP, PARALLEL_REQUESTS)
    @@ -194,9 +153,7 @@
         let _ = update.graph_update.update_last_seen_unconfirmed(now);
     
         wallet.apply_update(update)?;
    -    if let Some(changeset) = wallet.take_staged() {
    -        db.write(&changeset)?;
    -    }
    +    wallet.persist(&mut conn)?;
         println!();
     
         let balance = wallet.balance();
    @@ -210,12 +167,9 @@
             std::process::exit(0);
         }
     
    -    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    -        .require_network(Network::Signet)?;
    -
         let mut tx_builder = wallet.build_tx();
         tx_builder
    -        .add_recipient(faucet_address.script_pubkey(), SEND_AMOUNT)
    +        .add_recipient(address.script_pubkey(), SEND_AMOUNT)
             .enable_rbf();
     
         let mut psbt = tx_builder.finish()?;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html
    index d8ac4a95f2..0f8f2267d8 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html
    @@ -90,55 +90,62 @@
     90
     91
     92
    -
    const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    -const SEND_AMOUNT: Amount = Amount::from_sat(1000);
    -const STOP_GAP: usize = 5;
    -const PARALLEL_REQUESTS: usize = 1;
    -
    -use std::{collections::BTreeSet, io::Write, str::FromStr};
    +93
    +94
    +
    use std::{collections::BTreeSet, io::Write};
     
     use bdk_esplora::{esplora_client, EsploraExt};
    -use bdk_file_store::Store;
     use bdk_wallet::{
    -    bitcoin::{Address, Amount, Network},
    +    bitcoin::{Amount, Network},
    +    file_store::Store,
         KeychainKind, SignOptions, Wallet,
     };
     
    +const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    +const DB_PATH: &str = "bdk-example-esplora-blocking.db";
    +const SEND_AMOUNT: Amount = Amount::from_sat(5000);
    +const STOP_GAP: usize = 5;
    +const PARALLEL_REQUESTS: usize = 5;
    +
    +const NETWORK: Network = Network::Signet;
    +const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +const ESPLORA_URL: &str = "http://signet.bitcoindevkit.net";
    +
     fn main() -> Result<(), anyhow::Error> {
    -    let db_path = std::env::temp_dir().join("bdk-esplora-example");
    -    let mut db =
    -        Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    -    let changeset = db.aggregate_changesets()?;
    -
    -    let mut wallet = Wallet::new_or_load(
    -        external_descriptor,
    -        internal_descriptor,
    -        changeset,
    -        Network::Testnet,
    -    )?;
    +    let mut db = Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), DB_PATH)?;
    +
    +    let wallet_opt = Wallet::load()
    +        .descriptors(EXTERNAL_DESC, INTERNAL_DESC)
    +        .network(NETWORK)
    +        .load_wallet(&mut db)?;
    +    let mut wallet = match wallet_opt {
    +        Some(wallet) => wallet,
    +        None => Wallet::create(EXTERNAL_DESC, INTERNAL_DESC)
    +            .network(NETWORK)
    +            .create_wallet(&mut db)?,
    +    };
     
         let address = wallet.next_unused_address(KeychainKind::External);
    -    if let Some(changeset) = wallet.take_staged() {
    -        db.append_changeset(&changeset)?;
    -    }
    -    println!("Generated Address: {}", address);
    +    wallet.persist(&mut db)?;
    +    println!(
    +        "Next unused address: ({}) {}",
    +        address.index, address.address
    +    );
     
         let balance = wallet.balance();
         println!("Wallet balance before syncing: {} sats", balance.total());
     
         print!("Syncing...");
    -    let client =
    -        esplora_client::Builder::new("https://blockstream.info/testnet/api").build_blocking();
    +    let client = esplora_client::Builder::new(ESPLORA_URL).build_blocking();
     
         let request = wallet.start_full_scan().inspect_spks_for_all_keychains({
             let mut once = BTreeSet::<KeychainKind>::new();
             move |keychain, spk_i, _| {
    -            match once.insert(keychain) {
    -                true => print!("\nScanning keychain [{:?}]", keychain),
    -                false => print!(" {:<3}", spk_i),
    -            };
    +            if once.insert(keychain) {
    +                print!("\nScanning keychain [{:?}] ", keychain);
    +            }
    +            print!(" {:<3}", spk_i);
                 std::io::stdout().flush().expect("must flush")
             }
         });
    @@ -164,12 +171,9 @@
             std::process::exit(0);
         }
     
    -    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    -        .require_network(Network::Testnet)?;
    -
         let mut tx_builder = wallet.build_tx();
         tx_builder
    -        .add_recipient(faucet_address.script_pubkey(), SEND_AMOUNT)
    +        .add_recipient(address.script_pubkey(), SEND_AMOUNT)
             .enable_rbf();
     
         let mut psbt = tx_builder.finish()?;
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html
    index c3d34f5b0b..28707b6059 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html
    @@ -186,18 +186,14 @@
     186
     187
     188
    -189
    -190
    -191
    -192
     
    use bdk_bitcoind_rpc::{
         bitcoincore_rpc::{Auth, Client, RpcApi},
         Emitter,
     };
    -use bdk_file_store::Store;
     use bdk_wallet::{
         bitcoin::{Block, Network, Transaction},
    -    wallet::Wallet,
    +    file_store::Store,
    +    Wallet,
     };
     use clap::{self, Parser};
     use std::{path::PathBuf, sync::mpsc::sync_channel, thread::spawn, time::Instant};
    @@ -278,18 +274,18 @@
         );
     
         let start_load_wallet = Instant::now();
    -    let mut db = Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(
    -        DB_MAGIC.as_bytes(),
    -        args.db_path,
    -    )?;
    -    let changeset = db.aggregate_changesets()?;
    -
    -    let mut wallet = Wallet::new_or_load(
    -        &args.descriptor,
    -        &args.change_descriptor,
    -        changeset,
    -        args.network,
    -    )?;
    +    let mut db =
    +        Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), args.db_path)?;
    +    let wallet_opt = Wallet::load()
    +        .descriptors(args.descriptor.clone(), args.change_descriptor.clone())
    +        .network(args.network)
    +        .load_wallet(&mut db)?;
    +    let mut wallet = match wallet_opt {
    +        Some(wallet) => wallet,
    +        None => Wallet::create(args.descriptor, args.change_descriptor)
    +            .network(args.network)
    +            .create_wallet(&mut db)?,
    +    };
         println!(
             "Loaded wallet in {}s",
             start_load_wallet.elapsed().as_secs_f32()
    @@ -338,9 +334,7 @@
                     let connected_to = block_emission.connected_to();
                     let start_apply_block = Instant::now();
                     wallet.apply_block_connected_to(&block_emission.block, height, connected_to)?;
    -                if let Some(changeset) = wallet.take_staged() {
    -                    db.append_changeset(&changeset)?;
    -                }
    +                wallet.persist(&mut db)?;
                     let elapsed = start_apply_block.elapsed().as_secs_f32();
                     println!(
                         "Applied block {} at height {} in {}s",
    @@ -350,9 +344,7 @@
                 Emission::Mempool(mempool_emission) => {
                     let start_apply_mempool = Instant::now();
                     wallet.apply_unconfirmed_txs(mempool_emission.iter().map(|(tx, time)| (tx, *time)));
    -                if let Some(changeset) = wallet.take_staged() {
    -                    db.append_changeset(&changeset)?;
    -                }
    +                wallet.persist(&mut db)?;
                     println!(
                         "Applied unconfirmed transactions in {}s",
                         start_apply_mempool.elapsed().as_secs_f32()
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/persist/trait.PersistWith.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/persist/trait.PersistWith.js
    new file mode 100644
    index 0000000000..f6b21a7527
    --- /dev/null
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/persist/trait.PersistWith.js
    @@ -0,0 +1,3 @@
    +(function() {var implementors = {
    +"bdk_wallet":[["impl PersistWith<Connection> for Wallet"],["impl PersistWith<Store<ChangeSet>> for Wallet"],["impl<'c> PersistWith<Transaction<'c>> for Wallet"]]
    +};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/trait.impl/bdk_chain/persist/trait.Staged.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/persist/trait.Staged.js
    new file mode 100644
    index 0000000000..16e5aea7d6
    --- /dev/null
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/persist/trait.Staged.js
    @@ -0,0 +1,3 @@
    +(function() {var implementors = {
    +"bdk_wallet":[["impl Staged for Wallet"]]
    +};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/trait.impl/bdk_chain/tx_data_traits/trait.Merge.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Merge.js
    index 1a8211de1a..3f4352797d 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Merge.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Merge.js
    @@ -1,3 +1,4 @@
     (function() {var implementors = {
    -"bdk_chain":[]
    +"bdk_chain":[],
    +"bdk_wallet":[["impl Merge for ChangeSet"]]
     };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/trait.impl/core/clone/trait.Clone.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js
    index 5b6bb4d4d9..ff58031771 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js
    @@ -1,8 +1,8 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl Clone for ConfirmationTime"],["impl Clone for ApplyHeaderError"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for Balance"],["impl Clone for BlockId"],["impl Clone for ConfirmationBlockTime"],["impl Clone for DescriptorId"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<D: Clone> Clone for SpkIterator<D>"],["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<K: Clone> Clone for InsertDescriptorError<K>"],["impl<K: Clone> Clone for ChangeSet<K>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"],["impl<K: Clone> Clone for NoSuchKeychain<K>"],["impl<K: Clone, A: Clone> Clone for CombinedChangeSet<K, A>"]],
    +"bdk_chain":[["impl Clone for ConfirmationTime"],["impl Clone for ApplyHeaderError"],["impl Clone for ChangeSet"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for ChangeSet"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for Balance"],["impl Clone for BlockId"],["impl Clone for ConfirmationBlockTime"],["impl Clone for DescriptorId"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<D: Clone> Clone for SpkIterator<D>"],["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<K: Clone> Clone for InsertDescriptorError<K>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"]],
     "bdk_coin_select":[["impl Clone for ExcessStrategyKind"],["impl Clone for SelectionConstraint"],["impl Clone for CoinSelectorOpt"],["impl Clone for ExcessStrategy"],["impl Clone for Selection"],["impl Clone for SelectionError"],["impl Clone for WeightedValue"],["impl<'a> Clone for CoinSelector<'a>"]],
     "bdk_tmp_plan":[["impl Clone for SigningError"],["impl Clone for SatisfactionMaterial"],["impl<AK: Clone> Clone for Plan<AK>"],["impl<Ak: Clone> Clone for RequiredSignatures<Ak>"],["impl<Ak: Clone> Clone for PlanKey<Ak>"],["impl<Ak: Clone> Clone for Requirements<Ak>"],["impl<K: Clone> Clone for Assets<K>"]],
    -"bdk_wallet":[["impl Clone for PkOrF"],["impl Clone for Satisfaction"],["impl Clone for SatisfiableItem"],["impl Clone for KeychainKind"],["impl Clone for Utxo"],["impl Clone for ScriptContextEnum"],["impl Clone for MiniscriptPsbtError"],["impl Clone for SignerContext"],["impl Clone for SignerId"],["impl Clone for TapLeavesOptions"],["impl Clone for ChangeSpendPolicy"],["impl Clone for TxOrdering"],["impl Clone for Condition"],["impl Clone for Policy"],["impl Clone for PrivateKeyGenerateOptions"],["impl Clone for LocalOutput"],["impl Clone for WeightedUtxo"],["impl Clone for BranchAndBoundCoinSelection"],["impl Clone for LargestFirstCoinSelection"],["impl Clone for OldestFirstCoinSelection"],["impl Clone for SignOptions"],["impl Clone for SignerOrdering"],["impl Clone for SignersContainer"],["impl Clone for Update"],["impl<'a> Clone for BuildSatisfaction<'a>"],["impl<'a, Cs: Clone> Clone for TxBuilder<'a, Cs>"],["impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>"],["impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>"]],
    +"bdk_wallet":[["impl Clone for PkOrF"],["impl Clone for Satisfaction"],["impl Clone for SatisfiableItem"],["impl Clone for KeychainKind"],["impl Clone for Utxo"],["impl Clone for MiniscriptPsbtError"],["impl Clone for ScriptContextEnum"],["impl Clone for SignerContext"],["impl Clone for SignerId"],["impl Clone for TapLeavesOptions"],["impl Clone for ChangeSpendPolicy"],["impl Clone for TxOrdering"],["impl Clone for BranchAndBoundCoinSelection"],["impl Clone for LargestFirstCoinSelection"],["impl Clone for OldestFirstCoinSelection"],["impl Clone for Condition"],["impl Clone for Policy"],["impl Clone for PrivateKeyGenerateOptions"],["impl Clone for SignOptions"],["impl Clone for SignerOrdering"],["impl Clone for SignersContainer"],["impl Clone for ChangeSet"],["impl Clone for LocalOutput"],["impl Clone for Update"],["impl Clone for WeightedUtxo"],["impl<'a> Clone for BuildSatisfaction<'a>"],["impl<'a, Cs: Clone> Clone for TxBuilder<'a, Cs>"],["impl<K: Clone + DerivableKey<Legacy>> Clone for Bip44<K>"],["impl<K: Clone + DerivableKey<Legacy>> Clone for Bip44Public<K>"],["impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49<K>"],["impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49Public<K>"],["impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip84<K>"],["impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip84Public<K>"],["impl<K: Clone + DerivableKey<Tap>> Clone for Bip86<K>"],["impl<K: Clone + DerivableKey<Tap>> Clone for Bip86Public<K>"],["impl<K: Clone + IntoDescriptorKey<Legacy>> Clone for P2Pkh<K>"],["impl<K: Clone + IntoDescriptorKey<Segwitv0>> Clone for P2Wpkh<K>"],["impl<K: Clone + IntoDescriptorKey<Segwitv0>> Clone for P2Wpkh_P2Sh<K>"],["impl<K: Clone + IntoDescriptorKey<Tap>> Clone for P2TR<K>"],["impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>"],["impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>"]],
     "example_bitcoind_rpc_polling":[["impl Clone for RpcCommands"],["impl Clone for RpcArgs"]],
     "example_cli":[["impl Clone for AddressCmd"],["impl Clone for CoinSelectionAlgo"],["impl Clone for Keychain"],["impl Clone for TxOutCmd"],["impl<CS: Clone + Subcommand, S: Clone + Args> Clone for Commands<CS, S>"]],
     "example_electrum":[["impl Clone for ElectrumCommands"],["impl Clone for ElectrumArgs"],["impl Clone for ScanOptions"]],
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js
    index acf0caceaf..562161d051 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js
    @@ -1,6 +1,6 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl Eq for ConfirmationTime"],["impl Eq for CalculateFeeError"],["impl Eq for Balance"],["impl Eq for BlockId"],["impl Eq for ConfirmationBlockTime"],["impl Eq for DescriptorId"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<A: Eq> Eq for ChainPosition<A>"],["impl<A: Eq> Eq for FullTxOut<A>"],["impl<K: Eq> Eq for NoSuchKeychain<K>"]],
    +"bdk_chain":[["impl Eq for ConfirmationTime"],["impl Eq for CalculateFeeError"],["impl Eq for Balance"],["impl Eq for BlockId"],["impl Eq for ConfirmationBlockTime"],["impl Eq for DescriptorId"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<A: Eq> Eq for ChainPosition<A>"],["impl<A: Eq> Eq for FullTxOut<A>"],["impl<T: Eq> Eq for Persisted<T>"]],
     "bdk_coin_select":[["impl Eq for ExcessStrategyKind"],["impl Eq for SelectionConstraint"]],
    -"bdk_wallet":[["impl Eq for PkOrF"],["impl Eq for PolicyError"],["impl Eq for Satisfaction"],["impl Eq for SatisfiableItem"],["impl Eq for KeychainKind"],["impl Eq for Utxo"],["impl Eq for ScriptContextEnum"],["impl Eq for SignerContext"],["impl Eq for SignerId"],["impl Eq for TapLeavesOptions"],["impl Eq for ChangeSpendPolicy"],["impl Eq for Condition"],["impl Eq for Policy"],["impl Eq for LocalOutput"],["impl Eq for WeightedUtxo"],["impl Eq for SignerOrdering"],["impl Eq for AddressInfo"]],
    +"bdk_wallet":[["impl Eq for PkOrF"],["impl Eq for PolicyError"],["impl Eq for Satisfaction"],["impl Eq for SatisfiableItem"],["impl Eq for KeychainKind"],["impl Eq for Utxo"],["impl Eq for ScriptContextEnum"],["impl Eq for SignerContext"],["impl Eq for SignerId"],["impl Eq for TapLeavesOptions"],["impl Eq for ChangeSpendPolicy"],["impl Eq for Condition"],["impl Eq for Policy"],["impl Eq for SignerOrdering"],["impl Eq for AddressInfo"],["impl Eq for LocalOutput"],["impl Eq for WeightedUtxo"]],
     "example_cli":[["impl Eq for Keychain"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js
    index 310908560f..ed50eb9cd6 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js
    @@ -1,6 +1,6 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationBlockTime"],["impl Ord for DescriptorId"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<A: Ord> Ord for ChainPosition<A>"],["impl<A: Ord> Ord for FullTxOut<A>"]],
    +"bdk_chain":[["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationBlockTime"],["impl Ord for DescriptorId"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<A: Ord> Ord for ChainPosition<A>"],["impl<A: Ord> Ord for FullTxOut<A>"],["impl<T: Ord> Ord for Persisted<T>"]],
     "bdk_coin_select":[["impl Ord for ExcessStrategyKind"]],
    -"bdk_wallet":[["impl Ord for KeychainKind"],["impl Ord for SignerId"],["impl Ord for ChangeSpendPolicy"],["impl Ord for SignerOrdering"]],
    +"bdk_wallet":[["impl Ord for KeychainKind"],["impl Ord for SignerId"],["impl Ord for ChangeSpendPolicy"],["impl Ord for SignerOrdering"]],
     "example_cli":[["impl Ord for Keychain"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js
    index 198b93f237..948f3c640c 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js
    @@ -1,7 +1,7 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl PartialEq for ConfirmationTime"],["impl PartialEq for ApplyHeaderError"],["impl PartialEq for CalculateFeeError"],["impl PartialEq for AlterCheckPointError"],["impl PartialEq for CannotConnectError"],["impl PartialEq for CheckPoint"],["impl PartialEq for LocalChain"],["impl PartialEq for MissingGenesisError"],["impl PartialEq for Balance"],["impl PartialEq for BlockId"],["impl PartialEq for ConfirmationBlockTime"],["impl PartialEq for DescriptorId"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for TxNode<'a, T, A>"],["impl<A: PartialEq> PartialEq for ChainPosition<A>"],["impl<A: PartialEq> PartialEq for FullTxOut<A>"],["impl<A: PartialEq> PartialEq for ChangeSet<A>"],["impl<A: PartialEq> PartialEq for TxGraph<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq for InsertDescriptorError<K>"],["impl<K: PartialEq> PartialEq for ChangeSet<K>"],["impl<K: PartialEq> PartialEq for NoSuchKeychain<K>"],["impl<K: PartialEq, A: PartialEq> PartialEq for CombinedChangeSet<K, A>"]],
    +"bdk_chain":[["impl PartialEq for ConfirmationTime"],["impl PartialEq for ApplyHeaderError"],["impl PartialEq for CalculateFeeError"],["impl PartialEq for ChangeSet"],["impl PartialEq for AlterCheckPointError"],["impl PartialEq for CannotConnectError"],["impl PartialEq for ChangeSet"],["impl PartialEq for CheckPoint"],["impl PartialEq for LocalChain"],["impl PartialEq for MissingGenesisError"],["impl PartialEq for Balance"],["impl PartialEq for BlockId"],["impl PartialEq for ConfirmationBlockTime"],["impl PartialEq for DescriptorId"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for TxNode<'a, T, A>"],["impl<A: PartialEq> PartialEq for ChainPosition<A>"],["impl<A: PartialEq> PartialEq for FullTxOut<A>"],["impl<A: PartialEq> PartialEq for ChangeSet<A>"],["impl<A: PartialEq> PartialEq for TxGraph<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq for InsertDescriptorError<K>"],["impl<T: PartialEq> PartialEq for Persisted<T>"]],
     "bdk_coin_select":[["impl PartialEq for ExcessStrategyKind"],["impl PartialEq for SelectionConstraint"]],
    -"bdk_wallet":[["impl PartialEq for PkOrF"],["impl PartialEq for PolicyError"],["impl PartialEq for Satisfaction"],["impl PartialEq for SatisfiableItem"],["impl PartialEq for KeychainKind"],["impl PartialEq for Utxo"],["impl PartialEq for ScriptContextEnum"],["impl PartialEq for SignerContext"],["impl PartialEq for SignerId"],["impl PartialEq for TapLeavesOptions"],["impl PartialEq for ChangeSpendPolicy"],["impl PartialEq for Condition"],["impl PartialEq for Policy"],["impl PartialEq for LocalOutput"],["impl PartialEq for WeightedUtxo"],["impl PartialEq for SignerOrdering"],["impl PartialEq for AddressInfo"]],
    +"bdk_wallet":[["impl PartialEq for Error"],["impl PartialEq for PkOrF"],["impl PartialEq for PolicyError"],["impl PartialEq for Satisfaction"],["impl PartialEq for SatisfiableItem"],["impl PartialEq for KeychainKind"],["impl PartialEq for LoadError"],["impl PartialEq for LoadMismatch"],["impl PartialEq for Utxo"],["impl PartialEq for KeyError"],["impl PartialEq for ScriptContextEnum"],["impl PartialEq for SignerContext"],["impl PartialEq for SignerId"],["impl PartialEq for TapLeavesOptions"],["impl PartialEq for ChangeSpendPolicy"],["impl PartialEq for Condition"],["impl PartialEq for Policy"],["impl PartialEq for SignerOrdering"],["impl PartialEq for AddressInfo"],["impl PartialEq for ChangeSet"],["impl PartialEq for LocalOutput"],["impl PartialEq for WeightedUtxo"],["impl<E: PartialEq> PartialEq for LoadWithPersistError<E>"]],
     "example_cli":[["impl PartialEq for Keychain"]],
     "example_electrum":[["impl PartialEq for ScanOptions"]],
     "example_esplora":[["impl PartialEq for ScanOptions"]]
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js
    index 67301126ba..228607af84 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js
    @@ -1,6 +1,6 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl PartialOrd for ConfirmationTime"],["impl PartialOrd for BlockId"],["impl PartialOrd for ConfirmationBlockTime"],["impl PartialOrd for DescriptorId"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for TxNode<'a, T, A>"],["impl<A: PartialOrd> PartialOrd for ChainPosition<A>"],["impl<A: PartialOrd> PartialOrd for FullTxOut<A>"]],
    +"bdk_chain":[["impl PartialOrd for ConfirmationTime"],["impl PartialOrd for BlockId"],["impl PartialOrd for ConfirmationBlockTime"],["impl PartialOrd for DescriptorId"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for TxNode<'a, T, A>"],["impl<A: PartialOrd> PartialOrd for ChainPosition<A>"],["impl<A: PartialOrd> PartialOrd for FullTxOut<A>"],["impl<T: PartialOrd> PartialOrd for Persisted<T>"]],
     "bdk_coin_select":[["impl PartialOrd for ExcessStrategyKind"]],
    -"bdk_wallet":[["impl PartialOrd for KeychainKind"],["impl PartialOrd for SignerId"],["impl PartialOrd for ChangeSpendPolicy"],["impl PartialOrd for Condition"],["impl PartialOrd for SignerOrdering"]],
    +"bdk_wallet":[["impl PartialOrd for KeychainKind"],["impl PartialOrd for SignerId"],["impl PartialOrd for ChangeSpendPolicy"],["impl PartialOrd for Condition"],["impl PartialOrd for SignerOrdering"]],
     "example_cli":[["impl PartialOrd for Keychain"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js
    index 6c7adc9577..a54eb9a2cf 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js
    @@ -1,4 +1,4 @@
     (function() {var implementors = {
     "bdk_chain":[["impl AsRef<[u8; 32]> for DescriptorId"],["impl AsRef<[u8]> for DescriptorId"],["impl<A> AsRef<TxGraph<A>> for TxGraph<A>"],["impl<A, I> AsRef<TxGraph<A>> for IndexedTxGraph<A, I>"]],
    -"bdk_wallet":[["impl AsRef<TxGraph<ConfirmationBlockTime>> for Wallet"],["impl AsRef<[u8]> for KeychainKind"]]
    +"bdk_wallet":[["impl AsRef<TxGraph<ConfirmationBlockTime>> for Wallet"],["impl AsRef<[u8]> for KeychainKind"]]
     };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/trait.impl/core/convert/trait.From.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js
    index 0186c54fc8..b82c378234 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js
    @@ -1,8 +1,8 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl From<(&u32, &BlockHash)> for BlockId"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<ChainPosition<ConfirmationBlockTime>> for ConfirmationTime"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<DescriptorId> for Hash"],["impl From<Hash> for DescriptorId"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>"],["impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>"],["impl<K, A> From<ChangeSet<K>> for CombinedChangeSet<K, A>"],["impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>"]],
    +"bdk_chain":[["impl From<(&u32, &BlockHash)> for BlockId"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<ChainPosition<ConfirmationBlockTime>> for ConfirmationTime"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<DescriptorId> for Hash"],["impl From<Hash> for DescriptorId"],["impl<A> From<ChangeSet> for ChangeSet<A, ChangeSet>"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<B: IntoIterator<Item = (u32, Option<BlockHash>)>> From<B> for ChangeSet"],["impl<T> From<T> for Impl<T>"]],
     "bdk_coin_select":[["impl From<usize> for BnbLimit"],["impl From<Duration> for BnbLimit"]],
     "bdk_file_store":[["impl From<Error> for FileError"],["impl From<Error> for IterError"]],
     "bdk_tmp_plan":[["impl From<Error> for SigningError"],["impl From<P2wpkhError> for SigningError"],["impl From<TaprootError> for SigningError"]],
    -"bdk_wallet":[["impl From<Error> for CreateTxError"],["impl From<PolicyError> for Error"],["impl From<PolicyError> for CreateTxError"],["impl From<SatisfiableItem> for Policy"],["impl From<KeyError> for Error"],["impl From<Error> for CreateTxError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<bool> for Satisfaction"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Error> for CreateTxError"],["impl From<Fingerprint> for SignerId"],["impl From<FullScanResult<KeychainKind>> for Update"],["impl From<Hash> for SignerId"],["impl From<HexToBytesError> for Error"],["impl From<ParsePublicKeyError> for Error"],["impl From<SyncResult> for Update"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"]],
    +"bdk_wallet":[["impl From<Error> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<PolicyError> for Error"],["impl From<PolicyError> for CreateTxError"],["impl From<SatisfiableItem> for Policy"],["impl From<LoadMismatch> for LoadError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<KeyError> for Error"],["impl From<bool> for Satisfaction"],["impl From<ChangeSet> for ChangeSet"],["impl From<ChangeSet> for ChangeSet"],["impl From<ChangeSet<ConfirmationBlockTime>> for ChangeSet"],["impl From<ChangeSet<ConfirmationBlockTime, ChangeSet>> for ChangeSet"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for CreateTxError"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Fingerprint> for SignerId"],["impl From<FullScanResult<KeychainKind>> for Update"],["impl From<Hash> for SignerId"],["impl From<HexToBytesError> for Error"],["impl From<ParsePublicKeyError> for Error"],["impl From<SyncResult> for Update"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"],["impl<E> From<LoadMismatch> for LoadWithPersistError<E>"]],
     "example_bitcoind_rpc_polling":[["impl From<RpcArgs> for Auth"]]
     };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/trait.impl/core/default/trait.Default.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js
    index 56ee04797f..abfde97dd9 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js
    @@ -1,6 +1,6 @@
     (function() {var implementors = {
    -"bdk_chain":[["impl Default for Balance"],["impl Default for BlockId"],["impl Default for ConfirmationBlockTime"],["impl<A> Default for ChangeSet<A>"],["impl<A> Default for TxGraph<A>"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<I> Default for SpkTxOutIndex<I>"],["impl<K> Default for ChangeSet<K>"],["impl<K> Default for KeychainTxOutIndex<K>"],["impl<K, A> Default for CombinedChangeSet<K, A>"]],
    +"bdk_chain":[["impl Default for ChangeSet"],["impl Default for ChangeSet"],["impl Default for Balance"],["impl Default for BlockId"],["impl Default for ConfirmationBlockTime"],["impl<A> Default for ChangeSet<A>"],["impl<A> Default for TxGraph<A>"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<I> Default for SpkTxOutIndex<I>"],["impl<K> Default for KeychainTxOutIndex<K>"]],
     "bdk_tmp_plan":[["impl Default for SatisfactionMaterial"],["impl<Ak> Default for RequiredSignatures<Ak>"],["impl<Ak> Default for Requirements<Ak>"],["impl<K> Default for Assets<K>"]],
    -"bdk_wallet":[["impl Default for TapLeavesOptions"],["impl Default for ChangeSpendPolicy"],["impl Default for TxOrdering"],["impl Default for Condition"],["impl Default for PrivateKeyGenerateOptions"],["impl Default for BranchAndBoundCoinSelection"],["impl Default for LargestFirstCoinSelection"],["impl Default for OldestFirstCoinSelection"],["impl Default for SignOptions"],["impl Default for SignerOrdering"],["impl Default for SignersContainer"],["impl Default for Update"]],
    +"bdk_wallet":[["impl Default for TapLeavesOptions"],["impl Default for ChangeSpendPolicy"],["impl Default for TxOrdering"],["impl Default for BranchAndBoundCoinSelection"],["impl Default for LargestFirstCoinSelection"],["impl Default for OldestFirstCoinSelection"],["impl Default for Condition"],["impl Default for PrivateKeyGenerateOptions"],["impl Default for SignOptions"],["impl Default for SignerOrdering"],["impl Default for SignersContainer"],["impl Default for ChangeSet"],["impl Default for LoadParams"],["impl Default for Update"]],
     "example_cli":[["impl Default for CoinSelectionAlgo"]]
     };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
    \ No newline at end of file
    diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js
    index 8d4f54496f..b9a4186f78 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js
    @@ -2,7 +2,6 @@
     "bdk_chain":[["impl Error for ApplyHeaderError"],["impl Error for CalculateFeeError"],["impl Error for AlterCheckPointError"],["impl Error for CannotConnectError"],["impl Error for MissingGenesisError"],["impl<K: Debug> Error for InsertDescriptorError<K>"]],
     "bdk_coin_select":[["impl Error for SelectionError"]],
     "bdk_file_store":[["impl Error for FileError"],["impl Error for IterError"],["impl<C: Debug> Error for AggregateChangesetsError<C>"]],
    -"bdk_sqlite":[["impl Error for Error"]],
     "bdk_tmp_plan":[["impl Error for SigningError"]],
    -"bdk_wallet":[["impl Error for Error"],["impl Error for PolicyError"],["impl Error for KeyError"],["impl Error for Error"],["impl Error for ApplyBlockError"],["impl Error for LoadError"],["impl Error for NewError"],["impl Error for NewOrLoadError"],["impl Error for BuildFeeBumpError"],["impl Error for CreateTxError"],["impl Error for MiniscriptPsbtError"],["impl Error for SignerError"],["impl Error for AddForeignUtxoError"],["impl Error for AddUtxoError"]]
    +"bdk_wallet":[["impl Error for Error"],["impl Error for Error"],["impl Error for PolicyError"],["impl Error for ApplyBlockError"],["impl Error for LoadError"],["impl Error for BuildFeeBumpError"],["impl Error for CreateTxError"],["impl Error for MiniscriptPsbtError"],["impl Error for KeyError"],["impl Error for SignerError"],["impl Error for AddForeignUtxoError"],["impl Error for AddUtxoError"],["impl<E: Debug + Display> Error for CreateWithPersistError<E>"],["impl<E: Debug + Display> Error for LoadWithPersistError<E>"]]
     };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/trait.impl/core/fmt/trait.Debug.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js
    index f95b2bf35f..c4034f76f3 100644
    --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js
    +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js
    @@ -1,13 +1,12 @@
     (function() {var implementors = {
     "bdk_bitcoind_rpc":[["impl<B: Debug> Debug for BlockEvent<B>"]],
    -"bdk_chain":[["impl Debug for ConfirmationTime"],["impl Debug for ApplyHeaderError"],["impl Debug for CalculateFeeError"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for Balance"],["impl Debug for BlockId"],["impl Debug for ConfirmationBlockTime"],["impl Debug for DescriptorId"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug> Debug for ChangeSet<A>"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<K: Debug> Debug for InsertDescriptorError<K>"],["impl<K: Debug> Debug for ChangeSet<K>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"],["impl<K: Debug> Debug for NoSuchKeychain<K>"],["impl<K: Debug, A: Debug> Debug for CombinedChangeSet<K, A>"]],
    +"bdk_chain":[["impl Debug for ConfirmationTime"],["impl Debug for ApplyHeaderError"],["impl Debug for CalculateFeeError"],["impl Debug for ChangeSet"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for ChangeSet"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for Balance"],["impl Debug for BlockId"],["impl Debug for ConfirmationBlockTime"],["impl Debug for DescriptorId"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug> Debug for ChangeSet<A>"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<K: Debug> Debug for InsertDescriptorError<K>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"],["impl<T: Debug> Debug for Persisted<T>"]],
     "bdk_coin_select":[["impl Debug for ExcessStrategyKind"],["impl Debug for SelectionConstraint"],["impl Debug for CoinSelectorOpt"],["impl Debug for ExcessStrategy"],["impl Debug for Selection"],["impl Debug for SelectionError"],["impl Debug for WeightedValue"],["impl<'a> Debug for CoinSelector<'a>"]],
     "bdk_electrum":[["impl<E: Debug> Debug for BdkElectrumClient<E>"]],
     "bdk_file_store":[["impl Debug for FileError"],["impl Debug for IterError"],["impl<C> Debug for Store<C>
    where\n C: Sync + Send + Debug,
    "],["impl<C: Debug> Debug for AggregateChangesetsError<C>"]], "bdk_hwi":[["impl Debug for HWISigner"]], -"bdk_sqlite":[["impl Debug for Error"],["impl<K, A> Debug for Store<K, A>"]], "bdk_tmp_plan":[["impl Debug for SigningError"],["impl Debug for SatisfactionMaterial"],["impl<AK: Debug> Debug for Plan<AK>"],["impl<Ak: Debug> Debug for RequiredSignatures<Ak>"],["impl<Ak: Debug> Debug for PlanKey<Ak>"],["impl<Ak: Debug> Debug for Requirements<Ak>"],["impl<K: Debug> Debug for Assets<K>"]], -"bdk_wallet":[["impl Debug for Error"],["impl Debug for PkOrF"],["impl Debug for PolicyError"],["impl Debug for Satisfaction"],["impl Debug for SatisfiableItem"],["impl Debug for KeychainKind"],["impl Debug for Utxo"],["impl Debug for KeyError"],["impl Debug for ScriptContextEnum"],["impl Debug for Error"],["impl Debug for Excess"],["impl Debug for ApplyBlockError"],["impl Debug for LoadError"],["impl Debug for NewError"],["impl Debug for NewOrLoadError"],["impl Debug for BuildFeeBumpError"],["impl Debug for CreateTxError"],["impl Debug for MiniscriptPsbtError"],["impl Debug for SignerContext"],["impl Debug for SignerError"],["impl Debug for SignerId"],["impl Debug for TapLeavesOptions"],["impl Debug for AddForeignUtxoError"],["impl Debug for AddUtxoError"],["impl Debug for ChangeSpendPolicy"],["impl Debug for TxOrdering"],["impl Debug for Condition"],["impl Debug for Policy"],["impl Debug for PrivateKeyGenerateOptions"],["impl Debug for LocalOutput"],["impl Debug for WeightedUtxo"],["impl Debug for BranchAndBoundCoinSelection"],["impl Debug for CoinSelectionResult"],["impl Debug for LargestFirstCoinSelection"],["impl Debug for OldestFirstCoinSelection"],["impl Debug for FullyNodedExport"],["impl Debug for SignOptions"],["impl Debug for SignerOrdering"],["impl Debug for SignersContainer"],["impl Debug for AddressInfo"],["impl Debug for Update"],["impl Debug for Wallet"],["impl<'a> Debug for BuildSatisfaction<'a>"],["impl<'a, Cs: Debug> Debug for TxBuilder<'a, Cs>"],["impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>"],["impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>"]], +"bdk_wallet":[["impl Debug for Error"],["impl Debug for Excess"],["impl Debug for Error"],["impl Debug for PkOrF"],["impl Debug for PolicyError"],["impl Debug for Satisfaction"],["impl Debug for SatisfiableItem"],["impl Debug for ApplyBlockError"],["impl Debug for KeychainKind"],["impl Debug for LoadError"],["impl Debug for LoadMismatch"],["impl Debug for Utxo"],["impl Debug for BuildFeeBumpError"],["impl Debug for CreateTxError"],["impl Debug for MiniscriptPsbtError"],["impl Debug for KeyError"],["impl Debug for ScriptContextEnum"],["impl Debug for SignerContext"],["impl Debug for SignerError"],["impl Debug for SignerId"],["impl Debug for TapLeavesOptions"],["impl Debug for AddForeignUtxoError"],["impl Debug for AddUtxoError"],["impl Debug for ChangeSpendPolicy"],["impl Debug for TxOrdering"],["impl Debug for BranchAndBoundCoinSelection"],["impl Debug for CoinSelectionResult"],["impl Debug for LargestFirstCoinSelection"],["impl Debug for OldestFirstCoinSelection"],["impl Debug for Condition"],["impl Debug for Policy"],["impl Debug for FullyNodedExport"],["impl Debug for PrivateKeyGenerateOptions"],["impl Debug for SignOptions"],["impl Debug for SignerOrdering"],["impl Debug for SignersContainer"],["impl Debug for AddressInfo"],["impl Debug for ChangeSet"],["impl Debug for LocalOutput"],["impl Debug for Update"],["impl Debug for Wallet"],["impl Debug for WeightedUtxo"],["impl<'a> Debug for BuildSatisfaction<'a>"],["impl<'a, Cs: Debug> Debug for TxBuilder<'a, Cs>"],["impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>"],["impl<E: Debug> Debug for CreateWithPersistError<E>"],["impl<E: Debug> Debug for LoadWithPersistError<E>"],["impl<K: Debug + DerivableKey<Legacy>> Debug for Bip44<K>"],["impl<K: Debug + DerivableKey<Legacy>> Debug for Bip44Public<K>"],["impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49<K>"],["impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49Public<K>"],["impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip84<K>"],["impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip84Public<K>"],["impl<K: Debug + DerivableKey<Tap>> Debug for Bip86<K>"],["impl<K: Debug + DerivableKey<Tap>> Debug for Bip86Public<K>"],["impl<K: Debug + IntoDescriptorKey<Legacy>> Debug for P2Pkh<K>"],["impl<K: Debug + IntoDescriptorKey<Segwitv0>> Debug for P2Wpkh<K>"],["impl<K: Debug + IntoDescriptorKey<Segwitv0>> Debug for P2Wpkh_P2Sh<K>"],["impl<K: Debug + IntoDescriptorKey<Tap>> Debug for P2TR<K>"],["impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>"]], "example_bitcoind_rpc_polling":[["impl Debug for Emission"],["impl Debug for RpcCommands"],["impl Debug for RpcArgs"]], "example_cli":[["impl Debug for AddressCmd"],["impl Debug for CoinSelectionAlgo"],["impl Debug for Keychain"],["impl Debug for TxOutCmd"],["impl<CS: Debug + Subcommand, S: Debug + Args> Debug for Commands<CS, S>"]], "example_electrum":[["impl Debug for ElectrumCommands"],["impl Debug for ElectrumArgs"],["impl Debug for ScanOptions"]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js index 5e1499476f..1f086e063a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js @@ -1,9 +1,8 @@ (function() {var implementors = { -"bdk_chain":[["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for MissingGenesisError"],["impl Display for Balance"],["impl Display for DescriptorId"],["impl<K: Debug> Display for InsertDescriptorError<K>"],["impl<K: Debug> Display for NoSuchKeychain<K>"]], +"bdk_chain":[["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for MissingGenesisError"],["impl Display for Balance"],["impl Display for DescriptorId"],["impl<K: Debug> Display for InsertDescriptorError<K>"]], "bdk_coin_select":[["impl Display for ExcessStrategyKind"],["impl Display for SelectionConstraint"],["impl Display for SelectionError"]], "bdk_file_store":[["impl Display for FileError"],["impl Display for IterError"],["impl<C> Display for AggregateChangesetsError<C>"]], -"bdk_sqlite":[["impl Display for Error"]], "bdk_tmp_plan":[["impl Display for SigningError"]], -"bdk_wallet":[["impl Display for Error"],["impl Display for PolicyError"],["impl Display for KeyError"],["impl Display for Error"],["impl Display for ApplyBlockError"],["impl Display for LoadError"],["impl Display for NewError"],["impl Display for NewOrLoadError"],["impl Display for BuildFeeBumpError"],["impl Display for CreateTxError"],["impl Display for MiniscriptPsbtError"],["impl Display for SignerError"],["impl Display for AddForeignUtxoError"],["impl Display for AddUtxoError"],["impl Display for FullyNodedExport"],["impl Display for AddressInfo"]], +"bdk_wallet":[["impl Display for Error"],["impl Display for Error"],["impl Display for PolicyError"],["impl Display for ApplyBlockError"],["impl Display for LoadError"],["impl Display for BuildFeeBumpError"],["impl Display for CreateTxError"],["impl Display for MiniscriptPsbtError"],["impl Display for KeyError"],["impl Display for SignerError"],["impl Display for AddForeignUtxoError"],["impl Display for AddUtxoError"],["impl Display for FullyNodedExport"],["impl Display for AddressInfo"],["impl<E: Display> Display for CreateWithPersistError<E>"],["impl<E: Display> Display for LoadWithPersistError<E>"]], "example_cli":[["impl Display for CoinSelectionAlgo"],["impl Display for Keychain"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js index d7e5f1eed3..a5047dc604 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js @@ -1,5 +1,5 @@ (function() {var implementors = { "bdk_chain":[["impl Hash for ConfirmationTime"],["impl Hash for BlockId"],["impl Hash for ConfirmationBlockTime"],["impl Hash for DescriptorId"],["impl<A: Hash> Hash for ChainPosition<A>"]], "bdk_coin_select":[["impl Hash for ExcessStrategyKind"]], -"bdk_wallet":[["impl Hash for PkOrF"],["impl Hash for KeychainKind"],["impl Hash for SignerId"],["impl Hash for ChangeSpendPolicy"],["impl Hash for Condition"],["impl Hash for LocalOutput"]] +"bdk_wallet":[["impl Hash for PkOrF"],["impl Hash for KeychainKind"],["impl Hash for SignerId"],["impl Hash for ChangeSpendPolicy"],["impl Hash for Condition"],["impl Hash for LocalOutput"]] };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/trait.impl/core/iter/traits/collect/trait.FromIterator.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/collect/trait.FromIterator.js new file mode 100644 index 0000000000..0f1f6f02ab --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/collect/trait.FromIterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl FromIterator<(u32, Option<BlockHash>)> for ChangeSet"],["impl FromIterator<(u32, BlockHash)> for ChangeSet"]] +};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/trait.impl/core/marker/trait.Copy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js index 09bfb973bd..5a886c3ddd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js @@ -1,6 +1,6 @@ (function() {var implementors = { "bdk_chain":[["impl Copy for ConfirmationTime"],["impl Copy for BlockId"],["impl Copy for ConfirmationBlockTime"],["impl Copy for DescriptorId"],["impl<A: Copy> Copy for ChainPosition<A>"]], "bdk_coin_select":[["impl Copy for ExcessStrategyKind"],["impl Copy for SelectionConstraint"],["impl Copy for CoinSelectorOpt"],["impl Copy for ExcessStrategy"],["impl Copy for WeightedValue"]], -"bdk_wallet":[["impl Copy for KeychainKind"],["impl Copy for ScriptContextEnum"],["impl Copy for SignerContext"],["impl Copy for ChangeSpendPolicy"],["impl Copy for Condition"],["impl Copy for PrivateKeyGenerateOptions"],["impl Copy for LargestFirstCoinSelection"],["impl Copy for OldestFirstCoinSelection"],["impl<'a> Copy for BuildSatisfaction<'a>"]], +"bdk_wallet":[["impl Copy for KeychainKind"],["impl Copy for ScriptContextEnum"],["impl Copy for SignerContext"],["impl Copy for ChangeSpendPolicy"],["impl Copy for LargestFirstCoinSelection"],["impl Copy for OldestFirstCoinSelection"],["impl Copy for Condition"],["impl Copy for PrivateKeyGenerateOptions"],["impl<'a> Copy for BuildSatisfaction<'a>"]], "example_cli":[["impl Copy for Keychain"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js index c27453e66d..9894c30452 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> Freeze for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Freeze for BlockEvent<B>
    where\n B: Freeze,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Freeze for Balance",1,["bdk_chain::balance::Balance"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Freeze for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Freeze for ChainPosition<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Freeze for FullTxOut<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>
    where\n I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>
    where\n IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Freeze for SpkIterator<D>
    where\n D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !Freeze for InsertDescriptorError<K>",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Freeze for ChangeSet<K>",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Freeze for NoSuchKeychain<K>
    where\n K: Freeze,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Freeze for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> Freeze for CombinedChangeSet<K, A>",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Freeze for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Freeze for Balance",1,["bdk_chain::balance::Balance"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Freeze for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Freeze for ChainPosition<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Freeze for FullTxOut<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>
    where\n I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>
    where\n IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Freeze for SpkIterator<D>
    where\n D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !Freeze for InsertDescriptorError<K>",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Freeze for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> Freeze for Impl<T>
    where\n T: Freeze,
    ",1,["bdk_chain::Impl"]],["impl<T> Freeze for Persisted<T>
    where\n T: Freeze,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl Freeze for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Freeze for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Freeze for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Freeze for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Freeze for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Freeze for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Freeze for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Freeze for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Freeze for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Freeze for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> Freeze for BnbIter<'c, 'f, S>
    where\n S: Freeze,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Freeze for Bnb<'c, S>
    where\n S: Freeze,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> !Freeze for BdkElectrumClient<E>",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl Freeze for FileError",1,["bdk_file_store::FileError"]],["impl Freeze for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Freeze for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Freeze for AggregateChangesetsError<C>
    where\n C: Freeze,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Freeze for Store<C>",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl Freeze for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl Freeze for Error",1,["bdk_sqlite::Error"]],["impl<K, A> !Freeze for Store<K, A>",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl !Freeze for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl Freeze for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Freeze for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> !Freeze for Plan<AK>",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Freeze for PlanState<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Freeze for RequiredSignatures<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Freeze for PlanKey<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Freeze for Requirements<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Freeze for Assets<K>",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl !Freeze for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Freeze for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Freeze for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Freeze for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Freeze for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Freeze for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Freeze for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Freeze for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Freeze for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Freeze for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Freeze for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Freeze for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Freeze for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Freeze for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Freeze for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Freeze for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Freeze for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Freeze for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Freeze for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Freeze for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Freeze for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Freeze for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Freeze for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Freeze for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Freeze for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Freeze for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Freeze for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Freeze for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Freeze for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Freeze for Update",1,["bdk_wallet::wallet::Update"]],["impl Freeze for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> Freeze for TxBuilder<'a, Cs>
    where\n Cs: Freeze,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Freeze for Bip44<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Freeze for P2Pkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2TR<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Freeze for P2Wpkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where\n K: Freeze,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Freeze for SignerWrapper<S>
    where\n S: Freeze,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl !Freeze for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl !Freeze for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl !Freeze for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl !Freeze for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Freeze for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Freeze for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Freeze for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Freeze for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Freeze for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Freeze for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Freeze for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Freeze for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Freeze for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Freeze for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Freeze for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Freeze for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Freeze for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Freeze for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Freeze for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Freeze for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Freeze for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Freeze for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Freeze for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Freeze for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Freeze for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Freeze for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Freeze for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Freeze for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Freeze for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl Freeze for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl Freeze for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Freeze for Update",1,["bdk_wallet::wallet::Update"]],["impl Freeze for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> Freeze for TxBuilder<'a, Cs>
    where\n Cs: Freeze,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> !Freeze for LoadWithPersistError<E>",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<E> Freeze for CreateWithPersistError<E>
    where\n E: Freeze,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<K> Freeze for Bip44<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Freeze for P2Pkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2TR<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Freeze for P2Wpkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where\n K: Freeze,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Freeze for SignerWrapper<S>
    where\n S: Freeze,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl Freeze for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Freeze for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Freeze for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl Freeze for AddressCmd",1,["example_cli::AddressCmd"]],["impl Freeze for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Freeze for Keychain",1,["example_cli::Keychain"]],["impl Freeze for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Freeze for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Freeze for Commands<CS, S>
    where\n CS: Freeze,\n S: Freeze,
    ",1,["example_cli::Commands"]],["impl<CS, S> Freeze for Args<CS, S>
    where\n CS: Freeze,\n S: Freeze,
    ",1,["example_cli::Args"]],["impl<CS, S, C> !Freeze for Init<CS, S, C>",1,["example_cli::Init"]]], "example_electrum":[["impl Freeze for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Freeze for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Freeze for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js index 7ed14a96d5..1c8e19d78f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> Send for Emitter<'c, C>
    where\n C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Send for BlockEvent<B>
    where\n B: Send,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Send for Balance",1,["bdk_chain::balance::Balance"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Send for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Send for TxNode<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Send for ChainPosition<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Send for SyncResult<A>
    where\n A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Send for FullTxOut<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Send for ChangeSet<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Send for TxGraph<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Send for IndexedTxGraph<A, I>
    where\n I: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>
    where\n IA: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Send for SpkIterator<D>
    where\n D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Send for SpkTxOutIndex<I>
    where\n I: Send,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> Send for InsertDescriptorError<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Send for ChangeSet<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> Send for KeychainTxOutIndex<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Send for NoSuchKeychain<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K> Send for FullScanRequest<K>
    where\n K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Send for FullScanResult<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> Send for CombinedChangeSet<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Send for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Send for Balance",1,["bdk_chain::balance::Balance"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Send for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Send for TxNode<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Send for ChainPosition<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Send for SyncResult<A>
    where\n A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Send for FullTxOut<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Send for ChangeSet<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Send for TxGraph<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Send for IndexedTxGraph<A, I>
    where\n I: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>
    where\n IA: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Send for SpkIterator<D>
    where\n D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Send for SpkTxOutIndex<I>
    where\n I: Send,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> Send for InsertDescriptorError<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Send for KeychainTxOutIndex<K>
    where\n K: Send,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Send for FullScanRequest<K>
    where\n K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Send for FullScanResult<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> Send for Impl<T>
    where\n T: Send,
    ",1,["bdk_chain::Impl"]],["impl<T> Send for Persisted<T>
    where\n T: Send,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl Send for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Send for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Send for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Send for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Send for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Send for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Send for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Send for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Send for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Send for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !Send for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Send for Bnb<'c, S>
    where\n S: Send,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> Send for BdkElectrumClient<E>
    where\n E: Send,
    ",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl Send for FileError",1,["bdk_file_store::FileError"]],["impl Send for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Send for EntryIter<'t, T>
    where\n T: Send,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Send for AggregateChangesetsError<C>
    where\n C: Send,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Send for Store<C>",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl Send for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl Send for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Send for Store<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl Send for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl Send for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Send for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Send for Plan<AK>
    where\n AK: Send,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Send for PlanState<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Send for RequiredSignatures<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Send for PlanKey<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Send for Requirements<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Send for Assets<K>
    where\n K: Send,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl !Send for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Send for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Send for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Send for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Send for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Send for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Send for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Send for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Send for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Send for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Send for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Send for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Send for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Send for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Send for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Send for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Send for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Send for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Send for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Send for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Send for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Send for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Send for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Send for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Send for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Send for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Send for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Send for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Send for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Send for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Send for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Send for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Send for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Send for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Send for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Send for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Send for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Send for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Send for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Send for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Send for Update",1,["bdk_wallet::wallet::Update"]],["impl Send for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl<'a> Send for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !Send for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Send for DescriptorKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Send for ExtendedKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Send for Bip44<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Send for Bip44Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Send for Bip49<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Send for Bip49Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Send for Bip84<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Send for Bip84Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Send for Bip86<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Send for Bip86Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Send for P2Pkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Send for P2TR<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Send for P2Wpkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Send for P2Wpkh_P2Sh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Send for GeneratedKey<K, Ctx>
    where\n K: Send,\n Ctx: Send,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Send for SignerWrapper<S>
    where\n S: Send,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl !Send for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !Send for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl !Send for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl Send for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Send for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Send for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Send for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Send for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Send for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Send for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Send for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Send for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Send for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Send for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl Send for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Send for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Send for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Send for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Send for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Send for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Send for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Send for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Send for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Send for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Send for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Send for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Send for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Send for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Send for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Send for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Send for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Send for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Send for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Send for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Send for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Send for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Send for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Send for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Send for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Send for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl Send for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Send for Update",1,["bdk_wallet::wallet::Update"]],["impl Send for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Send for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> Send for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !Send for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Send for DescriptorKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Send for ExtendedKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> Send for CreateWithPersistError<E>
    where\n E: Send,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<E> Send for LoadWithPersistError<E>
    where\n E: Send,
    ",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<K> Send for Bip44<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Send for Bip44Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Send for Bip49<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Send for Bip49Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Send for Bip84<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Send for Bip84Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Send for Bip86<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Send for Bip86Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Send for P2Pkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Send for P2TR<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Send for P2Wpkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Send for P2Wpkh_P2Sh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Send for GeneratedKey<K, Ctx>
    where\n K: Send,\n Ctx: Send,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Send for SignerWrapper<S>
    where\n S: Send,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl Send for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Send for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Send for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl Send for AddressCmd",1,["example_cli::AddressCmd"]],["impl Send for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Send for Keychain",1,["example_cli::Keychain"]],["impl Send for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Send for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Send for Commands<CS, S>
    where\n CS: Send,\n S: Send,
    ",1,["example_cli::Commands"]],["impl<CS, S> Send for Args<CS, S>
    where\n CS: Send,\n S: Send,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Send for Init<CS, S, C>
    where\n CS: Send,\n S: Send,
    ",1,["example_cli::Init"]]], "example_electrum":[["impl Send for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Send for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Send for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js index 018357119a..042e0e3f17 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,7 +1,7 @@ (function() {var implementors = { -"bdk_chain":[["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for ApplyHeaderError"],["impl StructuralPartialEq for CalculateFeeError"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationBlockTime"],["impl StructuralPartialEq for DescriptorId"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A> StructuralPartialEq for ChangeSet<A>"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for InsertDescriptorError<K>"],["impl<K> StructuralPartialEq for ChangeSet<K>"],["impl<K> StructuralPartialEq for NoSuchKeychain<K>"],["impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>"]], +"bdk_chain":[["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for ApplyHeaderError"],["impl StructuralPartialEq for CalculateFeeError"],["impl StructuralPartialEq for ChangeSet"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for ChangeSet"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationBlockTime"],["impl StructuralPartialEq for DescriptorId"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A> StructuralPartialEq for ChangeSet<A>"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for InsertDescriptorError<K>"],["impl<T> StructuralPartialEq for Persisted<T>"]], "bdk_coin_select":[["impl StructuralPartialEq for ExcessStrategyKind"],["impl StructuralPartialEq for SelectionConstraint"]], -"bdk_wallet":[["impl StructuralPartialEq for PkOrF"],["impl StructuralPartialEq for PolicyError"],["impl StructuralPartialEq for Satisfaction"],["impl StructuralPartialEq for SatisfiableItem"],["impl StructuralPartialEq for KeychainKind"],["impl StructuralPartialEq for Utxo"],["impl StructuralPartialEq for ScriptContextEnum"],["impl StructuralPartialEq for SignerContext"],["impl StructuralPartialEq for SignerId"],["impl StructuralPartialEq for TapLeavesOptions"],["impl StructuralPartialEq for ChangeSpendPolicy"],["impl StructuralPartialEq for Condition"],["impl StructuralPartialEq for Policy"],["impl StructuralPartialEq for LocalOutput"],["impl StructuralPartialEq for WeightedUtxo"],["impl StructuralPartialEq for SignerOrdering"],["impl StructuralPartialEq for AddressInfo"]], +"bdk_wallet":[["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for PkOrF"],["impl StructuralPartialEq for PolicyError"],["impl StructuralPartialEq for Satisfaction"],["impl StructuralPartialEq for SatisfiableItem"],["impl StructuralPartialEq for KeychainKind"],["impl StructuralPartialEq for LoadError"],["impl StructuralPartialEq for LoadMismatch"],["impl StructuralPartialEq for Utxo"],["impl StructuralPartialEq for KeyError"],["impl StructuralPartialEq for ScriptContextEnum"],["impl StructuralPartialEq for SignerContext"],["impl StructuralPartialEq for SignerId"],["impl StructuralPartialEq for TapLeavesOptions"],["impl StructuralPartialEq for ChangeSpendPolicy"],["impl StructuralPartialEq for Condition"],["impl StructuralPartialEq for Policy"],["impl StructuralPartialEq for SignerOrdering"],["impl StructuralPartialEq for AddressInfo"],["impl StructuralPartialEq for ChangeSet"],["impl StructuralPartialEq for LocalOutput"],["impl StructuralPartialEq for WeightedUtxo"],["impl<E> StructuralPartialEq for LoadWithPersistError<E>"]], "example_cli":[["impl StructuralPartialEq for Keychain"]], "example_electrum":[["impl StructuralPartialEq for ScanOptions"]], "example_esplora":[["impl StructuralPartialEq for ScanOptions"]] diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js index 2feb06ee03..3179b97374 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> Sync for Emitter<'c, C>
    where\n C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Sync for BlockEvent<B>
    where\n B: Sync,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for Balance",1,["bdk_chain::balance::Balance"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Sync for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Sync for ChainPosition<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Sync for SyncResult<A>
    where\n A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Sync for FullTxOut<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Sync for ChangeSet<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Sync for TxGraph<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Sync for IndexedTxGraph<A, I>
    where\n I: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>
    where\n IA: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Sync for SpkIterator<D>
    where\n D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Sync for SpkTxOutIndex<I>
    where\n I: Sync,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Sync for InsertDescriptorError<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Sync for ChangeSet<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> Sync for KeychainTxOutIndex<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Sync for NoSuchKeychain<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K, A> Sync for FullScanResult<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> Sync for CombinedChangeSet<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Sync for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for Balance",1,["bdk_chain::balance::Balance"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Sync for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Sync for ChainPosition<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Sync for SyncResult<A>
    where\n A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Sync for FullTxOut<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Sync for ChangeSet<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Sync for TxGraph<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Sync for IndexedTxGraph<A, I>
    where\n I: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>
    where\n IA: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Sync for SpkIterator<D>
    where\n D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Sync for SpkTxOutIndex<I>
    where\n I: Sync,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Sync for InsertDescriptorError<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Sync for KeychainTxOutIndex<K>
    where\n K: Sync,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K, A> Sync for FullScanResult<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> Sync for Impl<T>
    where\n T: Sync,
    ",1,["bdk_chain::Impl"]],["impl<T> Sync for Persisted<T>
    where\n T: Sync,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl Sync for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Sync for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Sync for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Sync for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Sync for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Sync for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Sync for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Sync for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Sync for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Sync for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !Sync for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Sync for Bnb<'c, S>
    where\n S: Sync,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> Sync for BdkElectrumClient<E>
    where\n E: Sync,
    ",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl Sync for FileError",1,["bdk_file_store::FileError"]],["impl Sync for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Sync for EntryIter<'t, T>
    where\n T: Sync,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Sync for AggregateChangesetsError<C>
    where\n C: Sync,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Sync for Store<C>",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl Sync for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl Sync for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Sync for Store<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl Sync for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl Sync for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Sync for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Sync for Plan<AK>
    where\n AK: Sync,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Sync for PlanState<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Sync for RequiredSignatures<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Sync for PlanKey<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Sync for Requirements<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Sync for Assets<K>
    where\n K: Sync,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl !Sync for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Sync for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Sync for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Sync for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Sync for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Sync for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Sync for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Sync for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Sync for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Sync for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Sync for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Sync for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Sync for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Sync for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Sync for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Sync for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Sync for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Sync for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Sync for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Sync for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Sync for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Sync for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Sync for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Sync for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Sync for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Sync for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Sync for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Sync for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Sync for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Sync for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Sync for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Sync for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Sync for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Sync for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Sync for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Sync for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Sync for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Sync for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Sync for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Sync for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Sync for Update",1,["bdk_wallet::wallet::Update"]],["impl Sync for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl<'a> Sync for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !Sync for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Sync for DescriptorKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Sync for ExtendedKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Sync for Bip44<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Sync for Bip44Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Sync for Bip49<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Sync for Bip49Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Sync for Bip84<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Sync for Bip84Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Sync for Bip86<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Sync for Bip86Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Sync for P2Pkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Sync for P2TR<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Sync for P2Wpkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Sync for P2Wpkh_P2Sh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Sync for GeneratedKey<K, Ctx>
    where\n K: Sync,\n Ctx: Sync,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Sync for SignerWrapper<S>
    where\n S: Sync,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl !Sync for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !Sync for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl !Sync for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl Sync for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Sync for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Sync for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Sync for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Sync for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Sync for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Sync for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Sync for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Sync for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Sync for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Sync for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl Sync for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Sync for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Sync for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Sync for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Sync for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Sync for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Sync for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Sync for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Sync for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Sync for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Sync for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Sync for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Sync for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Sync for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Sync for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Sync for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Sync for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Sync for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Sync for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Sync for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Sync for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Sync for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Sync for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Sync for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Sync for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Sync for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl Sync for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Sync for Update",1,["bdk_wallet::wallet::Update"]],["impl Sync for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Sync for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> Sync for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !Sync for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Sync for DescriptorKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Sync for ExtendedKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> Sync for CreateWithPersistError<E>
    where\n E: Sync,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<E> Sync for LoadWithPersistError<E>
    where\n E: Sync,
    ",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<K> Sync for Bip44<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Sync for Bip44Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Sync for Bip49<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Sync for Bip49Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Sync for Bip84<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Sync for Bip84Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Sync for Bip86<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Sync for Bip86Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Sync for P2Pkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Sync for P2TR<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Sync for P2Wpkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Sync for P2Wpkh_P2Sh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Sync for GeneratedKey<K, Ctx>
    where\n K: Sync,\n Ctx: Sync,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Sync for SignerWrapper<S>
    where\n S: Sync,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl Sync for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Sync for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Sync for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl Sync for AddressCmd",1,["example_cli::AddressCmd"]],["impl Sync for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Sync for Keychain",1,["example_cli::Keychain"]],["impl Sync for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Sync for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Sync for Commands<CS, S>
    where\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Commands"]],["impl<CS, S> Sync for Args<CS, S>
    where\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Sync for Init<CS, S, C>
    where\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Init"]]], "example_electrum":[["impl Sync for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Sync for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Sync for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js index 67c7d9d74a..b02602e10e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> Unpin for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Unpin for BlockEvent<B>
    where\n B: Unpin,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Unpin for Balance",1,["bdk_chain::balance::Balance"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Unpin for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Unpin for ChainPosition<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Unpin for FullTxOut<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>
    where\n I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>
    where\n IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Unpin for SpkIterator<D>
    where\n D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Unpin for SpkTxOutIndex<I>
    where\n I: Unpin,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> Unpin for InsertDescriptorError<K>
    where\n K: Unpin,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Unpin for ChangeSet<K>",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> Unpin for KeychainTxOutIndex<K>
    where\n K: Unpin,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Unpin for NoSuchKeychain<K>
    where\n K: Unpin,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Unpin for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> Unpin for CombinedChangeSet<K, A>",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Unpin for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Unpin for Balance",1,["bdk_chain::balance::Balance"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl Unpin for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Unpin for ChainPosition<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Unpin for FullTxOut<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>
    where\n I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>
    where\n IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Unpin for SpkIterator<D>
    where\n D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Unpin for SpkTxOutIndex<I>
    where\n I: Unpin,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> Unpin for InsertDescriptorError<K>
    where\n K: Unpin,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> Unpin for KeychainTxOutIndex<K>
    where\n K: Unpin,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Unpin for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> Unpin for Impl<T>
    where\n T: Unpin,
    ",1,["bdk_chain::Impl"]],["impl<T> Unpin for Persisted<T>
    where\n T: Unpin,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl Unpin for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Unpin for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Unpin for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Unpin for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Unpin for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Unpin for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Unpin for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Unpin for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Unpin for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Unpin for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> Unpin for BnbIter<'c, 'f, S>
    where\n S: Unpin,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Unpin for Bnb<'c, S>
    where\n S: Unpin,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> Unpin for BdkElectrumClient<E>
    where\n E: Unpin,
    ",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl Unpin for FileError",1,["bdk_file_store::FileError"]],["impl Unpin for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Unpin for EntryIter<'t, T>
    where\n T: Unpin,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Unpin for AggregateChangesetsError<C>
    where\n C: Unpin,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Unpin for Store<C>
    where\n C: Unpin,
    ",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl Unpin for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl Unpin for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Unpin for Store<K, A>
    where\n K: Unpin,\n A: Unpin,
    ",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl Unpin for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl Unpin for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Unpin for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Unpin for Plan<AK>
    where\n AK: Unpin,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Unpin for PlanState<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Unpin for RequiredSignatures<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Unpin for PlanKey<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Unpin for Requirements<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Unpin for Assets<K>
    where\n K: Unpin,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl Unpin for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Unpin for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Unpin for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Unpin for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Unpin for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Unpin for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Unpin for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Unpin for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Unpin for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Unpin for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Unpin for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Unpin for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Unpin for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Unpin for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Unpin for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Unpin for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Unpin for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Unpin for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Unpin for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Unpin for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Unpin for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Unpin for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Unpin for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Unpin for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Unpin for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Unpin for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Unpin for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Unpin for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Unpin for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Unpin for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Unpin for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Unpin for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Unpin for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Unpin for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Unpin for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Unpin for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Unpin for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Unpin for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Unpin for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Unpin for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Unpin for Update",1,["bdk_wallet::wallet::Update"]],["impl Unpin for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl<'a> Unpin for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> Unpin for TxBuilder<'a, Cs>
    where\n Cs: Unpin,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Unpin for DescriptorKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Unpin for ExtendedKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Unpin for Bip44<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Unpin for Bip44Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Unpin for Bip49<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Unpin for Bip49Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Unpin for Bip84<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Unpin for Bip84Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Unpin for Bip86<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Unpin for Bip86Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Unpin for P2Pkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Unpin for P2TR<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Unpin for P2Wpkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Unpin for P2Wpkh_P2Sh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>
    where\n K: Unpin,\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Unpin for SignerWrapper<S>
    where\n S: Unpin,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl Unpin for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Unpin for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Unpin for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Unpin for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Unpin for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Unpin for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Unpin for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Unpin for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Unpin for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Unpin for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Unpin for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl Unpin for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Unpin for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Unpin for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Unpin for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Unpin for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Unpin for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Unpin for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Unpin for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Unpin for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Unpin for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Unpin for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Unpin for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Unpin for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Unpin for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Unpin for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Unpin for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Unpin for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Unpin for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Unpin for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Unpin for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Unpin for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Unpin for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Unpin for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Unpin for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Unpin for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Unpin for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Unpin for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl Unpin for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl Unpin for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl Unpin for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Unpin for Update",1,["bdk_wallet::wallet::Update"]],["impl Unpin for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Unpin for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> Unpin for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> Unpin for TxBuilder<'a, Cs>
    where\n Cs: Unpin,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Unpin for DescriptorKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Unpin for ExtendedKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> Unpin for CreateWithPersistError<E>
    where\n E: Unpin,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<E> Unpin for LoadWithPersistError<E>
    where\n E: Unpin,
    ",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<K> Unpin for Bip44<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Unpin for Bip44Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Unpin for Bip49<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Unpin for Bip49Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Unpin for Bip84<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Unpin for Bip84Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Unpin for Bip86<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Unpin for Bip86Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Unpin for P2Pkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Unpin for P2TR<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Unpin for P2Wpkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Unpin for P2Wpkh_P2Sh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>
    where\n K: Unpin,\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Unpin for SignerWrapper<S>
    where\n S: Unpin,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl Unpin for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Unpin for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Unpin for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl Unpin for AddressCmd",1,["example_cli::AddressCmd"]],["impl Unpin for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Unpin for Keychain",1,["example_cli::Keychain"]],["impl Unpin for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Unpin for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Unpin for Commands<CS, S>
    where\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Commands"]],["impl<CS, S> Unpin for Args<CS, S>
    where\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Unpin for Init<CS, S, C>
    where\n C: Unpin,\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Init"]]], "example_electrum":[["impl Unpin for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Unpin for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Unpin for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js index a51a0f4c04..20ec35e020 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"bdk_chain":[["impl<'a, T, A> Deref for TxNode<'a, T, A>"]], -"bdk_wallet":[["impl Deref for AddressInfo"],["impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>"],["impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>"]] +"bdk_chain":[["impl<'a, T, A> Deref for TxNode<'a, T, A>"],["impl<T> Deref for Impl<T>"],["impl<T> Deref for Persisted<T>"]], +"bdk_wallet":[["impl Deref for AddressInfo"],["impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>"],["impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>"]] };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/trait.impl/core/ops/deref/trait.DerefMut.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.DerefMut.js new file mode 100644 index 0000000000..7257a3ef65 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.DerefMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl<T> DerefMut for Persisted<T>"]] +};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/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 64a68d1db8..05eeb39481 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> RefUnwindSafe for Emitter<'c, C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> RefUnwindSafe for BlockEvent<B>
    where\n B: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::balance::Balance"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl RefUnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> RefUnwindSafe for ChainPosition<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> RefUnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> RefUnwindSafe for FullTxOut<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> RefUnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> RefUnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>
    where\n I: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>
    where\n IA: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> RefUnwindSafe for SpkIterator<D>
    where\n D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> RefUnwindSafe for SpkTxOutIndex<I>
    where\n I: RefUnwindSafe,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> RefUnwindSafe for InsertDescriptorError<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> RefUnwindSafe for ChangeSet<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> RefUnwindSafe for NoSuchKeychain<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K, A> RefUnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> RefUnwindSafe for CombinedChangeSet<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl RefUnwindSafe for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::balance::Balance"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl RefUnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> RefUnwindSafe for ChainPosition<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> RefUnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> RefUnwindSafe for FullTxOut<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> RefUnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> RefUnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>
    where\n I: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>
    where\n IA: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> RefUnwindSafe for SpkIterator<D>
    where\n D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> RefUnwindSafe for SpkTxOutIndex<I>
    where\n I: RefUnwindSafe,
    ",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> RefUnwindSafe for InsertDescriptorError<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K, A> RefUnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> RefUnwindSafe for Impl<T>
    where\n T: RefUnwindSafe,
    ",1,["bdk_chain::Impl"]],["impl<T> RefUnwindSafe for Persisted<T>
    where\n T: RefUnwindSafe,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl RefUnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl RefUnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl RefUnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl RefUnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl RefUnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl RefUnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl RefUnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl RefUnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl RefUnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> RefUnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !RefUnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> RefUnwindSafe for Bnb<'c, S>
    where\n S: RefUnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> RefUnwindSafe for BdkElectrumClient<E>
    where\n E: RefUnwindSafe,
    ",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl !RefUnwindSafe for FileError",1,["bdk_file_store::FileError"]],["impl !RefUnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> RefUnwindSafe for EntryIter<'t, T>
    where\n T: RefUnwindSafe,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> !RefUnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> RefUnwindSafe for Store<C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl !RefUnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl !RefUnwindSafe for Error",1,["bdk_sqlite::Error"]],["impl<K, A> RefUnwindSafe for Store<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl !RefUnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl RefUnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl RefUnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> RefUnwindSafe for Plan<AK>
    where\n AK: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> RefUnwindSafe for PlanState<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> RefUnwindSafe for RequiredSignatures<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> RefUnwindSafe for PlanKey<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> RefUnwindSafe for Requirements<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> RefUnwindSafe for Assets<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl !RefUnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !RefUnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !RefUnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !RefUnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl RefUnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl RefUnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl RefUnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl RefUnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl RefUnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl RefUnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl RefUnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl RefUnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl RefUnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl RefUnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl RefUnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl RefUnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl RefUnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl RefUnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl RefUnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl RefUnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl RefUnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl RefUnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl RefUnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl RefUnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl RefUnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl RefUnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl RefUnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl RefUnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl RefUnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl RefUnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl RefUnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl RefUnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl RefUnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl RefUnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl RefUnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl RefUnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl RefUnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl RefUnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl RefUnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl RefUnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl<'a> RefUnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !RefUnwindSafe for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> RefUnwindSafe for Bip44<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> RefUnwindSafe for Bip44Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> RefUnwindSafe for Bip49<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> RefUnwindSafe for Bip49Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> RefUnwindSafe for Bip84<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> RefUnwindSafe for Bip84Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> RefUnwindSafe for Bip86<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> RefUnwindSafe for Bip86Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> RefUnwindSafe for P2Pkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> RefUnwindSafe for P2TR<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> RefUnwindSafe for P2Wpkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>
    where\n K: RefUnwindSafe,\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> RefUnwindSafe for SignerWrapper<S>
    where\n S: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl !RefUnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !RefUnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !RefUnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !RefUnwindSafe for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl !RefUnwindSafe for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl !RefUnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl RefUnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl RefUnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl RefUnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl RefUnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl RefUnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl RefUnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl RefUnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl RefUnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl RefUnwindSafe for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl RefUnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl RefUnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl RefUnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl RefUnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl RefUnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl RefUnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl RefUnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl RefUnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl RefUnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl RefUnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl RefUnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl RefUnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl RefUnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl RefUnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl RefUnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl RefUnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl RefUnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl RefUnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl RefUnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl RefUnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl RefUnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl RefUnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl RefUnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl RefUnwindSafe for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl RefUnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl RefUnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl RefUnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> RefUnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !RefUnwindSafe for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> RefUnwindSafe for CreateWithPersistError<E>
    where\n E: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<E> RefUnwindSafe for LoadWithPersistError<E>
    where\n E: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<K> RefUnwindSafe for Bip44<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> RefUnwindSafe for Bip44Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> RefUnwindSafe for Bip49<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> RefUnwindSafe for Bip49Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> RefUnwindSafe for Bip84<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> RefUnwindSafe for Bip84Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> RefUnwindSafe for Bip86<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> RefUnwindSafe for Bip86Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> RefUnwindSafe for P2Pkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> RefUnwindSafe for P2TR<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> RefUnwindSafe for P2Wpkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>
    where\n K: RefUnwindSafe,\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> RefUnwindSafe for SignerWrapper<S>
    where\n S: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl RefUnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl RefUnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl RefUnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl RefUnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl RefUnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl RefUnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl RefUnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl RefUnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> RefUnwindSafe for Commands<CS, S>
    where\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Commands"]],["impl<CS, S> RefUnwindSafe for Args<CS, S>
    where\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S, C> RefUnwindSafe for Init<CS, S, C>
    where\n C: RefUnwindSafe,\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Init"]]], "example_electrum":[["impl RefUnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl RefUnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl RefUnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 7256a44ca7..25141fc529 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,14 +1,13 @@ (function() {var implementors = { "bdk_bitcoind_rpc":[["impl<'c, C> UnwindSafe for Emitter<'c, C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> UnwindSafe for BlockEvent<B>
    where\n B: UnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for Balance",1,["bdk_chain::balance::Balance"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl UnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> UnwindSafe for ChainPosition<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> UnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> UnwindSafe for FullTxOut<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> UnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> UnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>
    where\n I: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>
    where\n IA: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> UnwindSafe for SpkIterator<D>
    where\n D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> UnwindSafe for SpkTxOutIndex<I>",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> UnwindSafe for InsertDescriptorError<K>
    where\n K: UnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> UnwindSafe for ChangeSet<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K> UnwindSafe for NoSuchKeychain<K>
    where\n K: UnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::NoSuchKeychain"]],["impl<K, A> UnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<K, A> UnwindSafe for CombinedChangeSet<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::changeset::CombinedChangeSet"]]], +"bdk_chain":[["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl UnwindSafe for ChangeSet",1,["bdk_chain::indexer::keychain_txout::ChangeSet"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for ChangeSet",1,["bdk_chain::local_chain::ChangeSet"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for Balance",1,["bdk_chain::balance::Balance"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationBlockTime",1,["bdk_chain::chain_data::ConfirmationBlockTime"]],["impl UnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> UnwindSafe for ChainPosition<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> UnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> UnwindSafe for FullTxOut<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> UnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> UnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>
    where\n I: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>
    where\n IA: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> UnwindSafe for SpkIterator<D>
    where\n D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> UnwindSafe for SpkTxOutIndex<I>",1,["bdk_chain::indexer::spk_txout::SpkTxOutIndex"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> UnwindSafe for InsertDescriptorError<K>
    where\n K: UnwindSafe,
    ",1,["bdk_chain::indexer::keychain_txout::InsertDescriptorError"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>",1,["bdk_chain::indexer::keychain_txout::KeychainTxOutIndex"]],["impl<K, A> UnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]],["impl<T> UnwindSafe for Impl<T>
    where\n T: UnwindSafe,
    ",1,["bdk_chain::Impl"]],["impl<T> UnwindSafe for Persisted<T>
    where\n T: UnwindSafe,
    ",1,["bdk_chain::persist::Persisted"]]], "bdk_coin_select":[["impl UnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl UnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl UnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl UnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl UnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl UnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl UnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl UnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl UnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> UnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !UnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> UnwindSafe for Bnb<'c, S>
    where\n S: UnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]]], "bdk_electrum":[["impl<E> UnwindSafe for BdkElectrumClient<E>
    where\n E: UnwindSafe,
    ",1,["bdk_electrum::bdk_electrum_client::BdkElectrumClient"]]], "bdk_file_store":[["impl !UnwindSafe for FileError",1,["bdk_file_store::FileError"]],["impl !UnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> !UnwindSafe for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> !UnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> UnwindSafe for Store<C>
    where\n C: UnwindSafe,
    ",1,["bdk_file_store::store::Store"]]], "bdk_hwi":[["impl UnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_sqlite":[["impl !UnwindSafe for Error",1,["bdk_sqlite::Error"]],["impl<K, A> UnwindSafe for Store<K, A>
    where\n K: UnwindSafe,\n A: UnwindSafe,
    ",1,["bdk_sqlite::store::Store"]]], "bdk_testenv":[["impl !UnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], "bdk_tmp_plan":[["impl UnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl UnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> UnwindSafe for Plan<AK>
    where\n AK: UnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> UnwindSafe for PlanState<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> UnwindSafe for RequiredSignatures<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> UnwindSafe for PlanKey<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> UnwindSafe for Requirements<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> UnwindSafe for Assets<K>
    where\n K: UnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl !UnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !UnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !UnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !UnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl UnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl UnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl UnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl UnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl UnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl UnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl UnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl UnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl UnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl UnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl UnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl UnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl UnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl UnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl UnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl UnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl UnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl UnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl UnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl UnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl UnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl UnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl UnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl UnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl UnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl UnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl UnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl UnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl UnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl UnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl UnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl UnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl UnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl UnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl UnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl UnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl UnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl UnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl<'a> UnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !UnwindSafe for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> UnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> UnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> UnwindSafe for Bip44<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> UnwindSafe for Bip44Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> UnwindSafe for Bip49<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> UnwindSafe for Bip49Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> UnwindSafe for Bip84<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> UnwindSafe for Bip84Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> UnwindSafe for Bip86<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> UnwindSafe for Bip86Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> UnwindSafe for P2Pkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> UnwindSafe for P2TR<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> UnwindSafe for P2Wpkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> UnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>
    where\n K: UnwindSafe,\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> UnwindSafe for SignerWrapper<S>
    where\n S: UnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"bdk_wallet":[["impl !UnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !UnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl !UnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !UnwindSafe for CreateParams",1,["bdk_wallet::wallet::params::CreateParams"]],["impl !UnwindSafe for LoadParams",1,["bdk_wallet::wallet::params::LoadParams"]],["impl !UnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl UnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl UnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl UnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl UnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl UnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl UnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl UnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl UnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl UnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl UnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl UnwindSafe for LoadMismatch",1,["bdk_wallet::wallet::LoadMismatch"]],["impl UnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl UnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl UnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl UnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl UnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl UnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl UnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl UnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl UnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl UnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl UnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl UnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl UnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl UnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl UnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl UnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl UnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl UnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl UnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl UnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl UnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl UnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl UnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl UnwindSafe for ChangeSet",1,["bdk_wallet::wallet::changeset::ChangeSet"]],["impl UnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl UnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl UnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl<'a> UnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs> !UnwindSafe for TxBuilder<'a, Cs>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> UnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> UnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<E> UnwindSafe for CreateWithPersistError<E>
    where\n E: UnwindSafe,
    ",1,["bdk_wallet::wallet::persisted::CreateWithPersistError"]],["impl<E> UnwindSafe for LoadWithPersistError<E>
    where\n E: UnwindSafe,
    ",1,["bdk_wallet::wallet::persisted::LoadWithPersistError"]],["impl<K> UnwindSafe for Bip44<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> UnwindSafe for Bip44Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> UnwindSafe for Bip49<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> UnwindSafe for Bip49Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> UnwindSafe for Bip84<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> UnwindSafe for Bip84Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> UnwindSafe for Bip86<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> UnwindSafe for Bip86Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> UnwindSafe for P2Pkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> UnwindSafe for P2TR<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> UnwindSafe for P2Wpkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> UnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>
    where\n K: UnwindSafe,\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> UnwindSafe for SignerWrapper<S>
    where\n S: UnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], "example_bitcoind_rpc_polling":[["impl UnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl UnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl UnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], "example_cli":[["impl UnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl UnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl UnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl UnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl UnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> UnwindSafe for Commands<CS, S>
    where\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Commands"]],["impl<CS, S> UnwindSafe for Args<CS, S>
    where\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S, C> UnwindSafe for Init<CS, S, C>
    where\n C: UnwindSafe,\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Init"]]], "example_electrum":[["impl UnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl UnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl UnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js index a5a57a000b..77de87d49a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js @@ -1,5 +1,5 @@ (function() {var implementors = { "bdk_chain":[["impl FromStr for DescriptorId"]], -"bdk_wallet":[["impl FromStr for FullyNodedExport"]], +"bdk_wallet":[["impl FromStr for FullyNodedExport"]], "example_cli":[["impl FromStr for CoinSelectionAlgo"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/rusqlite/types/from_sql/trait.FromSql.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/rusqlite/types/from_sql/trait.FromSql.js new file mode 100644 index 0000000000..5f30edbf74 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/rusqlite/types/from_sql/trait.FromSql.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl FromSql for Impl<DescriptorId>"],["impl FromSql for Impl<Amount>"],["impl FromSql for Impl<BlockHash>"],["impl FromSql for Impl<Descriptor<DescriptorPublicKey>>"],["impl FromSql for Impl<Network>"],["impl FromSql for Impl<ScriptBuf>"],["impl FromSql for Impl<Transaction>"],["impl FromSql for Impl<Txid>"],["impl<A: Anchor + DeserializeOwned> FromSql for Impl<A>"]] +};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/trait.impl/rusqlite/types/to_sql/trait.ToSql.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/rusqlite/types/to_sql/trait.ToSql.js new file mode 100644 index 0000000000..a9eb9778dd --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/rusqlite/types/to_sql/trait.ToSql.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl ToSql for Impl<DescriptorId>"],["impl ToSql for Impl<Amount>"],["impl ToSql for Impl<BlockHash>"],["impl ToSql for Impl<Descriptor<DescriptorPublicKey>>"],["impl ToSql for Impl<Network>"],["impl ToSql for Impl<ScriptBuf>"],["impl ToSql for Impl<Transaction>"],["impl ToSql for Impl<Txid>"],["impl<A: Anchor + Serialize> ToSql for Impl<A>"]] +};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/trait.impl/serde/de/trait.Deserialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js index 5671521bf4..580ed0bab5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for Balance"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationBlockTime"],["impl<'de> Deserialize<'de> for DescriptorId"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>
    where\n A: Ord + Deserialize<'de>,
    "],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
    where\n A: Ord + Deserialize<'de>,\n IA: Deserialize<'de>,
    "],["impl<'de, K> Deserialize<'de> for ChangeSet<K>
    where\n K: Ord + Deserialize<'de>,
    "],["impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where\n A: Ord + Deserialize<'de>,\n K: Ord + Deserialize<'de>,
    "]], -"bdk_wallet":[["impl<'de> Deserialize<'de> for KeychainKind"],["impl<'de> Deserialize<'de> for LocalOutput"],["impl<'de> Deserialize<'de> for FullyNodedExport"]], +"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for ChangeSet"],["impl<'de> Deserialize<'de> for ChangeSet"],["impl<'de> Deserialize<'de> for Balance"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationBlockTime"],["impl<'de> Deserialize<'de> for DescriptorId"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>
    where\n A: Ord + Deserialize<'de>,
    "],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
    where\n A: Ord + Deserialize<'de>,\n IA: Deserialize<'de>,
    "]], +"bdk_wallet":[["impl<'de> Deserialize<'de> for KeychainKind"],["impl<'de> Deserialize<'de> for FullyNodedExport"],["impl<'de> Deserialize<'de> for ChangeSet"],["impl<'de> Deserialize<'de> for LocalOutput"]], "example_cli":[["impl<'de> Deserialize<'de> for Keychain"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js index 8eab1e67df..ebbda338c6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for Balance"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationBlockTime"],["impl Serialize for DescriptorId"],["impl<A> Serialize for ChangeSet<A>
    where\n A: Ord + Serialize,
    "],["impl<A, IA> Serialize for ChangeSet<A, IA>
    where\n A: Ord + Serialize,\n IA: Serialize,
    "],["impl<K> Serialize for ChangeSet<K>
    where\n K: Ord + Serialize,
    "],["impl<K, A> Serialize for CombinedChangeSet<K, A>
    where\n A: Ord + Serialize,\n K: Ord + Serialize,
    "]], -"bdk_wallet":[["impl Serialize for PkOrF"],["impl Serialize for Satisfaction"],["impl Serialize for SatisfiableItem"],["impl Serialize for KeychainKind"],["impl Serialize for Condition"],["impl Serialize for Policy"],["impl Serialize for LocalOutput"],["impl Serialize for FullyNodedExport"]], +"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for ChangeSet"],["impl Serialize for ChangeSet"],["impl Serialize for Balance"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationBlockTime"],["impl Serialize for DescriptorId"],["impl<A> Serialize for ChangeSet<A>
    where\n A: Ord + Serialize,
    "],["impl<A, IA> Serialize for ChangeSet<A, IA>
    where\n A: Ord + Serialize,\n IA: Serialize,
    "]], +"bdk_wallet":[["impl Serialize for PkOrF"],["impl Serialize for Satisfaction"],["impl Serialize for SatisfiableItem"],["impl Serialize for KeychainKind"],["impl Serialize for Condition"],["impl Serialize for Policy"],["impl Serialize for FullyNodedExport"],["impl Serialize for ChangeSet"],["impl Serialize for LocalOutput"]], "example_cli":[["impl Serialize for Keychain"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js index 43d9f02a05..e88917d29d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"bdk_esplora":[["
    1.64.0 · source§

    impl<T> AsFd for Box<T>
    where\n T: AsFd + ?Sized,

    source§

    fn as_fd(&self) -> BorrowedFd<'_>

    Borrows the file descriptor. Read more
    ","AsFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn as_mut(&mut self) -> &mut T

    Converts this type into a mutable reference of the (usually inferred) input type.
    ","AsMut","bdk_esplora::blocking_ext::Error"],["
    1.63.0 · source§

    impl<T> AsRawFd for Box<T>
    where\n T: AsRawFd,

    source§

    fn as_raw_fd(&self) -> i32

    Extracts the raw file descriptor. Read more
    ","AsRawFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsRef<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn as_ref(&self) -> &T

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempt to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempts to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn async_call(\n &self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFn, returning a future which may borrow from the called closure.
    ","AsyncFn","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnMut<Args> + ?Sized,\n A: Allocator,

    §

    type CallRefFuture<'a> = <F as AsyncFnMut<Args>>::CallRefFuture<'a>\nwhere\n Box<F, A>: 'a

    🔬This is a nightly-only experimental API. (async_fn_traits)
    source§

    extern "rust-call" fn async_call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnMut, returning a future which may borrow from the called closure.
    ","AsyncFnMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as AsyncFnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Output type of the called closure’s future.
    §

    type CallOnceFuture = <F as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Future returned by AsyncFnOnce::async_call_once.
    source§

    extern "rust-call" fn async_call_once(\n self,\n args: Args\n) -> <Box<F, A> as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnOnce, returning a future which may move out of the called closure.
    ","AsyncFnOnce","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<S> AsyncIterator for Box<S>
    where\n S: AsyncIterator + Unpin + ?Sized,

    §

    type Item = <S as AsyncIterator>::Item

    🔬This is a nightly-only experimental API. (async_iterator)
    The type of items yielded by the async iterator.
    source§

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as AsyncIterator>::Item>>

    🔬This is a nightly-only experimental API. (async_iterator)
    Attempt to pull out the next value of this async iterator, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the async iterator is exhausted. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    🔬This is a nightly-only experimental API. (async_iterator)
    Returns the bounds on the remaining length of the async iterator. Read more
    ","AsyncIterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut ReadBuf<'_>\n) -> Poll<Result<(), Error>>

    Attempts to read from the AsyncRead into buf. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut [u8]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into buf. Read more
    §

    fn poll_read_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &mut [IoSliceMut<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into bufs using vectored\nIO operations. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn poll_seek(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n pos: SeekFrom\n) -> Poll<Result<u64, Error>>

    Attempt to seek to an offset, in bytes, in a stream. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn start_seek(self: Pin<&mut Box<T>>, pos: SeekFrom) -> Result<(), Error>

    Attempts to seek to an offset, in bytes, in a stream. Read more
    §

    fn poll_complete(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<u64, Error>>

    Waits for a seek operation to complete. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from bufs into the object using vectored\nIO operations. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to close the object. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Like poll_write, except that it writes from a slice of buffers. Read more
    §

    fn is_write_vectored(&self) -> bool

    Determines if this writer has an efficient poll_write_vectored\nimplementation. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempts to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_shutdown(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Initiates or attempts to shut down this writer, returning success when\nthe I/O connection has completely shut down. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Body for Box<T>
    where\n T: Body + Unpin + ?Sized,

    §

    type Data = <T as Body>::Data

    Values yielded by the Body.
    §

    type Error = <T as Body>::Error

    The error type this Body might generate.
    source§

    fn poll_data(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Option<Result<<Box<T> as Body>::Data, <Box<T> as Body>::Error>>>

    Attempt to pull out the next data buffer of this stream.
    source§

    fn poll_trailers(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<Option<HeaderMap>, <Box<T> as Body>::Error>>

    Poll for an optional single HeaderMap of trailers. Read more
    source§

    fn is_end_stream(&self) -> bool

    Returns true when the end of stream has been reached. Read more
    source§

    fn size_hint(&self) -> SizeHint

    Returns the bounds on the remaining length of the stream. Read more
    source§

    fn data(&mut self) -> Data<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to next data chunk, if any.
    source§

    fn trailers(&mut self) -> Trailers<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to trailers, if any.
    source§

    fn map_data<F, B>(self, f: F) -> MapData<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Data) -> B,\n B: Buf,

    Maps this body’s data value to a different value.
    source§

    fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Error) -> E,

    Maps this body’s error value to a different value.
    source§

    fn collect(self) -> Collect<Self>
    where\n Self: Sized,

    Turn this body into Collected body which will collect all the DATA frames\nand trailers.
    ","Body","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> Borrow<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    ","Borrow","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> BorrowMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    ","BorrowMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>

    1.0.0 · source

    pub fn new(x: T) -> Box<T>

    Allocates memory on the heap and then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    let five = Box::new(5);
    \n
    source

    pub fn new_uninit() -> Box<MaybeUninit<T>>

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

    Constructs a new box with uninitialized contents.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet mut five = Box::<u32>::new_uninit();\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn new_zeroed() -> Box<MaybeUninit<T>>

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet zero = Box::<u32>::new_zeroed();\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    1.33.0 · source

    pub fn pin(x: T) -> Pin<Box<T>>

    Constructs a new Pin<Box<T>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin(x)\ndoes the same as Box::into_pin(Box::new(x)). Consider using\ninto_pin if you already have a Box<T>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new.

    \n
    source

    pub fn try_new(x: T) -> Result<Box<T>, AllocError>

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

    Allocates memory on the heap then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nlet five = Box::try_new(5)?;
    \n
    source

    pub fn try_new_uninit() -> Result<Box<MaybeUninit<T>>, AllocError>

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

    Constructs a new box with uninitialized contents on the heap,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet mut five = Box::<u32>::try_new_uninit()?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn try_new_zeroed() -> Result<Box<MaybeUninit<T>>, AllocError>

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes on the heap

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet zero = Box::<u32>::try_new_zeroed()?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>
    where\n T: ?Sized,

    1.4.0 · source

    pub unsafe fn from_raw(raw: *mut T) -> Box<T>

    Constructs a box from a raw pointer.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n

    The safety conditions are described in the memory layout section.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw:

    \n\n
    let x = Box::new(5);\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manually create a Box from scratch by using the global allocator:

    \n\n
    use std::alloc::{alloc, Layout};\n\nunsafe {\n    let ptr = alloc(Layout::new::<i32>()) as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw(ptr);\n}
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,

    source

    pub fn new_in(x: T, alloc: A) -> Box<T, A>
    where\n A: Allocator,

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

    Allocates memory in the given allocator then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::new_in(5, System);
    \n
    source

    pub fn try_new_in(x: T, alloc: A) -> Result<Box<T, A>, AllocError>
    where\n A: Allocator,

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

    Allocates memory in the given allocator then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::try_new_in(5, System)?;
    \n
    source

    pub fn new_uninit_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

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

    Constructs a new box with uninitialized contents in the provided allocator.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::new_uninit_in(System);\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn try_new_uninit_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

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

    Constructs a new box with uninitialized contents in the provided allocator,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::try_new_uninit_in(System)?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn new_zeroed_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::new_zeroed_in(System);\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    source

    pub fn try_new_zeroed_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator,\nreturning an error if the allocation fails,

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::try_new_zeroed_in(System)?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    source

    pub fn pin_in(x: T, alloc: A) -> Pin<Box<T, A>>
    where\n A: 'static + Allocator,

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

    Constructs a new Pin<Box<T, A>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin_in(x, alloc)\ndoes the same as Box::into_pin(Box::new_in(x, alloc)). Consider using\ninto_pin if you already have a Box<T, A>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new_in.

    \n
    source

    pub fn into_boxed_slice(boxed: Box<T, A>) -> Box<[T], A>

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

    Converts a Box<T> into a Box<[T]>

    \n

    This conversion does not allocate on the heap and happens in place.

    \n
    source

    pub fn into_inner(boxed: Box<T, A>) -> T

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

    Consumes the Box, returning the wrapped value.

    \n
    §Examples
    \n
    #![feature(box_into_inner)]\n\nlet c = Box::new(5);\n\nassert_eq!(Box::into_inner(c), 5);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    const: unstable · source

    pub unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Box<T, A>

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

    Constructs a box from a raw pointer in the given allocator.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw_with_allocator:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(5, System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manually create a Box from scratch by using the system allocator:

    \n\n
    #![feature(allocator_api, slice_ptr_get)]\n\nuse std::alloc::{Allocator, Layout, System};\n\nunsafe {\n    let ptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr() as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw_in(ptr, System);\n}
    \n
    1.4.0 · source

    pub fn into_raw(b: Box<T, A>) -> *mut T

    Consumes the Box, returning a wrapped raw pointer.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw(b) instead of b.into_raw(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw\nfor automatic cleanup:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    use std::alloc::{dealloc, Layout};\nuse std::ptr;\n\nlet x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    dealloc(ptr as *mut u8, Layout::new::<String>());\n}
    \n

    Note: This is equivalent to the following:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    drop(Box::from_raw(ptr));\n}
    \n
    source

    pub fn into_raw_with_allocator(b: Box<T, A>) -> (*mut T, A)

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

    Consumes the Box, returning a wrapped raw pointer and the allocator.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw_in function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw_with_allocator(b) instead of b.into_raw_with_allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw_in\nfor automatic cleanup:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::{Allocator, Layout, System};\nuse std::ptr::{self, NonNull};\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    let non_null = NonNull::new_unchecked(ptr);\n    alloc.deallocate(non_null.cast(), Layout::new::<String>());\n}
    \n
    const: unstable · source

    pub fn allocator(b: &Box<T, A>) -> &A

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

    Returns a reference to the underlying allocator.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::allocator(&b) instead of b.allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    1.26.0 · source

    pub fn leak<'a>(b: Box<T, A>) -> &'a mut T
    where\n A: 'a,

    Consumes and leaks the Box, returning a mutable reference,\n&'a mut T. Note that the type T must outlive the chosen lifetime\n'a. If the type has only static references, or none at all, then this\nmay be chosen to be 'static.

    \n

    This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak. If this is not acceptable, the reference should first be wrapped\nwith the Box::from_raw function producing a Box. This Box can\nthen be dropped which will properly destroy T and release the\nallocated memory.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::leak(b) instead of b.leak(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Simple usage:

    \n\n
    let x = Box::new(41);\nlet static_ref: &'static mut usize = Box::leak(x);\n*static_ref += 1;\nassert_eq!(*static_ref, 42);
    \n

    Unsized data:

    \n\n
    let x = vec![1, 2, 3].into_boxed_slice();\nlet static_ref = Box::leak(x);\nstatic_ref[0] = 4;\nassert_eq!(*static_ref, [4, 2, 3]);
    \n
    1.63.0 (const: unstable) · source

    pub fn into_pin(boxed: Box<T, A>) -> Pin<Box<T, A>>
    where\n A: 'static,

    Converts a Box<T> into a Pin<Box<T>>. If T does not implement Unpin, then\n*boxed will be pinned in memory and unable to be moved.

    \n

    This conversion does not allocate on the heap and happens in place.

    \n

    This is also available via From.

    \n

    Constructing and pinning a Box with Box::into_pin(Box::new(x))\ncan also be written more concisely using Box::pin(x).\nThis into_pin method is useful if you already have a Box<T>, or you are\nconstructing a (pinned) Box in a different way than with Box::new.

    \n
    §Notes
    \n

    It’s not recommended that crates add an impl like From<Box<T>> for Pin<T>,\nas it’ll introduce an ambiguity when calling Pin::from.\nA demonstration of such a poor impl is shown below.

    \n\n
    ⓘ
    struct Foo; // A type defined in this crate.\nimpl From<Box<()>> for Pin<Foo> {\n    fn from(_: Box<()>) -> Pin<Foo> {\n        Pin::new(Foo)\n    }\n}\n\nlet foo = Box::new(());\nlet bar = Pin::from(foo);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Buf for Box<T>
    where\n T: Buf + ?Sized,

    §

    fn remaining(&self) -> usize

    Returns the number of bytes between the current position and the end of\nthe buffer. Read more
    §

    fn chunk(&self) -> &[u8] ⓘ

    Returns a slice starting at the current position and of length between 0\nand Buf::remaining(). Note that this can return shorter slice (this allows\nnon-continuous internal representation). Read more
    §

    fn chunks_vectored<'b>(&'b self, dst: &mut [IoSlice<'b>]) -> usize

    Fills dst with potentially multiple slices starting at self’s\ncurrent position. Read more
    §

    fn advance(&mut self, cnt: usize)

    Advance the internal cursor of the Buf Read more
    §

    fn has_remaining(&self) -> bool

    Returns true if there are any more bytes to consume Read more
    §

    fn copy_to_slice(&mut self, dst: &mut [u8])

    Copies bytes from self into dst. Read more
    §

    fn get_u8(&mut self) -> u8

    Gets an unsigned 8 bit integer from self. Read more
    §

    fn get_i8(&mut self) -> i8

    Gets a signed 8 bit integer from self. Read more
    §

    fn get_u16(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_u16_le(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_u16_ne(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_i16(&mut self) -> i16

    Gets a signed 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_i16_le(&mut self) -> i16

    Gets a signed 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_i16_ne(&mut self) -> i16

    Gets a signed 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_u32(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the big-endian byte order. Read more
    §

    fn get_u32_le(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the little-endian byte order. Read more
    §

    fn get_u32_ne(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_i32(&mut self) -> i32

    Gets a signed 32 bit integer from self in big-endian byte order. Read more
    §

    fn get_i32_le(&mut self) -> i32

    Gets a signed 32 bit integer from self in little-endian byte order. Read more
    §

    fn get_i32_ne(&mut self) -> i32

    Gets a signed 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_u64(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_u64_le(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_u64_ne(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_i64(&mut self) -> i64

    Gets a signed 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_i64_le(&mut self) -> i64

    Gets a signed 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_i64_ne(&mut self) -> i64

    Gets a signed 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_uint(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in big-endian byte order. Read more
    §

    fn get_uint_le(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in little-endian byte order. Read more
    §

    fn get_uint_ne(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in native-endian byte order. Read more
    §

    fn get_int(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in big-endian byte order. Read more
    §

    fn get_int_le(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in little-endian byte order. Read more
    §

    fn get_int_ne(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in native-endian byte order. Read more
    §

    fn copy_to_bytes(&mut self, len: usize) -> Bytes

    Consumes len bytes inside self and returns new instance of Bytes\nwith this data. Read more
    §

    fn get_u128(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_u128_le(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_u128_ne(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_i128(&mut self) -> i128

    Gets a signed 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_i128_le(&mut self) -> i128

    Gets a signed 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_i128_ne(&mut self) -> i128

    Gets a signed 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_f32(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f32_le(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f32_ne(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn get_f64(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f64_le(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f64_ne(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn take(self, limit: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an adaptor which will read at most limit bytes from self. Read more
    §

    fn chain<U>(self, next: U) -> Chain<Self, U>
    where\n U: Buf,\n Self: Sized,

    Creates an adaptor which will chain this buffer with another. Read more
    §

    fn reader(self) -> Reader<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Read trait for self. Read more
    ","Buf","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> BufMut for Box<T>
    where\n T: BufMut + ?Sized,

    §

    fn remaining_mut(&self) -> usize

    Returns the number of bytes that can be written from the current\nposition until the end of the buffer is reached. Read more
    §

    fn chunk_mut(&mut self) -> &mut UninitSlice

    Returns a mutable slice starting at the current BufMut position and of\nlength between 0 and BufMut::remaining_mut(). Note that this can be shorter than the\nwhole remainder of the buffer (this allows non-continuous implementation). Read more
    §

    unsafe fn advance_mut(&mut self, cnt: usize)

    Advance the internal cursor of the BufMut Read more
    §

    fn put_slice(&mut self, src: &[u8])

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_u8(&mut self, n: u8)

    Writes an unsigned 8 bit integer to self. Read more
    §

    fn put_i8(&mut self, n: i8)

    Writes a signed 8 bit integer to self. Read more
    §

    fn put_u16(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_u16_le(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_u16_ne(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_i16(&mut self, n: i16)

    Writes a signed 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_i16_le(&mut self, n: i16)

    Writes a signed 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_i16_ne(&mut self, n: i16)

    Writes a signed 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_u32(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_u32_le(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_u32_ne(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_i32(&mut self, n: i32)

    Writes a signed 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_i32_le(&mut self, n: i32)

    Writes a signed 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_i32_ne(&mut self, n: i32)

    Writes a signed 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_u64(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u64_le(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_u64_ne(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in native-endian byte order. Read more
    §

    fn put_i64(&mut self, n: i64)

    Writes a signed 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i64_le(&mut self, n: i64)

    Writes a signed 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_i64_ne(&mut self, n: i64)

    Writes a signed 64 bit integer to self in native-endian byte order. Read more
    §

    fn has_remaining_mut(&self) -> bool

    Returns true if there is space in self for more bytes. Read more
    §

    fn put<T>(&mut self, src: T)
    where\n T: Buf,\n Self: Sized,

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_bytes(&mut self, val: u8, cnt: usize)

    Put cnt bytes val into self. Read more
    §

    fn put_u128(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u128_le(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_u128_ne(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_i128(&mut self, n: i128)

    Writes a signed 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i128_le(&mut self, n: i128)

    Writes a signed 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_i128_ne(&mut self, n: i128)

    Writes a signed 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_uint(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in big-endian byte order. Read more
    §

    fn put_uint_le(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the little-endian byte order. Read more
    §

    fn put_uint_ne(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the native-endian byte order. Read more
    §

    fn put_int(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in big-endian byte order. Read more
    §

    fn put_int_le(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in little-endian byte order. Read more
    §

    fn put_int_ne(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in native-endian byte order. Read more
    §

    fn put_f32(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f32_le(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f32_ne(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn put_f64(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f64_le(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f64_ne(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn limit(self, limit: usize) -> Limit<Self>
    where\n Self: Sized,

    Creates an adaptor which can write at most limit bytes to self. Read more
    §

    fn writer(self) -> Writer<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Write trait for self. Read more
    §

    fn chain_mut<U>(self, next: U) -> Chain<Self, U>
    where\n U: BufMut,\n Self: Sized,

    Creates an adapter which will chain this buffer with another. Read more
    ","BufMut","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<B> BufRead for Box<B>
    where\n B: BufRead + ?Sized,

    source§

    fn fill_buf(&mut self) -> Result<&[u8], Error>

    Returns the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    source§

    fn consume(&mut self, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to read. Read more
    source§

    fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes into buf until the delimiter byte or EOF is reached. Read more
    source§

    fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until a newline (the 0xA byte) is reached, and append\nthem to the provided String buffer. Read more
    source§

    fn has_data_left(&mut self) -> Result<bool, Error>

    🔬This is a nightly-only experimental API. (buf_read_has_data_left)
    Check if the underlying Read has any data left to be read. Read more
    source§

    fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

    🔬This is a nightly-only experimental API. (bufread_skip_until)
    Skip all bytes until the delimiter byte or EOF is reached. Read more
    1.0.0 · source§

    fn split(self, byte: u8) -> Split<Self>
    where\n Self: Sized,

    Returns an iterator over the contents of this reader split on the byte\nbyte. Read more
    1.0.0 · source§

    fn lines(self) -> Lines<Self>
    where\n Self: Sized,

    Returns an iterator over the lines of this reader. Read more
    ","BufRead","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Clone for Box<T, A>
    where\n T: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> Box<T, A>

    Returns a new box with a clone() of this box’s contents.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet y = x.clone();\n\n// The value is the same\nassert_eq!(x, y);\n\n// But they are unique objects\nassert_ne!(&*x as *const i32, &*y as *const i32);
    \n
    source§

    fn clone_from(&mut self, source: &Box<T, A>)

    Copies source’s contents into self without creating a new allocation.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet mut y = Box::new(10);\nlet yp: *const i32 = &*y;\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no allocation occurred\nassert_eq!(yp, &*y);
    \n
    ","Clone","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<G, R, A> Coroutine<R> for Box<G, A>
    where\n G: Coroutine<R> + Unpin + ?Sized,\n A: Allocator,

    §

    type Yield = <G as Coroutine<R>>::Yield

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine yields. Read more
    §

    type Return = <G as Coroutine<R>>::Return

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine returns. Read more
    source§

    fn resume(\n self: Pin<&mut Box<G, A>>,\n arg: R\n) -> CoroutineState<<Box<G, A> as Coroutine<R>>::Yield, <Box<G, A> as Coroutine<R>>::Return>

    🔬This is a nightly-only experimental API. (coroutine_trait)
    Resumes the execution of this coroutine. Read more
    ","Coroutine","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Debug for Box<T, A>
    where\n T: Debug + ?Sized,\n A: Allocator,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T> Default for Box<T>
    where\n T: Default,

    source§

    fn default() -> Box<T>

    Creates a Box<T>, with the Default value for T.

    \n
    ","Default","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Deref for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    ","Deref","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> DerefMut for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn deref_mut(&mut self) -> &mut T

    Mutably dereferences the value.
    ","DerefMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<'de, T> Deserialize<'de> for Box<T>
    where\n T: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<Box<T>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Display for Box<T, A>
    where\n T: Display + ?Sized,\n A: Allocator,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> DoubleEndedIterator for Box<I, A>
    where\n I: DoubleEndedIterator + ?Sized,\n A: Allocator,

    source§

    fn next_back(&mut self) -> Option<<I as Iterator>::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes\nelements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single,\nfinal value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    ","DoubleEndedIterator","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Drop for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_esplora::blocking_ext::Error"],["
    1.8.0 · source§

    impl<T> Error for Box<T>
    where\n T: Error,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn provide<'b>(&'b self, request: &mut Request<'b>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    ","Error","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> ExactSizeIterator for Box<I, A>
    where\n I: ExactSizeIterator + ?Sized,\n A: Allocator,

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    ","ExactSizeIterator","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> Fn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: Fn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call(\n &self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","Fn","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnMut<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnMut","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as FnOnce<Args>>::Output

    The returned type after the call operator is used.
    source§

    extern "rust-call" fn call_once(\n self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnOnce","bdk_esplora::blocking_ext::Error"],["
    1.6.0 · source§

    impl<T> From<T> for Box<T>

    source§

    fn from(t: T) -> Box<T>

    Converts a T into a Box<T>

    \n

    The conversion allocates on the heap and moves t\nfrom the stack into it.

    \n
    §Examples
    \n
    let x = 5;\nlet boxed = Box::new(5);\n\nassert_eq!(Box::from(x), boxed);
    \n
    ","From","bdk_esplora::blocking_ext::Error"],["
    §

    impl<F> FusedFuture for Box<F>
    where\n F: FusedFuture + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the underlying future should no longer be polled.
    ","FusedFuture","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> FusedStream for Box<S>
    where\n S: FusedStream + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the stream should no longer be polled.
    ","FusedStream","bdk_esplora::blocking_ext::Error"],["
    1.36.0 · source§

    impl<F, A> Future for Box<F, A>
    where\n F: Future + Unpin + ?Sized,\n A: Allocator,

    §

    type Output = <F as Future>::Output

    The type of value produced on completion.
    source§

    fn poll(\n self: Pin<&mut Box<F, A>>,\n cx: &mut Context<'_>\n) -> Poll<<Box<F, A> as Future>::Output>

    Attempt to resolve the future to a final value, registering\nthe current task for wakeup if the value is not yet available. Read more
    ","Future","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Hash for Box<T, A>
    where\n T: Hash + ?Sized,\n A: Allocator,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_esplora::blocking_ext::Error"],["
    1.22.0 · source§

    impl<T, A> Hasher for Box<T, A>
    where\n T: Hasher + ?Sized,\n A: Allocator,

    source§

    fn finish(&self) -> u64

    Returns the hash value for the values written so far. Read more
    source§

    fn write(&mut self, bytes: &[u8])

    Writes some data into this Hasher. Read more
    source§

    fn write_u8(&mut self, i: u8)

    Writes a single u8 into this hasher.
    source§

    fn write_u16(&mut self, i: u16)

    Writes a single u16 into this hasher.
    source§

    fn write_u32(&mut self, i: u32)

    Writes a single u32 into this hasher.
    source§

    fn write_u64(&mut self, i: u64)

    Writes a single u64 into this hasher.
    source§

    fn write_u128(&mut self, i: u128)

    Writes a single u128 into this hasher.
    source§

    fn write_usize(&mut self, i: usize)

    Writes a single usize into this hasher.
    source§

    fn write_i8(&mut self, i: i8)

    Writes a single i8 into this hasher.
    source§

    fn write_i16(&mut self, i: i16)

    Writes a single i16 into this hasher.
    source§

    fn write_i32(&mut self, i: i32)

    Writes a single i32 into this hasher.
    source§

    fn write_i64(&mut self, i: i64)

    Writes a single i64 into this hasher.
    source§

    fn write_i128(&mut self, i: i128)

    Writes a single i128 into this hasher.
    source§

    fn write_isize(&mut self, i: isize)

    Writes a single isize into this hasher.
    source§

    fn write_length_prefix(&mut self, len: usize)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a length prefix into this hasher, as part of being prefix-free. Read more
    source§

    fn write_str(&mut self, s: &str)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a single str into this hasher. Read more
    ","Hasher","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> Iterator for Box<I, A>
    where\n I: Iterator + ?Sized,\n A: Allocator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<<I as Iterator>::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn nth(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element of the iterator. Read more
    source§

    fn last(self) -> Option<<I as Iterator>::Item>

    Consumes the iterator, returning the last element. Read more
    source§

    fn next_chunk<const N: usize>(\n &mut self\n) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where\n Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where\n Self: Sized,

    Creates an iterator starting at the same point, but stepping by\nthe given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where\n Self: Sized,\n G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator\nbetween adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each\nelement. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where\n Self: Sized,\n F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element\nshould be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where\n Self: Sized,

    Creates an iterator which gives the current iteration count as well as\nthe next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where\n Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods\nto look at the next element of the iterator without consuming it. See\ntheir documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where\n Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an iterator that yields the first n elements, or fewer\nif the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but\nunlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where\n Self: Sized,\n U: IntoIterator,\n F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where\n Self: Sized,\n F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over\nself and returns an iterator over the outputs of f. Like slice::windows(),\nthe windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where\n Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where\n Self: Sized,\n F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where\n B: FromIterator<Self::Item>,\n Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where\n E: Extend<Self::Item>,\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate,\nsuch that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    An iterator method that applies a function as long as it returns\nsuccessfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where\n Self: Sized,\n F: FnMut(Self::Item) -> R,\n R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the\niterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation,\nreturning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing\noperation. Read more
    source§

    fn try_reduce<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> R,\n R: Try<Output = Self::Item>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the\nclosure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns\nthe first non-none result. Read more
    source§

    fn try_find<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> R,\n R: Try<Output = bool>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns\nthe first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the\nspecified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the\nspecified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the\nspecified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the\nspecified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,\n Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where\n T: 'a + Copy,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where\n T: 'a + Clone,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where\n Self: Sized,\n S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where\n Self: Sized,\n P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Lexicographically compares the PartialOrd elements of\nthis Iterator with those of another. The comparison works like short-circuit\nevaluation, returning a result without comparing the remaining elements.\nAs soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are equal to those of\nanother. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of\nanother with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are not equal to those of\nanother. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> K,\n K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction\nfunction. Read more
    ","Iterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> LocalSpawn for Box<Sp>
    where\n Sp: LocalSpawn + ?Sized,

    §

    fn spawn_local_obj(\n &self,\n future: LocalFutureObj<'static, ()>\n) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status_local(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","LocalSpawn","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Ord for Box<T, A>
    where\n T: Ord + ?Sized,\n A: Allocator,

    source§

    fn cmp(&self, other: &Box<T, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialEq for Box<T, A>
    where\n T: PartialEq + ?Sized,\n A: Allocator,

    source§

    fn eq(&self, other: &Box<T, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    source§

    fn ne(&self, other: &Box<T, A>) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialOrd for Box<T, A>
    where\n T: PartialOrd + ?Sized,\n A: Allocator,

    source§

    fn partial_cmp(&self, other: &Box<T, A>) -> Option<Ordering>

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

    fn lt(&self, other: &Box<T, A>) -> bool

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

    fn le(&self, other: &Box<T, A>) -> bool

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

    fn ge(&self, other: &Box<T, A>) -> bool

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

    fn gt(&self, other: &Box<T, A>) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    ","PartialOrd","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Pointer for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Pointer","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<R> Read for Box<R>
    where\n R: Read + ?Sized,

    source§

    fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>

    Pull some bytes from this source into the specified buffer, returning\nhow many bytes were read. Read more
    source§

    fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Pull some bytes from this source into the specified buffer. Read more
    source§

    fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

    Like read, except that it reads into a slice of buffers. Read more
    source§

    fn is_read_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Reader has an efficient read_vectored\nimplementation. Read more
    source§

    fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes until EOF in this source, placing them into buf. Read more
    source§

    fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until EOF in this source, appending them to buf. Read more
    source§

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Read the exact number of bytes required to fill buf. Read more
    source§

    fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Read the exact number of bytes required to fill cursor. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adaptor for this instance of Read. Read more
    1.0.0 · source§

    fn bytes(self) -> Bytes<Self>
    where\n Self: Sized,

    Transforms this Read instance to an Iterator over its bytes. Read more
    1.0.0 · source§

    fn chain<R>(self, next: R) -> Chain<Self, R>
    where\n R: Read,\n Self: Sized,

    Creates an adapter which will chain this stream with another. Read more
    1.0.0 · source§

    fn take(self, limit: u64) -> Take<Self>
    where\n Self: Sized,

    Creates an adapter which will read at most limit bytes from it. Read more
    ","Read","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> RngCore for Box<R>
    where\n R: RngCore + ?Sized,

    source§

    fn next_u32(&mut self) -> u32

    Return the next random u32. Read more
    source§

    fn next_u64(&mut self) -> u64

    Return the next random u64. Read more
    source§

    fn fill_bytes(&mut self, dest: &mut [u8])

    Fill dest with random data. Read more
    source§

    fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>

    Fill dest entirely with random data. Read more
    ","RngCore","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<S> Seek for Box<S>
    where\n S: Seek + ?Sized,

    source§

    fn seek(&mut self, pos: SeekFrom) -> Result<u64, Error>

    Seek to an offset, in bytes, in a stream. Read more
    source§

    fn stream_position(&mut self) -> Result<u64, Error>

    Returns the current seek position from the start of the stream. Read more
    1.55.0 · source§

    fn rewind(&mut self) -> Result<(), Error>

    Rewind to the beginning of a stream. Read more
    source§

    fn stream_len(&mut self) -> Result<u64, Error>

    🔬This is a nightly-only experimental API. (seek_stream_len)
    Returns the length of this stream (in bytes). Read more
    source§

    fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (seek_seek_relative)
    Seeks relative to the current position. Read more
    ","Seek","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Serialize for Box<T>
    where\n T: Serialize + ?Sized,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Request> Service<Request> for Box<S>
    where\n S: Service<Request> + ?Sized,

    §

    type Response = <S as Service<Request>>::Response

    Responses given by the service.
    §

    type Error = <S as Service<Request>>::Error

    Errors produced by the service.
    §

    type Future = <S as Service<Request>>::Future

    The future response value.
    §

    fn poll_ready(\n &mut self,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <S as Service<Request>>::Error>>

    Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
    §

    fn call(&mut self, request: Request) -> <S as Service<Request>>::Future

    Process the request and return the response asynchronously. Read more
    ","Service","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Item> Sink<Item> for Box<S>
    where\n S: Sink<Item> + Unpin + ?Sized,

    §

    type Error = <S as Sink<Item>>::Error

    The type of value produced by the sink when an error occurs.
    §

    fn poll_ready(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Attempts to prepare the Sink to receive a value. Read more
    §

    fn start_send(\n self: Pin<&mut Box<S>>,\n item: Item\n) -> Result<(), <Box<S> as Sink<Item>>::Error>

    Begin the process of sending a value to the sink.\nEach call to this function must be preceded by a successful call to\npoll_ready which returned Poll::Ready(Ok(())). Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output from this sink. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output and close this sink, if necessary. Read more
    ","Sink","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Source for Box<T>
    where\n T: Source + ?Sized,

    §

    fn register(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Register self with the given Registry instance. Read more
    §

    fn reregister(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Re-register self with the given Registry instance. Read more
    §

    fn deregister(&mut self, registry: &Registry) -> Result<(), Error>

    Deregister self from the given Registry instance. Read more
    ","Source","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> Spawn for Box<Sp>
    where\n Sp: Spawn + ?Sized,

    §

    fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","Spawn","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Stream for Box<S>
    where\n S: Stream + Unpin + ?Sized,

    §

    type Item = <S as Stream>::Item

    Values yielded by the stream.
    §

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as Stream>::Item>>

    Attempt to pull out the next value of this stream, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the stream is exhausted. Read more
    §

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the stream. Read more
    ","Stream","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Subscriber for Box<S>
    where\n S: Subscriber + ?Sized,

    §

    fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

    Registers a new callsite with this subscriber, returning whether or not\nthe subscriber is interested in being notified about the callsite. Read more
    §

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    Returns true if a span or event with the specified metadata would be\nrecorded. Read more
    §

    fn max_level_hint(&self) -> Option<LevelFilter>

    Returns the highest verbosity level that this Subscriber will\nenable, or None, if the subscriber does not implement level-based\nfiltering or chooses not to implement this method. Read more
    §

    fn new_span(&self, span: &Attributes<'_>) -> Id

    Visit the construction of a new span, returning a new span ID for the\nspan being constructed. Read more
    §

    fn record(&self, span: &Id, values: &Record<'_>)

    Record a set of values on a span. Read more
    §

    fn record_follows_from(&self, span: &Id, follows: &Id)

    Adds an indication that span follows from the span with the id\nfollows. Read more
    §

    fn event_enabled(&self, event: &Event<'_>) -> bool

    Determine if an [Event] should be recorded. Read more
    §

    fn event(&self, event: &Event<'_>)

    Records that an Event has occurred. Read more
    §

    fn enter(&self, span: &Id)

    Records that a span has been entered. Read more
    §

    fn exit(&self, span: &Id)

    Records that a span has been exited. Read more
    §

    fn clone_span(&self, id: &Id) -> Id

    Notifies the subscriber that a span ID has been cloned. Read more
    §

    fn try_close(&self, id: Id) -> bool

    Notifies the subscriber that a span ID has been dropped, and returns\ntrue if there are now 0 IDs that refer to that span. Read more
    §

    fn drop_span(&self, id: Id)

    👎Deprecated since 0.1.2: use Subscriber::try_close instead
    This method is deprecated. Read more
    §

    fn current_span(&self) -> Current

    Returns a type representing this subscriber’s view of the current span. Read more
    §

    unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()>

    If self is the same type as the provided TypeId, returns an untyped\n*const pointer to that type. Otherwise, returns None. Read more
    §

    fn on_register_dispatch(&self, subscriber: &Dispatch)

    Invoked when this subscriber becomes a [Dispatch]. Read more
    ","Subscriber","bdk_esplora::blocking_ext::Error"],["
    §

    impl<'a, T, F> UnsafeFutureObj<'a, T> for Box<F>
    where\n F: Future<Output = T> + 'a,

    §

    fn into_raw(self) -> *mut dyn Future<Output = T> + 'a

    Convert an owned instance into a (conceptually owned) fat pointer. Read more
    §

    unsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a)

    Drops the future represented by the given fat pointer. Read more
    ","UnsafeFutureObj<'a, T>","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Value for Box<T>
    where\n T: Value + ?Sized,

    §

    fn record(&self, key: &Field, visitor: &mut dyn Visit)

    Visits this value with the given Visitor.
    ","Value","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<W> Write for Box<W>
    where\n W: Write + ?Sized,

    source§

    fn write(&mut self, buf: &[u8]) -> Result<usize, Error>

    Write a buffer into this writer, returning how many bytes were written. Read more
    source§

    fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

    Like write, except that it writes from a slice of buffers. Read more
    source§

    fn is_write_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Writer has an efficient write_vectored\nimplementation. Read more
    source§

    fn flush(&mut self) -> Result<(), Error>

    Flush this output stream, ensuring that all intermediately buffered\ncontents reach their destination. Read more
    source§

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    source§

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error\nencountered. Read more
    source§

    fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (write_all_vectored)
    Attempts to write multiple buffers into this writer. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adapter for this instance of Write. Read more
    ","Write","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U, A> CoerceUnsized<Box<U, A>> for Box<T, A>
    where\n T: Unsize<U> + ?Sized,\n A: Allocator,\n U: ?Sized,

    ","CoerceUnsized>","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> CryptoRng for Box<R>
    where\n R: CryptoRng + ?Sized,

    ","CryptoRng","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> DerefPure for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","DerefPure","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U> DispatchFromDyn<Box<U>> for Box<T>
    where\n T: Unsize<U> + ?Sized,\n U: ?Sized,

    ","DispatchFromDyn>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Eq for Box<T, A>
    where\n T: Eq + ?Sized,\n A: Allocator,

    ","Eq","bdk_esplora::blocking_ext::Error"],["
    1.26.0 · source§

    impl<I, A> FusedIterator for Box<I, A>
    where\n I: FusedIterator + ?Sized,\n A: Allocator,

    ","FusedIterator","bdk_esplora::blocking_ext::Error"],["
    1.33.0 · source§

    impl<T, A> Unpin for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","Unpin","bdk_esplora::blocking_ext::Error"]] +"bdk_esplora":[["
    1.64.0 · source§

    impl<T> AsFd for Box<T>
    where\n T: AsFd + ?Sized,

    source§

    fn as_fd(&self) -> BorrowedFd<'_>

    Borrows the file descriptor. Read more
    ","AsFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn as_mut(&mut self) -> &mut T

    Converts this type into a mutable reference of the (usually inferred) input type.
    ","AsMut","bdk_esplora::blocking_ext::Error"],["
    1.63.0 · source§

    impl<T> AsRawFd for Box<T>
    where\n T: AsRawFd,

    source§

    fn as_raw_fd(&self) -> i32

    Extracts the raw file descriptor. Read more
    ","AsRawFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsRef<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn as_ref(&self) -> &T

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempt to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempts to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn async_call(\n &self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFn, returning a future which may borrow from the called closure.
    ","AsyncFn","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnMut<Args> + ?Sized,\n A: Allocator,

    §

    type CallRefFuture<'a> = <F as AsyncFnMut<Args>>::CallRefFuture<'a>\nwhere\n Box<F, A>: 'a

    🔬This is a nightly-only experimental API. (async_fn_traits)
    source§

    extern "rust-call" fn async_call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnMut, returning a future which may borrow from the called closure.
    ","AsyncFnMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as AsyncFnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Output type of the called closure’s future.
    §

    type CallOnceFuture = <F as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Future returned by AsyncFnOnce::async_call_once.
    source§

    extern "rust-call" fn async_call_once(\n self,\n args: Args\n) -> <Box<F, A> as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnOnce, returning a future which may move out of the called closure.
    ","AsyncFnOnce","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<S> AsyncIterator for Box<S>
    where\n S: AsyncIterator + Unpin + ?Sized,

    §

    type Item = <S as AsyncIterator>::Item

    🔬This is a nightly-only experimental API. (async_iterator)
    The type of items yielded by the async iterator.
    source§

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as AsyncIterator>::Item>>

    🔬This is a nightly-only experimental API. (async_iterator)
    Attempt to pull out the next value of this async iterator, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the async iterator is exhausted. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    🔬This is a nightly-only experimental API. (async_iterator)
    Returns the bounds on the remaining length of the async iterator. Read more
    ","AsyncIterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut ReadBuf<'_>\n) -> Poll<Result<(), Error>>

    Attempts to read from the AsyncRead into buf. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut [u8]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into buf. Read more
    §

    fn poll_read_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &mut [IoSliceMut<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into bufs using vectored\nIO operations. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn poll_seek(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n pos: SeekFrom\n) -> Poll<Result<u64, Error>>

    Attempt to seek to an offset, in bytes, in a stream. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn start_seek(self: Pin<&mut Box<T>>, pos: SeekFrom) -> Result<(), Error>

    Attempts to seek to an offset, in bytes, in a stream. Read more
    §

    fn poll_complete(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<u64, Error>>

    Waits for a seek operation to complete. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from bufs into the object using vectored\nIO operations. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to close the object. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Like poll_write, except that it writes from a slice of buffers. Read more
    §

    fn is_write_vectored(&self) -> bool

    Determines if this writer has an efficient poll_write_vectored\nimplementation. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempts to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_shutdown(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Initiates or attempts to shut down this writer, returning success when\nthe I/O connection has completely shut down. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Body for Box<T>
    where\n T: Body + Unpin + ?Sized,

    §

    type Data = <T as Body>::Data

    Values yielded by the Body.
    §

    type Error = <T as Body>::Error

    The error type this Body might generate.
    source§

    fn poll_data(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Option<Result<<Box<T> as Body>::Data, <Box<T> as Body>::Error>>>

    Attempt to pull out the next data buffer of this stream.
    source§

    fn poll_trailers(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<Option<HeaderMap>, <Box<T> as Body>::Error>>

    Poll for an optional single HeaderMap of trailers. Read more
    source§

    fn is_end_stream(&self) -> bool

    Returns true when the end of stream has been reached. Read more
    source§

    fn size_hint(&self) -> SizeHint

    Returns the bounds on the remaining length of the stream. Read more
    source§

    fn data(&mut self) -> Data<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to next data chunk, if any.
    source§

    fn trailers(&mut self) -> Trailers<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to trailers, if any.
    source§

    fn map_data<F, B>(self, f: F) -> MapData<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Data) -> B,\n B: Buf,

    Maps this body’s data value to a different value.
    source§

    fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Error) -> E,

    Maps this body’s error value to a different value.
    source§

    fn collect(self) -> Collect<Self>
    where\n Self: Sized,

    Turn this body into Collected body which will collect all the DATA frames\nand trailers.
    ","Body","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> Borrow<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    ","Borrow","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> BorrowMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    ","BorrowMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>

    1.0.0 · source

    pub fn new(x: T) -> Box<T>

    Allocates memory on the heap and then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    let five = Box::new(5);
    \n
    source

    pub fn new_uninit() -> Box<MaybeUninit<T>>

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

    Constructs a new box with uninitialized contents.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet mut five = Box::<u32>::new_uninit();\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn new_zeroed() -> Box<MaybeUninit<T>>

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet zero = Box::<u32>::new_zeroed();\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    1.33.0 · source

    pub fn pin(x: T) -> Pin<Box<T>>

    Constructs a new Pin<Box<T>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin(x)\ndoes the same as Box::into_pin(Box::new(x)). Consider using\ninto_pin if you already have a Box<T>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new.

    \n
    source

    pub fn try_new(x: T) -> Result<Box<T>, AllocError>

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

    Allocates memory on the heap then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nlet five = Box::try_new(5)?;
    \n
    source

    pub fn try_new_uninit() -> Result<Box<MaybeUninit<T>>, AllocError>

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

    Constructs a new box with uninitialized contents on the heap,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet mut five = Box::<u32>::try_new_uninit()?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn try_new_zeroed() -> Result<Box<MaybeUninit<T>>, AllocError>

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes on the heap

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet zero = Box::<u32>::try_new_zeroed()?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>
    where\n T: ?Sized,

    1.4.0 · source

    pub unsafe fn from_raw(raw: *mut T) -> Box<T>

    Constructs a box from a raw pointer.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n

    The safety conditions are described in the memory layout section.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw:

    \n\n
    let x = Box::new(5);\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manually create a Box from scratch by using the global allocator:

    \n\n
    use std::alloc::{alloc, Layout};\n\nunsafe {\n    let ptr = alloc(Layout::new::<i32>()) as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw(ptr);\n}
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,

    source

    pub fn new_in(x: T, alloc: A) -> Box<T, A>
    where\n A: Allocator,

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

    Allocates memory in the given allocator then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::new_in(5, System);
    \n
    source

    pub fn try_new_in(x: T, alloc: A) -> Result<Box<T, A>, AllocError>
    where\n A: Allocator,

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

    Allocates memory in the given allocator then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::try_new_in(5, System)?;
    \n
    source

    pub fn new_uninit_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

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

    Constructs a new box with uninitialized contents in the provided allocator.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::new_uninit_in(System);\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn try_new_uninit_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

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

    Constructs a new box with uninitialized contents in the provided allocator,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::try_new_uninit_in(System)?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn new_zeroed_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::new_zeroed_in(System);\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    source

    pub fn try_new_zeroed_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

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

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator,\nreturning an error if the allocation fails,

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::try_new_zeroed_in(System)?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    source

    pub fn pin_in(x: T, alloc: A) -> Pin<Box<T, A>>
    where\n A: 'static + Allocator,

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

    Constructs a new Pin<Box<T, A>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin_in(x, alloc)\ndoes the same as Box::into_pin(Box::new_in(x, alloc)). Consider using\ninto_pin if you already have a Box<T, A>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new_in.

    \n
    source

    pub fn into_boxed_slice(boxed: Box<T, A>) -> Box<[T], A>

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

    Converts a Box<T> into a Box<[T]>

    \n

    This conversion does not allocate on the heap and happens in place.

    \n
    source

    pub fn into_inner(boxed: Box<T, A>) -> T

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

    Consumes the Box, returning the wrapped value.

    \n
    §Examples
    \n
    #![feature(box_into_inner)]\n\nlet c = Box::new(5);\n\nassert_eq!(Box::into_inner(c), 5);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    const: unstable · source

    pub unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Box<T, A>

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

    Constructs a box from a raw pointer in the given allocator.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw_with_allocator:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(5, System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manually create a Box from scratch by using the system allocator:

    \n\n
    #![feature(allocator_api, slice_ptr_get)]\n\nuse std::alloc::{Allocator, Layout, System};\n\nunsafe {\n    let ptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr() as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw_in(ptr, System);\n}
    \n
    1.4.0 · source

    pub fn into_raw(b: Box<T, A>) -> *mut T

    Consumes the Box, returning a wrapped raw pointer.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw(b) instead of b.into_raw(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw\nfor automatic cleanup:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    use std::alloc::{dealloc, Layout};\nuse std::ptr;\n\nlet x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    dealloc(ptr as *mut u8, Layout::new::<String>());\n}
    \n

    Note: This is equivalent to the following:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    drop(Box::from_raw(ptr));\n}
    \n
    source

    pub fn into_raw_with_allocator(b: Box<T, A>) -> (*mut T, A)

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

    Consumes the Box, returning a wrapped raw pointer and the allocator.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw_in function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw_with_allocator(b) instead of b.into_raw_with_allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw_in\nfor automatic cleanup:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::{Allocator, Layout, System};\nuse std::ptr::{self, NonNull};\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    let non_null = NonNull::new_unchecked(ptr);\n    alloc.deallocate(non_null.cast(), Layout::new::<String>());\n}
    \n
    const: unstable · source

    pub fn allocator(b: &Box<T, A>) -> &A

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

    Returns a reference to the underlying allocator.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::allocator(&b) instead of b.allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    1.26.0 · source

    pub fn leak<'a>(b: Box<T, A>) -> &'a mut T
    where\n A: 'a,

    Consumes and leaks the Box, returning a mutable reference,\n&'a mut T. Note that the type T must outlive the chosen lifetime\n'a. If the type has only static references, or none at all, then this\nmay be chosen to be 'static.

    \n

    This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak. If this is not acceptable, the reference should first be wrapped\nwith the Box::from_raw function producing a Box. This Box can\nthen be dropped which will properly destroy T and release the\nallocated memory.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::leak(b) instead of b.leak(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Simple usage:

    \n\n
    let x = Box::new(41);\nlet static_ref: &'static mut usize = Box::leak(x);\n*static_ref += 1;\nassert_eq!(*static_ref, 42);
    \n

    Unsized data:

    \n\n
    let x = vec![1, 2, 3].into_boxed_slice();\nlet static_ref = Box::leak(x);\nstatic_ref[0] = 4;\nassert_eq!(*static_ref, [4, 2, 3]);
    \n
    1.63.0 (const: unstable) · source

    pub fn into_pin(boxed: Box<T, A>) -> Pin<Box<T, A>>
    where\n A: 'static,

    Converts a Box<T> into a Pin<Box<T>>. If T does not implement Unpin, then\n*boxed will be pinned in memory and unable to be moved.

    \n

    This conversion does not allocate on the heap and happens in place.

    \n

    This is also available via From.

    \n

    Constructing and pinning a Box with Box::into_pin(Box::new(x))\ncan also be written more concisely using Box::pin(x).\nThis into_pin method is useful if you already have a Box<T>, or you are\nconstructing a (pinned) Box in a different way than with Box::new.

    \n
    §Notes
    \n

    It’s not recommended that crates add an impl like From<Box<T>> for Pin<T>,\nas it’ll introduce an ambiguity when calling Pin::from.\nA demonstration of such a poor impl is shown below.

    \n\n
    ⓘ
    struct Foo; // A type defined in this crate.\nimpl From<Box<()>> for Pin<Foo> {\n    fn from(_: Box<()>) -> Pin<Foo> {\n        Pin::new(Foo)\n    }\n}\n\nlet foo = Box::new(());\nlet bar = Pin::from(foo);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Buf for Box<T>
    where\n T: Buf + ?Sized,

    §

    fn remaining(&self) -> usize

    Returns the number of bytes between the current position and the end of\nthe buffer. Read more
    §

    fn chunk(&self) -> &[u8] ⓘ

    Returns a slice starting at the current position and of length between 0\nand Buf::remaining(). Note that this can return shorter slice (this allows\nnon-continuous internal representation). Read more
    §

    fn chunks_vectored<'b>(&'b self, dst: &mut [IoSlice<'b>]) -> usize

    Fills dst with potentially multiple slices starting at self’s\ncurrent position. Read more
    §

    fn advance(&mut self, cnt: usize)

    Advance the internal cursor of the Buf Read more
    §

    fn has_remaining(&self) -> bool

    Returns true if there are any more bytes to consume Read more
    §

    fn copy_to_slice(&mut self, dst: &mut [u8])

    Copies bytes from self into dst. Read more
    §

    fn get_u8(&mut self) -> u8

    Gets an unsigned 8 bit integer from self. Read more
    §

    fn get_i8(&mut self) -> i8

    Gets a signed 8 bit integer from self. Read more
    §

    fn get_u16(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_u16_le(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_u16_ne(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_i16(&mut self) -> i16

    Gets a signed 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_i16_le(&mut self) -> i16

    Gets a signed 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_i16_ne(&mut self) -> i16

    Gets a signed 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_u32(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the big-endian byte order. Read more
    §

    fn get_u32_le(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the little-endian byte order. Read more
    §

    fn get_u32_ne(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_i32(&mut self) -> i32

    Gets a signed 32 bit integer from self in big-endian byte order. Read more
    §

    fn get_i32_le(&mut self) -> i32

    Gets a signed 32 bit integer from self in little-endian byte order. Read more
    §

    fn get_i32_ne(&mut self) -> i32

    Gets a signed 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_u64(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_u64_le(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_u64_ne(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_i64(&mut self) -> i64

    Gets a signed 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_i64_le(&mut self) -> i64

    Gets a signed 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_i64_ne(&mut self) -> i64

    Gets a signed 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_uint(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in big-endian byte order. Read more
    §

    fn get_uint_le(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in little-endian byte order. Read more
    §

    fn get_uint_ne(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in native-endian byte order. Read more
    §

    fn get_int(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in big-endian byte order. Read more
    §

    fn get_int_le(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in little-endian byte order. Read more
    §

    fn get_int_ne(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in native-endian byte order. Read more
    §

    fn copy_to_bytes(&mut self, len: usize) -> Bytes

    Consumes len bytes inside self and returns new instance of Bytes\nwith this data. Read more
    §

    fn get_u128(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_u128_le(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_u128_ne(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_i128(&mut self) -> i128

    Gets a signed 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_i128_le(&mut self) -> i128

    Gets a signed 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_i128_ne(&mut self) -> i128

    Gets a signed 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_f32(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f32_le(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f32_ne(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn get_f64(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f64_le(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f64_ne(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn take(self, limit: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an adaptor which will read at most limit bytes from self. Read more
    §

    fn chain<U>(self, next: U) -> Chain<Self, U>
    where\n U: Buf,\n Self: Sized,

    Creates an adaptor which will chain this buffer with another. Read more
    §

    fn reader(self) -> Reader<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Read trait for self. Read more
    ","Buf","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> BufMut for Box<T>
    where\n T: BufMut + ?Sized,

    §

    fn remaining_mut(&self) -> usize

    Returns the number of bytes that can be written from the current\nposition until the end of the buffer is reached. Read more
    §

    fn chunk_mut(&mut self) -> &mut UninitSlice

    Returns a mutable slice starting at the current BufMut position and of\nlength between 0 and BufMut::remaining_mut(). Note that this can be shorter than the\nwhole remainder of the buffer (this allows non-continuous implementation). Read more
    §

    unsafe fn advance_mut(&mut self, cnt: usize)

    Advance the internal cursor of the BufMut Read more
    §

    fn put_slice(&mut self, src: &[u8])

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_u8(&mut self, n: u8)

    Writes an unsigned 8 bit integer to self. Read more
    §

    fn put_i8(&mut self, n: i8)

    Writes a signed 8 bit integer to self. Read more
    §

    fn put_u16(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_u16_le(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_u16_ne(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_i16(&mut self, n: i16)

    Writes a signed 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_i16_le(&mut self, n: i16)

    Writes a signed 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_i16_ne(&mut self, n: i16)

    Writes a signed 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_u32(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_u32_le(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_u32_ne(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_i32(&mut self, n: i32)

    Writes a signed 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_i32_le(&mut self, n: i32)

    Writes a signed 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_i32_ne(&mut self, n: i32)

    Writes a signed 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_u64(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u64_le(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_u64_ne(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in native-endian byte order. Read more
    §

    fn put_i64(&mut self, n: i64)

    Writes a signed 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i64_le(&mut self, n: i64)

    Writes a signed 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_i64_ne(&mut self, n: i64)

    Writes a signed 64 bit integer to self in native-endian byte order. Read more
    §

    fn has_remaining_mut(&self) -> bool

    Returns true if there is space in self for more bytes. Read more
    §

    fn put<T>(&mut self, src: T)
    where\n T: Buf,\n Self: Sized,

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_bytes(&mut self, val: u8, cnt: usize)

    Put cnt bytes val into self. Read more
    §

    fn put_u128(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u128_le(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_u128_ne(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_i128(&mut self, n: i128)

    Writes a signed 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i128_le(&mut self, n: i128)

    Writes a signed 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_i128_ne(&mut self, n: i128)

    Writes a signed 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_uint(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in big-endian byte order. Read more
    §

    fn put_uint_le(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the little-endian byte order. Read more
    §

    fn put_uint_ne(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the native-endian byte order. Read more
    §

    fn put_int(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in big-endian byte order. Read more
    §

    fn put_int_le(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in little-endian byte order. Read more
    §

    fn put_int_ne(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in native-endian byte order. Read more
    §

    fn put_f32(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f32_le(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f32_ne(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn put_f64(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f64_le(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f64_ne(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn limit(self, limit: usize) -> Limit<Self>
    where\n Self: Sized,

    Creates an adaptor which can write at most limit bytes to self. Read more
    §

    fn writer(self) -> Writer<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Write trait for self. Read more
    §

    fn chain_mut<U>(self, next: U) -> Chain<Self, U>
    where\n U: BufMut,\n Self: Sized,

    Creates an adapter which will chain this buffer with another. Read more
    ","BufMut","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<B> BufRead for Box<B>
    where\n B: BufRead + ?Sized,

    source§

    fn fill_buf(&mut self) -> Result<&[u8], Error>

    Returns the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    source§

    fn consume(&mut self, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to read. Read more
    source§

    fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes into buf until the delimiter byte or EOF is reached. Read more
    source§

    fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until a newline (the 0xA byte) is reached, and append\nthem to the provided String buffer. Read more
    source§

    fn has_data_left(&mut self) -> Result<bool, Error>

    🔬This is a nightly-only experimental API. (buf_read_has_data_left)
    Check if the underlying Read has any data left to be read. Read more
    source§

    fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

    🔬This is a nightly-only experimental API. (bufread_skip_until)
    Skip all bytes until the delimiter byte or EOF is reached. Read more
    1.0.0 · source§

    fn split(self, byte: u8) -> Split<Self>
    where\n Self: Sized,

    Returns an iterator over the contents of this reader split on the byte\nbyte. Read more
    1.0.0 · source§

    fn lines(self) -> Lines<Self>
    where\n Self: Sized,

    Returns an iterator over the lines of this reader. Read more
    ","BufRead","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Clone for Box<T, A>
    where\n T: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> Box<T, A>

    Returns a new box with a clone() of this box’s contents.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet y = x.clone();\n\n// The value is the same\nassert_eq!(x, y);\n\n// But they are unique objects\nassert_ne!(&*x as *const i32, &*y as *const i32);
    \n
    source§

    fn clone_from(&mut self, source: &Box<T, A>)

    Copies source’s contents into self without creating a new allocation.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet mut y = Box::new(10);\nlet yp: *const i32 = &*y;\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no allocation occurred\nassert_eq!(yp, &*y);
    \n
    ","Clone","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<G, R, A> Coroutine<R> for Box<G, A>
    where\n G: Coroutine<R> + Unpin + ?Sized,\n A: Allocator,

    §

    type Yield = <G as Coroutine<R>>::Yield

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine yields. Read more
    §

    type Return = <G as Coroutine<R>>::Return

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine returns. Read more
    source§

    fn resume(\n self: Pin<&mut Box<G, A>>,\n arg: R\n) -> CoroutineState<<Box<G, A> as Coroutine<R>>::Yield, <Box<G, A> as Coroutine<R>>::Return>

    🔬This is a nightly-only experimental API. (coroutine_trait)
    Resumes the execution of this coroutine. Read more
    ","Coroutine","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Debug for Box<T, A>
    where\n T: Debug + ?Sized,\n A: Allocator,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T> Default for Box<T>
    where\n T: Default,

    source§

    fn default() -> Box<T>

    Creates a Box<T>, with the Default value for T.

    \n
    ","Default","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Deref for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    ","Deref","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> DerefMut for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn deref_mut(&mut self) -> &mut T

    Mutably dereferences the value.
    ","DerefMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<'de, T> Deserialize<'de> for Box<T>
    where\n T: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<Box<T>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Display for Box<T, A>
    where\n T: Display + ?Sized,\n A: Allocator,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<I> DoubleEndedFallibleIterator for Box<I>

    source§

    fn next_back(\n &mut self\n) -> Result<Option<<I as FallibleIterator>::Item>, <I as FallibleIterator>::Error>

    Advances the end of the iterator, returning the last value.
    source§

    fn rfold<B, F>(self, init: B, f: F) -> Result<B, Self::Error>
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> Result<B, Self::Error>,

    Applies a function over the elements of the iterator in reverse order, producing a single final value.
    source§

    fn try_rfold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E>
    where\n Self: Sized,\n E: From<Self::Error>,\n F: FnMut(B, Self::Item) -> Result<B, E>,

    Applies a function over the elements of the iterator in reverse, producing a single final value. Read more
    ","DoubleEndedFallibleIterator","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> DoubleEndedIterator for Box<I, A>
    where\n I: DoubleEndedIterator + ?Sized,\n A: Allocator,

    source§

    fn next_back(&mut self) -> Option<<I as Iterator>::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes\nelements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single,\nfinal value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    ","DoubleEndedIterator","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Drop for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_esplora::blocking_ext::Error"],["
    1.8.0 · source§

    impl<T> Error for Box<T>
    where\n T: Error,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

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

    fn provide<'b>(&'b self, request: &mut Request<'b>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    ","Error","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> ExactSizeIterator for Box<I, A>
    where\n I: ExactSizeIterator + ?Sized,\n A: Allocator,

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    ","ExactSizeIterator","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<I> FallibleIterator for Box<I>
    where\n I: FallibleIterator + ?Sized,

    §

    type Item = <I as FallibleIterator>::Item

    The type being iterated over.
    §

    type Error = <I as FallibleIterator>::Error

    The error type.
    source§

    fn next(\n &mut self\n) -> Result<Option<<I as FallibleIterator>::Item>, <I as FallibleIterator>::Error>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns bounds on the remaining length of the iterator. Read more
    source§

    fn nth(\n &mut self,\n n: usize\n) -> Result<Option<<I as FallibleIterator>::Item>, <I as FallibleIterator>::Error>

    Returns the nth element of the iterator.
    source§

    fn count(self) -> Result<usize, Self::Error>
    where\n Self: Sized,

    Consumes the iterator, returning the number of remaining items.
    source§

    fn last(self) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,

    Returns the last element of the iterator.
    source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where\n Self: Sized,

    Returns an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
    source§

    fn chain<I>(self, it: I) -> Chain<Self, I>
    where\n I: IntoFallibleIterator<Item = Self::Item, Error = Self::Error>,\n Self: Sized,

    Returns an iterator which yields the elements of this iterator followed\nby another.
    source§

    fn zip<I>(\n self,\n o: I\n) -> Zip<Self, <I as IntoFallibleIterator>::IntoFallibleIter>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,

    Returns an iterator that yields pairs of this iterator’s and another\niterator’s values.
    source§

    fn map<F, B>(self, f: F) -> Map<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<B, Self::Error>,

    Returns an iterator which applies a fallible transform to the elements\nof the underlying iterator.
    source§

    fn for_each<F>(self, f: F) -> Result<(), Self::Error>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<(), Self::Error>,

    Calls a fallible closure on each element of an iterator.
    source§

    fn filter<F>(self, f: F) -> Filter<Self, F>
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> Result<bool, Self::Error>,

    Returns an iterator which uses a predicate to determine which values\nshould be yielded. The predicate may fail; such failures are passed to\nthe caller.
    source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<Option<B>, Self::Error>,

    Returns an iterator which both filters and maps. The closure may fail;\nsuch failures are passed along to the consumer.
    source§

    fn enumerate(self) -> Enumerate<Self>
    where\n Self: Sized,

    Returns an iterator which yields the current iteration count as well\nas the value.
    source§

    fn peekable(self) -> Peekable<Self>
    where\n Self: Sized,

    Returns an iterator that can peek at the next element without consuming\nit.
    source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> Result<bool, Self::Error>,

    Returns an iterator that skips elements based on a predicate.
    source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> Result<bool, Self::Error>,

    Returns an iterator that yields elements based on a predicate.
    source§

    fn skip(self, n: usize) -> Skip<Self>
    where\n Self: Sized,

    Returns an iterator which skips the first n values of this iterator.
    source§

    fn take(self, n: usize) -> Take<Self>
    where\n Self: Sized,

    Returns an iterator that yields only the first n values of this\niterator.
    source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Result<Option<B>, Self::Error>,

    Returns an iterator which applies a stateful map to values of this\niterator.
    source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where\n Self: Sized,\n U: IntoFallibleIterator<Error = Self::Error>,\n F: FnMut(Self::Item) -> Result<U, Self::Error>,

    Returns an iterator which maps this iterator’s elements to iterators, yielding those iterators’ values.
    source§

    fn fuse(self) -> Fuse<Self>
    where\n Self: Sized,

    Returns an iterator which yields this iterator’s elements and ends after\nthe first Ok(None). Read more
    source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> Result<(), Self::Error>,

    Returns an iterator which passes each element to a closure before returning it.
    source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Borrow an iterator rather than consuming it. Read more
    source§

    fn collect<T>(self) -> Result<T, Self::Error>
    where\n T: FromIterator<Self::Item>,\n Self: Sized,

    Transforms the iterator into a collection. Read more
    source§

    fn partition<B, F>(self, f: F) -> Result<(B, B), Self::Error>
    where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> Result<bool, Self::Error>,

    Transforms the iterator into two collections, partitioning elements by a closure.
    source§

    fn fold<B, F>(self, init: B, f: F) -> Result<B, Self::Error>
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> Result<B, Self::Error>,

    Applies a function over the elements of the iterator, producing a single\nfinal value.
    source§

    fn try_fold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E>
    where\n Self: Sized,\n E: From<Self::Error>,\n F: FnMut(B, Self::Item) -> Result<B, E>,

    Applies a function over the elements of the iterator, producing a single final value. Read more
    source§

    fn all<F>(&mut self, f: F) -> Result<bool, Self::Error>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<bool, Self::Error>,

    Determines if all elements of this iterator match a predicate.
    source§

    fn any<F>(&mut self, f: F) -> Result<bool, Self::Error>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<bool, Self::Error>,

    Determines if any element of this iterator matches a predicate.
    source§

    fn find<F>(&mut self, f: F) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> Result<bool, Self::Error>,

    Returns the first element of the iterator that matches a predicate.
    source§

    fn find_map<B, F>(&mut self, f: F) -> Result<Option<B>, Self::Error>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<Option<B>, Self::Error>,

    Applies a function to the elements of the iterator, returning the first non-None result.
    source§

    fn position<F>(&mut self, f: F) -> Result<Option<usize>, Self::Error>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Result<bool, Self::Error>,

    Returns the position of the first element of this iterator that matches\na predicate. The predicate may fail; such failures are returned to the\ncaller.
    source§

    fn max_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,\n B: Ord,\n F: FnMut(&Self::Item) -> Result<B, Self::Error>,

    Returns the element of the iterator which gives the maximum value from\nthe function.
    source§

    fn max_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error>,

    Returns the element that gives the maximum value with respect to the function.
    source§

    fn min_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,\n B: Ord,\n F: FnMut(&Self::Item) -> Result<B, Self::Error>,

    Returns the element of the iterator which gives the minimum value from\nthe function.
    source§

    fn min_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error>,

    Returns the element that gives the minimum value with respect to the function.
    source§

    fn unzip<A, B, FromA, FromB>(self) -> Result<(FromA, FromB), Self::Error>
    where\n Self: Sized + FallibleIterator<Item = (A, B)>,\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,

    Converts an iterator of pairs into a pair of containers.
    source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where\n Self: Sized + FallibleIterator<Item = &'a T>,\n T: 'a + Clone,

    Returns an iterator which clones all of its elements.
    source§

    fn partial_cmp<I>(self, other: I) -> Result<Option<Ordering>, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>,

    Lexicographically compares the elements of this iterator to that of\nanother.
    source§

    fn eq<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialEq<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are equal to those of\nanother.
    source§

    fn ne<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialEq<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are not equal to those of\nanother.
    source§

    fn lt<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are lexicographically less\nthan those of another.
    source§

    fn le<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are lexicographically less\nthan or equal to those of another.
    source§

    fn gt<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are lexicographically\ngreater than those of another.
    source§

    fn ge<I>(self, other: I) -> Result<bool, Self::Error>
    where\n Self: Sized,\n I: IntoFallibleIterator<Error = Self::Error>,\n Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>,

    Determines if the elements of this iterator are lexicographically\ngreater than or equal to those of another.
    source§

    fn iterator(self) -> Iterator<Self>
    where\n Self: Sized,

    Returns a normal (non-fallible) iterator over Result<Item, Error>.
    source§

    fn map_err<B, F>(self, f: F) -> MapErr<Self, F>
    where\n F: FnMut(Self::Error) -> B,\n Self: Sized,

    Returns an iterator which applies a transform to the errors of the\nunderlying iterator.
    ","FallibleIterator","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> Fn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: Fn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call(\n &self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","Fn","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnMut<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnMut","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as FnOnce<Args>>::Output

    The returned type after the call operator is used.
    source§

    extern "rust-call" fn call_once(\n self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnOnce","bdk_esplora::blocking_ext::Error"],["
    1.6.0 · source§

    impl<T> From<T> for Box<T>

    source§

    fn from(t: T) -> Box<T>

    Converts a T into a Box<T>

    \n

    The conversion allocates on the heap and moves t\nfrom the stack into it.

    \n
    §Examples
    \n
    let x = 5;\nlet boxed = Box::new(5);\n\nassert_eq!(Box::from(x), boxed);
    \n
    ","From","bdk_esplora::blocking_ext::Error"],["
    §

    impl<F> FusedFuture for Box<F>
    where\n F: FusedFuture + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the underlying future should no longer be polled.
    ","FusedFuture","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> FusedStream for Box<S>
    where\n S: FusedStream + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the stream should no longer be polled.
    ","FusedStream","bdk_esplora::blocking_ext::Error"],["
    1.36.0 · source§

    impl<F, A> Future for Box<F, A>
    where\n F: Future + Unpin + ?Sized,\n A: Allocator,

    §

    type Output = <F as Future>::Output

    The type of value produced on completion.
    source§

    fn poll(\n self: Pin<&mut Box<F, A>>,\n cx: &mut Context<'_>\n) -> Poll<<Box<F, A> as Future>::Output>

    Attempt to resolve the future to a final value, registering\nthe current task for wakeup if the value is not yet available. Read more
    ","Future","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Hash for Box<T, A>
    where\n T: Hash + ?Sized,\n A: Allocator,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_esplora::blocking_ext::Error"],["
    1.22.0 · source§

    impl<T, A> Hasher for Box<T, A>
    where\n T: Hasher + ?Sized,\n A: Allocator,

    source§

    fn finish(&self) -> u64

    Returns the hash value for the values written so far. Read more
    source§

    fn write(&mut self, bytes: &[u8])

    Writes some data into this Hasher. Read more
    source§

    fn write_u8(&mut self, i: u8)

    Writes a single u8 into this hasher.
    source§

    fn write_u16(&mut self, i: u16)

    Writes a single u16 into this hasher.
    source§

    fn write_u32(&mut self, i: u32)

    Writes a single u32 into this hasher.
    source§

    fn write_u64(&mut self, i: u64)

    Writes a single u64 into this hasher.
    source§

    fn write_u128(&mut self, i: u128)

    Writes a single u128 into this hasher.
    source§

    fn write_usize(&mut self, i: usize)

    Writes a single usize into this hasher.
    source§

    fn write_i8(&mut self, i: i8)

    Writes a single i8 into this hasher.
    source§

    fn write_i16(&mut self, i: i16)

    Writes a single i16 into this hasher.
    source§

    fn write_i32(&mut self, i: i32)

    Writes a single i32 into this hasher.
    source§

    fn write_i64(&mut self, i: i64)

    Writes a single i64 into this hasher.
    source§

    fn write_i128(&mut self, i: i128)

    Writes a single i128 into this hasher.
    source§

    fn write_isize(&mut self, i: isize)

    Writes a single isize into this hasher.
    source§

    fn write_length_prefix(&mut self, len: usize)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a length prefix into this hasher, as part of being prefix-free. Read more
    source§

    fn write_str(&mut self, s: &str)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a single str into this hasher. Read more
    ","Hasher","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> Iterator for Box<I, A>
    where\n I: Iterator + ?Sized,\n A: Allocator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<<I as Iterator>::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn nth(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element of the iterator. Read more
    source§

    fn last(self) -> Option<<I as Iterator>::Item>

    Consumes the iterator, returning the last element. Read more
    source§

    fn next_chunk<const N: usize>(\n &mut self\n) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where\n Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where\n Self: Sized,

    Creates an iterator starting at the same point, but stepping by\nthe given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where\n Self: Sized,\n G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator\nbetween adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each\nelement. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where\n Self: Sized,\n F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element\nshould be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where\n Self: Sized,

    Creates an iterator which gives the current iteration count as well as\nthe next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where\n Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods\nto look at the next element of the iterator without consuming it. See\ntheir documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where\n Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an iterator that yields the first n elements, or fewer\nif the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but\nunlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where\n Self: Sized,\n U: IntoIterator,\n F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where\n Self: Sized,\n F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over\nself and returns an iterator over the outputs of f. Like slice::windows(),\nthe windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where\n Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where\n Self: Sized,\n F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where\n B: FromIterator<Self::Item>,\n Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where\n E: Extend<Self::Item>,\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate,\nsuch that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    An iterator method that applies a function as long as it returns\nsuccessfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where\n Self: Sized,\n F: FnMut(Self::Item) -> R,\n R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the\niterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation,\nreturning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing\noperation. Read more
    source§

    fn try_reduce<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> R,\n R: Try<Output = Self::Item>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the\nclosure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns\nthe first non-none result. Read more
    source§

    fn try_find<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> R,\n R: Try<Output = bool>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns\nthe first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the\nspecified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the\nspecified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the\nspecified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the\nspecified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,\n Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where\n T: 'a + Copy,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where\n T: 'a + Clone,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where\n Self: Sized,\n S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where\n Self: Sized,\n P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Lexicographically compares the PartialOrd elements of\nthis Iterator with those of another. The comparison works like short-circuit\nevaluation, returning a result without comparing the remaining elements.\nAs soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are equal to those of\nanother. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of\nanother with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are not equal to those of\nanother. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> K,\n K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction\nfunction. Read more
    ","Iterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> LocalSpawn for Box<Sp>
    where\n Sp: LocalSpawn + ?Sized,

    §

    fn spawn_local_obj(\n &self,\n future: LocalFutureObj<'static, ()>\n) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status_local(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","LocalSpawn","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Ord for Box<T, A>
    where\n T: Ord + ?Sized,\n A: Allocator,

    source§

    fn cmp(&self, other: &Box<T, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialEq for Box<T, A>
    where\n T: PartialEq + ?Sized,\n A: Allocator,

    source§

    fn eq(&self, other: &Box<T, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    source§

    fn ne(&self, other: &Box<T, A>) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialOrd for Box<T, A>
    where\n T: PartialOrd + ?Sized,\n A: Allocator,

    source§

    fn partial_cmp(&self, other: &Box<T, A>) -> Option<Ordering>

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

    fn lt(&self, other: &Box<T, A>) -> bool

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

    fn le(&self, other: &Box<T, A>) -> bool

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

    fn ge(&self, other: &Box<T, A>) -> bool

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

    fn gt(&self, other: &Box<T, A>) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    ","PartialOrd","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Pointer for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Pointer","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<R> Read for Box<R>
    where\n R: Read + ?Sized,

    source§

    fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>

    Pull some bytes from this source into the specified buffer, returning\nhow many bytes were read. Read more
    source§

    fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Pull some bytes from this source into the specified buffer. Read more
    source§

    fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

    Like read, except that it reads into a slice of buffers. Read more
    source§

    fn is_read_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Reader has an efficient read_vectored\nimplementation. Read more
    source§

    fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes until EOF in this source, placing them into buf. Read more
    source§

    fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until EOF in this source, appending them to buf. Read more
    source§

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Read the exact number of bytes required to fill buf. Read more
    source§

    fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Read the exact number of bytes required to fill cursor. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adaptor for this instance of Read. Read more
    1.0.0 · source§

    fn bytes(self) -> Bytes<Self>
    where\n Self: Sized,

    Transforms this Read instance to an Iterator over its bytes. Read more
    1.0.0 · source§

    fn chain<R>(self, next: R) -> Chain<Self, R>
    where\n R: Read,\n Self: Sized,

    Creates an adapter which will chain this stream with another. Read more
    1.0.0 · source§

    fn take(self, limit: u64) -> Take<Self>
    where\n Self: Sized,

    Creates an adapter which will read at most limit bytes from it. Read more
    ","Read","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> RngCore for Box<R>
    where\n R: RngCore + ?Sized,

    source§

    fn next_u32(&mut self) -> u32

    Return the next random u32. Read more
    source§

    fn next_u64(&mut self) -> u64

    Return the next random u64. Read more
    source§

    fn fill_bytes(&mut self, dest: &mut [u8])

    Fill dest with random data. Read more
    source§

    fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>

    Fill dest entirely with random data. Read more
    ","RngCore","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<S> Seek for Box<S>
    where\n S: Seek + ?Sized,

    source§

    fn seek(&mut self, pos: SeekFrom) -> Result<u64, Error>

    Seek to an offset, in bytes, in a stream. Read more
    source§

    fn stream_position(&mut self) -> Result<u64, Error>

    Returns the current seek position from the start of the stream. Read more
    1.55.0 · source§

    fn rewind(&mut self) -> Result<(), Error>

    Rewind to the beginning of a stream. Read more
    source§

    fn stream_len(&mut self) -> Result<u64, Error>

    🔬This is a nightly-only experimental API. (seek_stream_len)
    Returns the length of this stream (in bytes). Read more
    source§

    fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (seek_seek_relative)
    Seeks relative to the current position. Read more
    ","Seek","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Serialize for Box<T>
    where\n T: Serialize + ?Sized,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Request> Service<Request> for Box<S>
    where\n S: Service<Request> + ?Sized,

    §

    type Response = <S as Service<Request>>::Response

    Responses given by the service.
    §

    type Error = <S as Service<Request>>::Error

    Errors produced by the service.
    §

    type Future = <S as Service<Request>>::Future

    The future response value.
    §

    fn poll_ready(\n &mut self,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <S as Service<Request>>::Error>>

    Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
    §

    fn call(&mut self, request: Request) -> <S as Service<Request>>::Future

    Process the request and return the response asynchronously. Read more
    ","Service","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Item> Sink<Item> for Box<S>
    where\n S: Sink<Item> + Unpin + ?Sized,

    §

    type Error = <S as Sink<Item>>::Error

    The type of value produced by the sink when an error occurs.
    §

    fn poll_ready(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Attempts to prepare the Sink to receive a value. Read more
    §

    fn start_send(\n self: Pin<&mut Box<S>>,\n item: Item\n) -> Result<(), <Box<S> as Sink<Item>>::Error>

    Begin the process of sending a value to the sink.\nEach call to this function must be preceded by a successful call to\npoll_ready which returned Poll::Ready(Ok(())). Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output from this sink. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output and close this sink, if necessary. Read more
    ","Sink","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Source for Box<T>
    where\n T: Source + ?Sized,

    §

    fn register(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Register self with the given Registry instance. Read more
    §

    fn reregister(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Re-register self with the given Registry instance. Read more
    §

    fn deregister(&mut self, registry: &Registry) -> Result<(), Error>

    Deregister self from the given Registry instance. Read more
    ","Source","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> Spawn for Box<Sp>
    where\n Sp: Spawn + ?Sized,

    §

    fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","Spawn","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Stream for Box<S>
    where\n S: Stream + Unpin + ?Sized,

    §

    type Item = <S as Stream>::Item

    Values yielded by the stream.
    §

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as Stream>::Item>>

    Attempt to pull out the next value of this stream, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the stream is exhausted. Read more
    §

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the stream. Read more
    ","Stream","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Subscriber for Box<S>
    where\n S: Subscriber + ?Sized,

    §

    fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

    Registers a new callsite with this subscriber, returning whether or not\nthe subscriber is interested in being notified about the callsite. Read more
    §

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    Returns true if a span or event with the specified metadata would be\nrecorded. Read more
    §

    fn max_level_hint(&self) -> Option<LevelFilter>

    Returns the highest verbosity level that this Subscriber will\nenable, or None, if the subscriber does not implement level-based\nfiltering or chooses not to implement this method. Read more
    §

    fn new_span(&self, span: &Attributes<'_>) -> Id

    Visit the construction of a new span, returning a new span ID for the\nspan being constructed. Read more
    §

    fn record(&self, span: &Id, values: &Record<'_>)

    Record a set of values on a span. Read more
    §

    fn record_follows_from(&self, span: &Id, follows: &Id)

    Adds an indication that span follows from the span with the id\nfollows. Read more
    §

    fn event_enabled(&self, event: &Event<'_>) -> bool

    Determine if an [Event] should be recorded. Read more
    §

    fn event(&self, event: &Event<'_>)

    Records that an Event has occurred. Read more
    §

    fn enter(&self, span: &Id)

    Records that a span has been entered. Read more
    §

    fn exit(&self, span: &Id)

    Records that a span has been exited. Read more
    §

    fn clone_span(&self, id: &Id) -> Id

    Notifies the subscriber that a span ID has been cloned. Read more
    §

    fn try_close(&self, id: Id) -> bool

    Notifies the subscriber that a span ID has been dropped, and returns\ntrue if there are now 0 IDs that refer to that span. Read more
    §

    fn drop_span(&self, id: Id)

    👎Deprecated since 0.1.2: use Subscriber::try_close instead
    This method is deprecated. Read more
    §

    fn current_span(&self) -> Current

    Returns a type representing this subscriber’s view of the current span. Read more
    §

    unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()>

    If self is the same type as the provided TypeId, returns an untyped\n*const pointer to that type. Otherwise, returns None. Read more
    §

    fn on_register_dispatch(&self, subscriber: &Dispatch)

    Invoked when this subscriber becomes a [Dispatch]. Read more
    ","Subscriber","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> ToSql for Box<T>
    where\n T: ToSql + ?Sized,

    §

    fn to_sql(&self) -> Result<ToSqlOutput<'_>, Error>

    Converts Rust value to SQLite value
    ","ToSql","bdk_esplora::blocking_ext::Error"],["
    §

    impl<'a, T, F> UnsafeFutureObj<'a, T> for Box<F>
    where\n F: Future<Output = T> + 'a,

    §

    fn into_raw(self) -> *mut dyn Future<Output = T> + 'a

    Convert an owned instance into a (conceptually owned) fat pointer. Read more
    §

    unsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a)

    Drops the future represented by the given fat pointer. Read more
    ","UnsafeFutureObj<'a, T>","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Value for Box<T>
    where\n T: Value + ?Sized,

    §

    fn record(&self, key: &Field, visitor: &mut dyn Visit)

    Visits this value with the given Visitor.
    ","Value","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<W> Write for Box<W>
    where\n W: Write + ?Sized,

    source§

    fn write(&mut self, buf: &[u8]) -> Result<usize, Error>

    Write a buffer into this writer, returning how many bytes were written. Read more
    source§

    fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

    Like write, except that it writes from a slice of buffers. Read more
    source§

    fn is_write_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Writer has an efficient write_vectored\nimplementation. Read more
    source§

    fn flush(&mut self) -> Result<(), Error>

    Flush this output stream, ensuring that all intermediately buffered\ncontents reach their destination. Read more
    source§

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    source§

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error\nencountered. Read more
    source§

    fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (write_all_vectored)
    Attempts to write multiple buffers into this writer. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adapter for this instance of Write. Read more
    ","Write","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U, A> CoerceUnsized<Box<U, A>> for Box<T, A>
    where\n T: Unsize<U> + ?Sized,\n A: Allocator,\n U: ?Sized,

    ","CoerceUnsized>","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> CryptoRng for Box<R>
    where\n R: CryptoRng + ?Sized,

    ","CryptoRng","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> DerefPure for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","DerefPure","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U> DispatchFromDyn<Box<U>> for Box<T>
    where\n T: Unsize<U> + ?Sized,\n U: ?Sized,

    ","DispatchFromDyn>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Eq for Box<T, A>
    where\n T: Eq + ?Sized,\n A: Allocator,

    ","Eq","bdk_esplora::blocking_ext::Error"],["
    1.26.0 · source§

    impl<I, A> FusedIterator for Box<I, A>
    where\n I: FusedIterator + ?Sized,\n A: Allocator,

    ","FusedIterator","bdk_esplora::blocking_ext::Error"],["
    1.33.0 · source§

    impl<T, A> Unpin for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","Unpin","bdk_esplora::blocking_ext::Error"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js index 5800c660a4..ab043738ac 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js @@ -1,4 +1,3 @@ (function() {var type_impls = { -"bdk_chain":[["
    source§

    impl<K, V> BTreeMap<K, V>

    1.0.0 (const: 1.66.0) · source

    pub const fn new() -> BTreeMap<K, V>

    Makes a new, empty BTreeMap.

    \n

    Does not allocate anything on its own.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V> ⓘ

    Gets an iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"c\");\nmap.insert(2, \"b\");\nmap.insert(1, \"a\");\n\nfor (key, value) in map.iter() {\n    println!(\"{key}: {value}\");\n}\n\nlet (first_key, first_value) = map.iter().next().unwrap();\nassert_eq!((*first_key, *first_value), (1, \"a\"));
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V> ⓘ

    Gets a mutable iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::from([\n   (\"a\", 1),\n   (\"b\", 2),\n   (\"c\", 3),\n]);\n\n// add 10 to the value if the key isn't \"a\"\nfor (key, value) in map.iter_mut() {\n    if key != &\"a\" {\n        *value += 10;\n    }\n}
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V> ⓘ

    Gets an iterator over the keys of the map, in sorted order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<_> = a.keys().cloned().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V> ⓘ

    Gets an iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.values().cloned().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> ⓘ

    Gets a mutable iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, String::from(\"hello\"));\na.insert(2, String::from(\"goodbye\"));\n\nfor value in a.values_mut() {\n    value.push_str(\"!\");\n}\n\nlet values: Vec<String> = a.values().cloned().collect();\nassert_eq!(values, [String::from(\"hello!\"),\n                    String::from(\"goodbye!\")]);
    \n
    1.0.0 (const: unstable) · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 (const: unstable) · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    source

    pub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a Cursor pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.lower_bound(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &\"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &\"b\")));\n\nlet cursor = map.lower_bound(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.lower_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &\"a\")));
    \n
    source

    pub fn lower_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a CursorMut pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.lower_bound_mut(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &mut \"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &mut \"b\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &mut \"a\")));
    \n
    source

    pub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a Cursor pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.upper_bound(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &\"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &\"d\")));\n\nlet cursor = map.upper_bound(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.upper_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &\"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    source

    pub fn upper_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a CursorMut pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.upper_bound_mut(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &mut \"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &mut \"d\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &mut \"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    source

    pub const fn new_in(alloc: A) -> BTreeMap<K, V, A>

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

    Makes a new empty BTreeMap with a reasonable choice for B.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::alloc::Global;\n\nlet mut map = BTreeMap::new_in(Global);\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn get<Q>(&self, key: &Q) -> Option<&V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    1.66.0 · source

    pub fn first_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the first key-value pair in the map.\nThe key in this pair is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.first_key_value(), None);\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.first_key_value(), Some((&1, &\"b\")));
    \n
    1.66.0 · source

    pub fn first_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the first entry in the map for in-place manipulation.\nThe key of this entry is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.first_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"first\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"first\");\nassert_eq!(*map.get(&2).unwrap(), \"b\");
    \n
    1.66.0 · source

    pub fn pop_first(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the first element in the map.\nThe key of this element is the minimum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in ascending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_first() {\n    assert!(map.iter().all(|(k, _v)| *k > key));\n}\nassert!(map.is_empty());
    \n
    1.66.0 · source

    pub fn last_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the last key-value pair in the map.\nThe key in this pair is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.last_key_value(), Some((&2, &\"a\")));
    \n
    1.66.0 · source

    pub fn last_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the last entry in the map for in-place manipulation.\nThe key of this entry is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.last_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"last\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"a\");\nassert_eq!(*map.get(&2).unwrap(), \"last\");
    \n
    1.66.0 · source

    pub fn pop_last(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the last element in the map.\nThe key of this element is the maximum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in descending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_last() {\n    assert!(map.iter().all(|(k, _v)| *k < key));\n}\nassert!(map.is_empty());
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, key: &Q) -> bool
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, key: K, value: V) -> Option<V>
    where\n K: Ord,

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V, A>>
    where\n K: Ord,

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

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    §Examples
    \n
    #![feature(map_try_insert)]\n\nuse std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.45.0 · source

    pub fn remove_entry<Q>(&mut self, key: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the stored key and value if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove_entry(&1), None);
    \n
    1.53.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in ascending key order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\n// Keep only the elements with even-numbered keys.\nmap.retain(|&k, _| k % 2 == 0);\nassert!(map.into_iter().eq(vec![(0, 0), (2, 20), (4, 40), (6, 60)]));
    \n
    1.11.0 · source

    pub fn append(&mut self, other: &mut BTreeMap<K, V, A>)
    where\n K: Ord,\n A: Clone,

    Moves all elements from other into self, leaving other empty.

    \n

    If a key from other is already present in self, the respective\nvalue from self will be overwritten with the respective value from other.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\"); // Note: Key (3) also present in b.\n\nlet mut b = BTreeMap::new();\nb.insert(3, \"d\"); // Note: Key (3) also present in a.\nb.insert(4, \"e\");\nb.insert(5, \"f\");\n\na.append(&mut b);\n\nassert_eq!(a.len(), 5);\nassert_eq!(b.len(), 0);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\nassert_eq!(a[&3], \"d\"); // Note: \"c\" has been overwritten.\nassert_eq!(a[&4], \"e\");\nassert_eq!(a[&5], \"f\");
    \n
    1.17.0 · source

    pub fn range<T, R>(&self, range: R) -> Range<'_, K, V> ⓘ
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::ops::Bound::Included;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"a\");\nmap.insert(5, \"b\");\nmap.insert(8, \"c\");\nfor (&key, &value) in map.range((Included(&4), Included(&8))) {\n    println!(\"{key}: {value}\");\n}\nassert_eq!(Some((&5, &\"b\")), map.range(4..).next());
    \n
    1.17.0 · source

    pub fn range_mut<T, R>(&mut self, range: R) -> RangeMut<'_, K, V> ⓘ
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a mutable double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<&str, i32> =\n    [(\"Alice\", 0), (\"Bob\", 0), (\"Carol\", 0), (\"Cheryl\", 0)].into();\nfor (_, balance) in map.range_mut(\"B\"..\"Cheryl\") {\n    *balance += 100;\n}\nfor (name, balance) in &map {\n    println!(\"{name} => {balance}\");\n}
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V, A>
    where\n K: Ord,

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut count: BTreeMap<&str, usize> = BTreeMap::new();\n\n// count the number of occurrences of letters in the vec\nfor x in [\"a\", \"b\", \"a\", \"c\", \"a\", \"b\"] {\n    count.entry(x).and_modify(|curr| *curr += 1).or_insert(1);\n}\n\nassert_eq!(count[\"a\"], 3);\nassert_eq!(count[\"b\"], 2);\nassert_eq!(count[\"c\"], 1);
    \n
    1.11.0 · source

    pub fn split_off<Q>(&mut self, key: &Q) -> BTreeMap<K, V, A>
    where\n Q: Ord + ?Sized,\n K: Borrow<Q> + Ord,\n A: Clone,

    Splits the collection into two at the given key. Returns everything after the given key,\nincluding the key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\");\na.insert(17, \"d\");\na.insert(41, \"e\");\n\nlet b = a.split_off(&3);\n\nassert_eq!(a.len(), 2);\nassert_eq!(b.len(), 3);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\n\nassert_eq!(b[&3], \"c\");\nassert_eq!(b[&17], \"d\");\nassert_eq!(b[&41], \"e\");
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F, A> ⓘ
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

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

    Creates an iterator that visits all elements (key-value pairs) in\nascending key order and uses a closure to determine if an element should\nbe removed. If the closure returns true, the element is removed from\nthe map and yielded. If the closure returns false, or panics, the\nelement remains in the map and will not be yielded.

    \n

    The iterator also lets you mutate the value of each element in the\nclosure, regardless of whether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(btree_extract_if)]\nuse std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet evens: BTreeMap<_, _> = map.extract_if(|k, _v| k % 2 == 0).collect();\nlet odds = map;\nassert_eq!(evens.keys().copied().collect::<Vec<_>>(), [0, 2, 4, 6]);\nassert_eq!(odds.keys().copied().collect::<Vec<_>>(), [1, 3, 5, 7]);
    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V, A> ⓘ

    Creates a consuming iterator visiting all the keys, in sorted order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<i32> = a.into_keys().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V, A> ⓘ

    Creates a consuming iterator visiting all the values, in order by key.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.into_values().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Clone for BTreeMap<K, V, A>
    where\n K: Clone,\n V: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> BTreeMap<K, V, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Debug for BTreeMap<K, V, A>
    where\n K: Debug,\n V: Debug,\n A: Allocator + Clone,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V> Default for BTreeMap<K, V>

    source§

    fn default() -> BTreeMap<K, V>

    Creates an empty BTreeMap.

    \n
    ","Default","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<'de, K, V> Deserialize<'de> for BTreeMap<K, V>
    where\n K: Deserialize<'de> + Ord,\n V: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<BTreeMap<K, V>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_chain::local_chain::ChangeSet"],["
    1.7.0 · source§

    impl<K, V, A> Drop for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_chain::local_chain::ChangeSet"],["
    1.2.0 · source§

    impl<'a, K, V, A> Extend<(&'a K, &'a V)> for BTreeMap<K, V, A>
    where\n K: Ord + Copy,\n V: Copy,\n A: Allocator + Clone,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Extend<(K, V)> for BTreeMap<K, V, A>
    where\n K: Ord,\n A: Allocator + Clone,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","bdk_chain::local_chain::ChangeSet"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from(arr: [(K, V); N]) -> BTreeMap<K, V>

    Converts a [(K, V); N] into a BTreeMap<(K, V)>.

    \n\n
    use std::collections::BTreeMap;\n\nlet map1 = BTreeMap::from([(1, 2), (3, 4)]);\nlet map2: BTreeMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from_iter<T>(iter: T) -> BTreeMap<K, V>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Hash for BTreeMap<K, V, A>
    where\n K: Hash,\n V: Hash,\n A: Allocator + Clone,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, Q, V, A> Index<&Q> for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    §Panics
    \n

    Panics if the key is not present in the BTreeMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
    where\n K: IntoDeserializer<'de, E> + Eq + Ord,\n V: IntoDeserializer<'de, E>,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <BTreeMap<K, V> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <BTreeMap<K, V> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> IntoIterator for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn into_iter(self) -> IntoIter<K, V, A> ⓘ

    Gets an owning iterator over the entries of the map, sorted by key.

    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V, A>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K: Ord, V> Merge for BTreeMap<K, V>

    source§

    fn merge(&mut self, other: Self)

    Merge another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    ","Merge","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Ord for BTreeMap<K, V, A>
    where\n K: Ord,\n V: Ord,\n A: Allocator + Clone,

    source§

    fn cmp(&self, other: &BTreeMap<K, V, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> PartialEq for BTreeMap<K, V, A>
    where\n K: PartialEq,\n V: PartialEq,\n A: Allocator + Clone,

    source§

    fn eq(&self, other: &BTreeMap<K, V, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> PartialOrd for BTreeMap<K, V, A>
    where\n K: PartialOrd,\n V: PartialOrd,\n A: Allocator + Clone,

    source§

    fn partial_cmp(&self, other: &BTreeMap<K, V, A>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V> Serialize for BTreeMap<K, V>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Eq for BTreeMap<K, V, A>
    where\n K: Eq,\n V: Eq,\n A: Allocator + Clone,

    ","Eq","bdk_chain::local_chain::ChangeSet"],["
    1.64.0 · source§

    impl<K, V, A> UnwindSafe for BTreeMap<K, V, A>

    ","UnwindSafe","bdk_chain::local_chain::ChangeSet"]], "bdk_wallet":[["
    source§

    impl<K, V> BTreeMap<K, V>

    1.0.0 (const: 1.66.0) · source

    pub const fn new() -> BTreeMap<K, V>

    Makes a new, empty BTreeMap.

    \n

    Does not allocate anything on its own.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V>

    Gets an iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"c\");\nmap.insert(2, \"b\");\nmap.insert(1, \"a\");\n\nfor (key, value) in map.iter() {\n    println!(\"{key}: {value}\");\n}\n\nlet (first_key, first_value) = map.iter().next().unwrap();\nassert_eq!((*first_key, *first_value), (1, \"a\"));
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V>

    Gets a mutable iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::from([\n   (\"a\", 1),\n   (\"b\", 2),\n   (\"c\", 3),\n]);\n\n// add 10 to the value if the key isn't \"a\"\nfor (key, value) in map.iter_mut() {\n    if key != &\"a\" {\n        *value += 10;\n    }\n}
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V>

    Gets an iterator over the keys of the map, in sorted order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<_> = a.keys().cloned().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V>

    Gets an iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.values().cloned().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V>

    Gets a mutable iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, String::from(\"hello\"));\na.insert(2, String::from(\"goodbye\"));\n\nfor value in a.values_mut() {\n    value.push_str(\"!\");\n}\n\nlet values: Vec<String> = a.values().cloned().collect();\nassert_eq!(values, [String::from(\"hello!\"),\n                    String::from(\"goodbye!\")]);
    \n
    1.0.0 (const: unstable) · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 (const: unstable) · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    source

    pub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a Cursor pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.lower_bound(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &\"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &\"b\")));\n\nlet cursor = map.lower_bound(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.lower_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &\"a\")));
    \n
    source

    pub fn lower_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a CursorMut pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.lower_bound_mut(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &mut \"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &mut \"b\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &mut \"a\")));
    \n
    source

    pub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a Cursor pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.upper_bound(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &\"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &\"d\")));\n\nlet cursor = map.upper_bound(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.upper_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &\"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    source

    pub fn upper_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

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

    Returns a CursorMut pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.upper_bound_mut(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &mut \"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &mut \"d\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &mut \"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    source

    pub const fn new_in(alloc: A) -> BTreeMap<K, V, A>

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

    Makes a new empty BTreeMap with a reasonable choice for B.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::alloc::Global;\n\nlet mut map = BTreeMap::new_in(Global);\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn get<Q>(&self, key: &Q) -> Option<&V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    1.66.0 · source

    pub fn first_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the first key-value pair in the map.\nThe key in this pair is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.first_key_value(), None);\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.first_key_value(), Some((&1, &\"b\")));
    \n
    1.66.0 · source

    pub fn first_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the first entry in the map for in-place manipulation.\nThe key of this entry is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.first_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"first\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"first\");\nassert_eq!(*map.get(&2).unwrap(), \"b\");
    \n
    1.66.0 · source

    pub fn pop_first(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the first element in the map.\nThe key of this element is the minimum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in ascending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_first() {\n    assert!(map.iter().all(|(k, _v)| *k > key));\n}\nassert!(map.is_empty());
    \n
    1.66.0 · source

    pub fn last_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the last key-value pair in the map.\nThe key in this pair is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.last_key_value(), Some((&2, &\"a\")));
    \n
    1.66.0 · source

    pub fn last_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the last entry in the map for in-place manipulation.\nThe key of this entry is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.last_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"last\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"a\");\nassert_eq!(*map.get(&2).unwrap(), \"last\");
    \n
    1.66.0 · source

    pub fn pop_last(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the last element in the map.\nThe key of this element is the maximum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in descending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_last() {\n    assert!(map.iter().all(|(k, _v)| *k < key));\n}\nassert!(map.is_empty());
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, key: &Q) -> bool
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, key: K, value: V) -> Option<V>
    where\n K: Ord,

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V, A>>
    where\n K: Ord,

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

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    §Examples
    \n
    #![feature(map_try_insert)]\n\nuse std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.45.0 · source

    pub fn remove_entry<Q>(&mut self, key: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the stored key and value if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove_entry(&1), None);
    \n
    1.53.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in ascending key order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\n// Keep only the elements with even-numbered keys.\nmap.retain(|&k, _| k % 2 == 0);\nassert!(map.into_iter().eq(vec![(0, 0), (2, 20), (4, 40), (6, 60)]));
    \n
    1.11.0 · source

    pub fn append(&mut self, other: &mut BTreeMap<K, V, A>)
    where\n K: Ord,\n A: Clone,

    Moves all elements from other into self, leaving other empty.

    \n

    If a key from other is already present in self, the respective\nvalue from self will be overwritten with the respective value from other.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\"); // Note: Key (3) also present in b.\n\nlet mut b = BTreeMap::new();\nb.insert(3, \"d\"); // Note: Key (3) also present in a.\nb.insert(4, \"e\");\nb.insert(5, \"f\");\n\na.append(&mut b);\n\nassert_eq!(a.len(), 5);\nassert_eq!(b.len(), 0);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\nassert_eq!(a[&3], \"d\"); // Note: \"c\" has been overwritten.\nassert_eq!(a[&4], \"e\");\nassert_eq!(a[&5], \"f\");
    \n
    1.17.0 · source

    pub fn range<T, R>(&self, range: R) -> Range<'_, K, V>
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::ops::Bound::Included;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"a\");\nmap.insert(5, \"b\");\nmap.insert(8, \"c\");\nfor (&key, &value) in map.range((Included(&4), Included(&8))) {\n    println!(\"{key}: {value}\");\n}\nassert_eq!(Some((&5, &\"b\")), map.range(4..).next());
    \n
    1.17.0 · source

    pub fn range_mut<T, R>(&mut self, range: R) -> RangeMut<'_, K, V>
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a mutable double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<&str, i32> =\n    [(\"Alice\", 0), (\"Bob\", 0), (\"Carol\", 0), (\"Cheryl\", 0)].into();\nfor (_, balance) in map.range_mut(\"B\"..\"Cheryl\") {\n    *balance += 100;\n}\nfor (name, balance) in &map {\n    println!(\"{name} => {balance}\");\n}
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V, A>
    where\n K: Ord,

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut count: BTreeMap<&str, usize> = BTreeMap::new();\n\n// count the number of occurrences of letters in the vec\nfor x in [\"a\", \"b\", \"a\", \"c\", \"a\", \"b\"] {\n    count.entry(x).and_modify(|curr| *curr += 1).or_insert(1);\n}\n\nassert_eq!(count[\"a\"], 3);\nassert_eq!(count[\"b\"], 2);\nassert_eq!(count[\"c\"], 1);
    \n
    1.11.0 · source

    pub fn split_off<Q>(&mut self, key: &Q) -> BTreeMap<K, V, A>
    where\n Q: Ord + ?Sized,\n K: Borrow<Q> + Ord,\n A: Clone,

    Splits the collection into two at the given key. Returns everything after the given key,\nincluding the key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\");\na.insert(17, \"d\");\na.insert(41, \"e\");\n\nlet b = a.split_off(&3);\n\nassert_eq!(a.len(), 2);\nassert_eq!(b.len(), 3);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\n\nassert_eq!(b[&3], \"c\");\nassert_eq!(b[&17], \"d\");\nassert_eq!(b[&41], \"e\");
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F, A>
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

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

    Creates an iterator that visits all elements (key-value pairs) in\nascending key order and uses a closure to determine if an element should\nbe removed. If the closure returns true, the element is removed from\nthe map and yielded. If the closure returns false, or panics, the\nelement remains in the map and will not be yielded.

    \n

    The iterator also lets you mutate the value of each element in the\nclosure, regardless of whether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(btree_extract_if)]\nuse std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet evens: BTreeMap<_, _> = map.extract_if(|k, _v| k % 2 == 0).collect();\nlet odds = map;\nassert_eq!(evens.keys().copied().collect::<Vec<_>>(), [0, 2, 4, 6]);\nassert_eq!(odds.keys().copied().collect::<Vec<_>>(), [1, 3, 5, 7]);
    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V, A>

    Creates a consuming iterator visiting all the keys, in sorted order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<i32> = a.into_keys().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V, A>

    Creates a consuming iterator visiting all the values, in order by key.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.into_values().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Clone for BTreeMap<K, V, A>
    where\n K: Clone,\n V: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> BTreeMap<K, V, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Debug for BTreeMap<K, V, A>
    where\n K: Debug,\n V: Debug,\n A: Allocator + Clone,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V> Default for BTreeMap<K, V>

    source§

    fn default() -> BTreeMap<K, V>

    Creates an empty BTreeMap.

    \n
    ","Default","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<'de, K, V> Deserialize<'de> for BTreeMap<K, V>
    where\n K: Deserialize<'de> + Ord,\n V: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<BTreeMap<K, V>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.7.0 · source§

    impl<K, V, A> Drop for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.2.0 · source§

    impl<'a, K, V, A> Extend<(&'a K, &'a V)> for BTreeMap<K, V, A>
    where\n K: Ord + Copy,\n V: Copy,\n A: Allocator + Clone,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Extend<(K, V)> for BTreeMap<K, V, A>
    where\n K: Ord,\n A: Allocator + Clone,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from(arr: [(K, V); N]) -> BTreeMap<K, V>

    Converts a [(K, V); N] into a BTreeMap<(K, V)>.

    \n\n
    use std::collections::BTreeMap;\n\nlet map1 = BTreeMap::from([(1, 2), (3, 4)]);\nlet map2: BTreeMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from_iter<T>(iter: T) -> BTreeMap<K, V>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Hash for BTreeMap<K, V, A>
    where\n K: Hash,\n V: Hash,\n A: Allocator + Clone,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, Q, V, A> Index<&Q> for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    §Panics
    \n

    Panics if the key is not present in the BTreeMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    §

    impl IntoAssets for BTreeMap<DescriptorPublicKey, DescriptorSecretKey>

    §

    fn into_assets(self) -> Assets

    Convert self into a Assets struct
    ","IntoAssets","bdk_wallet::keys::KeyMap"],["
    source§

    impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
    where\n K: IntoDeserializer<'de, E> + Eq + Ord,\n V: IntoDeserializer<'de, E>,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <BTreeMap<K, V> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <BTreeMap<K, V> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> IntoIterator for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn into_iter(self) -> IntoIter<K, V, A>

    Gets an owning iterator over the entries of the map, sorted by key.

    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V, A>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    §

    impl<K, V> Merge for BTreeMap<K, V>
    where\n K: Ord,

    §

    fn merge(&mut self, other: BTreeMap<K, V>)

    Merge another object of the same type onto self.
    §

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    §

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    ","Merge","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Ord for BTreeMap<K, V, A>
    where\n K: Ord,\n V: Ord,\n A: Allocator + Clone,

    source§

    fn cmp(&self, other: &BTreeMap<K, V, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> PartialEq for BTreeMap<K, V, A>
    where\n K: PartialEq,\n V: PartialEq,\n A: Allocator + Clone,

    source§

    fn eq(&self, other: &BTreeMap<K, V, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> PartialOrd for BTreeMap<K, V, A>
    where\n K: PartialOrd,\n V: PartialOrd,\n A: Allocator + Clone,

    source§

    fn partial_cmp(&self, other: &BTreeMap<K, V, A>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V> Serialize for BTreeMap<K, V>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Eq for BTreeMap<K, V, A>
    where\n K: Eq,\n V: Eq,\n A: Allocator + Clone,

    ","Eq","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.64.0 · source§

    impl<K, V, A> UnwindSafe for BTreeMap<K, V, A>

    ","UnwindSafe","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/changeset/struct.CombinedChangeSet.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/changeset/struct.CombinedChangeSet.js deleted file mode 100644 index 5cd8303599..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/changeset/struct.CombinedChangeSet.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var type_impls = { -"bdk_wallet":[["
    §

    impl<K, A> Clone for CombinedChangeSet<K, A>
    where\n K: Clone,\n A: Clone,

    §

    fn clone(&self) -> CombinedChangeSet<K, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Debug for CombinedChangeSet<K, A>
    where\n K: Debug,\n A: Debug,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Default for CombinedChangeSet<K, A>

    §

    fn default() -> CombinedChangeSet<K, A>

    Returns the “default value” for a type. Read more
    ","Default","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where\n A: Ord + Deserialize<'de>,\n K: Ord + Deserialize<'de>,

    §

    fn deserialize<__D>(\n __deserializer: __D\n) -> Result<CombinedChangeSet<K, A>, <__D as Deserializer<'de>>::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>

    §

    fn from(chain: BTreeMap<u32, Option<BlockHash>>) -> CombinedChangeSet<K, A>

    Converts to this type from the input type.
    ","From>>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>

    §

    fn from(indexed_tx_graph: ChangeSet<A, ChangeSet<K>>) -> CombinedChangeSet<K, A>

    Converts to this type from the input type.
    ","From>>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> From<ChangeSet<K>> for CombinedChangeSet<K, A>

    §

    fn from(indexer: ChangeSet<K>) -> CombinedChangeSet<K, A>

    Converts to this type from the input type.
    ","From>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Merge for CombinedChangeSet<K, A>
    where\n K: Ord,\n A: Anchor,

    §

    fn merge(&mut self, other: CombinedChangeSet<K, A>)

    Merge another object of the same type onto self.
    §

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    §

    fn take(&mut self) -> Option<Self>

    Take the value, replacing it with the default value.
    ","Merge","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> PartialEq for CombinedChangeSet<K, A>
    where\n K: PartialEq,\n A: PartialEq,

    §

    fn eq(&self, other: &CombinedChangeSet<K, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Serialize for CombinedChangeSet<K, A>
    where\n A: Ord + Serialize,\n K: Ord + Serialize,

    §

    fn serialize<__S>(\n &self,\n __serializer: __S\n) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
    where\n __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>

    ","StructuralPartialEq","bdk_wallet::wallet::ChangeSet"]] -};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/persist/struct.Persisted.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/persist/struct.Persisted.js new file mode 100644 index 0000000000..c89462e06c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/persist/struct.Persisted.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    §

    impl<T> Debug for Persisted<T>
    where\n T: Debug,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> Deref for Persisted<T>

    §

    type Target = T

    The resulting type after dereferencing.
    §

    fn deref(&self) -> &<Persisted<T> as Deref>::Target

    Dereferences the value.
    ","Deref","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> DerefMut for Persisted<T>

    §

    fn deref_mut(&mut self) -> &mut <Persisted<T> as Deref>::Target

    Mutably dereferences the value.
    ","DerefMut","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> Ord for Persisted<T>
    where\n T: Ord,

    §

    fn cmp(&self, other: &Persisted<T>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> PartialEq for Persisted<T>
    where\n T: PartialEq,

    §

    fn eq(&self, other: &Persisted<T>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> PartialOrd for Persisted<T>
    where\n T: PartialOrd,

    §

    fn partial_cmp(&self, other: &Persisted<T>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> Persisted<T>

    pub fn create<Db>(\n db: &mut Db,\n params: <T as PersistWith<Db>>::CreateParams\n) -> Result<Persisted<T>, <T as PersistWith<Db>>::CreateError>
    where\n T: PersistWith<Db>,

    Create a new persisted T.

    \n

    pub async fn create_async<Db>(\n db: &mut Db,\n params: <T as PersistAsyncWith<Db>>::CreateParams\n) -> Result<Persisted<T>, <T as PersistAsyncWith<Db>>::CreateError>
    where\n T: PersistAsyncWith<Db>,

    Create a new persisted T with async Db.

    \n

    pub fn load<Db>(\n db: &mut Db,\n params: <T as PersistWith<Db>>::LoadParams\n) -> Result<Option<Persisted<T>>, <T as PersistWith<Db>>::LoadError>
    where\n T: PersistWith<Db>,

    Construct a persisted T from Db.

    \n

    pub async fn load_async<Db>(\n db: &mut Db,\n params: <T as PersistAsyncWith<Db>>::LoadParams\n) -> Result<Option<Persisted<T>>, <T as PersistAsyncWith<Db>>::LoadError>
    where\n T: PersistAsyncWith<Db>,

    Contruct a persisted T from an async Db.

    \n

    pub fn persist<Db>(\n &mut self,\n db: &mut Db\n) -> Result<bool, <T as PersistWith<Db>>::PersistError>
    where\n T: PersistWith<Db>,

    Persist staged changes of T into Db.

    \n

    If the database errors, the staged changes will not be cleared.

    \n

    pub async fn persist_async<'a, Db>(\n &'a mut self,\n db: &'a mut Db\n) -> Result<bool, <T as PersistAsyncWith<Db>>::PersistError>
    where\n T: PersistAsyncWith<Db>,

    Persist staged changes of T into an async Db.

    \n

    If the database errors, the staged changes will not be cleared.

    \n
    ",0,"bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> Eq for Persisted<T>
    where\n T: Eq,

    ","Eq","bdk_wallet::wallet::persisted::PersistedWallet"],["
    §

    impl<T> StructuralPartialEq for Persisted<T>

    ","StructuralPartialEq","bdk_wallet::wallet::persisted::PersistedWallet"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.js new file mode 100644 index 0000000000..8d74205ead --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/coin_selection/struct.BranchAndBoundCoinSelection.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    \n
    ",0,"bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select(\n &self,\n required_utxos: Vec<WeightedUtxo>,\n optional_utxos: Vec<WeightedUtxo>,\n fee_rate: FeeRate,\n target_amount: u64,\n drain_script: &Script\n) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    ","CoinSelectionAlgorithm","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    ","Default","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js index f4cb28b658..a24f4a6f15 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"bdk_wallet":[["
    §

    impl<Pk> Clone for Descriptor<Pk>
    where\n Pk: Clone + MiniscriptKey,

    §

    fn clone(&self) -> Descriptor<Pk>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Debug for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

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

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

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

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn plan<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a non-malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n

    pub fn plan_mall<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DescriptorPublicKey>

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcards instead

    Whether or not the descriptor has any wildcards

    \n

    pub fn has_wildcard(&self) -> bool

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

    \n

    pub fn at_derivation_index(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

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

    \n
    §Errors
    \n
      \n
    • If index ≥ 2^31
    • \n
    \n

    pub fn derive(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    \n

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>,\n index: u32\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

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

    \n

    This is a shorthand for:

    \n\n
        .expect(\"Valid ranged descriptor\");\nlet derived_descriptor = descriptor.at_derivation_index(index).unwrap().derived_descriptor(&secp).unwrap();
    \n

    and is only here really here for backwards compatbility.\nSee at_derivation_index and [derived_descriptor] for more documentation.

    \n
    §Errors
    \n

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

    \n

    pub fn parse_descriptor<C>(\n secp: &Secp256k1<C>,\n s: &str\n) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
    where\n C: Signing,

    Parse a descriptor that may contain secret keys

    \n

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

    \n

    pub fn to_string_with_secret(\n &self,\n key_map: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>\n) -> String

    Serialize a descriptor to string with its secret keys

    \n

    pub fn find_derivation_index_for_spk<C>(\n &self,\n secp: &Secp256k1<C>,\n script_pubkey: &Script,\n range: Range<u32>\n) -> Result<Option<(u32, Descriptor<PublicKey>)>, ConversionError>
    where\n C: Verification,

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

    \n

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

    \n

    pub fn is_multipath(&self) -> bool

    Whether this descriptor contains a key that has multiple derivation paths.

    \n

    pub fn into_single_descriptors(\n self\n) -> Result<Vec<Descriptor<DescriptorPublicKey>>, Error>

    Get as many descriptors as different paths in this descriptor.

    \n

    For multipath descriptors it will return as many descriptors as there is\n“parallel” paths. For regular descriptors it will just return itself.

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey + ToPublicKey,

    pub fn address(&self, network: Network) -> Result<Address, Error>

    Computes the Bitcoin address of the descriptor, if one exists

    \n

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

    \n
    §Errors
    \n

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

    \n

    pub fn script_pubkey(&self) -> ScriptBuf

    Computes the scriptpubkey of the descriptor.

    \n

    pub fn unsigned_script_sig(&self) -> ScriptBuf

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

    \n

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

    \n

    pub fn explicit_script(&self) -> Result<ScriptBuf, Error>

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

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn script_code(&self) -> Result<ScriptBuf, Error>

    Computes the scriptCode of a transaction output.

    \n

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

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn get_satisfaction<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

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

    \n

    pub fn get_satisfaction_mall<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

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

    \n

    pub fn satisfy<S>(&self, txin: &mut TxIn, satisfier: S) -> Result<(), Error>
    where\n S: Satisfier<Pk>,

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

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    pub fn new_pk(pk: Pk) -> Descriptor<Pk>

    Create a new pk descriptor

    \n

    pub fn new_pkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new PkH descriptor

    \n

    pub fn new_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new Wpkh descriptor\nWill return Err if uncompressed key is used

    \n

    pub fn new_sh_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wpkh from Pk.\nErrors when uncompressed keys are supplied

    \n

    pub fn new_sh(ms: Miniscript<Pk, Legacy>) -> Result<Descriptor<Pk>, Error>

    Create a new sh for a given redeem script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new wsh descriptor from witness script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_sh_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh descriptor with witness script\nErrors when miniscript exceeds resource limits under wsh context\nor does not type check at the top level

    \n

    pub fn new_bare(ms: Miniscript<Pk, BareCtx>) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_sh_with_wpkh(wpkh: Wpkh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wpkh descriptor

    \n

    pub fn new_sh_with_wsh(wsh: Wsh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wsh descriptor

    \n

    pub fn new_sh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_sh_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh sortedmulti descriptor from threshold\nk and Vec of pks\nErrors when miniscript exceeds resource limits under segwit context

    \n

    pub fn new_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_tr(\n key: Pk,\n script: Option<TapTree<Pk>>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn desc_type(&self) -> DescriptorType

    Get the [DescriptorType] of Descriptor

    \n

    pub fn sanity_check(&self) -> Result<(), Error>

    Checks whether the descriptor is safe.

    \n

    Checks whether all the spend paths in the descriptor are possible on the\nbitcoin network under the current standardness and consensus rules. Also\nchecks whether the descriptor requires signatures on all spend paths and\nwhether the script is malleable.

    \n

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

    \n

    pub fn max_weight_to_satisfy(&self) -> Result<Weight, Error>

    Computes an upper bound on the difference between a non-satisfied\nTxIn’s segwit_weight and a satisfied TxIn’s segwit_weight

    \n

    Since this method uses segwit_weight instead of legacy_weight,\nif you want to include only legacy inputs in your transaction,\nyou should remove 1WU from each input’s max_weight_to_satisfy\nfor a more accurate estimate.

    \n

    In other words, for segwit inputs or legacy inputs included in\nsegwit transactions, the following will hold for each input if\nthat input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].segwit_weight() - TxIn::default().segwit_weight()\n    );\n}
    \n

    Instead, for legacy transactions, the following will hold for each input\nif that input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].legacy_weight() - TxIn::default().legacy_weight()\n    );\n}
    \n

    Assumes all ECDSA signatures are 73 bytes, including push opcode and\nsighash suffix.\nAssumes all Schnorr signatures are 66 bytes, including push opcode and\nsighash suffix.

    \n
    §Errors
    \n

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

    \n

    pub fn max_satisfaction_weight(&self) -> Result<usize, Error>

    👎Deprecated since 10.0.0: Use max_weight_to_satisfy instead. The method to count bytes was redesigned and the results will differ from max_weight_to_satisfy. For more details check rust-bitcoin/rust-miniscript#476.

    Computes an upper bound on the weight of a satisfying witness to the\ntransaction.

    \n

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

    \n
    §Errors
    \n

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

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl DescriptorExt for Descriptor<DescriptorPublicKey>

    §

    fn dust_value(&self) -> u64

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

    fn descriptor_id(&self) -> DescriptorId

    Returns the descriptor ID, calculated as the sha256 hash of the spk derived from the\ndescriptor at index 0.
    ","DescriptorExt","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<'de, Pk> Deserialize<'de> for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    fn deserialize<D>(\n deserializer: D\n) -> Result<Descriptor<Pk>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Display for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    source§

    impl ExtractPolicy for Descriptor<DescriptorPublicKey>

    source§

    fn extract_policy(\n &self,\n signers: &SignersContainer,\n build_sat: BuildSatisfaction<'_>,\n secp: &Secp256k1<All>\n) -> Result<Option<Policy>, Error>

    Extract the spending policy
    ","ExtractPolicy","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> ForEachKey<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,\n Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for any key
    ","ForEachKey","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Bare<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Tr<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wpkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    fn from_str(s: &str) -> Result<Descriptor<Pk>, Error>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromTree for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Descriptor<Pk>, Error>

    Parse an expression tree into a descriptor.

    \n
    ","FromTree","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Hash for Descriptor<Pk>
    where\n Pk: Hash + MiniscriptKey,

    §

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Liftable<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    ","Liftable","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Ord for Descriptor<Pk>
    where\n Pk: Ord + MiniscriptKey,

    §

    fn cmp(&self, other: &Descriptor<Pk>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialEq for Descriptor<Pk>
    where\n Pk: PartialEq + MiniscriptKey,

    §

    fn eq(&self, other: &Descriptor<Pk>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialOrd for Descriptor<Pk>
    where\n Pk: PartialOrd + MiniscriptKey,

    §

    fn partial_cmp(&self, other: &Descriptor<Pk>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<'de, Pk> Serialize for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<P, Q> TranslatePk<P, Q> for Descriptor<P>
    where\n P: MiniscriptKey,\n Q: MiniscriptKey,

    §

    fn translate_pk<T, E>(\n &self,\n t: &mut T\n) -> Result<<Descriptor<P> as TranslatePk<P, Q>>::Output, TranslateErr<E>>
    where\n T: Translator<P, Q, E>,

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

    \n
    §

    type Output = Descriptor<Q>

    The associated output type. This must be Self<Q>.
    ","TranslatePk","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Eq for Descriptor<Pk>
    where\n Pk: Eq + MiniscriptKey,

    ","Eq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> StructuralPartialEq for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    ","StructuralPartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"]] +"bdk_wallet":[["
    §

    impl<Pk> Clone for Descriptor<Pk>
    where\n Pk: Clone + MiniscriptKey,

    §

    fn clone(&self) -> Descriptor<Pk>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Debug for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

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

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

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

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn plan<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a non-malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n

    pub fn plan_mall<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DescriptorPublicKey>

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcards instead

    Whether or not the descriptor has any wildcards

    \n

    pub fn has_wildcard(&self) -> bool

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

    \n

    pub fn at_derivation_index(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

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

    \n
    §Errors
    \n
      \n
    • If index ≥ 2^31
    • \n
    \n

    pub fn derive(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    \n

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>,\n index: u32\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

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

    \n

    This is a shorthand for:

    \n\n
        .expect(\"Valid ranged descriptor\");\nlet derived_descriptor = descriptor.at_derivation_index(index).unwrap().derived_descriptor(&secp).unwrap();
    \n

    and is only here really here for backwards compatbility.\nSee at_derivation_index and [derived_descriptor] for more documentation.

    \n
    §Errors
    \n

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

    \n

    pub fn parse_descriptor<C>(\n secp: &Secp256k1<C>,\n s: &str\n) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
    where\n C: Signing,

    Parse a descriptor that may contain secret keys

    \n

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

    \n

    pub fn to_string_with_secret(\n &self,\n key_map: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>\n) -> String

    Serialize a descriptor to string with its secret keys

    \n

    pub fn find_derivation_index_for_spk<C>(\n &self,\n secp: &Secp256k1<C>,\n script_pubkey: &Script,\n range: Range<u32>\n) -> Result<Option<(u32, Descriptor<PublicKey>)>, ConversionError>
    where\n C: Verification,

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

    \n

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

    \n

    pub fn is_multipath(&self) -> bool

    Whether this descriptor contains a key that has multiple derivation paths.

    \n

    pub fn into_single_descriptors(\n self\n) -> Result<Vec<Descriptor<DescriptorPublicKey>>, Error>

    Get as many descriptors as different paths in this descriptor.

    \n

    For multipath descriptors it will return as many descriptors as there is\n“parallel” paths. For regular descriptors it will just return itself.

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey + ToPublicKey,

    pub fn address(&self, network: Network) -> Result<Address, Error>

    Computes the Bitcoin address of the descriptor, if one exists

    \n

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

    \n
    §Errors
    \n

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

    \n

    pub fn script_pubkey(&self) -> ScriptBuf

    Computes the scriptpubkey of the descriptor.

    \n

    pub fn unsigned_script_sig(&self) -> ScriptBuf

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

    \n

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

    \n

    pub fn explicit_script(&self) -> Result<ScriptBuf, Error>

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

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn script_code(&self) -> Result<ScriptBuf, Error>

    Computes the scriptCode of a transaction output.

    \n

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

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn get_satisfaction<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

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

    \n

    pub fn get_satisfaction_mall<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

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

    \n

    pub fn satisfy<S>(&self, txin: &mut TxIn, satisfier: S) -> Result<(), Error>
    where\n S: Satisfier<Pk>,

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

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    pub fn new_pk(pk: Pk) -> Descriptor<Pk>

    Create a new pk descriptor

    \n

    pub fn new_pkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new PkH descriptor

    \n

    pub fn new_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new Wpkh descriptor\nWill return Err if uncompressed key is used

    \n

    pub fn new_sh_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wpkh from Pk.\nErrors when uncompressed keys are supplied

    \n

    pub fn new_sh(ms: Miniscript<Pk, Legacy>) -> Result<Descriptor<Pk>, Error>

    Create a new sh for a given redeem script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new wsh descriptor from witness script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_sh_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh descriptor with witness script\nErrors when miniscript exceeds resource limits under wsh context\nor does not type check at the top level

    \n

    pub fn new_bare(ms: Miniscript<Pk, BareCtx>) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_sh_with_wpkh(wpkh: Wpkh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wpkh descriptor

    \n

    pub fn new_sh_with_wsh(wsh: Wsh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wsh descriptor

    \n

    pub fn new_sh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_sh_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh sortedmulti descriptor from threshold\nk and Vec of pks\nErrors when miniscript exceeds resource limits under segwit context

    \n

    pub fn new_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn new_tr(\n key: Pk,\n script: Option<TapTree<Pk>>\n) -> Result<Descriptor<Pk>, Error>

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

    \n

    pub fn desc_type(&self) -> DescriptorType

    Get the [DescriptorType] of Descriptor

    \n

    pub fn sanity_check(&self) -> Result<(), Error>

    Checks whether the descriptor is safe.

    \n

    Checks whether all the spend paths in the descriptor are possible on the\nbitcoin network under the current standardness and consensus rules. Also\nchecks whether the descriptor requires signatures on all spend paths and\nwhether the script is malleable.

    \n

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

    \n

    pub fn max_weight_to_satisfy(&self) -> Result<Weight, Error>

    Computes an upper bound on the difference between a non-satisfied\nTxIn’s segwit_weight and a satisfied TxIn’s segwit_weight

    \n

    Since this method uses segwit_weight instead of legacy_weight,\nif you want to include only legacy inputs in your transaction,\nyou should remove 1WU from each input’s max_weight_to_satisfy\nfor a more accurate estimate.

    \n

    In other words, for segwit inputs or legacy inputs included in\nsegwit transactions, the following will hold for each input if\nthat input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].segwit_weight() - TxIn::default().segwit_weight()\n    );\n}
    \n

    Instead, for legacy transactions, the following will hold for each input\nif that input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].legacy_weight() - TxIn::default().legacy_weight()\n    );\n}
    \n

    Assumes all ECDSA signatures are 73 bytes, including push opcode and\nsighash suffix.\nAssumes all Schnorr signatures are 66 bytes, including push opcode and\nsighash suffix.

    \n
    §Errors
    \n

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

    \n

    pub fn max_satisfaction_weight(&self) -> Result<usize, Error>

    👎Deprecated since 10.0.0: Use max_weight_to_satisfy instead. The method to count bytes was redesigned and the results will differ from max_weight_to_satisfy. For more details check rust-bitcoin/rust-miniscript#476.

    Computes an upper bound on the weight of a satisfying witness to the\ntransaction.

    \n

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

    \n
    §Errors
    \n

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

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl DescriptorExt for Descriptor<DescriptorPublicKey>

    §

    fn dust_value(&self) -> u64

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

    fn descriptor_id(&self) -> DescriptorId

    Returns the descriptor ID, calculated as the sha256 hash of the spk derived from the\ndescriptor at index 0.
    ","DescriptorExt","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<'de, Pk> Deserialize<'de> for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    fn deserialize<D>(\n deserializer: D\n) -> Result<Descriptor<Pk>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Display for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    source§

    impl ExtractPolicy for Descriptor<DescriptorPublicKey>

    source§

    fn extract_policy(\n &self,\n signers: &SignersContainer,\n build_sat: BuildSatisfaction<'_>,\n secp: &Secp256k1<All>\n) -> Result<Option<Policy>, Error>

    Extract the spending policy
    ","ExtractPolicy","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> ForEachKey<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,\n Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for any key
    ","ForEachKey","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Bare<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Tr<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wpkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    fn from_str(s: &str) -> Result<Descriptor<Pk>, Error>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromTree for Descriptor<Pk>
    where\n Pk: FromStrKey,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Descriptor<Pk>, Error>

    Parse an expression tree into a descriptor.

    \n
    ","FromTree","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Hash for Descriptor<Pk>
    where\n Pk: Hash + MiniscriptKey,

    §

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Liftable<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    ","Liftable","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Ord for Descriptor<Pk>
    where\n Pk: Ord + MiniscriptKey,

    §

    fn cmp(&self, other: &Descriptor<Pk>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialEq for Descriptor<Pk>
    where\n Pk: PartialEq + MiniscriptKey,

    §

    fn eq(&self, other: &Descriptor<Pk>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialOrd for Descriptor<Pk>
    where\n Pk: PartialOrd + MiniscriptKey,

    §

    fn partial_cmp(&self, other: &Descriptor<Pk>) -> Option<Ordering>

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

    fn lt(&self, other: &Rhs) -> bool

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

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

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

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<'de, Pk> Serialize for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<P, Q> TranslatePk<P, Q> for Descriptor<P>
    where\n P: MiniscriptKey,\n Q: MiniscriptKey,

    §

    fn translate_pk<T, E>(\n &self,\n t: &mut T\n) -> Result<<Descriptor<P> as TranslatePk<P, Q>>::Output, TranslateErr<E>>
    where\n T: Translator<P, Q, E>,

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

    \n
    §

    type Output = Descriptor<Q>

    The associated output type. This must be Self<Q>.
    ","TranslatePk","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Eq for Descriptor<Pk>
    where\n Pk: Eq + MiniscriptKey,

    ","Eq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> StructuralPartialEq for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    ","StructuralPartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/export/struct.FullyNodedExport.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/export/struct.FullyNodedExport.js new file mode 100644 index 0000000000..37894c747c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/export/struct.FullyNodedExport.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    source§

    impl Debug for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Display for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FullyNodedExport

    source

    pub fn export_wallet(\n wallet: &Wallet,\n label: &str,\n include_blockheight: bool\n) -> Result<Self, &'static str>

    Export a wallet

    \n

    This function returns an error if it determines that the wallet’s descriptor(s) are not\nsupported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44\nand others.

    \n

    If include_blockheight is true, this function will look into the wallet’s database\nfor the oldest transaction it knows and use that as the earliest block to rescan.

    \n

    If the database is empty or include_blockheight is false, the blockheight field\nreturned will be 0.

    \n
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    \n
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    \n
    ",0,"bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where\n __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::wallet::export::WalletExport"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js deleted file mode 100644 index 8d3370a70f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var type_impls = { -"bdk_wallet":[["
    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    \n
    ",0,"bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select(\n &self,\n required_utxos: Vec<WeightedUtxo>,\n optional_utxos: Vec<WeightedUtxo>,\n fee_rate: FeeRate,\n target_amount: u64,\n drain_script: &Script\n) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    ","CoinSelectionAlgorithm","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    ","Default","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"]] -};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js deleted file mode 100644 index 8110bd6de2..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var type_impls = { -"bdk_wallet":[["
    source§

    impl Debug for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Display for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FullyNodedExport

    source

    pub fn export_wallet(\n wallet: &Wallet,\n label: &str,\n include_blockheight: bool\n) -> Result<Self, &'static str>

    Export a wallet

    \n

    This function returns an error if it determines that the wallet’s descriptor(s) are not\nsupported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44\nand others.

    \n

    If include_blockheight is true, this function will look into the wallet’s database\nfor the oldest transaction it knows and use that as the earliest block to rescan.

    \n

    If the database is empty or include_blockheight is false, the blockheight field\nreturned will be 0.

    \n
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    \n
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    \n
    ",0,"bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where\n __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::wallet::export::WalletExport"]] -};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html index 1433982623..153781cee9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html index b7a430c617..d5285f084b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html @@ -1 +1 @@ -BATCH_SIZE in wallet_electrum_example - Rust

    Constant wallet_electrum_example::BATCH_SIZE

    source ·
    pub(crate) const BATCH_SIZE: usize = 5;
    \ No newline at end of file +BATCH_SIZE in wallet_electrum_example - Rust

    Constant wallet_electrum_example::BATCH_SIZE

    source ·
    pub(crate) const BATCH_SIZE: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html index 1542f54501..c822f2cfe5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in wallet_electrum_example - Rust

    Constant wallet_electrum_example::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    \ No newline at end of file +DB_MAGIC in wallet_electrum_example - Rust

    Constant wallet_electrum_example::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.ELECTRUM_URL.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.ELECTRUM_URL.html new file mode 100644 index 0000000000..26b18bf856 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.ELECTRUM_URL.html @@ -0,0 +1 @@ +ELECTRUM_URL in wallet_electrum_example - Rust

    Constant wallet_electrum_example::ELECTRUM_URL

    source ·
    pub(crate) const ELECTRUM_URL: &str = "ssl://electrum.blockstream.info:60002";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.EXTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.EXTERNAL_DESC.html new file mode 100644 index 0000000000..f1d15dc62e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.EXTERNAL_DESC.html @@ -0,0 +1 @@ +EXTERNAL_DESC in wallet_electrum_example - Rust

    Constant wallet_electrum_example::EXTERNAL_DESC

    source ·
    pub(crate) const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.INTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.INTERNAL_DESC.html new file mode 100644 index 0000000000..2d728e69e0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.INTERNAL_DESC.html @@ -0,0 +1 @@ +INTERNAL_DESC in wallet_electrum_example - Rust

    Constant wallet_electrum_example::INTERNAL_DESC

    source ·
    pub(crate) const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.NETWORK.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.NETWORK.html new file mode 100644 index 0000000000..8a131a8f71 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.NETWORK.html @@ -0,0 +1 @@ +NETWORK in wallet_electrum_example - Rust

    Constant wallet_electrum_example::NETWORK

    source ·
    pub(crate) const NETWORK: Network;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html index 417ac538d2..30f919e087 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html @@ -1 +1 @@ -SEND_AMOUNT in wallet_electrum_example - Rust

    Constant wallet_electrum_example::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file +SEND_AMOUNT in wallet_electrum_example - Rust

    Constant wallet_electrum_example::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html index 2e5d4f371e..4d32e14860 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_electrum_example - Rust

    Constant wallet_electrum_example::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file +STOP_GAP in wallet_electrum_example - Rust

    Constant wallet_electrum_example::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html index bef8b6eec6..42b814952f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html @@ -1 +1 @@ -main in wallet_electrum_example - Rust

    Function wallet_electrum_example::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_electrum_example - Rust

    Function wallet_electrum_example::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html index f1d09e1733..97ede053c2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html @@ -1 +1 @@ -wallet_electrum_example - Rust

    Crate wallet_electrum_example

    source ·

    Constants§

    Functions§

    \ No newline at end of file +wallet_electrum_example - Rust

    Crate wallet_electrum_example

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js index b2ef211c58..dae0de18b0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["BATCH_SIZE","DB_MAGIC","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["BATCH_SIZE","DB_MAGIC","ELECTRUM_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html index d4fd65f1f1..96817ac5bf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_PATH.html new file mode 100644 index 0000000000..2e1101dcab --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_PATH.html @@ -0,0 +1 @@ +DB_PATH in wallet_esplora_async - Rust

    Constant wallet_esplora_async::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = "bdk-example-esplora-async.sqlite";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.ESPLORA_URL.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.ESPLORA_URL.html new file mode 100644 index 0000000000..e825507c3e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.ESPLORA_URL.html @@ -0,0 +1 @@ +ESPLORA_URL in wallet_esplora_async - Rust

    Constant wallet_esplora_async::ESPLORA_URL

    source ·
    pub(crate) const ESPLORA_URL: &str = "http://signet.bitcoindevkit.net";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.EXTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.EXTERNAL_DESC.html new file mode 100644 index 0000000000..6edf45d15b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.EXTERNAL_DESC.html @@ -0,0 +1 @@ +EXTERNAL_DESC in wallet_esplora_async - Rust

    Constant wallet_esplora_async::EXTERNAL_DESC

    source ·
    pub(crate) const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.INTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.INTERNAL_DESC.html new file mode 100644 index 0000000000..6987740b8f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.INTERNAL_DESC.html @@ -0,0 +1 @@ +INTERNAL_DESC in wallet_esplora_async - Rust

    Constant wallet_esplora_async::INTERNAL_DESC

    source ·
    pub(crate) const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.NETWORK.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.NETWORK.html new file mode 100644 index 0000000000..2004b914ac --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.NETWORK.html @@ -0,0 +1 @@ +NETWORK in wallet_esplora_async - Rust

    Constant wallet_esplora_async::NETWORK

    source ·
    pub(crate) const NETWORK: Network;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html index cc92fbaf81..d74753a4de 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_esplora_async - Rust

    Constant wallet_esplora_async::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file +STOP_GAP in wallet_esplora_async - Rust

    Constant wallet_esplora_async::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html index 74ebfff219..e9307d2193 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html @@ -1 +1 @@ -main in wallet_esplora_async - Rust

    Function wallet_esplora_async::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_esplora_async - Rust

    Function wallet_esplora_async::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html index ea648092a1..6075f09ab7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html @@ -1 +1 @@ -wallet_esplora_async - Rust

    Crate wallet_esplora_async

    source ·

    Constants§

    Functions§

    \ No newline at end of file +wallet_esplora_async - Rust

    Crate wallet_esplora_async

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js index 7b24e5e6e1..8572c56faa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_PATH","ESPLORA_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html index 832ed58fd2..f833d66563 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html index 33b27acc8a..b997a8f643 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    \ No newline at end of file +DB_MAGIC in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_PATH.html new file mode 100644 index 0000000000..ef9c35ef69 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_PATH.html @@ -0,0 +1 @@ +DB_PATH in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = "bdk-example-esplora-blocking.db";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.ESPLORA_URL.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.ESPLORA_URL.html new file mode 100644 index 0000000000..2c6fbf8c9c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.ESPLORA_URL.html @@ -0,0 +1 @@ +ESPLORA_URL in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::ESPLORA_URL

    source ·
    pub(crate) const ESPLORA_URL: &str = "http://signet.bitcoindevkit.net";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.EXTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.EXTERNAL_DESC.html new file mode 100644 index 0000000000..64c5b94e0d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.EXTERNAL_DESC.html @@ -0,0 +1 @@ +EXTERNAL_DESC in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::EXTERNAL_DESC

    source ·
    pub(crate) const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.INTERNAL_DESC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.INTERNAL_DESC.html new file mode 100644 index 0000000000..f8f10064e0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.INTERNAL_DESC.html @@ -0,0 +1 @@ +INTERNAL_DESC in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::INTERNAL_DESC

    source ·
    pub(crate) const INTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.NETWORK.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.NETWORK.html new file mode 100644 index 0000000000..c535e54e07 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.NETWORK.html @@ -0,0 +1 @@ +NETWORK in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::NETWORK

    source ·
    pub(crate) const NETWORK: Network;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html index 59669f316b..d7f385f5c3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html @@ -1 +1 @@ -PARALLEL_REQUESTS in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::PARALLEL_REQUESTS

    source ·
    pub(crate) const PARALLEL_REQUESTS: usize = 1;
    \ No newline at end of file +PARALLEL_REQUESTS in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::PARALLEL_REQUESTS

    source ·
    pub(crate) const PARALLEL_REQUESTS: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html index c269c5927b..7fe025590f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html @@ -1 +1 @@ -SEND_AMOUNT in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file +SEND_AMOUNT in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html index a8d8d7711b..accc7b593b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 5;
    \ No newline at end of file +STOP_GAP in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html index f6267eb357..c25c1f34d6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html @@ -1 +1 @@ -main in wallet_esplora_blocking - Rust

    Function wallet_esplora_blocking::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_esplora_blocking - Rust

    Function wallet_esplora_blocking::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html index d259d96418..a5d8ed7b7f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html @@ -1 +1 @@ -wallet_esplora_blocking - Rust

    Crate wallet_esplora_blocking

    source ·

    Constants§

    Functions§

    \ No newline at end of file +wallet_esplora_blocking - Rust

    Crate wallet_esplora_blocking

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js index f91618f926..df59cde23a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC","DB_PATH","ESPLORA_URL","EXTERNAL_DESC","INTERNAL_DESC","NETWORK","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html index c27194a9ec..47b471569d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html @@ -1 +1 @@ -main in wallet_rpc - Rust

    Function wallet_rpc::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file +main in wallet_rpc - Rust

    Function wallet_rpc::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html index 75cbd7b911..b02f66c952 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html @@ -1 +1 @@ -wallet_rpc - Rust

    Crate wallet_rpc

    source ·

    Structs§

    • Bitcoind RPC example using bdk_wallet::Wallet.

    Enums§

    Constants§

    Functions§

    \ No newline at end of file +wallet_rpc - Rust

    Crate wallet_rpc

    source ·

    Structs§

    • Bitcoind RPC example using bdk_wallet::Wallet.

    Enums§

    Constants§

    Functions§

    \ No newline at end of file