1use secrecy::SecretString;
2
3use crate::VaultError;
4
5pub trait SecretStore: Send + Sync {
11 fn get_api_key(&self, key: &str) -> Option<SecretString>;
14 fn set_api_key(&self, key: &str, value: &str) -> Result<(), VaultError>;
15 fn delete_api_key(&self, key: &str) -> Result<(), VaultError>;
16 fn list_api_keys(&self) -> Vec<String>;
17
18 fn get_secret(&self, key: &str) -> Option<SecretString>;
21 fn set_secret(&self, key: &str, value: &str) -> Result<(), VaultError>;
22 fn delete_secret(&self, key: &str) -> Result<(), VaultError>;
23 fn list_secrets(&self) -> Vec<String>;
24
25 fn has_key(&self, key: &str) -> bool;
28 fn is_unlocked(&self) -> bool;
29}
30
31pub trait VaultLifecycle: SecretStore {
37 fn load_master_key(&self, key: [u8; 32]);
38 fn zeroize_master_key(&self);
39 fn initialize(&self, master_key: &[u8; 32]) -> Result<(), VaultError>;
40}