using BuildingBlock.Identity.Contracts.Grpc;
using BuildingBlock.Identity.Contracts.Requests;

namespace BuildingBlock.Identity.Contracts.Adapters;

/// <summary>
/// Defines gRPC mapping boundary for identity capability requests.
/// </summary>
public interface IIdentityGrpcContractAdapter
{
    /// <summary>
    /// Maps request into gRPC contract shape.
    /// </summary>
    IdentityPolicyGrpcContract ToGrpc(EvaluateIdentityPolicyRequest request);

    /// <summary>
    /// Maps gRPC contract shape into request.
    /// </summary>
    EvaluateIdentityPolicyRequest FromGrpc(IdentityPolicyGrpcContract contract);
}
