@startuml skinparam packageStyle rectangle package "thalos-bff" { class Program interface IIssueTokenHandler class IssueTokenHandler interface IRefreshSessionHandler class RefreshSessionHandler interface IPermissionGuard interface IIdentityEdgeContractAdapter interface IIdentityEdgeGrpcContractAdapter interface IThalosServiceClient class IssueIdentityTokenGrpcContract IssueTokenHandler ..|> IIssueTokenHandler RefreshSessionHandler ..|> IRefreshSessionHandler IssueTokenHandler --> IPermissionGuard IssueTokenHandler --> IIdentityEdgeContractAdapter RefreshSessionHandler --> IIdentityEdgeContractAdapter IIdentityEdgeGrpcContractAdapter --> IssueIdentityTokenGrpcContract IssueTokenHandler --> IThalosServiceClient RefreshSessionHandler --> IThalosServiceClient } package "Clients" as Clients package "thalos-service" as ThalosService Clients --> Program : REST Program --> IIssueTokenHandler Program --> IRefreshSessionHandler IThalosServiceClient ..> ThalosService : gRPC/internal contracts @enduml