use bitcoin::bip32::{DerivationPath, Fingerprint, Xpub};
use crate::error::Result;
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct KeyCard {
pub policy_id_stubs: Vec<[u8; 4]>,
pub origin_fingerprint: Option<Fingerprint>,
pub origin_path: DerivationPath,
pub xpub: Xpub,
}
impl KeyCard {
pub fn new(
policy_id_stubs: Vec<[u8; 4]>,
origin_fingerprint: Option<Fingerprint>,
origin_path: DerivationPath,
xpub: Xpub,
) -> Self {
Self {
policy_id_stubs,
origin_fingerprint,
origin_path,
xpub,
}
}
}
pub fn encode(card: &KeyCard) -> Result<Vec<String>> {
crate::string_layer::encode(card)
}
pub fn encode_with_chunk_set_id(card: &KeyCard, chunk_set_id: u32) -> Result<Vec<String>> {
crate::string_layer::encode_with_chunk_set_id(card, chunk_set_id)
}
pub fn decode(strings: &[&str]) -> Result<KeyCard> {
crate::string_layer::decode(strings)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn types_compile() {
let _f: fn(&KeyCard) -> Result<Vec<String>> = encode;
let _g: fn(&[&str]) -> Result<KeyCard> = decode;
}
}