use async_trait::async_trait; pub use crate::model::{ Conversation, Message, ConversationID, MessageID, }; pub mod auth; pub use crate::api::auth::{AuthenticationStore, InMemoryAuthenticationStore}; use crate::model::JwtToken; pub mod http_client; pub use http_client::HTTPAPIClient; pub mod event_socket; pub use event_socket::EventSocket; use self::http_client::Credentials; #[async_trait] pub trait APIInterface { type Error; // (GET) /version async fn get_version(&mut self) -> Result; // (GET) /conversations async fn get_conversations(&mut self) -> Result, Self::Error>; // (GET) /messages async fn get_messages( &mut self, conversation_id: &ConversationID, limit: Option, before: Option, after: Option, ) -> Result, Self::Error>; // (POST) /authenticate async fn authenticate(&mut self, credentials: Credentials) -> Result; // (WS) /updates async fn open_event_socket(&mut self) -> Result; }