}
  }
}

fn get_change_address(client: &Client, chain: Chain) -> Result<Address> {
  Ok(
    client
      .call::<Address<NetworkUnchecked>>("getrawchangeaddress", &["bech32m".into()])
      .context("could not get change addresses from wallet")?
      .require_network(chain.network())?,
  )
}

pub(crate) fn initialize_wallet(options: &Options, seed: [u8; 64]) -> Result {
  let client = options.bitcoin_rpc_client_for_wallet_command(true)?;
  let network = options.chain().network();

  client.create_wallet(&options.wallet, None, Some(true), None, None)?;

  let secp = Secp256k1::new();

  let master_private_key = ExtendedPrivKey::new_master(network, &seed)?;

  let fingerprint = master_private_key.fingerprint(&secp);

  let derivation_path = DerivationPath::master()
    .child(ChildNumber::Hardened { index: 86 })
    .child(ChildNumber::Hardened {
      index: u32::from(network != Network::Bitcoin),
    })
    .child(ChildNumber::Hardened { index: 0 });

  let derived_private_key = master_private_key.derive_priv(&secp, &derivation_path)?;