namespace SGU.CredentialProvider; internal enum BrokerDecisionKind { Authorized, InvalidCredentials, Unavailable } internal sealed record BrokerDecision( BrokerDecisionKind Kind, string? Domain = null, string? UserName = null, string? ErrorCode = null) { public static BrokerDecision Authorized(string domain, string userName) => new(BrokerDecisionKind.Authorized, domain, userName); public static BrokerDecision Invalid(string? errorCode = null) => new(BrokerDecisionKind.InvalidCredentials, ErrorCode: errorCode); public static BrokerDecision Unavailable(string? errorCode = null) => new(BrokerDecisionKind.Unavailable, ErrorCode: errorCode); }