use std::fmt::Debug;
use serde::{Deserialize, Serialize};
use serde::de::DeserializeOwned;
use crate::core::token::errors::DecodeError;
pub trait TokenService {
fn encode<'a, CLAIMS: Debug + Serialize + Deserialize<'a>>(&self, claims: CLAIMS) -> String;
fn decode<CLAIMS: Debug + Serialize + DeserializeOwned>(&self, token: &str) -> Result<CLAIMS, DecodeError>;
}