#[cfg(any(test, feature = "full-api"))]
use crate::vault::{AppRoleCredentials, InitResult, VaultError};
#[cfg(any(test, feature = "full-api"))]
use async_trait::async_trait;
#[cfg(any(test, feature = "full-api"))]
#[async_trait]
pub trait VaultOperations {
async fn init_vault(
&self,
secret_shares: u8,
secret_threshold: u8,
) -> Result<InitResult, VaultError>;
async fn unseal_vault(&self, keys: &[String]) -> Result<(), VaultError>;
async fn setup_pki(
&self,
token: &str,
domain: &str,
ttl: &str,
use_intermediate: bool,
int_addr: Option<&str>,
int_token: Option<&str>,
) -> Result<(String, String), VaultError>;
async fn setup_approle(
&self,
token: &str,
role_name: &str,
policies: &[String],
) -> Result<AppRoleCredentials, VaultError>;
async fn setup_kubernetes_auth(
&self,
token: &str,
role_name: &str,
service_account: &str,
namespace: &str,
kubernetes_host: &str,
kubernetes_ca_cert: &str,
) -> Result<(), VaultError>;
async fn issue_certificate(
&self,
token: &str,
domain: &str,
common_name: &str,
ttl: &str,
) -> Result<String, VaultError>;
async fn setup_transit_engine(&self, token: &str) -> Result<(), VaultError>;
async fn create_transit_key(&self, token: &str, key_name: &str) -> Result<(), VaultError>;
async fn create_transit_unseal_policy(
&self,
token: &str,
policy_name: &str,
key_name: &str,
) -> Result<(), VaultError>;
async fn generate_transit_unseal_token(
&self,
token: &str,
policy_name: &str,
) -> Result<String, VaultError>;
async fn generate_wrapped_transit_unseal_token(
&self,
token: &str,
policy_name: &str,
ttl: u32,
) -> Result<String, VaultError>;
async fn unwrap_token(&self, wrapped_token: &str) -> Result<String, VaultError>;
}