use std::fmt::Debug;
use async_trait::async_trait;
use serde::de::DeserializeOwned;
use serde::{Deserialize, Serialize};
use crate::cqrs::models::errors::ResultErr;
#[async_trait]
pub trait TokenService {
async fn decode<CLAIMS: Debug + Serialize + DeserializeOwned>(&self, token: &str) -> ResultErr<CLAIMS>;
}
pub trait CanEncodeToken: Send + Sync {
fn encode<'a, CLAIMS: Debug + Serialize + Deserialize<'a>>(&self, claims: CLAIMS) -> String;
}