1use anyhow::Result;
2use async_trait::async_trait;
3use serde::{Deserialize, Serialize};
4
5pub mod aws;
6pub mod azure;
7pub mod convert;
8pub mod google;
9pub mod vault;
10
11#[derive(Serialize, Deserialize)]
12pub enum Provider {
13 Google(google::GoogleConfig),
14 Aws(aws::AwsConfig),
15 Azure(azure::AzureConfig),
16 Hashicorp(vault::HashicorpVaultConfig),
17}
18
19#[async_trait]
20pub trait Vault {
21 async fn download_prefixed(&self, prefix: &str) -> Result<Vec<(String, String)>>;
22 async fn download_json(&self, secret_name: &str) -> Result<Vec<(String, String)>>;
23}
24
25pub trait VaultConfig {
26 type Vault: Vault;
27 fn into_vault(self) -> Result<Self::Vault>;
28}
29
30pub fn download_env() {}