using Thalos.Bff.Application.Contracts;
using Thalos.Bff.Contracts.Api;
using Thalos.Service.Identity.Abstractions.Contracts;
namespace Thalos.Bff.Application.Adapters;
///
/// Defines adapter boundary between external edge contracts and thalos-service contracts.
///
public interface IIdentityEdgeContractAdapter
{
///
/// Maps API request into identity policy evaluation request.
///
/// External API request.
/// Permission code to evaluate.
/// Identity policy request.
EvaluateIdentityPolicyRequest ToPolicyRequest(IssueTokenApiRequest request, string permissionCode);
///
/// Maps API request into identity token issuance request.
///
/// External API request.
/// Identity token issuance request.
IssueIdentityTokenRequest ToIssueTokenRequest(IssueTokenApiRequest request);
///
/// Maps identity token issuance response into edge API response.
///
/// Identity token issuance response.
/// External API response.
IssueTokenApiResponse ToIssueTokenApiResponse(IssueIdentityTokenResponse response);
///
/// Maps refresh API request into internal refresh contract.
///
/// External refresh API request.
/// Internal refresh request.
RefreshIdentitySessionRequest ToRefreshSessionRequest(RefreshSessionApiRequest request);
///
/// Maps internal refresh response into external API response.
///
/// Internal refresh response.
/// External API response.
RefreshSessionApiResponse ToRefreshSessionApiResponse(RefreshIdentitySessionResponse response);
}