package token import ( "fmt" "time" ) type TokenStore interface { revoke(tokenID string, expiresAt time.Time) error isRevoked(tokenID string) (bool, error) } type TokenService struct { store TokenStore } func NewTokenService(store TokenStore) (*TokenService, error) { if store == nil { return nil, fmt.Errorf("store is nil") } return &TokenService{store: store}, nil } func (s *TokenService) Revoke(jti string, exp time.Time) error { return s.store.revoke(jti, exp) } func (s *TokenService) IsRevoked(jti string) (bool, error) { return s.store.isRevoked(jti) }