#![allow( clippy::cast_possible_truncation, clippy::cast_sign_loss, clippy::cast_precision_loss, clippy::cast_possible_wrap )] //! Service trait definitions — use-case interfaces for session management //! and OAuth flows. use crate::domain::oauth::{OAuthConfig, OAuthToken}; use crate::domain::session::Session; /// Session management use-case boundary. pub trait SessionService { /// Create a new session with a generated UUID and the given title. fn create_session(&self, title: &str) -> anyhow::Result; /// List all available sessions. fn list_all(&self) -> anyhow::Result>; /// Archive a session by id (sets `archived = true`). fn archive_session(&self, id: &str) -> anyhow::Result<()>; } /// OAuth flow use-case boundary. pub trait OAuthService { /// Start an OAuth authorization-code + PKCE flow. /// Returns the provider's authorization URL to visit. fn start_flow(&self, config: &OAuthConfig) -> anyhow::Result; /// Complete the OAuth flow by exchanging an authorization code for a /// token. fn complete_flow(&self, config: &OAuthConfig, code: &str) -> anyhow::Result; /// Retrieve the currently stored OAuth token (if any). fn get_token(&self) -> anyhow::Result>; }