1use futures::future::BoxFuture;
2use gpui::AppContext;
3
4#[derive(Clone, Debug)]
5pub enum ProviderCredential {
6 Credentials { api_key: String },
7 NoCredentials,
8 NotNeeded,
9}
10
11pub trait CredentialProvider: Send + Sync {
12 fn has_credentials(&self) -> bool;
13 #[must_use]
14 fn retrieve_credentials(&self, cx: &mut AppContext) -> BoxFuture<ProviderCredential>;
15 #[must_use]
16 fn save_credentials(
17 &self,
18 cx: &mut AppContext,
19 credential: ProviderCredential,
20 ) -> BoxFuture<()>;
21 #[must_use]
22 fn delete_credentials(&self, cx: &mut AppContext) -> BoxFuture<()>;
23}