v0.2.5-pre.005
This commit is contained in:
@@ -1,5 +1,36 @@
|
||||
// file: crates/ksp-wallet-lib/src/metadata.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
/// Protected metadata requested when creating a new native Wallet.
|
||||
///
|
||||
/// Alias and note texts are never rendered by `Debug`. Wallet generates stable random note identifiers when the metadata is sealed into the V1 payload.
|
||||
#[derive(Default, Eq, PartialEq)]
|
||||
pub struct WalletCreateMetadataV1 {
|
||||
alias: std::option::Option<std::string::String>,
|
||||
note_texts: std::vec::Vec<std::string::String>,
|
||||
}
|
||||
|
||||
impl WalletCreateMetadataV1 {
|
||||
/// Creates protected initial Wallet metadata.
|
||||
#[must_use]
|
||||
pub fn new(alias: std::option::Option<std::string::String>, note_texts: std::vec::Vec<std::string::String>) -> Self {
|
||||
return Self { alias, note_texts };
|
||||
}
|
||||
|
||||
pub(crate) fn into_parts(self) -> (std::option::Option<std::string::String>, std::vec::Vec<std::string::String>) {
|
||||
return (self.alias, self.note_texts);
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for WalletCreateMetadataV1 {
|
||||
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
return formatter
|
||||
.debug_struct("WalletCreateMetadataV1")
|
||||
.field("alias", &self.alias.as_ref().map(|_| return "<redacted>"))
|
||||
.field("note_count", &self.note_texts.len())
|
||||
.finish();
|
||||
}
|
||||
}
|
||||
|
||||
/// One protected Wallet note exposed only after VIEW or OWNER authorization.
|
||||
#[derive(Clone, Eq, PartialEq)]
|
||||
@@ -9,6 +40,10 @@ pub struct WalletNote {
|
||||
}
|
||||
|
||||
impl WalletNote {
|
||||
pub(crate) fn new(id: std::string::String, text: std::string::String) -> Self {
|
||||
return Self { id, text };
|
||||
}
|
||||
|
||||
/// Returns the stable note identifier used by Wallet administration operations.
|
||||
#[must_use]
|
||||
pub fn id(&self) -> &str {
|
||||
@@ -39,6 +74,15 @@ pub struct WalletInfo {
|
||||
}
|
||||
|
||||
impl WalletInfo {
|
||||
pub(crate) fn new(
|
||||
capability: crate::WalletCapability,
|
||||
pubkey: ksp_core_lib::Pubkey,
|
||||
alias: std::option::Option<std::string::String>,
|
||||
notes: std::vec::Vec<crate::WalletNote>,
|
||||
) -> Self {
|
||||
return Self { format_version: crate::KSPWALLET_FORMAT_VERSION_V1, capability, pubkey, alias, notes };
|
||||
}
|
||||
|
||||
/// Returns the native Wallet format version parsed for this projection.
|
||||
#[must_use]
|
||||
pub const fn format_version(&self) -> u32 {
|
||||
@@ -91,6 +135,10 @@ pub struct LockedWalletInfo {
|
||||
}
|
||||
|
||||
impl LockedWalletInfo {
|
||||
pub(crate) const fn new(view_enabled: bool) -> Self {
|
||||
return Self { format_version: crate::KSPWALLET_FORMAT_VERSION_V1, view_enabled };
|
||||
}
|
||||
|
||||
/// Returns the native Wallet format version.
|
||||
#[must_use]
|
||||
pub const fn format_version(&self) -> u32 {
|
||||
|
||||
Reference in New Issue
Block a user