From: github-actions Date: Thu, 6 Jun 2024 04:14:27 +0000 (+0000) Subject: Publish autogenerated nightly docs X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/static/struct.Script.html?a=commitdiff_plain;h=590308839d0734390b6b9cd167a93c823056f2ca;p=bitcoindevkit.org Publish autogenerated nightly docs --- 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 fed51870bb..9474143250 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,5 +1,5 @@ -Error in bdk_wallet::descriptor::error - Rust

Enum bdk_wallet::descriptor::error::Error

source ·
pub enum Error {
-    InvalidHdKeyPath,
+Error in bdk_wallet::descriptor::error - Rust

Enum bdk_wallet::descriptor::error::Error

source ·
pub enum Error {
+
Show 13 variants InvalidHdKeyPath, InvalidDescriptorChecksum, HardenedDerivationXpub, MultiPath, @@ -11,7 +11,8 @@ Pk(Error), Miniscript(Error), Hex(HexToBytesError), -}
Expand description

Errors related to the parsing and usage of descriptors

+ ExternalAndInternalAreTheSame, +
}
Expand description

Errors related to the parsing and usage of descriptors

Variants§

§

InvalidHdKeyPath

Invalid HD Key path, such as having a wildcard but a length != 1

§

InvalidDescriptorChecksum

The provided descriptor doesn’t match its checksum

§

HardenedDerivationXpub

The descriptor contains hardened derivation steps on public extended keys

@@ -24,7 +25,8 @@
§

Pk(Error)

Key-related error

§

Miniscript(Error)

Miniscript error

§

Hex(HexToBytesError)

Hex decoding 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
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<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<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 +
§

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<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<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 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/error/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html index c0227eea34..3e0ac10330 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html @@ -1,2 +1,2 @@ -bdk_wallet::descriptor::error - Rust

Module bdk_wallet::descriptor::error

source ·
Expand description

Descriptor errors

+bdk_wallet::descriptor::error - Rust

Module bdk_wallet::descriptor::error

source ·
Expand description

Descriptor errors

Enums§

  • Errors related to the parsing and usage of descriptors
\ No newline at end of file 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 92b3f04bfa..ceb9253f29 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 @@ -12,7 +12,7 @@
§

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 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 377a7850a4..c73b93fb8b 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 eb7a4f74fc..be4c24f3e5 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,4 +1,4 @@ -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

@@ -7,13 +7,13 @@ let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; let mut wallet = Wallet::new_no_persist( Bip44(key.clone(), KeychainKind::External), - Some(Bip44(key, KeychainKind::Internal)), + Bip44(key, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip44<K>
where 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 108c52a275..b8b1bb3ca6 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 @@ -10,13 +10,13 @@ for the key.

let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; let mut wallet = Wallet::new_no_persist( Bip44Public(key.clone(), fingerprint, KeychainKind::External), - Some(Bip44Public(key, fingerprint, KeychainKind::Internal)), + Bip44Public(key, fingerprint, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip44Public<K>
where 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 9e4cc4b96a..23d9c5df4b 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,4 +1,4 @@ -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

@@ -7,13 +7,13 @@ let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; let mut wallet = Wallet::new_no_persist( Bip49(key.clone(), KeychainKind::External), - Some(Bip49(key, KeychainKind::Internal)), + Bip49(key, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip49<K>
where 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 2796891ae4..dbb14b0e1a 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 @@ -10,13 +10,13 @@ for the key.

let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; let mut wallet = Wallet::new_no_persist( Bip49Public(key.clone(), fingerprint, KeychainKind::External), - Some(Bip49Public(key, fingerprint, KeychainKind::Internal)), + Bip49Public(key, fingerprint, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip49Public<K>
where 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 47288b65fd..ca97cdfb86 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,4 +1,4 @@ -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

@@ -7,13 +7,13 @@ let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; let mut wallet = Wallet::new_no_persist( Bip84(key.clone(), KeychainKind::External), - Some(Bip84(key, KeychainKind::Internal)), + Bip84(key, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip84<K>
where 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 82c0c06492..b66078a27b 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 @@ -10,13 +10,13 @@ for the key.

let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; let mut wallet = Wallet::new_no_persist( Bip84Public(key.clone(), fingerprint, KeychainKind::External), - Some(Bip84Public(key, fingerprint, KeychainKind::Internal)), + Bip84Public(key, fingerprint, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip84Public<K>
where 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 8722b8b507..50eec2adbd 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,4 +1,4 @@ -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

@@ -7,13 +7,13 @@ let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; let mut wallet = Wallet::new_no_persist( Bip86(key.clone(), KeychainKind::External), - Some(Bip86(key, KeychainKind::Internal)), + Bip86(key, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip86<K>
where 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 efb062b0f1..c72917fbd3 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 @@ -10,13 +10,13 @@ for the key.

let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; let mut wallet = Wallet::new_no_persist( Bip86Public(key.clone(), fingerprint, KeychainKind::External), - Some(Bip86Public(key, fingerprint, KeychainKind::Internal)), + Bip86Public(key, fingerprint, KeychainKind::Internal), Network::Testnet, )?; assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37"); -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().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>

source§

fn build( +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>

source§

fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>

Build the complete descriptor

Auto Trait Implementations§

§

impl<K> Freeze for Bip86Public<K>
where 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 558fbae3f4..b1afa97b4f 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,10 +1,13 @@ -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;
 
-let key =
+let key_external =
     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-let mut wallet = Wallet::new_no_persist(P2Pkh(key), None, Network::Testnet)?;
+let key_internal =
+    bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+let mut wallet =
+    Wallet::new_no_persist(P2Pkh(key_external), P2Pkh(key_internal), Network::Testnet)?;
 
 assert_eq!(
     wallet
@@ -12,7 +15,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: 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 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 9714be03e2..097bd32a63 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,10 +1,13 @@ -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;
 
-let key =
+let key_external =
     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-let mut wallet = Wallet::new_no_persist(P2TR(key), None, Network::Testnet)?;
+let key_internal =
+    bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+let mut wallet =
+    Wallet::new_no_persist(P2TR(key_external), P2TR(key_internal), Network::Testnet)?;
 
 assert_eq!(
     wallet
@@ -12,7 +15,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: 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 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 afe27839a7..cf64a94a11 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,10 +1,13 @@ -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;
 
-let key =
+let key_external =
     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-let mut wallet = Wallet::new_no_persist(P2Wpkh(key), None, Network::Testnet)?;
+let key_internal =
+    bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+let mut wallet =
+    Wallet::new_no_persist(P2Wpkh(key_external), P2Wpkh(key_internal), Network::Testnet)?;
 
 assert_eq!(
     wallet
@@ -12,7 +15,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: 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 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 cfb2870667..42e6aa7a7d 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,10 +1,16 @@ -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;
 
-let key =
+let key_external =
     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-let mut wallet = Wallet::new_no_persist(P2Wpkh_P2Sh(key), None, Network::Testnet)?;
+let key_internal =
+    bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+let mut wallet = Wallet::new_no_persist(
+    P2Wpkh_P2Sh(key_external),
+    P2Wpkh_P2Sh(key_internal),
+    Network::Testnet,
+)?;
 
 assert_eq!(
     wallet
@@ -12,7 +18,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: 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 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 d87d30bc04..72ab0d2bda 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 @@ -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/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html index 032060187f..a8d4162836 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 @@ -61,7 +61,8 @@ that the Wallet can use to update its view of the chain.

let db = bdk_file_store::Store::<ChangeSet>::open_or_create_new(b"magic_bytes", "path/to/my_wallet.db").expect("create store"); let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)"; - let mut wallet = Wallet::new_or_load(descriptor, None, db, Network::Testnet).expect("create or load wallet"); + let change_descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/1/*)"; + let mut wallet = Wallet::new_or_load(descriptor, change_descriptor, db, Network::Testnet).expect("create or load wallet"); // Insert a single `TxOut` at `OutPoint` into the wallet. let _ = wallet.insert_txout(outpoint, txout); 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 afe7d942c0..d53e46c5ef 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 @@ -12,7 +12,7 @@
§

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.

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/wallet/coin_selection/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html index f0707838f0..1f63525fc5 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 @@ -13,7 +13,7 @@ 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 +

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.

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 754fe2de61..f5502b8dfc 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,4 +1,4 @@ -ApplyBlockError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::ApplyBlockError

source ·
pub enum ApplyBlockError {
+ApplyBlockError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::ApplyBlockError

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

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 +

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.

diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html index d2d3d3e9da..70c6a71399 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html @@ -1,4 +1,4 @@ -InsertTxError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::InsertTxError

source ·
pub enum InsertTxError {
+InsertTxError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::InsertTxError

source ·
pub enum InsertTxError {
     ConfirmationHeightCannotBeGreaterThanTip {
         tip_height: u32,
         tx_height: u32,
@@ -8,7 +8,7 @@
 confirmation height that is greater than the internal chain tip.

Fields

§tip_height: u32

The internal chain’s tip height.

§tx_height: u32

The introduced transaction’s confirmation height.

-

Trait Implementations§

source§

impl Debug for InsertTxError

source§

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

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

impl Display for InsertTxError

source§

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

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

impl Error for InsertTxError

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 +

Trait Implementations§

source§

impl Debug for InsertTxError

source§

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

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

impl Display for InsertTxError

source§

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

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

impl Error for InsertTxError

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_wallet/wallet/enum.LoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html index d8f7231550..c92260c8e4 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 @@ -4,7 +4,7 @@ NotInitialized, MissingNetwork, MissingGenesis, - MissingDescriptor, + MissingDescriptor(KeychainKind), }
Expand description

The error type when loading a Wallet from persistence.

Method load may return this error.

Variants§

§

Descriptor(DescriptorError)

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

@@ -12,8 +12,8 @@
§

NotInitialized

Wallet not initialized, persistence backend is empty.

§

MissingNetwork

Data loaded from persistence is missing network type.

§

MissingGenesis

Data loaded from persistence is missing genesis hash.

-
§

MissingDescriptor

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 +
§

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.

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 index 53b0d15866..f269be4601 100644 --- 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 @@ -1,4 +1,4 @@ -NewOrLoadError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::NewOrLoadError

source ·
pub enum NewOrLoadError {
+NewOrLoadError in bdk_wallet::wallet - Rust

Enum bdk_wallet::wallet::NewOrLoadError

source ·
pub enum NewOrLoadError {
     Descriptor(DescriptorError),
     Persist(Error),
     NotInitialized,
@@ -28,7 +28,7 @@
 
§

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 +

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.

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 b44663d368..4893e45231 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,4 +1,4 @@ -BuildFeeBumpError in bdk_wallet::wallet::error - Rust

Enum bdk_wallet::wallet::error::BuildFeeBumpError

source ·
pub enum BuildFeeBumpError {
+BuildFeeBumpError in bdk_wallet::wallet::error - Rust

Enum bdk_wallet::wallet::error::BuildFeeBumpError

source ·
pub enum BuildFeeBumpError {
     UnknownUtxo(OutPoint),
     TransactionNotFound(Txid),
     TransactionConfirmed(Txid),
@@ -10,7 +10,7 @@
 
§

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 +

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.

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 01b82cfcef..17a6ceee7b 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,5 +1,5 @@ -CreateTxError in bdk_wallet::wallet::error - Rust

Enum bdk_wallet::wallet::error::CreateTxError

source ·
pub enum CreateTxError {
-
Show 22 variants Descriptor(DescriptorError), +CreateTxError in bdk_wallet::wallet::error - Rust

Enum bdk_wallet::wallet::error::CreateTxError

source ·
pub enum CreateTxError {
+
Show 21 variants Descriptor(DescriptorError), Persist(Error), Policy(PolicyError), SpendingPolicyRequired(KeychainKind), @@ -22,7 +22,6 @@ }, NoUtxosSelected, OutputBelowDustLimit(usize), - ChangePolicyDescriptor, CoinSelection(Error), InsufficientFunds { needed: u64, @@ -54,7 +53,6 @@

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

-
§

ChangePolicyDescriptor

The change_policy was set but the wallet does not have a change_descriptor

§

CoinSelection(Error)

There was an error with coin selection

§

InsufficientFunds

Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

Fields

§needed: u64

Sats needed for some transaction

@@ -67,7 +65,7 @@ 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 +

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.

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 bdc477a3fd..4d3ed39e2b 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 @@ -6,7 +6,7 @@

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 +

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.

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 3f50d06875..1e8e9c295b 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,2 @@ -bdk_wallet::wallet::error - Rust

Module bdk_wallet::wallet::error

source ·
Expand description

Errors that can be thrown by the Wallet

+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 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 494aa7c41d..13bbe6f794 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,4 +1,4 @@ -bdk_wallet::wallet::export - Rust

Module bdk_wallet::wallet::export

source ·
Expand description

Wallet export

+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#"{
@@ -10,13 +10,13 @@
 let import = FullyNodedExport::from_str(import)?;
 let wallet = Wallet::new_no_persist(
     &import.descriptor(),
-    import.change_descriptor().as_ref(),
+    &import.change_descriptor().expect("change descriptor"),
     Network::Testnet,
 )?;

§Export a Wallet

let wallet = Wallet::new_no_persist(
     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
-    Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
+    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)",
     Network::Testnet,
 )?;
 let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
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 be76335676..c5fc8650c4 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
@@ -6,7 +6,7 @@
 

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

Implementations§

source§

impl FullyNodedExport

source

pub fn export_wallet( wallet: &Wallet, label: &str, include_blockheight: bool @@ -18,8 +18,8 @@ and others.

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

+
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 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 dc8dccd17f..ed66711be5 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,4 +1,4 @@ -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>(
+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,
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
index 11cab42e76..d4956f765d 100644
--- 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
@@ -1,4 +1,4 @@
-bdk_wallet::wallet - Rust

Module bdk_wallet::wallet

source ·
Expand description

Wallet

+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§

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.

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 06b4dadf93..1279f124f9 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,4 +1,4 @@ -SignerError in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::SignerError

source ·
pub enum SignerError {
+SignerError in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::SignerError

source ·
pub enum SignerError {
 
Show 14 variants MissingKey, InvalidKey, UserCanceled, @@ -33,7 +33,7 @@ explicitly allowed them

§

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
source§

impl From<Error> for SignerError

source§

fn from(e: 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 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
source§

impl From<Error> for SignerError

source§

fn from(e: 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_wallet/wallet/signer/enum.SignerId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html index 46f9462ff6..7a33438c52 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,4 +1,4 @@ -SignerId in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::SignerId

source ·
pub enum SignerId {
+SignerId in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::SignerId

source ·
pub enum SignerId {
     PkHash(Hash),
     Fingerprint(Fingerprint),
     Dummy(u64),
@@ -7,16 +7,16 @@ 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 +

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,

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 + 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 <= +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 +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.

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 b2b3b6daea..54bf33dbd7 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,4 +1,4 @@ -TapLeavesOptions in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::TapLeavesOptions

source ·
pub enum TapLeavesOptions {
+TapLeavesOptions in bdk_wallet::wallet::signer - Rust

Enum bdk_wallet::wallet::signer::TapLeavesOptions

source ·
pub enum TapLeavesOptions {
     All,
     Include(Vec<TapLeafHash>),
     Exclude(Vec<TapLeafHash>),
@@ -9,9 +9,9 @@
 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 +

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 +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.

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 eda41a72a9..b2a2f22951 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,4 +1,4 @@ -bdk_wallet::wallet::signer - Rust

Module bdk_wallet::wallet::signer

source ·
Expand description

Generalized signers

+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.

@@ -35,8 +35,9 @@ through the let custom_signer = CustomSigner::connect(); -let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"; -let mut wallet = Wallet::new_no_persist(descriptor, None, Network::Testnet)?; +let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)"; +let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)"; +let mut wallet = Wallet::new_no_persist(descriptor, change_descriptor, Network::Testnet)?; wallet.add_signer( KeychainKind::External, SignerOrdering(200), 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 9a2efe1137..a9f0d759d7 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,4 +1,4 @@ -SignOptions in bdk_wallet::wallet::signer - Rust

Struct bdk_wallet::wallet::signer::SignOptions

source ·
pub struct SignOptions {
+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,
@@ -45,7 +45,7 @@ or not. This option is ignored if we’re signing a non-taproot PSBT.

§allow_grinding: bool

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

-

Trait Implementations§

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 +

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.

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 2c0a852495..ef918dcbdb 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,15 +1,15 @@ -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

+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 +

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 + 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 <= +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 +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.

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 c215b95f9e..ce35c8f671 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,24 +1,24 @@ -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( +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( +) -> 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( +) -> 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 +) -> 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 @@ -33,8 +33,8 @@

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,

§

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, 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 b52d1f29eb..499adae091 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,29 +1,29 @@ -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( +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( +

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( +

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 +

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.

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 db868bc9b7..00cbbe8083 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,4 +1,4 @@ -InputSigner in bdk_wallet::wallet::signer - Rust

Trait bdk_wallet::wallet::signer::InputSigner

source ·
pub trait InputSigner: SignerCommon {
+InputSigner in bdk_wallet::wallet::signer - Rust

Trait bdk_wallet::wallet::signer::InputSigner

source ·
pub trait InputSigner: SignerCommon {
     // Required method
     fn sign_input(
         &self,
@@ -11,11 +11,11 @@
 

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§

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 +

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/wallet/signer/trait.SignerCommon.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html index 45e414697e..9478b2e084 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,15 @@ -SignerCommon in bdk_wallet::wallet::signer - Rust

Trait bdk_wallet::wallet::signer::SignerCommon

source ·
pub trait SignerCommon: Debug + Send + Sync {
+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

+

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

+

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 +

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/wallet/signer/trait.TransactionSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html index 29bee3523c..4c6a25c8e8 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,4 +1,4 @@ -TransactionSigner in bdk_wallet::wallet::signer - Rust

Trait bdk_wallet::wallet::signer::TransactionSigner

source ·
pub trait TransactionSigner: SignerCommon {
+TransactionSigner in bdk_wallet::wallet::signer - Rust

Trait bdk_wallet::wallet::signer::TransactionSigner

source ·
pub trait TransactionSigner: SignerCommon {
     // Required method
     fn sign_transaction(
         &self,
@@ -9,10 +9,10 @@
 }
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§

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 +

Implementors§

\ 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 a72e268a05..736576f38e 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 @@ -7,32 +7,32 @@ Its main components are:

Implementations§

source§

impl Wallet

source

pub fn new_no_persist<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, + change_descriptor: E, network: Network ) -> Result<Self, DescriptorError>

Creates a wallet that does not persist data.

source

pub fn new_no_persist_with_genesis_hash<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, + change_descriptor: E, network: Network, genesis_hash: BlockHash ) -> Result<Self, DescriptorError>

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

-
source§

impl Wallet

source§

impl Wallet

source

pub fn new<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, - db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + change_descriptor: E, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, network: Network ) -> Result<Self, NewError>

Initialize an empty Wallet.

-
source

pub fn new_with_genesis_hash<E: IntoWalletDescriptor>( +

source

pub fn new_with_genesis_hash<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, - db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + change_descriptor: E, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, 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( - db: impl PersistBackend<ChangeSet> + Send + Sync + 'static +

source

pub fn load( + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static ) -> Result<Self, LoadError>

Load Wallet from the given persistence backend.

Note that the descriptor secret keys are not persisted to the db; this means that after calling this method the Wallet won’t know the secret keys, and as such, won’t be @@ -56,17 +56,17 @@ 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>( +

source

pub fn new_or_load<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, - db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + change_descriptor: E, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, network: Network ) -> Result<Self, NewOrLoadError>

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

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

-
source

pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>( +

source

pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>( descriptor: E, - change_descriptor: Option<E>, - db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + change_descriptor: E, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, network: Network, genesis_hash: BlockHash ) -> Result<Self, NewOrLoadError>

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

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

-
source

pub fn network(&self) -> Network

Get the Bitcoin network the wallet is using.

-
source

pub fn keychains( +

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.

+
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( +

source

pub fn reveal_next_address( &mut self, keychain: KeychainKind ) -> Result<AddressInfo>

Attempt to reveal the next address of the given keychain.

@@ -93,7 +93,7 @@ index defined in §Errors

If writing to persistent storage fails.

-
source

pub fn reveal_addresses_to( +

source

pub fn reveal_addresses_to( &mut self, keychain: KeychainKind, index: u32 @@ -104,7 +104,7 @@ possible index. If all addresses up to the given index are already no new addresses are returned.

§Errors

If writing to persistent storage fails.

-
source

pub fn next_unused_address( +

source

pub fn next_unused_address( &mut self, keychain: KeychainKind ) -> Result<AddressInfo>

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

are available. See also reveal_next_address.

§Errors

If writing to persistent storage fails.

-
source

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

Marks an address used of the given keychain at index.

+
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 +

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( +

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.

+
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).

+
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( +

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 = (u32, 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 @@ -143,21 +143,21 @@ from seed words). You pass the BTreeMap of iterators to a blockchai 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( +

source

pub fn unbounded_spk_iter( &self, keychain: KeychainKind ) -> impl Iterator<Item = (u32, 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 +

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.

+
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.

Any inserted TxOuts are not persisted until commit is called.

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

-
source

pub fn calculate_fee( +

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.

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

pub fn calculate_fee_rate( +

source

pub fn calculate_fee_rate( &self, tx: &Transaction ) -> Result<FeeRate, CalculateFeeError>

Calculate the [FeeRate] for a given transaction.

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

pub fn sent_and_received(&self, tx: &Transaction) -> (Amount, Amount)

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

+
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.

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

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

pub fn get_tx( +

source

pub fn get_tx( &self, txid: Txid ) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>>

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

@@ -234,14 +234,14 @@ the transaction was last seen in the mempool is provided. last_seen, ), }
-
source

pub fn insert_checkpoint( +

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. This stages but does not commit the change.

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

-
source

pub fn insert_tx( +

source

pub fn insert_tx( &mut self, tx: Transaction, position: ConfirmationTime @@ -255,28 +255,30 @@ inserting new transactions.

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

-

source

pub fn transactions( +

source

pub fn transactions( &self ) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> + '_

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 +

source

pub fn balance(&self) -> Balance

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

-
source

pub fn add_signer( +

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

+
source

pub fn get_signers(&self, keychain: KeychainKind) -> Arc<SignersContainer>

Get the signers

§Example
-
let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
+
let descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/0/*)";
+let change_descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/1/*)";
+let wallet = Wallet::new_no_persist(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.

+
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 = {
@@ -287,7 +289,7 @@ values.

}; // sign and broadcast ...
-
source

pub fn build_fee_bump( +

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.

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

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

pub fn sign( +

source

pub fn sign( &self, psbt: &mut Psbt, sign_options: SignOptions @@ -333,17 +335,14 @@ in this library will.

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

source

pub fn policies( +

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 -) -> Option<&ExtendedDescriptor>

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

source

pub fn public_descriptor(&self, keychain: KeychainKind) -> &ExtendedDescriptor

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

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

-
source

pub fn finalize_psbt( +

source

pub fn finalize_psbt( &self, psbt: &mut Psbt, sign_options: SignOptions @@ -353,38 +352,38 @@ validation and construct the respective scriptSig or scriptWi 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 get_descriptor_for_keychain( +

source

pub fn secp_ctx(&self) -> &Secp256k1<All>

Return the secp256k1 context used for all signing operations

+
source

pub fn get_descriptor_for_keychain( &self, keychain: KeychainKind ) -> &ExtendedDescriptor

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

-
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. +

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.

+
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( +

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

+
source

pub fn descriptor_checksum(&self, keychain: KeychainKind) -> String

Return the checksum of the public descriptor associated to keychain

Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

-
source

pub fn apply_update( +

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 commit them).

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

-
source

pub fn commit(&mut self) -> Result<bool>

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

source

pub fn commit(&mut self) -> Result<bool>

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

This returns whether the update resulted in any changes.

-
source

pub fn staged(&self) -> &ChangeSet

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

-
source

pub fn tx_graph(&self) -> &TxGraph<ConfirmationTimeHeightAnchor>

Get a reference to the inner TxGraph.

-
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( +

source

pub fn staged(&self) -> &ChangeSet

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

+
source

pub fn tx_graph(&self) -> &TxGraph<ConfirmationTimeHeightAnchor>

Get a reference to the inner TxGraph.

+
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 @@ -392,7 +391,7 @@ this fails.

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( +

source

pub fn apply_block_connected_to( &mut self, block: &Block, height: u32, @@ -402,7 +401,7 @@ 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.

-

source

pub fn apply_unconfirmed_txs<'t>( +

source

pub fn apply_unconfirmed_txs<'t>( &mut self, unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> )

Apply relevant unconfirmed transactions to the wallet.

@@ -411,18 +410,18 @@ internal
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.

+
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.

+
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<ConfirmationTimeHeightAnchor>> for Wallet

source§

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

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 +

Trait Implementations§

source§

impl AsRef<TxGraph<ConfirmationTimeHeightAnchor>> for Wallet

source§

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

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.

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 index 4cca31bb07..92a8503fb8 100644 --- 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 @@ -1,4 +1,4 @@ -ChangeSet in bdk_wallet::wallet - Rust

Type Alias bdk_wallet::wallet::ChangeSet

source ·
pub type ChangeSet = CombinedChangeSet<KeychainKind, ConfirmationTimeHeightAnchor>;
Expand description

The changes made to a wallet by applying an Update.

+ChangeSet in bdk_wallet::wallet - Rust

Type Alias bdk_wallet::wallet::ChangeSet

source ·
pub type ChangeSet = CombinedChangeSet<KeychainKind, ConfirmationTimeHeightAnchor>;
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<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>,
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html
index fc27e23af3..f3a1e90733 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html
@@ -1,2 +1,2 @@
-example_cli - Rust

Crate example_cli

source ·

Re-exports§

Structs§

Enums§

Functions§

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

    Crate example_cli

    source ·

    Re-exports§

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

    Structs§

    Enums§

    Functions§

    Type Aliases§

    \ 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 58a14000bb..6c06b832c0 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 e5738923c8..8ccc5bc2e1 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 @@ -10,7 +10,7 @@ var searchIndex = new Map(JSON.parse('[\ ["bdk_sqlite",{"t":"GPPFNNNNNNNNNNNNNENNNNNNNNNNOO","n":["Error","Network","Sqlite","Store","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","into","into","load_from_persistence","new","rusqlite","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_changes","expected","given"],"q":[[0,"bdk_sqlite"],[28,"bdk_sqlite::Error"],[30,"bdk_sqlite::store"],[31,"core::fmt"],[32,"core::option"],[33,"anyhow"],[34,"core::cmp"],[35,"serde::de"],[36,"serde::ser"],[37,"core::marker"],[38,"bdk_chain::tx_data_traits"],[39,"core::clone"],[40,"bdk_persist::changeset"],[41,"core::convert"],[42,"rusqlite"],[43,"rusqlite::error"],[44,"core::result"],[45,"alloc::string"],[46,"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,24,24],"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{{{b{d{f{ce}}}}}{{A`{{n{g}}}}}{AbAdAfAh}{AjAdAfAh}{Al{B`{{An{ce}}}}{Bb{{An{ce}}}}}}{Bd{{Bh{{f{ce}}Bf}}}{AbAdAfAh}{AjAdAfAh}}`{{{b{c}}}Bj{}}{c{{Bh{e}}}{}{}}000{{{b{c}}}Bl{}}055{{{b{d{f{ce}}}}{b{g}}}{{A`{Bn}}}{AbAdAfAh}{AjAdAfAh}{Al{B`{{An{ce}}}}{Bb{{An{ce}}}}}}``","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"Store",0,30],[5,"Formatter",31],[8,"Result",31],[6,"Error",0],[6,"Option",32],[8,"Result",33],[10,"Ord",34],[10,"Deserialize",35],[10,"Serialize",36],[10,"Send",37],[10,"Anchor",38],[10,"Clone",39],[5,"CombinedChangeSet",40],[10,"From",41],[10,"Into",41],[5,"Connection",42],[6,"Error",43],[6,"Result",44],[5,"String",45],[5,"TypeId",46],[1,"unit"],[15,"Network",28]],"r":[[3,30]],"b":[[9,"impl-Display-for-Error"],[10,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQAAwAFAAYAEAAAABIADAA="}],\ ["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::hash_types::newtypes"],[31,"anyhow"],[32,"bdk_chain::local_chain"],[33,"bitcoin::address"],[34,"core::option"],[35,"alloc::vec"],[36,"bitcoincore_rpc::client"],[37,"bitcoin::amount"],[38,"core::result"],[39,"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",30],[6,"Result",38],[5,"TypeId",39]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA4ABAAAAAAAAgAIABYAAAAZAAMA"}],\ ["bdk_tmp_plan",{"t":"FKPPPPFFGGFFPPGPPONNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNOONHNNNNOOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNOOOOOOOO","n":["Assets","CanDerive","Complete","DerivationError","Incomplete","Legacy","Plan","PlanKey","PlanState","RequiredSignatures","Requirements","SatisfactionMaterial","Segwitv0","SigHashError","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","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"],[149,"bdk_tmp_plan::PlanState"],[151,"bdk_tmp_plan::RequiredSignatures"],[157,"miniscript::descriptor::key"],[158,"bitcoin::bip32"],[159,"core::option"],[160,"bdk_tmp_plan::requirements"],[161,"core::clone"],[162,"bdk_tmp_plan::template"],[163,"core::fmt"],[164,"bitcoin::crypto::sighash"],[165,"miniscript::descriptor"],[166,"bitcoin::blockdata::locktime::absolute"],[167,"bitcoin::blockdata::transaction"],[168,"secp256k1"],[169,"core::result"],[170,"core::borrow"],[171,"secp256k1::context"],[172,"alloc::string"],[173,"core::any"],[174,"bitcoin::blockdata::script::witness_version"]],"i":[0,0,41,10,41,9,0,0,0,0,0,0,9,10,0,9,9,11,41,7,9,10,11,12,13,14,41,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,41,7,9,10,10,10,11,12,13,14,14,7,13,14,7,13,41,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,41,7,9,10,11,12,13,14,41,7,9,10,11,12,13,14,14,41,7,9,10,11,12,13,14,41,7,9,10,11,12,13,14,12,44,44,45,46,47,48,48,47],"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{}}00{BhAd}1{BjAd}2222``````{ce{}{}}0000000``{{{b{{Ah{c}}}}}{{l{Bl}}}A`}{{{b{{Bn{h}}}}{b{{Al{c}}}}}{{l{{Ah{c}}}}}{fA`}}{{{b{{Ah{c}}}}}{{l{C`}}}A`}{{{b{{Ah{c}}}}}{{l{Cb}}}A`}{{{b{{Ah{c}}}}}{{n{c}}}A`}{{{b{{n{c}}}}}Cd{}}```````{{{b{{Ab{Cf}}}}B`{b{Ch}}{b{{Cj{c}}}}{l{Cl}}{l{Cn}}{b{d{D`{e}}}}{b{dAj}}{b{{Db{g}}}}}{{Dd{CdAd}}}{{Dh{Df}}}{{Dh{Dj}}}{DlDn}}`{{{b{c}}}e{}{}}000000{{{b{c}}}E`{}}{{{b{{Ah{c}}}}{b{Aj}}}{{Eb{c}}}A`}{c{{Dd{e}}}{}{}}000000000000000`{{{b{c}}}Ed{}}0000000<<<<<<<<{{{b{{Ah{c}}}}}{{l{Ef}}}A`}````````","D":"Fl","p":[[1,"reference"],[0,"mut"],[10,"CanDerive",0],[5,"DefiniteDescriptorKey",157],[5,"DerivationPath",158],[6,"Option",159],[5,"Requirements",0,160],[10,"Clone",161],[6,"RequiredSignatures",0,160],[6,"SigningError",0,160],[5,"PlanKey",0,162],[5,"Plan",0],[5,"SatisfactionMaterial",0],[5,"Assets",0],[1,"unit"],[1,"usize"],[5,"Formatter",163],[8,"Result",163],[10,"Debug",163],[6,"Error",164],[6,"Error",158],[1,"u32"],[6,"Descriptor",165],[6,"LockTime",166],[5,"Sequence",167],[1,"bool"],[6,"DescriptorPublicKey",157],[8,"KeyMap",165],[6,"Prevouts",164],[6,"TapSighashType",164],[6,"EcdsaSighashType",164],[5,"SighashCache",164],[5,"Secp256k1",168],[6,"Result",169],[5,"TxOut",167],[10,"Borrow",170],[5,"Transaction",167],[10,"Signing",171],[10,"Verification",171],[5,"String",172],[6,"PlanState",0],[5,"TypeId",173],[6,"WitnessVersion",174],[15,"Complete",149],[15,"Legacy",151],[15,"Segwitv0",151],[15,"TapScript",151],[15,"TapKey",151]],"r":[[7,162],[9,160],[10,160],[14,160]],"b":[[59,"impl-Display-for-SigningError"],[60,"impl-Debug-for-SigningError"],[68,"impl-From%3CError%3E-for-SigningError"],[70,"impl-From%3CError%3E-for-SigningError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGcAEQABAAEABAABAA4AAQATACIAOgAHAEUAAABHAAAATAAAAE8AAABaAAEAXQAAAGAAAABiAAAAZgAAAGkAAABrACkAmAABAA=="}],\ -["bdk_wallet",{"t":"PPEPGPFEEGEFNNDNNNNNNNNENNNNNNNNNOOCQNNNNNNNNNNQNNNNNNNNNNOOCDNONCONNNEENNNNNNNNNNNNNONNNNOHNNNNCOOOPPPIGEGIKIKRGFPPPPEKGPPPPIPPPPPPPPPPNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNMNNMNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNCNONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNONNNNNNNNNMNNNNCNNNNNNNNNNNMNNNCNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHPPGPPPPPPPPPPNNNNNNNNNNNNNNNNNNPPPGPFIPPIPPPPPPPPPPPGFGPPPPPGGPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNONNONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFKIFFFFNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPKGGGRRKGPKKFKPPPRGIPPPPPRPFPKGPPPFFGFPIPPPHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNOOONHNMNNHMNNOONNNNNNMONNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMMMFGFPIPPPPGKGPPPPPPGGPPPPPPPFFNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNCNONNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNMNONONNNNNNNNONNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNONNNNNNNNNHOOOOOOOOOOPPFPKFIGGPFPFNNNNNNNNNNNNNNNNNNMNNNHNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOGPPPGPPPPPPPPGPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOFIOONNNNNNNNNNNOONNNNNNPPPPPPPKPPPPPPPPPPPPPPPFKGGGFFFPGKPNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNOOMNNNMNONONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOGGPPPGPPPPPFGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOO","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","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Pkh","Pkh","Policy","ScriptContext","Segwitv0","Sh","Sh","Sh","Single","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","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_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","balance","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone_into","clone_into","coin_selection","commit","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","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","is_dust","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","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","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","ChangePolicyDescriptor","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","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","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","Bip69Lexicographic","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","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","cmp","coin_selection","current_height","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_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"],"q":[[0,"bdk_wallet"],[97,"bdk_wallet::Utxo"],[100,"bdk_wallet::descriptor"],[350,"bdk_wallet::descriptor::checksum"],[352,"bdk_wallet::descriptor::error"],[383,"bdk_wallet::descriptor::policy"],[530,"bdk_wallet::descriptor::policy::BuildSatisfaction"],[533,"bdk_wallet::descriptor::policy::Satisfaction"],[544,"bdk_wallet::descriptor::policy::SatisfiableItem"],[554,"bdk_wallet::descriptor::template"],[690,"bdk_wallet::keys"],[988,"bdk_wallet::psbt"],[992,"bdk_wallet::wallet"],[1215,"bdk_wallet::wallet::ApplyBlockError"],[1217,"bdk_wallet::wallet::InsertTxError"],[1219,"bdk_wallet::wallet::NewOrLoadError"],[1225,"bdk_wallet::wallet::coin_selection"],[1317,"bdk_wallet::wallet::coin_selection::Error"],[1319,"bdk_wallet::wallet::coin_selection::Excess"],[1324,"bdk_wallet::wallet::error"],[1398,"bdk_wallet::wallet::error::CreateTxError"],[1406,"bdk_wallet::wallet::export"],[1429,"bdk_wallet::wallet::signer"],[1608,"bdk_wallet::wallet::signer::SignerContext"],[1609,"bdk_wallet::wallet::tx_builder"],[1724,"bdk_wallet::wallet::tx_builder::AddForeignUtxoError"],[1726,"bdk_wallet::types"],[1727,"core::cmp"],[1728,"core::result"],[1729,"serde::de"],[1730,"core::fmt"],[1731,"core::hash"],[1732,"bitcoin::blockdata::transaction"],[1733,"core::option"],[1734,"serde::ser"],[1735,"core::any"],[1736,"miniscript::descriptor"],[1737,"bitcoin::network"],[1738,"bitcoin::address"],[1739,"miniscript"],[1740,"miniscript::miniscript"],[1741,"miniscript::miniscript::decode"],[1742,"miniscript::miniscript::context"],[1743,"miniscript::iter::tree"],[1744,"miniscript::descriptor::key"],[1745,"alloc::vec"],[1746,"miniscript::miniscript::satisfy"],[1747,"miniscript::plan"],[1748,"bitcoin_hashes::sha256"],[1749,"miniscript::miniscript::hash256"],[1750,"bitcoin_hashes::ripemd160"],[1751,"bitcoin_hashes::hash160"],[1752,"core::clone"],[1753,"secp256k1"],[1754,"bitcoin::crypto::key"],[1755,"secp256k1::context"],[1756,"bdk_chain::descriptor_ext"],[1757,"core::str::traits"],[1758,"bitcoin::blockdata::script::owned"],[1759,"miniscript::miniscript::analyzable"],[1760,"secp256k1::context::alloc_only"],[1761,"bitcoin::blockdata::script::borrowed"],[1762,"core::ops::range"],[1763,"core::ops::function"],[1764,"miniscript::descriptor::bare"],[1765,"miniscript::descriptor::segwitv0"],[1766,"miniscript::descriptor::sh"],[1767,"miniscript::descriptor::tr"],[1768,"miniscript::miniscript::types"],[1769,"miniscript::miniscript::types::extra_props"],[1770,"miniscript::expression"],[1771,"miniscript::miniscript::iter"],[1772,"miniscript::policy::semantic"],[1773,"miniscript::policy"],[1774,"alloc::collections::btree::map"],[1775,"alloc::string"],[1776,"bitcoin::bip32"],[1777,"bitcoin::base58"],[1778,"hex_conservative::parse"],[1779,"miniscript::descriptor::sortedmulti"],[1780,"core::convert"],[1781,"core::default"],[1782,"bitcoin::amount"],[1783,"bitcoin::blockdata::fee_rate"],[1784,"bdk_chain::keychain"],[1785,"alloc::sync"],[1786,"core::iter::traits::iterator"],[1787,"bitcoin::blockdata::block"],[1788,"bdk_chain::local_chain"],[1789,"bdk_chain::chain_data"],[1790,"core::iter::traits::collect"],[1791,"bdk_chain::tx_graph"],[1792,"bitcoin::hash_types::newtypes"],[1793,"anyhow"],[1794,"bitcoin::psbt"],[1795,"bdk_chain::spk_client"],[1796,"bitcoin::psbt::map::input"],[1797,"bdk_wallet::wallet::utils"],[1798,"core::iter::traits::double_ended"],[1799,"bdk_persist::persist"],[1800,"core::marker"],[1801,"bdk_chain::keychain::txout_index"],[1802,"bitcoin::psbt::error"],[1803,"bitcoin::crypto::sighash"],[1804,"bitcoin::blockdata::script::push_bytes::primitive"],[1805,"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,249,249,249,94,250,24,0,0,0,0,0,0,0,0,33,0,0,35,94,250,24,0,0,0,94,250,24,35,0,94,250,24,94,250,24,94,250,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,120,117,117,0,121,0,0,120,119,0,120,120,117,117,117,120,121,71,117,121,121,0,0,0,71,71,119,120,120,0,0,120,120,120,119,119,120,121,73,122,117,71,119,120,121,73,122,117,71,119,120,121,73,122,71,119,120,121,73,122,71,73,122,122,119,120,121,73,122,117,119,120,121,73,122,117,117,71,119,120,121,121,73,73,122,117,71,73,119,122,120,73,119,120,121,73,122,117,71,120,121,122,73,122,73,73,119,120,121,73,122,122,119,120,121,73,122,71,117,119,120,121,73,122,117,71,119,120,121,73,122,117,71,119,120,121,73,122,117,71,119,120,121,73,122,117,71,251,251,251,252,253,254,253,254,253,254,253,254,253,254,255,256,257,258,259,260,260,259,261,262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,123,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,124,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,115,0,0,0,0,156,156,0,0,146,0,0,0,0,115,115,115,33,0,0,30,115,115,102,35,156,150,0,150,0,0,30,35,102,0,0,0,0,30,0,146,102,35,0,263,35,150,142,147,30,143,115,141,35,102,144,145,146,150,142,147,30,143,115,141,35,102,144,145,146,141,33,33,33,33,33,33,33,33,33,142,30,143,141,35,102,144,145,146,142,30,143,141,35,102,144,145,146,141,35,144,146,143,143,142,35,35,141,30,141,35,102,144,145,146,147,30,143,115,115,141,141,35,35,102,102,144,145,146,141,150,150,150,142,147,30,143,115,115,115,141,35,35,102,144,145,146,147,147,35,102,141,35,35,156,159,156,159,150,35,141,35,144,146,150,142,147,30,143,115,141,35,102,144,145,146,35,126,132,142,142,147,35,102,132,150,142,142,35,102,150,150,35,263,30,35,102,263,30,263,30,35,35,141,144,145,141,0,35,33,141,141,0,33,141,35,144,145,33,147,141,35,144,146,33,141,141,141,141,35,33,141,0,142,30,143,141,35,102,144,145,146,102,115,141,35,102,33,33,141,150,142,147,30,143,115,141,35,102,144,145,146,150,142,147,30,143,115,141,35,102,144,145,146,150,142,147,30,143,115,141,35,102,144,145,146,150,142,147,30,143,115,141,35,102,144,145,146,0,164,164,164,0,0,0,199,0,198,195,196,197,0,0,0,197,197,197,196,196,196,0,0,195,196,197,195,196,197,199,0,0,167,168,191,168,168,168,168,168,168,168,167,168,180,191,195,196,197,198,199,167,168,180,191,195,196,197,198,199,168,168,168,168,168,211,180,168,167,180,167,180,0,168,167,167,180,191,168,168,168,167,167,191,0,0,168,167,167,168,180,191,191,195,195,196,196,197,197,198,198,199,199,167,168,180,180,180,191,195,196,197,198,199,168,168,168,168,168,180,167,191,211,168,168,168,167,168,180,191,195,196,197,198,199,208,168,191,168,180,168,168,168,168,168,168,168,168,211,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,167,168,0,168,168,168,168,167,180,167,191,195,196,197,198,199,167,168,167,167,167,168,180,191,195,196,197,198,199,167,168,180,191,195,196,197,198,199,0,168,167,168,180,191,195,196,197,198,199,168,168,167,167,168,180,191,195,196,197,198,199,0,264,264,265,265,266,267,266,267,268,268,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,269,269,270,271,271,270,271,0,204,204,227,0,204,204,187,204,204,187,204,204,0,204,204,204,204,204,227,204,204,204,204,204,204,187,187,204,187,227,204,204,227,204,187,227,204,187,227,227,227,227,204,204,187,187,227,204,204,204,204,204,204,187,227,204,187,227,227,204,187,227,204,187,227,204,187,227,204,187,227,204,187,272,273,272,273,274,274,275,276,0,0,277,229,229,229,229,229,229,229,229,229,229,229,229,277,229,229,229,229,229,229,229,234,230,234,194,230,234,194,0,194,194,194,231,194,194,194,194,194,194,194,234,230,231,194,0,0,0,0,0,0,0,0,231,0,0,194,70,193,193,70,193,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,70,230,231,232,169,70,193,234,230,231,232,169,70,193,234,230,169,169,70,193,234,232,235,232,232,232,230,231,169,234,70,230,194,194,231,232,169,70,193,234,230,230,230,194,194,231,232,169,70,193,234,230,235,232,232,232,70,230,194,231,232,169,70,193,234,232,70,230,169,70,193,193,240,232,232,232,170,232,193,70,193,230,231,232,169,70,193,234,194,193,193,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,278,0,0,246,245,245,0,243,243,243,245,246,0,0,244,246,186,186,186,186,186,186,186,186,186,186,244,243,246,245,186,244,243,246,245,186,186,246,245,186,246,245,246,245,186,186,246,245,186,186,186,186,186,246,245,186,186,186,186,244,244,243,243,246,245,186,244,243,246,245,246,245,186,186,244,243,246,245,186,186,186,186,186,246,245,186,186,186,246,186,246,245,244,243,186,244,243,246,245,186,244,243,246,245,186,244,243,246,245,186,186,186,244,243,246,245,279,279],"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`{Df}}}}{d{{Gd{c}}}}Dh}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{Dj}}}}{d{{Gd{c}}}}}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{c}}}}}GjCh}{{{d{{C`{Df}}}}}Gl}{c{{Af{{C`{e}}}}}Ah{ChGn}}{c{{Af{{Cn{eg}}}}}Ah{ChGn}Db}{{{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}{{{Jd{c}}}{{C`{c}}}Ch}{cc{}}{{{Jf{c}}}{{C`{c}}}Ch}{{{Jh{c}}}{{C`{c}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}{{{Jl{c}}}{{C`{c}}}Ch}444{{{D`{ce}}}{{Af{{Cn{ce}}Cf}}}ChDb}{{{D`{ce}}JnK`}{{Cn{ce}}}ChDb}{{{d{Bn}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Bn}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{d{Bn}}{d{Hf}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}1{{{d{Kb}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Kb}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{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}10{{}{{d{Bn}}}}00{{{Cn{cLh}}}{{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}{{{Jd{c}}}{{C`{c}}}Ch}{{{Jh{c}}}{{C`{c}}}Ch}4{{{Cn{cFn}}}{{Af{{C`{c}}Cf}}}Ch}3{{c{Bd{{Lj{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}}{Ln{DfLl}}}}Cf}}}M`}1{{{d{If}}{d{Hf}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}{{Bd{Ad}}}{MbCh}}{{{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{Md{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{jMf}}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}{{}Mh}00{{{d{{Cn{ce}}}}{d{{Ln{Fhc}}}}}{{Cn{ce}}}ChDb}`{{{d{c}}}e{}{}}000{{{d{c}}}Mj{}}0{{{d{{C`{Df}}}}{d{{Ln{DfLl}}}}}Mj}{{{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{{Ml{g}}}}}ChCh{}{{Mn{ceg}}}}{{{d{{Cn{ce}}}}{d{jk}}}{{Af{{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}0000000`{{{d{c}}}Bl{}}000={ce{}{}}000{{{d{{Cn{ce}}}}}AjChDb}{{{d{Bn}}}{{Af{MjId}}}}{{{d{Bn}}}{{Af{{N`{f}}Id}}}}`````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Id}}{d{jAl}}}An}0{NbId}{NdId}{NfId}{CfId}{NhId}{NjId}{cc{}}{NlId}>{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0{{{d{c}}}Bl{}}{ce{}{}}```````````````````````````````````>>>>>>>======={{{d{Nn}}}Nn}{{{d{O`}}}O`}{{{d{Ob}}}Ob}{{{d{Ib}}}Ib}{{{d{Od}}}Od}{{{d{Hn}}}Hn}{{{d{c}}{d{je}}}Ab{}{}}00000``{{}Od}{{{d{Nn}}{d{Nn}}}Aj}{{{d{O`}}{d{O`}}}Aj}{{{d{Ob}}{d{Ob}}}Aj}{{{d{Ib}}{d{Ib}}}Aj}{{{d{Od}}{d{Od}}}Aj}{{{d{Nj}}{d{Nj}}}Aj}{{{d{Nn}}{d{jAl}}}An}{{{d{O`}}{d{jAl}}}An}{{{d{Ob}}{d{jAl}}}An}{{{d{Ib}}{d{jAl}}}An}{{{d{Od}}{d{jAl}}}An}{{{d{Nj}}{d{jAl}}}An}0{{{d{Hn}}{d{jAl}}}An}{cc{}}0{AjOb}11{O`Ib}222{{{d{Ib}}{d{{Ln{Mj{Dn{Kd}}}}}}}{{Af{OdNj}}}}{{{d{Nn}}{d{jc}}}AbB`}{{{d{Od}}{d{jc}}}AbB`}{{{d{O`}}}Mj}`{ce{}{}}000000{{{d{O`}}}Aj}{{{d{Ob}}}Aj}{{{d{Od}}}Aj}`{{{d{Od}}{d{Od}}}{{Bd{Ad}}}}{{{d{Ib}}}Aj}`{{{d{Nn}}c}AfBh}{{{d{O`}}c}AfBh}{{{d{Ob}}c}AfBh}{{{d{Ib}}c}AfBh}{{{d{Od}}c}AfBh}`{{{d{c}}}e{}{}}00000{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0000000000000{{{d{c}}}Bl{}}000000>>>>>>>``````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{OfCb}{{Af{OhId}}}}{{{Oj{c}}Cb}{{Af{OhId}}}{{Ol{Fl}}}}{{{On{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@`{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@b{c}}Cb}{{Af{OhId}}}{{Ol{A@d}}}}{{{A@f{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@j{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@l{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{A@n{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AA`{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAb{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAd{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{{{AAf{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{cc{}}00000000000{ce{}{}}00000000000{{Oh{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{c{d{{Gd{I`}}}}Cb}{{Af{{Ij{{C`{Df}}{Ln{DfLl}}}}Id}}}{}}00000000000{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000444444444444```````````````````````````````````````````{{}AAh}{{}Cl}{{DfDh}{{Af{DjDl}}}}{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{{d{{AAj{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{{AAl{ce}}}}}{{AAl{ce}}}G`Db}{{{d{Cl}}}Cl}{{{d{AAn}}}AAn}{{{d{{AAj{ce}}}}}{{AAj{ce}}}{G`Ch}{G`Db}}{{{d{Df}}}Df}{{{d{Ll}}}Ll}{{{d{AB`}}}AB`}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{c}}{d{je}}}Ab{}{}}00000000{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Ad{GbCh}{GbDb}}{{{d{Df}}{d{Df}}}Ad}{{{d{AB`}}{d{AB`}}}Ad}{{{d{ABd}}{d{ABd}}}Ad}`{{}AAn}{{{d{{AAl{ce}}}}}{{d{g}}}{}Db{}}{{DfDh}{{Af{DjDl}}}}{c{{Af{Df}}}Ah}{{{d{{AAj{ce}}}}}Hb{CjCh}Db}{{{d{Cl}}{d{Cl}}}Aj}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Aj{HdCh}{HdDb}}{{{d{Df}}{d{Df}}}Aj}{{{d{Ll}}{d{Ll}}}Aj}{{{d{AB`}}{d{AB`}}}Aj}{{{d{ABb}}{d{ABb}}}Aj}{{{d{ABd}}{d{ABd}}}Aj}{{{d{{ABf{c}}}}{d{jAl}}}An{ABhDb}}{{{d{Cl}}{d{jAl}}}An}{{{d{AAn}}{d{jAl}}}An}{{{d{Nf}}{d{jAl}}}An}0{{{d{{AAj{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{Df}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{Ll}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AB`}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABb}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABd}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{AAj{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{ABj{{ABl{c}}}Db}{ABn{{ABl{c}}}Db}{cc{}}0000{NbNf}1{CfNf}2{DjDf}33333{{DfAAh}{{ABf{c}}}Db}{{LlAAh}{{ABf{c}}}Db}{{{d{Bn}}}{{Af{Df}}}}{{{d{Bn}}}{{Af{Ll}}}}{{{d{Kb}}}{{Af{{AAj{ce}}Cf}}}{GnCh}Db}{{{d{Df}}}{{Bd{AC`}}}}{{{d{Df}}}{{Dn{AC`}}}}{c{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{{}{{Af{{AAl{ACnc}}e}}}Db{}}{{ce}{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{c{{Af{{AAl{ACne}}g}}}{}Db{}}{{{d{{ABl{c}}}}}AjDb}{{{d{Df}}}Aj}{{{d{{AAj{ce}}}}{d{jg}}}Ab{KhCh}{KhDb}B`}{{{d{Df}}{d{jc}}}AbB`}{{{d{AB`}}{d{jc}}}AbB`}{{{d{ABd}}{d{jc}}}AbB`}{ce{}{}}00000000000{DfAD`}{Ol{{Af{{ABf{c}}Nf}}}Db}{{A@h{Bd{ADb}}AC`}{{Af{{ABf{c}}Nf}}}Db}{{{AAl{ec}}}{{Af{{ABf{c}}Nf}}}Db{{Ol{c}}}}{{{AAl{ec}}{Bd{ADb}}AC`}{{Af{{ABf{c}}Nf}}}Db{{A@h{c}}}}{{{ABf{c}}}{{Af{{ABf{c}}Nf}}}Db}{Df{{Af{{ABf{c}}Nf}}}Db}{Ll{{Af{{ABf{c}}Nf}}}Db}{A@h{{Af{{ABl{c}}Nf}}}Db}{{{ABl{c}}}{{Af{{ABl{c}}Nf}}}Db}{{{AAl{ec}}}{{Af{{ABl{c}}Nf}}}Db{{A@h{c}}}}{{{AAl{ce}}}c{}Db}{Df{{Dn{Df}}}}{Ll{{Dn{Ll}}}}{{{ABl{c}}Cb}{{Bd{ABj}}}Db}{{{ABl{c}}Cb{d{{Gd{e}}}}}ABnDbM`}{{{d{Df}}}Aj}{{}Aj}{{{d{Cl}}}Aj}2{{{d{Ll}}}Aj}212133```{{{d{{AAj{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{}AAh}{{{d{Df}}}ADd}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{AAj{ce}}}}}KdChDb}0{{{d{AAh}}{d{AAh}}}AAh}{{}{{d{Bn}}}}{{Kd{Dn{c}}}{{Af{{AAj{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}}{{{ABf{c}}AAh}{{ABf{c}}}Db}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}{{Bd{Ad}}}{MbCh}{MbDb}}{{{d{Df}}{d{Df}}}{{Bd{Ad}}}}{{{d{AB`}}{d{AB`}}}{{Bd{Ad}}}}{{{d{ABd}}{d{ABd}}}{{Bd{Ad}}}}{{{d{c}}}KdCh}`{{{d{{AAj{ce}}}}}{{Af{AbCf}}}ChDb}{{{d{{AAj{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}={{{d{Df}}c}AfBh}{{}Mh}{{{d{{AAj{ce}}}}}{{D`{ce}}}{CjCh}Db}{{}AAh}{{{d{c}}}e{}{}}00000000{{{d{Ll}}{d{{Gd{c}}}}}{{Af{DfADf}}}M`}{{{d{c}}}Mj{}}000??{{{d{{AAj{ce}}}}{d{jk}}}{{Af{{AAj{ge}}{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000{ce{}{}}00000000000`{{{d{ADh}}}{{Bd{ADj}}}}{{{d{ADh}}}{{Bd{ADl}}}}{{{d{ADh}}Kd}{{Bd{Bj}}}}`````````````````````````````{{ADnADn}ADn}{{{d{jAE`}}bAEb{AEf{AEd}}}Ab}`{{{d{AE`}}}{{Ln{b{`{{AEj{}{{AEh{{Ij{DhHb}}}}}}G`}}}}}}{{{d{jAE`}}{d{AEl}}Dh}{{Af{AbAEn}}}}{{{d{jAE`}}{d{AEl}}DhAF`}{{Af{AbAFb}}}}{{{d{jAE`}}c}Ab{{AFf{}{{AEh{{Ij{{d{AFd}}H`}}}}}}}}{{{d{jAE`}}c}{{Af{AbAEn}}}{{AFj{AFh}}}}{{{d{AE`}}}{{d{{AFn{AFl}}}}}}{{{d{AE`}}}ADn}{{{d{c}}}{{d{e}}}{}{}}00000000{{{d{jc}}}{{d{je}}}{}{}}00000000{{{d{jAE`}}AG`}{{Af{{AGd{AGb}}AGf}}}}{{{d{jAE`}}}{{AGd{AGb}}}}{{{d{AE`}}{d{AFd}}}{{Af{ADjAGh}}}}{{{d{AE`}}{d{AFd}}}{{Af{ADlAGh}}}}{{{d{jAE`}}{d{AFd}}}Ab}``{{{d{AE`}}}AGj}{{{d{ADn}}}ADn}{{{d{AFh}}}AFh}{{{d{c}}{d{je}}}Ab{}{}}0`{{{d{jAE`}}}{{AGl{Aj}}}}`{{}ADn}{{}AFh}{{{d{AGn}}}{{d{c}}}{}}{{{d{AE`}}b}{{Bd{Dh}}}}{{{d{AE`}}{d{If}}}{{Bd{{Ij{bDh}}}}}}{{{d{AE`}}b}Mj}{c{{Af{ADn}}}Ah}{{{d{ADn}}{d{ADn}}}Aj}{{{d{AGn}}{d{AGn}}}Aj}``{{{d{AE`}}{d{jAH`}}AHb}{{Af{AjAHd}}}}{{{d{ADn}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AE`}}{d{jAl}}}An}{{{d{AFh}}{d{jAl}}}An}{{{d{AGn}}{d{jAl}}}An}0{{{d{AHf}}{d{jAl}}}An}0{{{d{AHh}}{d{jAl}}}An}0{{{d{AHj}}{d{jAl}}}An}0{{{d{AHl}}{d{jAl}}}An}0{{{d{AHn}}{d{jAl}}}An}0{cc{}}0{AI`AFh}{{{AIb{b}}}AFh}2222222{{{d{AE`}}b}{{d{Kl}}}}{{{d{AE`}}l{Bd{AId}}Aj}{{Af{AIfAIh}}}}{{{d{AE`}}b}{{AEf{Hl}}}}{{{d{AE`}}AG`}{{Bd{{AIj{{AEf{AFd}}AFl}}}}}}{{{d{AE`}}Bb}{{Bd{l}}}}````{{{d{jAE`}}AF`}{{Af{AjAIl}}}}{{{d{jAE`}}AFdAIn}{{Af{AjAHl}}}}{{{d{jAE`}}BbBj}Ab}{ce{}{}}00000000{{{d{AJ`}}{d{If}}}Aj}{{{d{AE`}}{d{If}}}Aj}`{{{d{AE`}}}{{`{{AEj{}{{AEh{{Ij{{d{b}}{d{Kl}}}}}}}}}}}}`{{{d{AE`}}}AJb}{{{d{AE`}}}{{`{{AEj{}{{AEh{l}}}}}}}}0{{{d{AE`}}b}{{`{{AJd{}{{AEh{AGn}}}}}}}}{c{{Af{AE`AHh}}}{{AJh{AJf}}AJjAJl}}{{{d{AE`}}}{{d{AJn}}}}{{{d{jAE`}}bDh}Aj}{{{d{AE`}}}Cb}`{{c{Bd{c}}eCb}{{Af{AE`AHf}}}Kj{{AJh{AJf}}AJjAJl}}{{c{Bd{c}}Cb}{{Af{AE`Id}}}Kj}{{c{Bd{c}}CbAK`}{{Af{AE`Id}}}Kj}{{c{Bd{c}}eCb}{{Af{AE`AHj}}}Kj{{AJh{AJf}}AJjAJl}}{{c{Bd{c}}eCbAK`}{{Af{AE`AHj}}}Kj{{AJh{AJf}}AJjAJl}}{{c{Bd{c}}eCbAK`}{{Af{AE`AHf}}}Kj{{AJh{AJf}}AJjAJl}}{{{d{AE`}}b}Dh}{{{d{jAE`}}b}{{AGl{AGn}}}}{{{d{AE`}}bDh}AGn}{{{d{AE`}}b}{{Af{{Bd{Ib}}Id}}}}{{{d{AE`}}b}{{Bd{{d{Kl}}}}}}{{{d{jAE`}}bDh}{{AGl{{`{{AEj{}{{AEh{AGn}}}}}}}}}}4{{{d{AE`}}}{{d{{Gd{I`}}}}}}{{{d{AE`}}{d{AFd}}}{{Ij{ADjADj}}}}{{{d{ADn}}c}AfBh}{{{d{AE`}}{d{jAH`}}AHb}{{Af{AjAHd}}}}`{{{d{AE`}}}{{d{{AKb{b}}}}}}{{{d{AE`}}}{{d{AJf}}}}{{{d{AE`}}}{{AKd{b}}}}{{{d{AE`}}}AKf}{{{d{c}}}e{}{}}0{{{d{c}}}Mj{}}000000{{{d{ADn}}}ADj}{{{d{AE`}}}{{`{{AEj{}{{AEh{{AIj{{AEf{AFd}}AFl}}}}}}}}}}`1{c{{Af{e}}}{}{}}00000000000000000`{{{d{AE`}}}{{d{{AFn{AFl}}}}}}{{{d{c}}}Bl{}}00000000{{{d{AE`}}b}{{`{{AEj{}{{AEh{{Ij{DhHb}}}}}}G`}}}}{{{d{jAE`}}bDh}Aj}`{ce{}{}}00000000{{c{Bd{c}}Cb{d{{Gd{I`}}}}}{{Af{MjId}}}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}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKh}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKj}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKl}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{H`ADl{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}}}Mj{}}{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{AIh}}{d{jAl}}}An}0{{{d{AGf}}{d{jAl}}}An}0>{IdAIh}{ALbAIh}{cc{}}{NjAIh}{ALhAIh}{ALfAIh}3{ce{}{}}00{{{d{c}}}e{}{}}{{{d{c}}}Mj{}}00{c{{Af{e}}}{}{}}00000{{{d{c}}}Bl{}}00444````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{ALj}}}{{Bd{Mj}}}}{{{d{ALj}}}Mj}{c{{Af{ALj}}}Ah}{{{d{AE`}}{d{Bn}}Aj}{{Af{ALj{d{Bn}}}}}}{{{d{ALj}}{d{jAl}}}An}0?{{{d{Bn}}}{{Af{ALjc}}}{}}<``{{{d{ALj}}c}AfBh};::9=```````````````````````````````````{{{d{jHl}}ALlAEb{AEf{AEd}}}{{Bd{{AEf{AEd}}}}}}``{{{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`AMbABhG`}}{{{d{AEb}}}AEb}{{{d{Hl}}}Hl}{{{d{AHb}}}AHb}{{{d{AMd}}}AMd}{{{d{c}}{d{je}}}Ab{}{}}000000{{{d{ALl}}{d{ALl}}}Ad}{{{d{AEb}}{d{AEb}}}Ad}{{}AEb}{{}Hl}{{}AHb}{{}AMd}{{{d{{AM`{c}}}}}{{d{e}}}{AMbABhG`}{}}{{{d{AMf}}}{{Bd{Ll}}}}{{{d{{AM`{{AMh{ABj}}}}}}}{{Bd{Ll}}}}{{{d{{AM`{{AMj{ABj}}}}}}}{{Bd{Ll}}}}{{{d{{AM`{AMl}}}}}{{Bd{Ll}}}}{{{d{ALl}}{d{ALl}}}Aj}{{{d{ALn}}{d{ALn}}}Aj}{{{d{AEb}}{d{AEb}}}Aj}{{{d{AMd}}{d{AMd}}}Aj}{{{d{Hl}}ALl}{{Bd{{d{{AEf{AEd}}}}}}}}{{{d{ALl}}{d{jAl}}}An}{{{d{AHd}}{d{jAl}}}An}0{{{d{ALn}}{d{jAl}}}An}{{{d{{AM`{c}}}}{d{jAl}}}An{ABhAMbABhG`}}{{{d{AEb}}{d{jAl}}}An}{{{d{Hl}}{d{jAl}}}An}{{{d{AHb}}{d{jAl}}}An}{{{d{AMd}}{d{jAl}}}An}{cc{}}{FhALl}{ADdALl}2{AMnAHd}333333{{{d{ALl}}{d{jc}}}AbB`}{{{d{AMf}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMh{ABj}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMj{ABj}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{AMl}}}}{d{{Gd{I`}}}}}ALl}{{{d{Hl}}}{{Dn{{d{ALl}}}}}}{ce{}{}}0000000{{cALn}{{AM`{c}}}{AMbABhG`}}{{}Hl}{{{d{ALl}}{d{ALl}}}{{Bd{Ad}}}}{{{d{AEb}}{d{AEb}}}{{Bd{Ad}}}}{{{d{jHl}}ALlAEb}{{Bd{{AEf{AEd}}}}}}``{{{d{AN`}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{{AMj{ABj}}}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{{AMh{ABj}}}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{AMl}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{AEd}}{d{jAH`}}{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{c}}{d{jAH`}}{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}{}}`{{{d{Hl}}}{{Dn{{d{{AEf{AEd}}}}}}}}`{{{d{c}}}e{}{}}000000{{{d{c}}}Mj{}}``{c{{Af{e}}}{}{}}000000000000000{{{d{c}}}Bl{}}0000000{ce{}{}}0000000````````````````{{{d{j{AGd{c}}}}{d{e}}}{{d{j{AGd{c}}}}}{}{{ANd{ANb}}}}{{{d{j{AGd{c}}}}BbAIfKd}{{Af{{d{j{AGd{c}}}}ANf}}}{}}{{{d{j{AGd{c}}}}BbAIfKdBf}{{Af{{d{j{AGd{c}}}}ANf}}}{}}{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}HbADj}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Bb}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Bb}{{Af{{d{j{AGd{c}}}}ANh}}}{}}{{{d{j{AGd{c}}}}{d{{h{Bb}}}}}{{Af{{d{j{AGd{c}}}}ANh}}}{}}{{{d{j{AGd{c}}}}Aj}{{d{j{AGd{c}}}}}{}}{{{d{c}}}{{d{e}}}{}{}}0000{{{d{jc}}}{{d{je}}}{}{}}0000{{{d{j{AGd{c}}}}ANj}{{d{j{AGd{c}}}}}{}}{{{d{{AGd{c}}}}}{{AGd{c}}}G`}{{{d{ANl}}}ANl}{{{d{ANj}}}ANj}{{{d{c}}{d{je}}}Ab{}{}}00{{{d{ANl}}{d{ANl}}}Ad}{{{d{ANj}}{d{ANj}}}Ad}{{{AGd{c}}e}{{AGd{e}}}{}AKn}{{{d{j{AGd{c}}}}Dh}{{d{j{AGd{c}}}}}{}}{{}ANl}{{}ANj}{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Hb}{{d{j{AGd{c}}}}}{}}11{{{d{j{AGd{c}}}}Bf}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{ANl}}}Aj}{{{d{ANj}}{d{ANj}}}Aj}{{{d{j{AGd{c}}}}ADj}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}ADl}{{d{j{AGd{c}}}}}{}}{{{AGd{c}}}{{Af{AH`AIh}}}AKn}{{{d{{AGd{c}}}}{d{jAl}}}AnABh}{{{d{ANh}}{d{jAl}}}An}0{{{d{ANf}}{d{jAl}}}An}0{{{d{ANl}}{d{jAl}}}An}{{{d{ANj}}{d{jAl}}}An}{cc{}}0000{{{d{ANl}}{d{jc}}}AbB`}{{{d{ANj}}{d{jc}}}AbB`}?{ce{}{}}0000{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}ANn}{{d{j{AGd{c}}}}}{}}11{{{d{j{AGd{c}}}}ANl}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{ANl}}}{{Bd{Ad}}}}{{{d{ANj}}{d{ANj}}}{{Bd{Ad}}}}{{{d{j{AGd{c}}}}{Ln{Mj{Dn{Kd}}}}b}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}{Dn{{Ij{HbADj}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}AId}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{jAFd}}}Ab}{{{d{c}}}e{}{}}00{{{d{c}}}Mj{}}0{c{{Af{e}}}{}{}}000000000{{{d{c}}}Bl{}}0000{{{d{j{AGd{c}}}}{Dn{Bb}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}AO`}{{d{j{AGd{c}}}}}{}}?????``","D":"FHf","p":[[6,"KeychainKind",0,1726],[1,"reference"],[1,"u8"],[1,"slice"],[0,"mut"],[5,"LocalOutput",0,1726],[5,"WeightedUtxo",0,1726],[6,"Utxo",0,1726],[1,"unit"],[6,"Ordering",1727],[6,"Result",1728],[10,"Deserializer",1729],[1,"bool"],[5,"Formatter",1730],[8,"Result",1730],[10,"Hasher",1731],[5,"OutPoint",1732],[6,"Option",1733],[5,"Sequence",1732],[10,"Serializer",1734],[5,"TxOut",1732],[5,"TypeId",1735],[1,"str"],[6,"Descriptor",100,1736],[6,"Network",1737],[5,"Address",1738],[6,"Error",1739],[10,"MiniscriptKey",1739],[10,"ToPublicKey",1739],[6,"ScriptContextEnum",690],[5,"Miniscript",100,1740],[6,"Terminal",1741],[10,"ScriptContext",690,1742],[6,"Tree",1743],[6,"DescriptorPublicKey",690,1744],[1,"u32"],[5,"DefiniteDescriptorKey",1744],[6,"ConversionError",1744],[5,"Vec",1745],[6,"Placeholder",1746],[5,"Satisfaction",1746],[10,"AssetProvider",1747],[17,"Key"],[6,"ScriptContextError",1742],[17,"Sha256"],[5,"Hash",1748],[17,"Hash256"],[5,"Hash",1749],[17,"Ripemd160"],[5,"Hash",1750],[17,"Hash160"],[5,"Hash",1751],[10,"ParseableKey",1741],[6,"Legacy",100,1742],[6,"Segwitv0",100,1742],[10,"Clone",1752],[10,"Ord",1727],[5,"Secp256k1",1753],[5,"PublicKey",1754],[10,"Verification",1755],[6,"DescriptorType",1736],[5,"DescriptorId",1756],[10,"FromStr",1757],[1,"u64"],[5,"ScriptBuf",1758],[10,"PartialEq",1727],[5,"ExtParams",1759],[6,"AnalysisError",1759],[10,"ExtractPolicy",100],[5,"SignersContainer",1429],[6,"BuildSatisfaction",383],[6,"All",1760],[5,"Policy",383],[6,"Error",352],[5,"Script",1761],[5,"Range",1762],[1,"tuple"],[5,"Error",1730],[17,"Output"],[10,"FnMut",1763],[5,"Bare",1764],[5,"Wpkh",1765],[5,"Sh",1766],[5,"Wsh",1765],[5,"Tr",1767],[5,"Pkh",1764],[5,"Type",1768],[5,"ExtData",1769],[5,"Tree",1770],[1,"usize"],[10,"Satisfier",1746],[10,"Hash",1731],[10,"IntoWalletDescriptor",100],[8,"ExtendedDescriptor",100],[8,"KeyMap",690,1736],[5,"Iter",1771],[5,"PkIter",1771],[6,"Policy",1772],[6,"LiftError",1773],[6,"BareCtx",1742],[6,"TapTree",1767],[6,"DescriptorSecretKey",690,1744],[5,"BTreeMap",1774],[10,"Signing",1755],[10,"PartialOrd",1727],[5,"Plan",1747],[5,"TxIn",1732],[6,"SigType",1742],[5,"String",1775],[6,"TranslateErr",1739],[10,"Translator",1739],[1,"array"],[6,"Error",1776],[6,"Error",1777],[6,"KeyError",690],[6,"HexToBytesError",1778],[6,"PolicyError",383],[6,"Error",1754],[6,"PkOrF",383],[6,"SatisfiableItem",383],[6,"Satisfaction",383],[5,"Condition",383],[10,"DescriptorTemplate",554],[8,"DescriptorTemplateOut",554],[5,"P2Pkh",554],[10,"IntoDescriptorKey",690],[5,"P2Wpkh_P2Sh",554],[5,"P2Wpkh",554],[5,"P2TR",554],[6,"Tap",1742],[5,"Bip44",554],[10,"DerivableKey",690],[5,"Bip44Public",554],[5,"Bip49",554],[5,"Bip49Public",554],[5,"Bip84",554],[5,"Bip84Public",554],[5,"Bip86",554],[5,"Bip86Public",554],[8,"ValidNetworks",690],[5,"SortedMultiVec",690,1779],[5,"GeneratedKey",690],[5,"PrivateKeyGenerateOptions",690],[5,"SinglePub",690,1744],[5,"SinglePriv",690,1744],[6,"SinglePubKey",690,1744],[6,"DescriptorKey",690],[10,"Debug",1730],[5,"Xpriv",1776],[6,"ExtendedKey",690],[5,"Xpub",1776],[5,"DerivationPath",1776],[17,"Entropy"],[17,"Options"],[17,"Error"],[10,"GeneratableKey",690],[10,"AsMut",1780],[10,"Default",1781],[10,"GeneratableDefaultOptions",690],[5,"Assets",1747],[8,"KeySource",1776],[5,"Fingerprint",1776],[5,"DescriptorKeyParseError",1744],[10,"PsbtUtils",988],[5,"Amount",1782],[5,"FeeRate",1783],[5,"Balance",992,1784],[5,"Wallet",992],[5,"SignerOrdering",1429],[10,"TransactionSigner",1429],[5,"Arc",1785],[17,"Item"],[10,"Iterator",1786],[5,"Block",1787],[5,"CannotConnectError",1788],[5,"BlockId",1789],[6,"ApplyHeaderError",1788],[5,"Transaction",1732],[10,"IntoIterator",1790],[5,"Update",992],[10,"Into",1780],[5,"ConfirmationTimeHeightAnchor",1789],[5,"TxGraph",1791],[5,"Txid",1792],[8,"DefaultCoinSelectionAlgorithm",1225],[5,"TxBuilder",1609],[6,"BuildFeeBumpError",1324],[6,"CalculateFeeError",1791],[5,"CheckPointIter",1788],[8,"Result",1793],[5,"AddressInfo",992],[5,"Psbt",1794],[5,"SignOptions",1429],[6,"SignerError",1429],[6,"NewError",992],[6,"LoadError",992],[6,"NewOrLoadError",992],[6,"InsertTxError",992],[6,"ApplyBlockError",992],[5,"SyncResult",1795],[5,"FullScanResult",1795],[5,"PsbtSighashType",1796],[5,"Input",1796],[6,"CreateTxError",1324],[5,"CanonicalTx",1791],[5,"AlterCheckPointError",1788],[6,"ConfirmationTime",1789],[10,"IsDust",992,1797],[5,"CheckPoint",1788],[10,"DoubleEndedIterator",1798],[8,"ChangeSet",992],[10,"PersistBackend",1799],[10,"Send",1800],[10,"Sync",1800],[5,"LocalChain",1788],[5,"BlockHash",1792],[5,"KeychainTxOutIndex",1801],[5,"FullScanRequest",1795],[5,"SyncRequest",1795],[5,"LargestFirstCoinSelection",1225],[5,"OldestFirstCoinSelection",1225],[5,"BranchAndBoundCoinSelection",1225],[10,"CoinSelectionAlgorithm",1225],[5,"CoinSelectionResult",1225],[6,"Error",1225],[6,"Excess",1225],[6,"MiniscriptPsbtError",1324],[6,"Error",1802],[5,"FullyNodedExport",1406],[6,"SignerId",1429],[6,"SignerContext",1429],[5,"SignerWrapper",1429],[10,"Sized",1800],[6,"TapLeavesOptions",1429],[10,"SignerCommon",1429],[5,"DescriptorXKey",1744],[5,"DescriptorMultiXKey",1744],[5,"PrivateKey",1754],[6,"Error",1803],[10,"InputSigner",1429],[5,"PushBytes",1804],[10,"AsRef",1780],[6,"AddForeignUtxoError",1609],[6,"AddUtxoError",1609],[6,"ChangeSpendPolicy",1609],[6,"TxOrdering",1609],[6,"LockTime",1805],[1,"i32"],[15,"Foreign",97],[8,"DerivedDescriptor",100],[15,"PsbtTimelocks",530],[15,"Complete",533],[15,"Partial",533],[15,"PartialComplete",533],[15,"Sha256Preimage",544],[15,"Hash256Preimage",544],[15,"Ripemd160Preimage",544],[15,"Hash160Preimage",544],[15,"Thresh",544],[15,"Multisig",544],[15,"AbsoluteTimelock",544],[15,"RelativeTimelock",544],[10,"ExtScriptContext",690],[15,"UnexpectedConnectedToHash",1215],[15,"ConfirmationHeightCannotBeGreaterThanTip",1217],[15,"LoadedGenesisDoesNotMatch",1219],[15,"LoadedNetworkDoesNotMatch",1219],[15,"LoadedDescriptorDoesNotMatch",1219],[15,"InsufficientFunds",1317],[15,"Change",1319],[15,"NoChange",1319],[15,"InsufficientFunds",1398],[15,"RbfSequenceCsv",1398],[15,"LockTime",1398],[15,"FeeTooLow",1398],[15,"FeeRateTooLow",1398],[8,"WalletExport",1406],[15,"Tap",1608],[15,"InvalidTxid",1724]],"r":[[2,100],[4,1726],[6,1726],[7,1429],[8,1609],[9,1726],[10,992],[11,1726],[70,992],[71,100],[104,1736],[106,1744],[112,1742],[113,1740],[118,383],[119,1742],[120,1742],[153,350],[693,1744],[694,1744],[709,1736],[719,1742],[724,1744],[725,1744],[726,1744],[727,1779],[994,1784],[1002,1797]],"b":[[191,"impl-Descriptor%3CDescriptorPublicKey%3E"],[192,"impl-Descriptor%3CDefiniteDescriptorKey%3E"],[211,"impl-Display-for-Descriptor%3CPk%3E"],[212,"impl-Debug-for-Descriptor%3CPk%3E"],[215,"impl-Display-for-Miniscript%3CPk,+Ctx%3E"],[216,"impl-Debug-for-Miniscript%3CPk,+Ctx%3E"],[219,"impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[220,"impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[222,"impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[223,"impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[224,"impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[225,"impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[367,"impl-Display-for-Error"],[368,"impl-Debug-for-Error"],[369,"impl-From%3CError%3E-for-Error"],[370,"impl-From%3CError%3E-for-Error"],[371,"impl-From%3CKeyError%3E-for-Error"],[372,"impl-From%3CError%3E-for-Error"],[373,"impl-From%3CHexToBytesError%3E-for-Error"],[374,"impl-From%3CPolicyError%3E-for-Error"],[376,"impl-From%3CError%3E-for-Error"],[458,"impl-Debug-for-PolicyError"],[459,"impl-Display-for-PolicyError"],[808,"impl-Debug-for-KeyError"],[809,"impl-Display-for-KeyError"],[810,"impl-Display-for-SortedMultiVec%3CPk,+Ctx%3E"],[811,"impl-Debug-for-SortedMultiVec%3CPk,+Ctx%3E"],[812,"impl-Display-for-DescriptorPublicKey"],[813,"impl-Debug-for-DescriptorPublicKey"],[814,"impl-Display-for-DescriptorSecretKey"],[815,"impl-Debug-for-DescriptorSecretKey"],[820,"impl-From%3CXpriv%3E-for-ExtendedKey%3CCtx%3E"],[821,"impl-From%3CXpub%3E-for-ExtendedKey%3CCtx%3E"],[827,"impl-From%3CError%3E-for-KeyError"],[829,"impl-From%3CError%3E-for-KeyError"],[869,"impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[870,"impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1076,"impl-Debug-for-Balance"],[1077,"impl-Display-for-Balance"],[1080,"impl-Display-for-AddressInfo"],[1081,"impl-Debug-for-AddressInfo"],[1082,"impl-Display-for-NewError"],[1083,"impl-Debug-for-NewError"],[1084,"impl-Display-for-LoadError"],[1085,"impl-Debug-for-LoadError"],[1086,"impl-Debug-for-NewOrLoadError"],[1087,"impl-Display-for-NewOrLoadError"],[1088,"impl-Debug-for-InsertTxError"],[1089,"impl-Display-for-InsertTxError"],[1090,"impl-Debug-for-ApplyBlockError"],[1091,"impl-Display-for-ApplyBlockError"],[1094,"impl-From%3CSyncResult%3E-for-Update"],[1095,"impl-From%3CFullScanResult%3CKeychainKind%3E%3E-for-Update"],[1266,"impl-Display-for-Error"],[1267,"impl-Debug-for-Error"],[1365,"impl-Display-for-MiniscriptPsbtError"],[1366,"impl-Debug-for-MiniscriptPsbtError"],[1367,"impl-Debug-for-CreateTxError"],[1368,"impl-Display-for-CreateTxError"],[1369,"impl-Debug-for-BuildFeeBumpError"],[1370,"impl-Display-for-BuildFeeBumpError"],[1372,"impl-From%3CError%3E-for-CreateTxError"],[1373,"impl-From%3CError%3E-for-CreateTxError"],[1375,"impl-From%3CPolicyError%3E-for-CreateTxError"],[1376,"impl-From%3CError%3E-for-CreateTxError"],[1377,"impl-From%3CMiniscriptPsbtError%3E-for-CreateTxError"],[1416,"impl-Debug-for-FullyNodedExport"],[1417,"impl-Display-for-FullyNodedExport"],[1508,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1509,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1510,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1517,"impl-Display-for-SignerError"],[1518,"impl-Debug-for-SignerError"],[1526,"impl-From%3CHash%3E-for-SignerId"],[1527,"impl-From%3CFingerprint%3E-for-SignerId"],[1538,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1539,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1540,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1558,"impl-InputSigner-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1559,"impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1560,"impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E"],[1667,"impl-Display-for-AddUtxoError"],[1668,"impl-Debug-for-AddUtxoError"],[1669,"impl-Debug-for-AddForeignUtxoError"],[1670,"impl-Display-for-AddForeignUtxoError"]],"c":"OjAAAAEAAAAAAAUAEAAAAL8AAQENARwDcwOABQ==","e":"OzAAAAEAAHsDgAADAAAACAABAAsAAAAOABMAJgAJADUAAQA+AAAAQQAAAEUADwBXAAMAXQADAGoAAAB3AAAAigABAI0AAACPAAcAmgAAAJwAAQCfAAAAogABAKUAAQCpAAEArAABAK8AAQCyAAsAwwADAMgAAwDRAAEA1AAJAN8AAwDoAAAA9QADAAABAAAGAQEACgEBABEBAQAnAQMALAEBADoBAQA9AQEAQQEFAEwBBwBVAQMAWgEDAG4BCQB5AQAAewEEAKMBGQC/AQ4A0AEAANMBAADYAQEA5wEAAOoBBADwASIAOQIXAFICCwB2AjwA4QIXAAMDFQAaAwEAHQMAAB8DFwA8AwAAPgMAAEADAABIAwEAUwMDAGMDAABmAwQAbAMBAHwDAQCBAwAAigMAAI8DAwCYAwAAnAMIAKYDAwCtAy8A/gMAAAYEAAAIBBEAIgQDACkEAgAvBAIANQQPAEcEAQCCBAAAiQQIAJYEEQCqBAgAtgQIANcEEQDqBAIA7gQCAPMEBgAKBRsATgUNAF0FAQBgBQIAZwUPAIMFAQCHBQAAiQUBAIwFAACQBQUAvgUPAM8FFADlBQYA7QUIAPcFAQD6BQAAAQYAAAMGAgARBgEAFwYCABsGAAAfBgcAKQYfAGIGCQBtBgcAdwYBAH4GAQCDBgYAjwYBAJwGAQCiBhMAuAYEAA=="}],\ +["bdk_wallet",{"t":"PPEPGPFEEGEFNNDNNNNNNNNENNNNNNNNNOOCQNNNNNNNNNNQNNNNNNNNNNOOCDNONCONNNEENNNNNNNNNNNNNONNNNOHNNNNCOOOPPPIGEGIKIKRGFPPPPEKGPPPPIPPPPPPPPPPNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNMNNMNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNCNONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNONNNNNNNNNMNNNNCNNNNNNNNNNNMNNNCNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHPPGPPPPPPPPPPPNNNNNNNNNNNNNNNNNNPPPGPFIPPIPPPPPPPPPPPGFGPPPPPGGPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNONNONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFKIFFFFNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPKGGGRRKGPKKFKPPPRGIPPPPPRPFPKGPPPFFGFPIPPPHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNOOONHNMNNHMNNOONNNNNNMONNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMMMFGFPIPPPPGKGPPPPPPGGPPPPPPPFFNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNCNONNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNMNONONNNNNNNNONNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNONNNNNNNNNHOOOOOOOOOOPPFPKFIGGPFPFNNNNNNNNNNNNNNNNNNMNNNHNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOGPPGPPPPPPPPGPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOFIOONNNNNNNNNNNOONNNNNNPPPPPPPKPPPPPPPPPPPPPPPFKGGGFFFPGKPNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNOOMNNNMNONONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOGGPPPGPPPPPFGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOO","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","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Pkh","Pkh","Policy","ScriptContext","Segwitv0","Sh","Sh","Sh","Single","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_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","balance","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone_into","clone_into","coin_selection","commit","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","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","is_dust","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","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","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","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","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","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","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","Bip69Lexicographic","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","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","cmp","coin_selection","current_height","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_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"],"q":[[0,"bdk_wallet"],[97,"bdk_wallet::Utxo"],[100,"bdk_wallet::descriptor"],[350,"bdk_wallet::descriptor::checksum"],[352,"bdk_wallet::descriptor::error"],[384,"bdk_wallet::descriptor::policy"],[531,"bdk_wallet::descriptor::policy::BuildSatisfaction"],[534,"bdk_wallet::descriptor::policy::Satisfaction"],[545,"bdk_wallet::descriptor::policy::SatisfiableItem"],[555,"bdk_wallet::descriptor::template"],[691,"bdk_wallet::keys"],[989,"bdk_wallet::psbt"],[993,"bdk_wallet::wallet"],[1216,"bdk_wallet::wallet::ApplyBlockError"],[1218,"bdk_wallet::wallet::InsertTxError"],[1220,"bdk_wallet::wallet::NewOrLoadError"],[1226,"bdk_wallet::wallet::coin_selection"],[1318,"bdk_wallet::wallet::coin_selection::Error"],[1320,"bdk_wallet::wallet::coin_selection::Excess"],[1325,"bdk_wallet::wallet::error"],[1398,"bdk_wallet::wallet::error::CreateTxError"],[1406,"bdk_wallet::wallet::export"],[1429,"bdk_wallet::wallet::signer"],[1608,"bdk_wallet::wallet::signer::SignerContext"],[1609,"bdk_wallet::wallet::tx_builder"],[1724,"bdk_wallet::wallet::tx_builder::AddForeignUtxoError"],[1726,"bdk_wallet::types"],[1727,"core::cmp"],[1728,"core::result"],[1729,"serde::de"],[1730,"core::fmt"],[1731,"core::hash"],[1732,"bitcoin::blockdata::transaction"],[1733,"core::option"],[1734,"serde::ser"],[1735,"core::any"],[1736,"miniscript::descriptor"],[1737,"bitcoin::network"],[1738,"bitcoin::address"],[1739,"miniscript"],[1740,"miniscript::miniscript"],[1741,"miniscript::miniscript::decode"],[1742,"miniscript::miniscript::context"],[1743,"miniscript::iter::tree"],[1744,"miniscript::descriptor::key"],[1745,"alloc::vec"],[1746,"miniscript::miniscript::satisfy"],[1747,"miniscript::plan"],[1748,"bitcoin_hashes::sha256"],[1749,"miniscript::miniscript::hash256"],[1750,"bitcoin_hashes::ripemd160"],[1751,"bitcoin_hashes::hash160"],[1752,"core::clone"],[1753,"secp256k1"],[1754,"bitcoin::crypto::key"],[1755,"secp256k1::context"],[1756,"bdk_chain::descriptor_ext"],[1757,"core::str::traits"],[1758,"bitcoin::blockdata::script::owned"],[1759,"miniscript::miniscript::analyzable"],[1760,"secp256k1::context::alloc_only"],[1761,"bitcoin::blockdata::script::borrowed"],[1762,"core::ops::range"],[1763,"core::ops::function"],[1764,"miniscript::descriptor::segwitv0"],[1765,"miniscript::descriptor::sh"],[1766,"miniscript::descriptor::tr"],[1767,"miniscript::descriptor::bare"],[1768,"miniscript::miniscript::types"],[1769,"miniscript::miniscript::types::extra_props"],[1770,"miniscript::expression"],[1771,"miniscript::miniscript::iter"],[1772,"miniscript::policy::semantic"],[1773,"miniscript::policy"],[1774,"alloc::collections::btree::map"],[1775,"alloc::string"],[1776,"bitcoin::bip32"],[1777,"hex_conservative::parse"],[1778,"bitcoin::base58"],[1779,"miniscript::descriptor::sortedmulti"],[1780,"core::convert"],[1781,"core::default"],[1782,"bitcoin::amount"],[1783,"bitcoin::blockdata::fee_rate"],[1784,"bdk_chain::keychain"],[1785,"alloc::sync"],[1786,"core::iter::traits::iterator"],[1787,"bitcoin::blockdata::block"],[1788,"bdk_chain::local_chain"],[1789,"bdk_chain::chain_data"],[1790,"core::iter::traits::collect"],[1791,"bdk_chain::tx_graph"],[1792,"bitcoin::hash_types::newtypes"],[1793,"anyhow"],[1794,"bitcoin::psbt"],[1795,"bdk_chain::spk_client"],[1796,"bitcoin::psbt::map::input"],[1797,"bdk_wallet::wallet::utils"],[1798,"core::iter::traits::double_ended"],[1799,"bdk_persist::persist"],[1800,"core::marker"],[1801,"bdk_chain::keychain::txout_index"],[1802,"bitcoin::psbt::error"],[1803,"bitcoin::crypto::sighash"],[1804,"bitcoin::blockdata::script::push_bytes::primitive"],[1805,"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,249,249,249,94,250,24,0,0,0,0,0,0,0,0,33,0,0,35,94,250,24,0,0,0,94,250,24,35,0,94,250,24,94,250,24,94,250,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,120,115,115,0,121,0,0,120,119,0,120,120,115,115,115,120,121,71,115,121,121,0,0,0,71,71,119,120,120,0,0,120,120,120,119,119,120,121,73,122,115,71,119,120,121,73,122,115,71,119,120,121,73,122,71,119,120,121,73,122,71,73,122,122,119,120,121,73,122,115,119,120,121,73,122,115,115,71,119,120,121,121,73,73,122,115,71,73,119,122,120,73,119,120,121,73,122,115,71,120,121,122,73,122,73,73,119,120,121,73,122,122,119,120,121,73,122,71,115,119,120,121,73,122,115,71,119,120,121,73,122,115,71,119,120,121,73,122,115,71,119,120,121,73,122,115,71,251,251,251,252,253,254,253,254,253,254,253,254,253,254,255,256,257,258,259,260,260,259,261,262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,123,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,124,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,117,0,0,0,0,156,156,0,0,146,0,0,0,0,117,117,117,33,0,0,30,117,117,102,35,156,150,0,150,0,0,30,35,102,0,0,0,0,30,0,146,102,35,0,263,35,150,142,147,30,143,117,141,35,102,144,145,146,150,142,147,30,143,117,141,35,102,144,145,146,141,33,33,33,33,33,33,33,33,33,142,30,143,141,35,102,144,145,146,142,30,143,141,35,102,144,145,146,141,35,144,146,143,143,142,35,35,141,30,141,35,102,144,145,146,147,30,143,117,117,141,141,35,35,102,102,144,145,146,141,150,150,150,142,147,30,143,117,117,117,141,35,35,102,144,145,146,147,147,35,102,141,35,35,156,159,156,159,150,35,141,35,144,146,150,142,147,30,143,117,141,35,102,144,145,146,35,126,132,142,142,147,35,102,132,150,142,142,35,102,150,150,35,263,30,35,102,263,30,263,30,35,35,141,144,145,141,0,35,33,141,141,0,33,141,35,144,145,33,147,141,35,144,146,33,141,141,141,141,35,33,141,0,142,30,143,141,35,102,144,145,146,102,117,141,35,102,33,33,141,150,142,147,30,143,117,141,35,102,144,145,146,150,142,147,30,143,117,141,35,102,144,145,146,150,142,147,30,143,117,141,35,102,144,145,146,150,142,147,30,143,117,141,35,102,144,145,146,0,164,164,164,0,0,0,199,0,198,195,196,197,0,0,0,197,197,197,196,196,196,0,0,195,196,197,195,196,197,199,0,0,167,168,191,168,168,168,168,168,168,168,167,168,180,191,195,196,197,198,199,167,168,180,191,195,196,197,198,199,168,168,168,168,168,211,180,168,167,180,167,180,0,168,167,167,180,191,168,168,168,167,167,191,0,0,168,167,167,168,180,191,191,195,195,196,196,197,197,198,198,199,199,167,168,180,180,180,191,195,196,197,198,199,168,168,168,168,168,180,167,191,211,168,168,168,167,168,180,191,195,196,197,198,199,208,168,191,168,180,168,168,168,168,168,168,168,168,211,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,167,168,0,168,168,168,168,167,180,167,191,195,196,197,198,199,167,168,167,167,167,168,180,191,195,196,197,198,199,167,168,180,191,195,196,197,198,199,0,168,167,168,180,191,195,196,197,198,199,168,168,167,167,168,180,191,195,196,197,198,199,0,264,264,265,265,266,267,266,267,268,268,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,269,269,270,271,271,270,271,0,204,227,0,204,204,187,204,204,187,204,204,0,204,204,204,204,204,227,204,204,204,204,204,204,187,187,204,187,227,204,204,227,204,187,227,204,187,227,227,227,227,204,204,187,187,227,204,204,204,204,204,204,187,227,204,187,227,227,204,187,227,204,187,227,204,187,227,204,187,227,204,187,272,273,272,273,274,274,275,276,0,0,277,229,229,229,229,229,229,229,229,229,229,229,229,277,229,229,229,229,229,229,229,234,230,234,194,230,234,194,0,194,194,194,231,194,194,194,194,194,194,194,234,230,231,194,0,0,0,0,0,0,0,0,231,0,0,194,70,193,193,70,193,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,70,230,231,232,169,70,193,234,230,231,232,169,70,193,234,230,169,169,70,193,234,232,235,232,232,232,230,231,169,234,70,230,194,194,231,232,169,70,193,234,230,230,230,194,194,231,232,169,70,193,234,230,235,232,232,232,70,230,194,231,232,169,70,193,234,232,70,230,169,70,193,193,240,232,232,232,170,232,193,70,193,230,231,232,169,70,193,234,194,193,193,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,230,194,231,232,169,70,193,234,278,0,0,246,245,245,0,243,243,243,245,246,0,0,244,246,186,186,186,186,186,186,186,186,186,186,244,243,246,245,186,244,243,246,245,186,186,246,245,186,246,245,246,245,186,186,246,245,186,186,186,186,186,246,245,186,186,186,186,244,244,243,243,246,245,186,244,243,246,245,246,245,186,186,244,243,246,245,186,186,186,186,186,246,245,186,186,186,246,186,246,245,244,243,186,244,243,246,245,186,244,243,246,245,186,244,243,246,245,186,186,186,244,243,246,245,279,279],"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`{Df}}}}{d{{Gd{c}}}}Dh}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{Dj}}}}{d{{Gd{c}}}}}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{c}}}}}GjCh}{{{d{{C`{Df}}}}}Gl}{c{{Af{{C`{e}}}}}Ah{ChGn}}{c{{Af{{Cn{eg}}}}}Ah{ChGn}Db}{{{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}{{{Jd{c}}}{{C`{c}}}Ch}{{{Jf{c}}}{{C`{c}}}Ch}{cc{}}{{{Jh{c}}}{{C`{c}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}{{{Jl{c}}}{{C`{c}}}Ch}333{{{D`{ce}}}{{Af{{Cn{ce}}Cf}}}ChDb}{{{D`{ce}}JnK`}{{Cn{ce}}}ChDb}{{{d{Bn}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Bn}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{d{Bn}}{d{Hf}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}1{{{d{Kb}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Kb}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{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}10{{}{{d{Bn}}}}00{{{Cn{cLh}}}{{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}{{{Jb{c}}}{{C`{c}}}Ch}{{{Jf{c}}}{{C`{c}}}Ch}4{{{Cn{cFn}}}{{Af{{C`{c}}Cf}}}Ch}3{{c{Bd{{Lj{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}}{Ln{DfLl}}}}Cf}}}M`}1{{{d{If}}{d{Hf}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}{{Bd{Ad}}}{MbCh}}{{{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{Md{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{jMf}}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}{{}Mh}00{{{d{{Cn{ce}}}}{d{{Ln{Fhc}}}}}{{Cn{ce}}}ChDb}`{{{d{c}}}e{}{}}000{{{d{c}}}Mj{}}0{{{d{{C`{Df}}}}{d{{Ln{DfLl}}}}}Mj}{{{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{{Ml{g}}}}}ChCh{}{{Mn{ceg}}}}{{{d{{Cn{ce}}}}{d{jk}}}{{Af{{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}0000000`{{{d{c}}}Bl{}}000={ce{}{}}000{{{d{{Cn{ce}}}}}AjChDb}{{{d{Bn}}}{{Af{MjId}}}}{{{d{Bn}}}{{Af{{N`{f}}Id}}}}``````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Id}}{d{jAl}}}An}0{NbId}{NdId}{NfId}{NhId}{NjId}{cc{}}{CfId}{NlId}>{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0{{{d{c}}}Bl{}}{ce{}{}}```````````````````````````````````>>>>>>>======={{{d{Nn}}}Nn}{{{d{O`}}}O`}{{{d{Ob}}}Ob}{{{d{Ib}}}Ib}{{{d{Od}}}Od}{{{d{Hn}}}Hn}{{{d{c}}{d{je}}}Ab{}{}}00000``{{}Od}{{{d{Nn}}{d{Nn}}}Aj}{{{d{O`}}{d{O`}}}Aj}{{{d{Ob}}{d{Ob}}}Aj}{{{d{Ib}}{d{Ib}}}Aj}{{{d{Od}}{d{Od}}}Aj}{{{d{Nf}}{d{Nf}}}Aj}{{{d{Nn}}{d{jAl}}}An}{{{d{O`}}{d{jAl}}}An}{{{d{Ob}}{d{jAl}}}An}{{{d{Ib}}{d{jAl}}}An}{{{d{Od}}{d{jAl}}}An}{{{d{Nf}}{d{jAl}}}An}0{{{d{Hn}}{d{jAl}}}An}{cc{}}0{AjOb}11{O`Ib}222{{{d{Ib}}{d{{Ln{Mj{Dn{Kd}}}}}}}{{Af{OdNf}}}}{{{d{Nn}}{d{jc}}}AbB`}{{{d{Od}}{d{jc}}}AbB`}{{{d{O`}}}Mj}`{ce{}{}}000000{{{d{O`}}}Aj}{{{d{Ob}}}Aj}{{{d{Od}}}Aj}`{{{d{Od}}{d{Od}}}{{Bd{Ad}}}}{{{d{Ib}}}Aj}`{{{d{Nn}}c}AfBh}{{{d{O`}}c}AfBh}{{{d{Ob}}c}AfBh}{{{d{Ib}}c}AfBh}{{{d{Od}}c}AfBh}`{{{d{c}}}e{}{}}00000{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0000000000000{{{d{c}}}Bl{}}000000>>>>>>>``````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{OfCb}{{Af{OhId}}}}{{{Oj{c}}Cb}{{Af{OhId}}}{{Ol{Fl}}}}{{{On{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@`{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@b{c}}Cb}{{Af{OhId}}}{{Ol{A@d}}}}{{{A@f{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@j{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@l{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{A@n{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AA`{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAb{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAd{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{{{AAf{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{cc{}}00000000000{ce{}{}}00000000000{{Oh{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{c{d{{Gd{I`}}}}Cb}{{Af{{Ij{{C`{Df}}{Ln{DfLl}}}}Id}}}{}}00000000000{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000444444444444```````````````````````````````````````````{{}AAh}{{}Cl}{{DfDh}{{Af{DjDl}}}}{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{{d{{AAj{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{{AAl{ce}}}}}{{AAl{ce}}}G`Db}{{{d{Cl}}}Cl}{{{d{AAn}}}AAn}{{{d{{AAj{ce}}}}}{{AAj{ce}}}{G`Ch}{G`Db}}{{{d{Df}}}Df}{{{d{Ll}}}Ll}{{{d{AB`}}}AB`}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{c}}{d{je}}}Ab{}{}}00000000{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Ad{GbCh}{GbDb}}{{{d{Df}}{d{Df}}}Ad}{{{d{AB`}}{d{AB`}}}Ad}{{{d{ABd}}{d{ABd}}}Ad}`{{}AAn}{{{d{{AAl{ce}}}}}{{d{g}}}{}Db{}}{{DfDh}{{Af{DjDl}}}}{c{{Af{Df}}}Ah}{{{d{{AAj{ce}}}}}Hb{CjCh}Db}{{{d{Cl}}{d{Cl}}}Aj}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Aj{HdCh}{HdDb}}{{{d{Df}}{d{Df}}}Aj}{{{d{Ll}}{d{Ll}}}Aj}{{{d{AB`}}{d{AB`}}}Aj}{{{d{ABb}}{d{ABb}}}Aj}{{{d{ABd}}{d{ABd}}}Aj}{{{d{{ABf{c}}}}{d{jAl}}}An{ABhDb}}{{{d{Cl}}{d{jAl}}}An}{{{d{AAn}}{d{jAl}}}An}{{{d{Nj}}{d{jAl}}}An}0{{{d{{AAj{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{Df}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{Ll}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AB`}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABb}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABd}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{AAj{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{ABj{{ABl{c}}}Db}{cc{}}{ABn{{ABl{c}}}Db}11111{NbNj}{CfNj}3{DjDf}44444{{DfAAh}{{ABf{c}}}Db}{{LlAAh}{{ABf{c}}}Db}{{{d{Bn}}}{{Af{Df}}}}{{{d{Bn}}}{{Af{Ll}}}}{{{d{Kb}}}{{Af{{AAj{ce}}Cf}}}{GnCh}Db}{{{d{Df}}}{{Bd{AC`}}}}{{{d{Df}}}{{Dn{AC`}}}}{c{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{{}{{Af{{AAl{ACnc}}e}}}Db{}}{{ce}{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{c{{Af{{AAl{ACne}}g}}}{}Db{}}{{{d{{ABl{c}}}}}AjDb}{{{d{Df}}}Aj}{{{d{{AAj{ce}}}}{d{jg}}}Ab{KhCh}{KhDb}B`}{{{d{Df}}{d{jc}}}AbB`}{{{d{AB`}}{d{jc}}}AbB`}{{{d{ABd}}{d{jc}}}AbB`}{ce{}{}}00000000000{DfAD`}{Ol{{Af{{ABf{c}}Nj}}}Db}{{A@h{Bd{ADb}}AC`}{{Af{{ABf{c}}Nj}}}Db}{{{AAl{ec}}{Bd{ADb}}AC`}{{Af{{ABf{c}}Nj}}}Db{{A@h{c}}}}{{{AAl{ec}}}{{Af{{ABf{c}}Nj}}}Db{{Ol{c}}}}{{{ABf{c}}}{{Af{{ABf{c}}Nj}}}Db}{Df{{Af{{ABf{c}}Nj}}}Db}{Ll{{Af{{ABf{c}}Nj}}}Db}{A@h{{Af{{ABl{c}}Nj}}}Db}{{{ABl{c}}}{{Af{{ABl{c}}Nj}}}Db}{{{AAl{ec}}}{{Af{{ABl{c}}Nj}}}Db{{A@h{c}}}}{{{AAl{ce}}}c{}Db}{Df{{Dn{Df}}}}{Ll{{Dn{Ll}}}}{{{ABl{c}}Cb}{{Bd{ABj}}}Db}{{{ABl{c}}Cb{d{{Gd{e}}}}}ABnDbM`}{{{d{Df}}}Aj}{{}Aj}{{{d{Cl}}}Aj}2{{{d{Ll}}}Aj}212133```{{{d{{AAj{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{}AAh}{{{d{Df}}}ADd}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{AAj{ce}}}}}KdChDb}0{{{d{AAh}}{d{AAh}}}AAh}{{}{{d{Bn}}}}{{Kd{Dn{c}}}{{Af{{AAj{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}}{{{ABf{c}}AAh}{{ABf{c}}}Db}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}{{Bd{Ad}}}{MbCh}{MbDb}}{{{d{Df}}{d{Df}}}{{Bd{Ad}}}}{{{d{AB`}}{d{AB`}}}{{Bd{Ad}}}}{{{d{ABd}}{d{ABd}}}{{Bd{Ad}}}}{{{d{c}}}KdCh}`{{{d{{AAj{ce}}}}}{{Af{AbCf}}}ChDb}{{{d{{AAj{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}={{{d{Df}}c}AfBh}{{}Mh}{{{d{{AAj{ce}}}}}{{D`{ce}}}{CjCh}Db}{{}AAh}{{{d{c}}}e{}{}}00000000{{{d{Ll}}{d{{Gd{c}}}}}{{Af{DfADf}}}M`}{{{d{c}}}Mj{}}000??{{{d{{AAj{ce}}}}{d{jk}}}{{Af{{AAj{ge}}{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000{ce{}{}}00000000000`{{{d{ADh}}}{{Bd{ADj}}}}{{{d{ADh}}}{{Bd{ADl}}}}{{{d{ADh}}Kd}{{Bd{Bj}}}}`````````````````````````````{{ADnADn}ADn}{{{d{jAE`}}bAEb{AEf{AEd}}}Ab}`{{{d{AE`}}}{{Ln{b{`{{AEj{}{{AEh{{Ij{DhHb}}}}}}G`}}}}}}{{{d{jAE`}}{d{AEl}}Dh}{{Af{AbAEn}}}}{{{d{jAE`}}{d{AEl}}DhAF`}{{Af{AbAFb}}}}{{{d{jAE`}}c}Ab{{AFf{}{{AEh{{Ij{{d{AFd}}H`}}}}}}}}{{{d{jAE`}}c}{{Af{AbAEn}}}{{AFj{AFh}}}}{{{d{AE`}}}{{d{{AFn{AFl}}}}}}{{{d{AE`}}}ADn}{{{d{c}}}{{d{e}}}{}{}}00000000{{{d{jc}}}{{d{je}}}{}{}}00000000{{{d{jAE`}}AG`}{{Af{{AGd{AGb}}AGf}}}}{{{d{jAE`}}}{{AGd{AGb}}}}{{{d{AE`}}{d{AFd}}}{{Af{ADjAGh}}}}{{{d{AE`}}{d{AFd}}}{{Af{ADlAGh}}}}{{{d{jAE`}}{d{AFd}}}Ab}``{{{d{AE`}}}AGj}{{{d{ADn}}}ADn}{{{d{AFh}}}AFh}{{{d{c}}{d{je}}}Ab{}{}}0`{{{d{jAE`}}}{{AGl{Aj}}}}`{{}ADn}{{}AFh}{{{d{AGn}}}{{d{c}}}{}}{{{d{AE`}}b}{{Bd{Dh}}}}{{{d{AE`}}{d{If}}}{{Bd{{Ij{bDh}}}}}}{{{d{AE`}}b}Mj}{c{{Af{ADn}}}Ah}{{{d{ADn}}{d{ADn}}}Aj}{{{d{AGn}}{d{AGn}}}Aj}``{{{d{AE`}}{d{jAH`}}AHb}{{Af{AjAHd}}}}{{{d{ADn}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AE`}}{d{jAl}}}An}{{{d{AFh}}{d{jAl}}}An}{{{d{AGn}}{d{jAl}}}An}0{{{d{AHf}}{d{jAl}}}An}0{{{d{AHh}}{d{jAl}}}An}0{{{d{AHj}}{d{jAl}}}An}0{{{d{AHl}}{d{jAl}}}An}0{{{d{AHn}}{d{jAl}}}An}0{cc{}}00{AI`AFh}{{{AIb{b}}}AFh}222222{{{d{AE`}}b}{{d{Kl}}}}{{{d{AE`}}l{Bd{AId}}Aj}{{Af{AIfAIh}}}}{{{d{AE`}}b}{{AEf{Hl}}}}{{{d{AE`}}AG`}{{Bd{{AIj{{AEf{AFd}}AFl}}}}}}{{{d{AE`}}Bb}{{Bd{l}}}}````{{{d{jAE`}}AF`}{{Af{AjAIl}}}}{{{d{jAE`}}AFdAIn}{{Af{AjAHl}}}}{{{d{jAE`}}BbBj}Ab}{ce{}{}}00000000{{{d{AJ`}}{d{If}}}Aj}{{{d{AE`}}{d{If}}}Aj}`{{{d{AE`}}}{{`{{AEj{}{{AEh{{Ij{{d{b}}{d{Kl}}}}}}}}}}}}`{{{d{AE`}}}AJb}{{{d{AE`}}}{{`{{AEj{}{{AEh{l}}}}}}}}0{{{d{AE`}}b}{{`{{AJd{}{{AEh{AGn}}}}}}}}{c{{Af{AE`AHh}}}{{AJh{AJf}}AJjAJl}}{{{d{AE`}}}{{d{AJn}}}}{{{d{jAE`}}bDh}Aj}{{{d{AE`}}}Cb}`{{cceCb}{{Af{AE`AHf}}}Kj{{AJh{AJf}}AJjAJl}}{{ccCb}{{Af{AE`Id}}}Kj}{{ccCbAK`}{{Af{AE`Id}}}Kj}{{cceCb}{{Af{AE`AHj}}}Kj{{AJh{AJf}}AJjAJl}}{{cceCbAK`}{{Af{AE`AHj}}}Kj{{AJh{AJf}}AJjAJl}}{{cceCbAK`}{{Af{AE`AHf}}}Kj{{AJh{AJf}}AJjAJl}}{{{d{AE`}}b}Dh}{{{d{jAE`}}b}{{AGl{AGn}}}}{{{d{AE`}}bDh}AGn}{{{d{AE`}}b}{{Af{{Bd{Ib}}Id}}}}{{{d{AE`}}b}{{d{Kl}}}}{{{d{jAE`}}bDh}{{AGl{{`{{AEj{}{{AEh{AGn}}}}}}}}}}4{{{d{AE`}}}{{d{{Gd{I`}}}}}}{{{d{AE`}}{d{AFd}}}{{Ij{ADjADj}}}}{{{d{ADn}}c}AfBh}{{{d{AE`}}{d{jAH`}}AHb}{{Af{AjAHd}}}}`{{{d{AE`}}}{{d{{AKb{b}}}}}}{{{d{AE`}}}{{d{AJf}}}}{{{d{AE`}}}{{AKd{b}}}}{{{d{AE`}}}AKf}{{{d{c}}}e{}{}}0{{{d{c}}}Mj{}}000000{{{d{ADn}}}ADj}{{{d{AE`}}}{{`{{AEj{}{{AEh{{AIj{{AEf{AFd}}AFl}}}}}}}}}}`1{c{{Af{e}}}{}{}}00000000000000000`{{{d{AE`}}}{{d{{AFn{AFl}}}}}}{{{d{c}}}Bl{}}00000000{{{d{AE`}}b}{{`{{AEj{}{{AEh{{Ij{DhHb}}}}}}G`}}}}{{{d{jAE`}}bDh}Aj}`{ce{}{}}00000000{{c{Bd{c}}Cb{d{{Gd{I`}}}}}{{Af{MjId}}}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}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKh}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKj}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{{d{AKl}}{Dn{n}}{Dn{n}}ADlH`{d{If}}}{{Af{AL`ALb}}}}{{H`ADl{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}}}Mj{}}{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{AIh}}{d{jAl}}}An}0{{{d{AGf}}{d{jAl}}}An}0>{NfAIh}{ALfAIh}{IdAIh}{ALbAIh}{ALhAIh}{cc{}}0{ce{}{}}00{{{d{c}}}e{}{}}{{{d{c}}}Mj{}}00{c{{Af{e}}}{}{}}00000{{{d{c}}}Bl{}}00444````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{ALj}}}{{Bd{Mj}}}}{{{d{ALj}}}Mj}{c{{Af{ALj}}}Ah}{{{d{AE`}}{d{Bn}}Aj}{{Af{ALj{d{Bn}}}}}}{{{d{ALj}}{d{jAl}}}An}0<{{{d{Bn}}}{{Af{ALjc}}}{}}<``{{{d{ALj}}c}AfBh};::9=```````````````````````````````````{{{d{jHl}}ALlAEb{AEf{AEd}}}{{Bd{{AEf{AEd}}}}}}``{{{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`AMbABhG`}}{{{d{AEb}}}AEb}{{{d{Hl}}}Hl}{{{d{AHb}}}AHb}{{{d{AMd}}}AMd}{{{d{c}}{d{je}}}Ab{}{}}000000{{{d{ALl}}{d{ALl}}}Ad}{{{d{AEb}}{d{AEb}}}Ad}{{}AEb}{{}Hl}{{}AHb}{{}AMd}{{{d{{AM`{c}}}}}{{d{e}}}{AMbABhG`}{}}{{{d{AMf}}}{{Bd{Ll}}}}{{{d{{AM`{AMh}}}}}{{Bd{Ll}}}}{{{d{{AM`{{AMj{ABj}}}}}}}{{Bd{Ll}}}}{{{d{{AM`{{AMl{ABj}}}}}}}{{Bd{Ll}}}}{{{d{ALl}}{d{ALl}}}Aj}{{{d{ALn}}{d{ALn}}}Aj}{{{d{AEb}}{d{AEb}}}Aj}{{{d{AMd}}{d{AMd}}}Aj}{{{d{Hl}}ALl}{{Bd{{d{{AEf{AEd}}}}}}}}{{{d{ALl}}{d{jAl}}}An}{{{d{AHd}}{d{jAl}}}An}0{{{d{ALn}}{d{jAl}}}An}{{{d{{AM`{c}}}}{d{jAl}}}An{ABhAMbABhG`}}{{{d{AEb}}{d{jAl}}}An}{{{d{Hl}}{d{jAl}}}An}{{{d{AHb}}{d{jAl}}}An}{{{d{AMd}}{d{jAl}}}An}{FhALl}{ADdALl}{cc{}}0{AMnAHd}111111{{{d{ALl}}{d{jc}}}AbB`}{{{d{AMf}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{AMh}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMl{ABj}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{{AM`{{AMj{ABj}}}}}}{d{{Gd{I`}}}}}ALl}{{{d{Hl}}}{{Dn{{d{ALl}}}}}}{ce{}{}}0000000{{cALn}{{AM`{c}}}{AMbABhG`}}{{}Hl}{{{d{ALl}}{d{ALl}}}{{Bd{Ad}}}}{{{d{AEb}}{d{AEb}}}{{Bd{Ad}}}}{{{d{jHl}}ALlAEb}{{Bd{{AEf{AEd}}}}}}``{{{d{AN`}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{AMh}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{{AMj{ABj}}}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{{AM`{{AMl{ABj}}}}}}{d{jAH`}}Kd{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{AEd}}{d{jAH`}}{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}}{{{d{c}}{d{jAH`}}{d{AHb}}{d{{Gd{I`}}}}}{{Af{AbAHd}}}{}}`{{{d{Hl}}}{{Dn{{d{{AEf{AEd}}}}}}}}`{{{d{c}}}e{}{}}000000{{{d{c}}}Mj{}}``{c{{Af{e}}}{}{}}000000000000000{{{d{c}}}Bl{}}0000000{ce{}{}}0000000````````````````{{{d{j{AGd{c}}}}{d{e}}}{{d{j{AGd{c}}}}}{}{{ANd{ANb}}}}{{{d{j{AGd{c}}}}BbAIfKd}{{Af{{d{j{AGd{c}}}}ANf}}}{}}{{{d{j{AGd{c}}}}BbAIfKdBf}{{Af{{d{j{AGd{c}}}}ANf}}}{}}{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}HbADj}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Bb}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Bb}{{Af{{d{j{AGd{c}}}}ANh}}}{}}{{{d{j{AGd{c}}}}{d{{h{Bb}}}}}{{Af{{d{j{AGd{c}}}}ANh}}}{}}{{{d{j{AGd{c}}}}Aj}{{d{j{AGd{c}}}}}{}}{{{d{c}}}{{d{e}}}{}{}}0000{{{d{jc}}}{{d{je}}}{}{}}0000{{{d{j{AGd{c}}}}ANj}{{d{j{AGd{c}}}}}{}}{{{d{{AGd{c}}}}}{{AGd{c}}}G`}{{{d{ANl}}}ANl}{{{d{ANj}}}ANj}{{{d{c}}{d{je}}}Ab{}{}}00{{{d{ANl}}{d{ANl}}}Ad}{{{d{ANj}}{d{ANj}}}Ad}{{{AGd{c}}e}{{AGd{e}}}{}AKn}{{{d{j{AGd{c}}}}Dh}{{d{j{AGd{c}}}}}{}}{{}ANl}{{}ANj}{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}Hb}{{d{j{AGd{c}}}}}{}}11{{{d{j{AGd{c}}}}Bf}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{ANl}}}Aj}{{{d{ANj}}{d{ANj}}}Aj}{{{d{j{AGd{c}}}}ADj}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}ADl}{{d{j{AGd{c}}}}}{}}{{{AGd{c}}}{{Af{AH`AIh}}}AKn}{{{d{{AGd{c}}}}{d{jAl}}}AnABh}{{{d{ANh}}{d{jAl}}}An}0{{{d{ANf}}{d{jAl}}}An}0{{{d{ANl}}{d{jAl}}}An}{{{d{ANj}}{d{jAl}}}An}{cc{}}0000{{{d{ANl}}{d{jc}}}AbB`}{{{d{ANj}}{d{jc}}}AbB`}?{ce{}{}}0000{{{d{j{AGd{c}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}ANn}{{d{j{AGd{c}}}}}{}}11{{{d{j{AGd{c}}}}ANl}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{ANl}}}{{Bd{Ad}}}}{{{d{ANj}}{d{ANj}}}{{Bd{Ad}}}}{{{d{j{AGd{c}}}}{Ln{Mj{Dn{Kd}}}}b}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}{Dn{{Ij{HbADj}}}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}AId}{{d{j{AGd{c}}}}}{}}{{{d{ANl}}{d{jAFd}}}Ab}{{{d{c}}}e{}{}}00{{{d{c}}}Mj{}}0{c{{Af{e}}}{}{}}000000000{{{d{c}}}Bl{}}0000{{{d{j{AGd{c}}}}{Dn{Bb}}}{{d{j{AGd{c}}}}}{}}{{{d{j{AGd{c}}}}AO`}{{d{j{AGd{c}}}}}{}}?????``","D":"FHf","p":[[6,"KeychainKind",0,1726],[1,"reference"],[1,"u8"],[1,"slice"],[0,"mut"],[5,"LocalOutput",0,1726],[5,"WeightedUtxo",0,1726],[6,"Utxo",0,1726],[1,"unit"],[6,"Ordering",1727],[6,"Result",1728],[10,"Deserializer",1729],[1,"bool"],[5,"Formatter",1730],[8,"Result",1730],[10,"Hasher",1731],[5,"OutPoint",1732],[6,"Option",1733],[5,"Sequence",1732],[10,"Serializer",1734],[5,"TxOut",1732],[5,"TypeId",1735],[1,"str"],[6,"Descriptor",100,1736],[6,"Network",1737],[5,"Address",1738],[6,"Error",1739],[10,"MiniscriptKey",1739],[10,"ToPublicKey",1739],[6,"ScriptContextEnum",691],[5,"Miniscript",100,1740],[6,"Terminal",1741],[10,"ScriptContext",691,1742],[6,"Tree",1743],[6,"DescriptorPublicKey",691,1744],[1,"u32"],[5,"DefiniteDescriptorKey",1744],[6,"ConversionError",1744],[5,"Vec",1745],[6,"Placeholder",1746],[5,"Satisfaction",1746],[10,"AssetProvider",1747],[17,"Key"],[6,"ScriptContextError",1742],[17,"Sha256"],[5,"Hash",1748],[17,"Hash256"],[5,"Hash",1749],[17,"Ripemd160"],[5,"Hash",1750],[17,"Hash160"],[5,"Hash",1751],[10,"ParseableKey",1741],[6,"Legacy",100,1742],[6,"Segwitv0",100,1742],[10,"Clone",1752],[10,"Ord",1727],[5,"Secp256k1",1753],[5,"PublicKey",1754],[10,"Verification",1755],[6,"DescriptorType",1736],[5,"DescriptorId",1756],[10,"FromStr",1757],[1,"u64"],[5,"ScriptBuf",1758],[10,"PartialEq",1727],[5,"ExtParams",1759],[6,"AnalysisError",1759],[10,"ExtractPolicy",100],[5,"SignersContainer",1429],[6,"BuildSatisfaction",384],[6,"All",1760],[5,"Policy",384],[6,"Error",352],[5,"Script",1761],[5,"Range",1762],[1,"tuple"],[5,"Error",1730],[17,"Output"],[10,"FnMut",1763],[5,"Wpkh",1764],[5,"Sh",1765],[5,"Wsh",1764],[5,"Tr",1766],[5,"Pkh",1767],[5,"Bare",1767],[5,"Type",1768],[5,"ExtData",1769],[5,"Tree",1770],[1,"usize"],[10,"Satisfier",1746],[10,"Hash",1731],[10,"IntoWalletDescriptor",100],[8,"ExtendedDescriptor",100],[8,"KeyMap",691,1736],[5,"Iter",1771],[5,"PkIter",1771],[6,"Policy",1772],[6,"LiftError",1773],[6,"BareCtx",1742],[6,"TapTree",1766],[6,"DescriptorSecretKey",691,1744],[5,"BTreeMap",1774],[10,"Signing",1755],[10,"PartialOrd",1727],[5,"Plan",1747],[5,"TxIn",1732],[6,"SigType",1742],[5,"String",1775],[6,"TranslateErr",1739],[10,"Translator",1739],[1,"array"],[6,"Error",1776],[6,"Error",1754],[6,"PolicyError",384],[6,"HexToBytesError",1777],[6,"KeyError",691],[6,"Error",1778],[6,"PkOrF",384],[6,"SatisfiableItem",384],[6,"Satisfaction",384],[5,"Condition",384],[10,"DescriptorTemplate",555],[8,"DescriptorTemplateOut",555],[5,"P2Pkh",555],[10,"IntoDescriptorKey",691],[5,"P2Wpkh_P2Sh",555],[5,"P2Wpkh",555],[5,"P2TR",555],[6,"Tap",1742],[5,"Bip44",555],[10,"DerivableKey",691],[5,"Bip44Public",555],[5,"Bip49",555],[5,"Bip49Public",555],[5,"Bip84",555],[5,"Bip84Public",555],[5,"Bip86",555],[5,"Bip86Public",555],[8,"ValidNetworks",691],[5,"SortedMultiVec",691,1779],[5,"GeneratedKey",691],[5,"PrivateKeyGenerateOptions",691],[5,"SinglePub",691,1744],[5,"SinglePriv",691,1744],[6,"SinglePubKey",691,1744],[6,"DescriptorKey",691],[10,"Debug",1730],[5,"Xpriv",1776],[6,"ExtendedKey",691],[5,"Xpub",1776],[5,"DerivationPath",1776],[17,"Entropy"],[17,"Options"],[17,"Error"],[10,"GeneratableKey",691],[10,"AsMut",1780],[10,"Default",1781],[10,"GeneratableDefaultOptions",691],[5,"Assets",1747],[8,"KeySource",1776],[5,"Fingerprint",1776],[5,"DescriptorKeyParseError",1744],[10,"PsbtUtils",989],[5,"Amount",1782],[5,"FeeRate",1783],[5,"Balance",993,1784],[5,"Wallet",993],[5,"SignerOrdering",1429],[10,"TransactionSigner",1429],[5,"Arc",1785],[17,"Item"],[10,"Iterator",1786],[5,"Block",1787],[5,"CannotConnectError",1788],[5,"BlockId",1789],[6,"ApplyHeaderError",1788],[5,"Transaction",1732],[10,"IntoIterator",1790],[5,"Update",993],[10,"Into",1780],[5,"ConfirmationTimeHeightAnchor",1789],[5,"TxGraph",1791],[5,"Txid",1792],[8,"DefaultCoinSelectionAlgorithm",1226],[5,"TxBuilder",1609],[6,"BuildFeeBumpError",1325],[6,"CalculateFeeError",1791],[5,"CheckPointIter",1788],[8,"Result",1793],[5,"AddressInfo",993],[5,"Psbt",1794],[5,"SignOptions",1429],[6,"SignerError",1429],[6,"NewError",993],[6,"LoadError",993],[6,"NewOrLoadError",993],[6,"InsertTxError",993],[6,"ApplyBlockError",993],[5,"SyncResult",1795],[5,"FullScanResult",1795],[5,"PsbtSighashType",1796],[5,"Input",1796],[6,"CreateTxError",1325],[5,"CanonicalTx",1791],[5,"AlterCheckPointError",1788],[6,"ConfirmationTime",1789],[10,"IsDust",993,1797],[5,"CheckPoint",1788],[10,"DoubleEndedIterator",1798],[8,"ChangeSet",993],[10,"PersistBackend",1799],[10,"Send",1800],[10,"Sync",1800],[5,"LocalChain",1788],[5,"BlockHash",1792],[5,"KeychainTxOutIndex",1801],[5,"FullScanRequest",1795],[5,"SyncRequest",1795],[5,"LargestFirstCoinSelection",1226],[5,"OldestFirstCoinSelection",1226],[5,"BranchAndBoundCoinSelection",1226],[10,"CoinSelectionAlgorithm",1226],[5,"CoinSelectionResult",1226],[6,"Error",1226],[6,"Excess",1226],[6,"MiniscriptPsbtError",1325],[6,"Error",1802],[5,"FullyNodedExport",1406],[6,"SignerId",1429],[6,"SignerContext",1429],[5,"SignerWrapper",1429],[10,"Sized",1800],[6,"TapLeavesOptions",1429],[10,"SignerCommon",1429],[5,"PrivateKey",1754],[5,"DescriptorMultiXKey",1744],[5,"DescriptorXKey",1744],[6,"Error",1803],[10,"InputSigner",1429],[5,"PushBytes",1804],[10,"AsRef",1780],[6,"AddForeignUtxoError",1609],[6,"AddUtxoError",1609],[6,"ChangeSpendPolicy",1609],[6,"TxOrdering",1609],[6,"LockTime",1805],[1,"i32"],[15,"Foreign",97],[8,"DerivedDescriptor",100],[15,"PsbtTimelocks",531],[15,"Complete",534],[15,"Partial",534],[15,"PartialComplete",534],[15,"Sha256Preimage",545],[15,"Hash256Preimage",545],[15,"Ripemd160Preimage",545],[15,"Hash160Preimage",545],[15,"Thresh",545],[15,"Multisig",545],[15,"AbsoluteTimelock",545],[15,"RelativeTimelock",545],[10,"ExtScriptContext",691],[15,"UnexpectedConnectedToHash",1216],[15,"ConfirmationHeightCannotBeGreaterThanTip",1218],[15,"LoadedGenesisDoesNotMatch",1220],[15,"LoadedNetworkDoesNotMatch",1220],[15,"LoadedDescriptorDoesNotMatch",1220],[15,"InsufficientFunds",1318],[15,"Change",1320],[15,"NoChange",1320],[15,"InsufficientFunds",1398],[15,"RbfSequenceCsv",1398],[15,"LockTime",1398],[15,"FeeTooLow",1398],[15,"FeeRateTooLow",1398],[8,"WalletExport",1406],[15,"Tap",1608],[15,"InvalidTxid",1724]],"r":[[2,100],[4,1726],[6,1726],[7,1429],[8,1609],[9,1726],[10,993],[11,1726],[70,993],[71,100],[104,1736],[106,1744],[112,1742],[113,1740],[118,384],[119,1742],[120,1742],[153,350],[694,1744],[695,1744],[710,1736],[720,1742],[725,1744],[726,1744],[727,1744],[728,1779],[995,1784],[1003,1797]],"b":[[191,"impl-Descriptor%3CDescriptorPublicKey%3E"],[192,"impl-Descriptor%3CDefiniteDescriptorKey%3E"],[211,"impl-Debug-for-Descriptor%3CPk%3E"],[212,"impl-Display-for-Descriptor%3CPk%3E"],[215,"impl-Debug-for-Miniscript%3CPk,+Ctx%3E"],[216,"impl-Display-for-Miniscript%3CPk,+Ctx%3E"],[219,"impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[220,"impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[221,"impl-From%3CWsh%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%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[368,"impl-Display-for-Error"],[369,"impl-Debug-for-Error"],[370,"impl-From%3CError%3E-for-Error"],[371,"impl-From%3CError%3E-for-Error"],[372,"impl-From%3CPolicyError%3E-for-Error"],[373,"impl-From%3CHexToBytesError%3E-for-Error"],[374,"impl-From%3CKeyError%3E-for-Error"],[376,"impl-From%3CError%3E-for-Error"],[377,"impl-From%3CError%3E-for-Error"],[459,"impl-Debug-for-PolicyError"],[460,"impl-Display-for-PolicyError"],[809,"impl-Display-for-KeyError"],[810,"impl-Debug-for-KeyError"],[811,"impl-Debug-for-SortedMultiVec%3CPk,+Ctx%3E"],[812,"impl-Display-for-SortedMultiVec%3CPk,+Ctx%3E"],[813,"impl-Display-for-DescriptorPublicKey"],[814,"impl-Debug-for-DescriptorPublicKey"],[815,"impl-Debug-for-DescriptorSecretKey"],[816,"impl-Display-for-DescriptorSecretKey"],[821,"impl-From%3CXpriv%3E-for-ExtendedKey%3CCtx%3E"],[823,"impl-From%3CXpub%3E-for-ExtendedKey%3CCtx%3E"],[829,"impl-From%3CError%3E-for-KeyError"],[830,"impl-From%3CError%3E-for-KeyError"],[870,"impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[871,"impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1077,"impl-Display-for-Balance"],[1078,"impl-Debug-for-Balance"],[1081,"impl-Debug-for-AddressInfo"],[1082,"impl-Display-for-AddressInfo"],[1083,"impl-Debug-for-NewError"],[1084,"impl-Display-for-NewError"],[1085,"impl-Display-for-LoadError"],[1086,"impl-Debug-for-LoadError"],[1087,"impl-Debug-for-NewOrLoadError"],[1088,"impl-Display-for-NewOrLoadError"],[1089,"impl-Display-for-InsertTxError"],[1090,"impl-Debug-for-InsertTxError"],[1091,"impl-Display-for-ApplyBlockError"],[1092,"impl-Debug-for-ApplyBlockError"],[1096,"impl-From%3CSyncResult%3E-for-Update"],[1097,"impl-From%3CFullScanResult%3CKeychainKind%3E%3E-for-Update"],[1267,"impl-Debug-for-Error"],[1268,"impl-Display-for-Error"],[1365,"impl-Display-for-MiniscriptPsbtError"],[1366,"impl-Debug-for-MiniscriptPsbtError"],[1367,"impl-Display-for-CreateTxError"],[1368,"impl-Debug-for-CreateTxError"],[1369,"impl-Debug-for-BuildFeeBumpError"],[1370,"impl-Display-for-BuildFeeBumpError"],[1372,"impl-From%3CPolicyError%3E-for-CreateTxError"],[1373,"impl-From%3CMiniscriptPsbtError%3E-for-CreateTxError"],[1374,"impl-From%3CError%3E-for-CreateTxError"],[1375,"impl-From%3CError%3E-for-CreateTxError"],[1376,"impl-From%3CError%3E-for-CreateTxError"],[1416,"impl-Debug-for-FullyNodedExport"],[1417,"impl-Display-for-FullyNodedExport"],[1508,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1509,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1510,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1517,"impl-Display-for-SignerError"],[1518,"impl-Debug-for-SignerError"],[1525,"impl-From%3CHash%3E-for-SignerId"],[1526,"impl-From%3CFingerprint%3E-for-SignerId"],[1538,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1539,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1540,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1558,"impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E"],[1559,"impl-InputSigner-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1560,"impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1667,"impl-Display-for-AddUtxoError"],[1668,"impl-Debug-for-AddUtxoError"],[1669,"impl-Display-for-AddForeignUtxoError"],[1670,"impl-Debug-for-AddForeignUtxoError"]],"c":"OjAAAAEAAAAAAAUAEAAAAL8AAQENAR0DdAOABQ==","e":"OzAAAAEAAHsDfgADAAAACAABAAsAAAAOABMAJgAJADUAAQA+AAAAQQAAAEUADwBXAAMAXQADAGoAAAB3AAAAigABAI0AAACPAAcAmgAAAJwAAQCfAAAAogABAKUAAQCpAAEArAABAK8AAQCyAAsAwwADAMgAAwDRAAEA1AAKAOAAAgDoAAAA9QADAAABAAAGAQEACgEBABEBAQAnAQMALAEBADoBAQA9AQEAQQEFAEwBBwBVAQMAWgEDAG8BCAB5AQEAfAEEAKQBGQDAAQ4A0QEAANQBAADZAQEA6AEAAOsBBADxASIAOgIXAFMCCwB3AjwA4gIXAAQDFQAbAwEAHgMAACADFgA4AwAAPgMBAEEDAABJAwEAVAMDAGQDAABnAwQAbQMBAH0DAQCCAwAAiwMAAJADAwCZAwAAnQMIAKcDAwCuAy8A/wMAAAcEAAAJBBEAIwQDACoEAgAwBAIANgQPAEkEAQCDBAAAigQIAJcEEQCrBAgAtwQIANgEEQDrBAIA7wQCAPQEBgALBRsATgUNAF0FBABnBQ8AgwUBAIcFAACJBQEAjAUAAJAFBQC+BQ8AzwUUAOUFBgDtBQoA+gUAAAEGAAADBgIAEQYBABcGAgAbBgAAHwYHACkGHwBiBgkAbQYHAHcGAQB+BgEAgwYGAI8GAQCcBgEAogYTALgGBAA="}],\ ["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_persist::persist"],[206,"bitcoin::network"],[207,"core::default"],[208,"serde::ser"],[209,"core::convert"],[210,"core::ops::function"],[211,"core::marker"],[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,50,34,34,4,9,10,4,9,10,0,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,34,21,0,4,8,9,10,11,4,8,9,10,11,11,34,34,0,50,34,8,34,11,11,11,11,4,8,8,9,10,11,11,21,50,34,4,8,9,10,11,34,4,9,10,34,4,9,10,8,0,4,9,10,14,21,50,21,0,50,21,50,34,4,8,9,10,11,34,34,50,34,11,0,11,4,8,9,10,11,8,11,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,34,4,9,10,34,4,9,10,21,50,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}}}}}Cdn{{En{i{d{Bh}}}{{El{{C`{Ah}}}}}}}l}{{{d{Dh}}}Cj}00````{{{d{{Fb{F`}}}}{d{Dh}}}{{C`{{Fd{ceg}}}}}ln{E`EbEfEdFfFh}}`{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,"Persist",205],[6,"Network",206],[10,"Default",207],[10,"Append",197],[10,"DeserializeOwned",200],[10,"Serialize",208],[8,"KeychainChangeSet",0],[10,"From",209],[17,"Output"],[10,"FnOnce",210],[1,"u8"],[1,"slice"],[5,"Init",0],[10,"Send",211],[10,"Sync",211],[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_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=="}],\ 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 7e1f90c795..b879f767ec 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 …\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.\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 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 a random entropy\nGenerate a key with the default options and a random …\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 …\nsignatures required\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\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 …\npublic keys inside sorted Multi\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.\nThe error variant that occurs when the caller attempts to …\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.\nAn error that may occur when inserting a transaction into …\nTrait to check if a value is below the dust limit. We are …\nThe error type when loading a Wallet from persistence.\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 …\nDatabase already has data.\nWallet not initialized, persistence backend is empty.\nWallet is not initialized, persistence backend is empty.\nWe were unable to write the wallet’s data to the …\nLoading data from the persistence backend failed.\nEither writing to or loading from the persistence backend …\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\nCommits all currently staged changed to the persistence …\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.\nReturns the argument unchanged.\nReturns the descriptor used to create addresses for a …\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).\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 persistence backend.\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.\nCreates a wallet that does not persist data.\nCreates a wallet that does not persist data, with a custom …\nEither loads Wallet from persistence, or initializes it if …\nEither loads Wallet from persistence, 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\nReturn the “public” version of the wallet’s …\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.\nReturns the changes that will be committed with the next …\nCreate a `FullScanRequest for this wallet.\nCreate a partial SyncRequest for this wallet for all …\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 …\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 internal chain’s tip height.\nThe introduced transaction’s confirmation height.\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\nThe change_policy was set but the wallet does not have a …\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 …\nWallet’s UTXO set is not enough to cover recipient’s …\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 …\nWe were unable to load wallet data from or write wallet …\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).\nSats available for spending\nRequired OP_CSV Sequence\nSats needed for some transaction\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 …\nSegwit v0 context (BIP 143)\nError while computing the hash to sign\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\nWhether to remove partial signatures from the PSBT inputs …\nWhether to remove taproot specific fields from the PSBT on …\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 …\nBIP69 / Lexicographic\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nPolicy regarding the use of change outputs when creating a …\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.\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\nReplace the internal list of unspendable utxos with a new …\nBuild a transaction with a specific version\nForeign UTXO outpoint\nPSBT input txid") \ No newline at end of file +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 …\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.\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 a random entropy\nGenerate a key with the default options and a random …\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 …\nsignatures required\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\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 …\npublic keys inside sorted Multi\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.\nThe error variant that occurs when the caller attempts to …\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.\nAn error that may occur when inserting a transaction into …\nTrait to check if a value is below the dust limit. We are …\nThe error type when loading a Wallet from persistence.\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 …\nDatabase already has data.\nWallet not initialized, persistence backend is empty.\nWallet is not initialized, persistence backend is empty.\nWe were unable to write the wallet’s data to the …\nLoading data from the persistence backend failed.\nEither writing to or loading from the persistence backend …\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\nCommits all currently staged changed to the persistence …\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.\nReturns the argument unchanged.\nReturns the descriptor used to create addresses for a …\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).\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 persistence backend.\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.\nCreates a wallet that does not persist data.\nCreates a wallet that does not persist data, with a custom …\nEither loads Wallet from persistence, or initializes it if …\nEither loads Wallet from persistence, 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\nReturn the “public” version of the wallet’s …\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.\nReturns the changes that will be committed with the next …\nCreate a `FullScanRequest for this wallet.\nCreate a partial SyncRequest for this wallet for all …\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 …\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 internal chain’s tip height.\nThe introduced transaction’s confirmation height.\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 …\nWallet’s UTXO set is not enough to cover recipient’s …\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 …\nWe were unable to load wallet data from or write wallet …\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).\nSats available for spending\nRequired OP_CSV Sequence\nSats needed for some transaction\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 …\nSegwit v0 context (BIP 143)\nError while computing the hash to sign\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\nWhether to remove partial signatures from the PSBT inputs …\nWhether to remove taproot specific fields from the PSBT on …\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 …\nBIP69 / Lexicographic\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nPolicy regarding the use of change outputs when creating a …\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.\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\nReplace the internal list of unspendable utxos with a new …\nBuild a transaction with a specific version\nForeign UTXO outpoint\nPSBT input txid") \ 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 0a3b100ef5..9c45266049 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/bdk_hwi/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html index 1ffe12bf86..e3c511de61 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 @@ -61,7 +61,7 @@ //! //! # let mut wallet = Wallet::new_no_persist( //! # "", -//! # None, +//! # "", //! # Network::Testnet, //! # )?; //! # 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 96a21a04e5..ee50920163 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 @@ -121,6 +121,11 @@ 121 122 123 +124 +125 +126 +127 +128
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -165,6 +170,8 @@
     Miniscript(miniscript::Error),
     /// Hex decoding error
     Hex(bitcoin::hex::HexToBytesError),
+    /// The provided wallet descriptors are identical
+    ExternalAndInternalAreTheSame,
 }
 
 impl From<crate::keys::KeyError> for Error {
@@ -202,6 +209,9 @@
             Self::Pk(err) => write!(f, "Key-related error: {}", err),
             Self::Miniscript(err) => write!(f, "Miniscript error: {}", err),
             Self::Hex(err) => write!(f, "Hex decoding error: {}", err),
+            Self::ExternalAndInternalAreTheSame => {
+                write!(f, "External and internal descriptors are the same")
+            }
         }
     }
 }
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 bcd358e798..6c0679b713 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
@@ -983,6 +983,21 @@
 983
 984
 985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -1062,9 +1077,12 @@
 /// # use bdk_wallet::KeychainKind;
 /// use bdk_wallet::template::P2Pkh;
 ///
-/// let key =
+/// let key_external =
 ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-/// let mut wallet = Wallet::new_no_persist(P2Pkh(key), None, Network::Testnet)?;
+/// let key_internal =
+///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+/// let mut wallet =
+///     Wallet::new_no_persist(P2Pkh(key_external), P2Pkh(key_internal), Network::Testnet)?;
 ///
 /// assert_eq!(
 ///     wallet
@@ -1092,9 +1110,15 @@
 /// # use bdk_wallet::KeychainKind;
 /// use bdk_wallet::template::P2Wpkh_P2Sh;
 ///
-/// let key =
+/// let key_external =
 ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-/// let mut wallet = Wallet::new_no_persist(P2Wpkh_P2Sh(key), None, Network::Testnet)?;
+/// let key_internal =
+///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+/// let mut wallet = Wallet::new_no_persist(
+///     P2Wpkh_P2Sh(key_external),
+///     P2Wpkh_P2Sh(key_internal),
+///     Network::Testnet,
+/// )?;
 ///
 /// assert_eq!(
 ///     wallet
@@ -1123,9 +1147,12 @@
 /// # use bdk_wallet::KeychainKind;
 /// use bdk_wallet::template::P2Wpkh;
 ///
-/// let key =
+/// let key_external =
 ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-/// let mut wallet = Wallet::new_no_persist(P2Wpkh(key), None, Network::Testnet)?;
+/// let key_internal =
+///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+/// let mut wallet =
+///     Wallet::new_no_persist(P2Wpkh(key_external), P2Wpkh(key_internal), Network::Testnet)?;
 ///
 /// assert_eq!(
 ///     wallet
@@ -1153,9 +1180,12 @@
 /// # use bdk_wallet::KeychainKind;
 /// use bdk_wallet::template::P2TR;
 ///
-/// let key =
+/// let key_external =
 ///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
-/// let mut wallet = Wallet::new_no_persist(P2TR(key), None, Network::Testnet)?;
+/// let key_internal =
+///     bitcoin::PrivateKey::from_wif("cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW")?;
+/// let mut wallet =
+///     Wallet::new_no_persist(P2TR(key_external), P2TR(key_internal), Network::Testnet)?;
 ///
 /// assert_eq!(
 ///     wallet
@@ -1190,12 +1220,12 @@
 /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip44(key.clone(), KeychainKind::External),
-///     Some(Bip44(key, KeychainKind::Internal)),
+///     Bip44(key, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
@@ -1227,12 +1257,12 @@
 /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip44Public(key.clone(), fingerprint, KeychainKind::External),
-///     Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),
+///     Bip44Public(key, fingerprint, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
@@ -1263,12 +1293,12 @@
 /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip49(key.clone(), KeychainKind::External),
-///     Some(Bip49(key, KeychainKind::Internal)),
+///     Bip49(key, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
@@ -1300,12 +1330,12 @@
 /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip49Public(key.clone(), fingerprint, KeychainKind::External),
-///     Some(Bip49Public(key, fingerprint, KeychainKind::Internal)),
+///     Bip49Public(key, fingerprint, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
@@ -1336,12 +1366,12 @@
 /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip84(key.clone(), KeychainKind::External),
-///     Some(Bip84(key, KeychainKind::Internal)),
+///     Bip84(key, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
@@ -1373,12 +1403,12 @@
 /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip84Public(key.clone(), fingerprint, KeychainKind::External),
-///     Some(Bip84Public(key, fingerprint, KeychainKind::Internal)),
+///     Bip84Public(key, fingerprint, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
@@ -1409,12 +1439,12 @@
 /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip86(key.clone(), KeychainKind::External),
-///     Some(Bip86(key, KeychainKind::Internal)),
+///     Bip86(key, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
@@ -1446,12 +1476,12 @@
 /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
 /// let mut wallet = Wallet::new_no_persist(
 ///     Bip86Public(key.clone(), fingerprint, KeychainKind::External),
-///     Some(Bip86Public(key, fingerprint, KeychainKind::Internal)),
+///     Bip86Public(key, fingerprint, KeychainKind::Internal),
 ///     Network::Testnet,
 /// )?;
 ///
 /// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
-/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
+/// assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
 /// # Ok::<_, Box<dyn std::error::Error>>(())
 /// ```
 pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html
index afb0eb9443..7e142c51ba 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html
@@ -281,14 +281,6 @@
 281
 282
 283
-284
-285
-286
-287
-288
-289
-290
-291
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -381,8 +373,6 @@
     NoUtxosSelected,
     /// Output created is under the dust limit, 546 satoshis
     OutputBelowDustLimit(usize),
-    /// The `change_policy` was set but the wallet does not have a change_descriptor
-    ChangePolicyDescriptor,
     /// There was an error with coin selection
     CoinSelection(coin_selection::Error),
     /// Wallet's UTXO set is not enough to cover recipient's requested plus fee
@@ -468,12 +458,6 @@
             CreateTxError::OutputBelowDustLimit(limit) => {
                 write!(f, "Output below the dust limit: {}", limit)
             }
-            CreateTxError::ChangePolicyDescriptor => {
-                write!(
-                    f,
-                    "The `change_policy` can be set only if the wallet has a change_descriptor"
-                )
-            }
             CreateTxError::CoinSelection(e) => e.fmt(f),
             CreateTxError::InsufficientFunds { needed, available } => {
                 write!(
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 5d5a615387..3147db82c7 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
@@ -347,11 +347,6 @@
 347
 348
 349
-350
-351
-352
-353
-354
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -385,7 +380,7 @@
 //! let import = FullyNodedExport::from_str(import)?;
 //! let wallet = Wallet::new_no_persist(
 //!     &import.descriptor(),
-//!     import.change_descriptor().as_ref(),
+//!     &import.change_descriptor().expect("change descriptor"),
 //!     Network::Testnet,
 //! )?;
 //! # Ok::<_, Box<dyn std::error::Error>>(())
@@ -398,7 +393,7 @@
 //! # use bdk_wallet::*;
 //! let wallet = Wallet::new_no_persist(
 //!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
-//!     Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
+//!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)",
 //!     Network::Testnet,
 //! )?;
 //! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
@@ -496,19 +491,17 @@
             blockheight,
         };
 
-        let change_descriptor = match wallet.public_descriptor(KeychainKind::Internal).is_some() {
-            false => None,
-            true => {
-                let descriptor = wallet
-                    .get_descriptor_for_keychain(KeychainKind::Internal)
-                    .to_string_with_secret(
-                        &wallet
-                            .get_signers(KeychainKind::Internal)
-                            .as_key_map(wallet.secp_ctx()),
-                    );
-                Some(remove_checksum(descriptor))
-            }
+        let change_descriptor = {
+            let descriptor = wallet
+                .get_descriptor_for_keychain(KeychainKind::Internal)
+                .to_string_with_secret(
+                    &wallet
+                        .get_signers(KeychainKind::Internal)
+                        .as_key_map(wallet.secp_ctx()),
+                );
+            Some(remove_checksum(descriptor))
         };
+
         if export.change_descriptor() != change_descriptor {
             return Err("Incompatible change descriptor");
         }
@@ -577,11 +570,7 @@
     use super::*;
     use crate::wallet::Wallet;
 
-    fn get_test_wallet(
-        descriptor: &str,
-        change_descriptor: Option<&str>,
-        network: Network,
-    ) -> Wallet {
+    fn get_test_wallet(descriptor: &str, change_descriptor: &str, network: Network) -> Wallet {
         let mut wallet = Wallet::new_no_persist(descriptor, change_descriptor, network).unwrap();
         let transaction = Transaction {
             input: vec![],
@@ -612,7 +601,7 @@
         let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
         let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
 
-        let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
         let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
 
         assert_eq!(export.descriptor(), descriptor);
@@ -624,13 +613,14 @@
     #[test]
     #[should_panic(expected = "Incompatible change descriptor")]
     fn test_export_no_change() {
-        // This wallet explicitly doesn't have a change descriptor. It should be impossible to
+        // The wallet's change descriptor has no wildcard. It should be impossible to
         // export, because exporting this kind of external descriptor normally implies the
-        // existence of an internal descriptor
+        // existence of a compatible internal descriptor
 
         let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
+        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/0)";
 
-        let wallet = get_test_wallet(descriptor, None, Network::Bitcoin);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
         FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
     }
 
@@ -643,7 +633,7 @@
         let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
         let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/50'/0'/1/*)";
 
-        let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
         FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
     }
 
@@ -660,7 +650,7 @@
                                        [c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/1/*\
                                  ))";
 
-        let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Testnet);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Testnet);
         let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
 
         assert_eq!(export.descriptor(), descriptor);
@@ -673,7 +663,7 @@
     fn test_export_tr() {
         let descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/0/*)";
         let change_descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/1/*)";
-        let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Testnet);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Testnet);
         let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
         assert_eq!(export.descriptor(), descriptor);
         assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
@@ -686,7 +676,7 @@
         let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
         let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
 
-        let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
+        let wallet = get_test_wallet(descriptor, change_descriptor, Network::Bitcoin);
         let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
 
         assert_eq!(export.to_string(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
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 d5c3617ddb..25f5941120 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
@@ -2595,47 +2595,6 @@
 2595
 2596
 2597
-2598
-2599
-2600
-2601
-2602
-2603
-2604
-2605
-2606
-2607
-2608
-2609
-2610
-2611
-2612
-2613
-2614
-2615
-2616
-2617
-2618
-2619
-2620
-2621
-2622
-2623
-2624
-2625
-2626
-2627
-2628
-2629
-2630
-2631
-2632
-2633
-2634
-2635
-2636
-2637
-2638
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -2804,7 +2763,7 @@
     /// Creates a wallet that does not persist data.
     pub fn new_no_persist<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         network: Network,
     ) -> Result<Self, DescriptorError> {
         Self::new(descriptor, change_descriptor, (), network).map_err(|e| match e {
@@ -2817,7 +2776,7 @@
     /// Creates a wallet that does not persist data, with a custom genesis hash.
     pub fn new_no_persist_with_genesis_hash<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         network: Network,
         genesis_hash: BlockHash,
     ) -> Result<Self, crate::descriptor::DescriptorError> {
@@ -2880,7 +2839,7 @@
     /// Data loaded from persistence is missing genesis hash.
     MissingGenesis,
     /// Data loaded from persistence is missing descriptor.
-    MissingDescriptor,
+    MissingDescriptor(KeychainKind),
 }
 
 impl fmt::Display for LoadError {
@@ -2893,7 +2852,9 @@
             }
             LoadError::MissingNetwork => write!(f, "loaded data is missing network type"),
             LoadError::MissingGenesis => write!(f, "loaded data is missing genesis hash"),
-            LoadError::MissingDescriptor => write!(f, "loaded data is missing descriptor"),
+            LoadError::MissingDescriptor(k) => {
+                write!(f, "loaded data is missing descriptor for keychain {k:?}")
+            }
         }
     }
 }
@@ -3036,7 +2997,7 @@
     /// Initialize an empty [`Wallet`].
     pub fn new<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         network: Network,
     ) -> Result<Self, NewError> {
@@ -3050,7 +3011,7 @@
     /// for syncing from alternative networks.
     pub fn new_with_genesis_hash<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         network: Network,
         genesis_hash: BlockHash,
@@ -3155,14 +3116,15 @@
             .indexer
             .keychains_added
             .get(&KeychainKind::External)
-            .ok_or(LoadError::MissingDescriptor)?
+            .ok_or(LoadError::MissingDescriptor(KeychainKind::External))?
             .clone();
         let change_descriptor = changeset
             .indexed_tx_graph
             .indexer
             .keychains_added
             .get(&KeychainKind::Internal)
-            .cloned();
+            .ok_or(LoadError::MissingDescriptor(KeychainKind::Internal))?
+            .clone();
 
         let (signers, change_signers) =
             create_signers(&mut index, &secp, descriptor, change_descriptor, network)
@@ -3189,7 +3151,7 @@
     /// This method will fail if the loaded [`Wallet`] has different parameters to those provided.
     pub fn new_or_load<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         network: Network,
     ) -> Result<Self, NewOrLoadError> {
@@ -3211,7 +3173,7 @@
     /// useful for syncing from alternative networks.
     pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>(
         descriptor: E,
-        change_descriptor: Option<E>,
+        change_descriptor: E,
         mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         network: Network,
         genesis_hash: BlockHash,
@@ -3233,10 +3195,12 @@
                         expected: genesis_hash,
                         got: None,
                     },
-                    LoadError::MissingDescriptor => NewOrLoadError::LoadedDescriptorDoesNotMatch {
-                        got: None,
-                        keychain: KeychainKind::External,
-                    },
+                    LoadError::MissingDescriptor(keychain) => {
+                        NewOrLoadError::LoadedDescriptorDoesNotMatch {
+                            got: None,
+                            keychain,
+                        }
+                    }
                 })?;
                 if wallet.network != network {
                     return Err(NewOrLoadError::LoadedNetworkDoesNotMatch {
@@ -3254,10 +3218,10 @@
                 let (expected_descriptor, expected_descriptor_keymap) = descriptor
                     .into_wallet_descriptor(&wallet.secp, network)
                     .map_err(NewOrLoadError::Descriptor)?;
-                let wallet_descriptor = wallet.public_descriptor(KeychainKind::External).cloned();
-                if wallet_descriptor != Some(expected_descriptor.clone()) {
+                let wallet_descriptor = wallet.public_descriptor(KeychainKind::External);
+                if wallet_descriptor != &expected_descriptor {
                     return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
-                        got: wallet_descriptor,
+                        got: Some(wallet_descriptor.clone()),
                         keychain: KeychainKind::External,
                     });
                 }
@@ -3277,44 +3241,31 @@
                     });
                 }
 
-                let expected_change_descriptor = if let Some(c) = change_descriptor {
-                    Some(
-                        c.into_wallet_descriptor(&wallet.secp, network)
-                            .map_err(NewOrLoadError::Descriptor)?,
-                    )
-                } else {
-                    None
-                };
-                let wallet_change_descriptor =
-                    wallet.public_descriptor(KeychainKind::Internal).cloned();
-
-                match (expected_change_descriptor, wallet_change_descriptor) {
-                    (Some((expected_descriptor, expected_keymap)), Some(wallet_descriptor))
-                        if wallet_descriptor == expected_descriptor =>
-                    {
-                        // if expected change descriptor has private keys add them as new signers
-                        if !expected_keymap.is_empty() {
-                            let signer_container = SignersContainer::build(
-                                expected_keymap,
-                                &expected_descriptor,
-                                &wallet.secp,
-                            );
-                            signer_container.signers().into_iter().for_each(|signer| {
-                                wallet.add_signer(
-                                    KeychainKind::Internal,
-                                    SignerOrdering::default(),
-                                    signer.clone(),
-                                )
-                            });
-                        }
-                    }
-                    (None, None) => (),
-                    (_, wallet_descriptor) => {
-                        return Err(NewOrLoadError::LoadedDescriptorDoesNotMatch {
-                            got: wallet_descriptor,
-                            keychain: KeychainKind::Internal,
-                        });
-                    }
+                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)
@@ -3355,12 +3306,11 @@
     /// This panics when the caller requests for an address of derivation index greater than the
     /// [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) max index.
     pub fn peek_address(&self, keychain: KeychainKind, mut index: u32) -> AddressInfo {
-        let keychain = self.map_keychain(keychain);
         let mut spk_iter = self
             .indexed_graph
             .index
             .unbounded_spk_iter(&keychain)
-            .expect("Must exist (we called map_keychain)");
+            .expect("keychain must exist");
         if !spk_iter.descriptor().has_wildcard() {
             index = 0;
         }
@@ -3386,12 +3336,11 @@
     ///
     /// If writing to persistent storage fails.
     pub fn reveal_next_address(&mut self, keychain: KeychainKind) -> anyhow::Result<AddressInfo> {
-        let keychain = self.map_keychain(keychain);
         let ((index, spk), index_changeset) = self
             .indexed_graph
             .index
             .reveal_next_spk(&keychain)
-            .expect("Must exist (we called map_keychain)");
+            .expect("keychain must exist");
 
         self.persist
             .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
@@ -3418,12 +3367,11 @@
         keychain: KeychainKind,
         index: u32,
     ) -> anyhow::Result<impl Iterator<Item = AddressInfo> + '_> {
-        let keychain = self.map_keychain(keychain);
         let (spk_iter, index_changeset) = self
             .indexed_graph
             .index
             .reveal_to_target(&keychain, index)
-            .expect("must exist (we called map_keychain)");
+            .expect("keychain must exist");
 
         self.persist
             .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
@@ -3445,12 +3393,11 @@
     ///
     /// If writing to persistent storage fails.
     pub fn next_unused_address(&mut self, keychain: KeychainKind) -> anyhow::Result<AddressInfo> {
-        let keychain = self.map_keychain(keychain);
         let ((index, spk), index_changeset) = self
             .indexed_graph
             .index
             .next_unused_spk(&keychain)
-            .expect("must exist (we called map_keychain)");
+            .expect("keychain must exist");
 
         self.persist
             .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
@@ -3490,7 +3437,6 @@
         &self,
         keychain: KeychainKind,
     ) -> impl DoubleEndedIterator<Item = AddressInfo> + '_ {
-        let keychain = self.map_keychain(keychain);
         self.indexed_graph
             .index
             .unused_keychain_spks(&keychain)
@@ -3572,11 +3518,10 @@
         &self,
         keychain: KeychainKind,
     ) -> impl Iterator<Item = (u32, ScriptBuf)> + Clone {
-        let keychain = self.map_keychain(keychain);
         self.indexed_graph
             .index
             .unbounded_spk_iter(&keychain)
-            .expect("Must exist (we called map_keychain)")
+            .expect("keychain must exist")
     }
 
     /// Returns the utxo owned by this wallet corresponding to `outpoint` if it exists in the
@@ -3886,7 +3831,9 @@
     /// ```
     /// # use bdk_wallet::{Wallet, KeychainKind};
     /// # use bdk_wallet::bitcoin::Network;
-    /// let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
+    /// let descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/0/*)";
+    /// let change_descriptor = "wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/1'/0'/1/*)";
+    /// let wallet = Wallet::new_no_persist(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);
@@ -3945,20 +3892,14 @@
     ) -> Result<Psbt, CreateTxError> {
         let keychains: BTreeMap<_, _> = self.indexed_graph.index.keychains().collect();
         let external_descriptor = keychains.get(&KeychainKind::External).expect("must exist");
-        let internal_descriptor = keychains.get(&KeychainKind::Internal);
+        let internal_descriptor = keychains.get(&KeychainKind::Internal).expect("must exist");
 
         let external_policy = external_descriptor
             .extract_policy(&self.signers, BuildSatisfaction::None, &self.secp)?
             .unwrap();
         let internal_policy = internal_descriptor
-            .as_ref()
-            .map(|desc| {
-                Ok::<_, CreateTxError>(
-                    desc.extract_policy(&self.change_signers, BuildSatisfaction::None, &self.secp)?
-                        .unwrap(),
-                )
-            })
-            .transpose()?;
+            .extract_policy(&self.change_signers, BuildSatisfaction::None, &self.secp)?
+            .unwrap();
 
         // The policy allows spending external outputs, but it requires a policy path that hasn't been
         // provided
@@ -3970,17 +3911,15 @@
                 KeychainKind::External,
             ));
         };
-        // Same for the internal_policy path, if present
-        if let Some(internal_policy) = &internal_policy {
-            if params.change_policy != tx_builder::ChangeSpendPolicy::ChangeForbidden
-                && internal_policy.requires_path()
-                && params.internal_policy_path.is_none()
-            {
-                return Err(CreateTxError::SpendingPolicyRequired(
-                    KeychainKind::Internal,
-                ));
-            };
-        }
+        // Same for the internal_policy path
+        if params.change_policy != tx_builder::ChangeSpendPolicy::ChangeForbidden
+            && internal_policy.requires_path()
+            && params.internal_policy_path.is_none()
+        {
+            return Err(CreateTxError::SpendingPolicyRequired(
+                KeychainKind::Internal,
+            ));
+        };
 
         let external_requirements = external_policy.get_condition(
             params
@@ -3988,21 +3927,14 @@
                 .as_ref()
                 .unwrap_or(&BTreeMap::new()),
         )?;
-        let internal_requirements = internal_policy
-            .map(|policy| {
-                Ok::<_, CreateTxError>(
-                    policy.get_condition(
-                        params
-                            .internal_policy_path
-                            .as_ref()
-                            .unwrap_or(&BTreeMap::new()),
-                    )?,
-                )
-            })
-            .transpose()?;
+        let internal_requirements = internal_policy.get_condition(
+            params
+                .internal_policy_path
+                .as_ref()
+                .unwrap_or(&BTreeMap::new()),
+        )?;
 
-        let requirements =
-            external_requirements.merge(&internal_requirements.unwrap_or_default())?;
+        let requirements = external_requirements.merge(&internal_requirements)?;
 
         let version = match params.version {
             Some(tx_builder::Version(0)) => return Err(CreateTxError::Version0),
@@ -4164,12 +4096,6 @@
 
         fee_amount += (fee_rate * tx.weight()).to_sat();
 
-        if params.change_policy != tx_builder::ChangeSpendPolicy::ChangeAllowed
-            && internal_descriptor.is_none()
-        {
-            return Err(CreateTxError::ChangePolicyDescriptor);
-        }
-
         let (required_utxos, optional_utxos) =
             self.preselect_utxos(&params, Some(current_height.to_consensus_u32()));
 
@@ -4177,12 +4103,12 @@
         let drain_script = match params.drain_to {
             Some(ref drain_recipient) => drain_recipient.clone(),
             None => {
-                let change_keychain = self.map_keychain(KeychainKind::Internal);
+                let change_keychain = KeychainKind::Internal;
                 let ((index, spk), index_changeset) = self
                     .indexed_graph
                     .index
                     .next_unused_spk(&change_keychain)
-                    .expect("Keychain exists (we called map_keychain)");
+                    .expect("keychain must exist");
                 let spk = spk.into();
                 self.indexed_graph.index.mark_used(change_keychain, index);
                 self.persist
@@ -4411,9 +4337,11 @@
         if tx.output.len() > 1 {
             let mut change_index = None;
             for (index, txout) in tx.output.iter().enumerate() {
-                let change_type = self.map_keychain(KeychainKind::Internal);
+                let change_keychain = KeychainKind::Internal;
                 match txout_index.index_of_spk(&txout.script_pubkey) {
-                    Some((keychain, _)) if keychain == change_type => change_index = Some(index),
+                    Some((keychain, _)) if keychain == change_keychain => {
+                        change_index = Some(index)
+                    }
                     _ => {}
                 }
             }
@@ -4530,22 +4458,24 @@
             KeychainKind::Internal => &self.change_signers,
         };
 
-        match self.public_descriptor(keychain) {
-            Some(desc) => Ok(desc.extract_policy(signers, BuildSatisfaction::None, &self.secp)?),
-            None => Ok(None),
-        }
+        self.public_descriptor(keychain).extract_policy(
+            signers,
+            BuildSatisfaction::None,
+            &self.secp,
+        )
     }
 
     /// Return the "public" version of the wallet's descriptor, meaning a new descriptor that has
     /// the same structure but with every secret key removed
     ///
     /// This can be used to build a watch-only version of a wallet
-    pub fn public_descriptor(&self, keychain: KeychainKind) -> Option<&ExtendedDescriptor> {
+    pub fn public_descriptor(&self, keychain: KeychainKind) -> &ExtendedDescriptor {
         self.indexed_graph
             .index
             .keychains()
             .find(|(k, _)| *k == &keychain)
             .map(|(_, d)| d)
+            .expect("keychain must exist")
     }
 
     /// Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass
@@ -4652,8 +4582,7 @@
 
     /// Returns the descriptor used to create addresses for a particular `keychain`.
     pub fn get_descriptor_for_keychain(&self, keychain: KeychainKind) -> &ExtendedDescriptor {
-        self.public_descriptor(self.map_keychain(keychain))
-            .expect("we mapped it to external if it doesn't exist")
+        self.public_descriptor(keychain)
     }
 
     /// The derivation index of this wallet. It will return `None` if it has not derived any addresses.
@@ -4664,11 +4593,10 @@
 
     /// The index of the next address that you would get if you were to ask the wallet for a new address
     pub fn next_derivation_index(&self, keychain: KeychainKind) -> u32 {
-        let keychain = self.map_keychain(keychain);
         self.indexed_graph
             .index
             .next_index(&keychain)
-            .expect("Keychain must exist (we called map_keychain)")
+            .expect("keychain must exist")
             .0
     }
 
@@ -4687,16 +4615,6 @@
         }
     }
 
-    fn map_keychain(&self, keychain: KeychainKind) -> KeychainKind {
-        if keychain == KeychainKind::Internal
-            && self.public_descriptor(KeychainKind::Internal).is_none()
-        {
-            KeychainKind::External
-        } else {
-            keychain
-        }
-    }
-
     fn get_descriptor_for_txout(&self, txout: &TxOut) -> Option<DerivedDescriptor> {
         let (keychain, child) = self
             .indexed_graph
@@ -5207,22 +5125,22 @@
     index: &mut KeychainTxOutIndex<KeychainKind>,
     secp: &Secp256k1<All>,
     descriptor: E,
-    change_descriptor: Option<E>,
+    change_descriptor: E,
     network: Network,
-) -> Result<(Arc<SignersContainer>, Arc<SignersContainer>), crate::descriptor::error::Error> {
-    let (descriptor, keymap) = into_wallet_descriptor_checked(descriptor, secp, 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)?;
+    if descriptor.0 == change_descriptor.0 {
+        return Err(DescriptorError::ExternalAndInternalAreTheSame);
+    }
+
+    let (descriptor, keymap) = descriptor;
     let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
     let _ = index.insert_descriptor(KeychainKind::External, descriptor);
 
-    let change_signers = match change_descriptor {
-        Some(descriptor) => {
-            let (descriptor, keymap) = into_wallet_descriptor_checked(descriptor, secp, network)?;
-            let signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
-            let _ = index.insert_descriptor(KeychainKind::Internal, descriptor);
-            signers
-        }
-        None => Arc::new(SignersContainer::new()),
-    };
+    let (descriptor, keymap) = change_descriptor;
+    let change_signers = Arc::new(SignersContainer::build(keymap, &descriptor, secp));
+    let _ = index.insert_descriptor(KeychainKind::Internal, descriptor);
 
     Ok((signers, change_signers))
 }
@@ -5251,7 +5169,7 @@
 
         let mut wallet = Wallet::new_no_persist(
             descriptor,
-            Some(change_descriptor),
+            change_descriptor,
             Network::Regtest,
         )
         .unwrap();
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 d69b3aba09..7ec2ca5ae5 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
@@ -1191,6 +1191,7 @@
 1191
 1192
 1193
+1194
 
// Bitcoin Dev Kit
 // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
 //
@@ -1260,8 +1261,9 @@
 //!
 //! let custom_signer = CustomSigner::connect();
 //!
-//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
-//! let mut wallet = Wallet::new_no_persist(descriptor, None, Network::Testnet)?;
+//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)";
+//! let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)";
+//! let mut wallet = Wallet::new_no_persist(descriptor, change_descriptor, Network::Testnet)?;
 //! wallet.add_signer(
 //!     KeychainKind::External,
 //!     SignerOrdering(200),
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 6e0dd9f12d..9a0fdae2c4 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
@@ -123,7 +123,7 @@
 
     let mut wallet = Wallet::new_or_load(
         external_descriptor,
-        Some(internal_descriptor),
+        internal_descriptor,
         db,
         Network::Testnet,
     )?;
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 72efe48eae..e6f9449433 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
@@ -131,7 +131,7 @@
 
     let mut wallet = Wallet::new_or_load(
         external_descriptor,
-        Some(internal_descriptor),
+        internal_descriptor,
         db,
         Network::Signet,
     )?;
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 21e5721a53..d6b858b515 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
@@ -107,7 +107,7 @@
 
     let mut wallet = Wallet::new_or_load(
         external_descriptor,
-        Some(internal_descriptor),
+        internal_descriptor,
         db,
         Network::Testnet,
     )?;
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 b02f52a7c1..9e75107783 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
@@ -210,7 +210,7 @@
     pub descriptor: String,
     /// Wallet change descriptor
     #[clap(env = "CHANGE_DESCRIPTOR")]
-    pub change_descriptor: Option<String>,
+    pub change_descriptor: String,
     /// Earliest block height to start sync from
     #[clap(env = "START_HEIGHT", long, default_value = "481824")]
     pub start_height: u32,
@@ -273,7 +273,7 @@
     let start_load_wallet = Instant::now();
     let mut wallet = Wallet::new_or_load(
         &args.descriptor,
-        args.change_descriptor.as_ref(),
+        &args.change_descriptor,
         Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(
             DB_MAGIC.as_bytes(),
             args.db_path,
diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js
index 78a4f46972..40816b02e0 100644
--- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js
+++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js
@@ -1,3 +1,3 @@
 (function() {var type_impls = {
-"bdk_wallet":[["
§

impl<K, A> Append for CombinedChangeSet<K, A>
where\n K: Ord,\n A: Anchor,

§

fn append(&mut self, other: CombinedChangeSet<K, A>)

Append another object of the same type onto self.
§

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
","Append","bdk_wallet::wallet::ChangeSet"],["
§

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> 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"]] +"bdk_wallet":[["
source§

impl<K, A> Append for CombinedChangeSet<K, A>
where\n K: Ord,\n A: Anchor,

source§

fn append(&mut self, other: CombinedChangeSet<K, A>)

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

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
","Append","bdk_wallet::wallet::ChangeSet"],["
source§

impl<K, A> Clone for CombinedChangeSet<K, A>
where\n K: Clone,\n A: Clone,

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
","Clone","bdk_wallet::wallet::ChangeSet"],["
source§

impl<K, A> Debug for CombinedChangeSet<K, A>
where\n K: Debug,\n A: Debug,

source§

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

Formats the value using the given formatter. Read more
","Debug","bdk_wallet::wallet::ChangeSet"],["
source§

impl<K, A> Default for CombinedChangeSet<K, A>

source§

fn default() -> CombinedChangeSet<K, A>

Returns the “default value” for a type. Read more
","Default","bdk_wallet::wallet::ChangeSet"],["
source§

impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
where\n A: Ord + Deserialize<'de>,\n K: Ord + Deserialize<'de>,

source§

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"],["
source§

impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>

source§

fn from(chain: BTreeMap<u32, Option<BlockHash>>) -> CombinedChangeSet<K, A>

Converts to this type from the input type.
","From>>","bdk_wallet::wallet::ChangeSet"],["
source§

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

source§

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"],["
source§

impl<K, A> PartialEq for CombinedChangeSet<K, A>
where\n K: PartialEq,\n A: PartialEq,

source§

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"],["
source§

impl<K, A> Serialize for CombinedChangeSet<K, A>
where\n A: Ord + Serialize,\n K: Ord + 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::wallet::ChangeSet"],["
source§

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_wallet/wallet/export/struct.FullyNodedExport.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js index d00203e576..a9a888e826 100644 --- 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 @@ -1,3 +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"]] +"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_rpc/struct.Args.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html index ad5c843bc2..10b045e66a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html @@ -1,6 +1,6 @@ Args in wallet_rpc - Rust

Struct wallet_rpc::Args

source ·
pub struct Args {
     pub descriptor: String,
-    pub change_descriptor: Option<String>,
+    pub change_descriptor: String,
     pub start_height: u32,
     pub network: Network,
     pub db_path: PathBuf,
@@ -12,7 +12,7 @@
 

This syncs the chain block-by-block and prints the current balance, transaction count and UTXO count.

Fields§

§descriptor: String

Wallet descriptor

-
§change_descriptor: Option<String>

Wallet change descriptor

+
§change_descriptor: String

Wallet change descriptor

§start_height: u32

Earliest block height to start sync from

§network: Network

Bitcoin network to connect to

§db_path: PathBuf

Where to store wallet data