1use async_trait::async_trait;
2use gpui2::AppContext;
3
4#[derive(Clone, Debug)]
5pub enum ProviderCredential {
6 Credentials { api_key: String },
7 NoCredentials,
8 NotNeeded,
9}
10
11#[async_trait]
12pub trait CredentialProvider: Send + Sync {
13 fn has_credentials(&self) -> bool;
14 async fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential;
15 async fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential);
16 async fn delete_credentials(&self, cx: &mut AppContext);
17}