v0.2.5-pre.002
This commit is contained in:
54
crates/ksp-wallet-lib/src/view.rs
Normal file
54
crates/ksp-wallet-lib/src/view.rs
Normal file
@@ -0,0 +1,54 @@
|
||||
// file: crates/ksp-wallet-lib/src/view.rs
|
||||
// version: 1
|
||||
|
||||
/// Authorized VIEW capability handle.
|
||||
///
|
||||
/// VIEW exposes protected metadata and, in later `0.2.5` tranches, will expose only self-rotation of its VIEW password. It never owns the Solana secret or
|
||||
/// OWNER administration material.
|
||||
pub struct WalletView {
|
||||
info: crate::WalletInfo,
|
||||
}
|
||||
|
||||
impl WalletView {
|
||||
/// Returns the authorization capability represented by this handle.
|
||||
#[must_use]
|
||||
pub const fn capability(&self) -> crate::WalletCapability {
|
||||
return crate::WalletCapability::View;
|
||||
}
|
||||
|
||||
/// Returns the authorized Solana public key.
|
||||
#[must_use]
|
||||
pub const fn pubkey(&self) -> &ksp_core_lib::Pubkey {
|
||||
return self.info.pubkey();
|
||||
}
|
||||
|
||||
/// Returns the protected internal alias, when present.
|
||||
#[must_use]
|
||||
pub fn alias(&self) -> std::option::Option<&str> {
|
||||
return self.info.alias();
|
||||
}
|
||||
|
||||
/// Returns the protected notes.
|
||||
#[must_use]
|
||||
pub fn notes(&self) -> &[crate::WalletNote] {
|
||||
return self.info.notes();
|
||||
}
|
||||
|
||||
/// Returns the complete safe metadata projection for this VIEW capability.
|
||||
#[must_use]
|
||||
pub fn info(&self) -> &crate::WalletInfo {
|
||||
ksp_logging_lib::trace!(
|
||||
target: crate::TRACING_TARGET,
|
||||
operation = "wallet_info_projection",
|
||||
capability = "view",
|
||||
"wallet metadata projection requested"
|
||||
);
|
||||
return &self.info;
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for WalletView {
|
||||
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
return formatter.debug_struct("WalletView").field("info", &self.info).finish();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user