namespace Avalonia_Services.Services.AuthService { public sealed record ApiLoginRequest(string? Account, string? Password, string[]? Roles = null); public sealed record ApiRefreshTokenRequest(string? RefreshToken); public sealed record ApiLogoutRequest(string? RefreshToken); public sealed record AuthTokenResponse( string AccessToken, string RefreshToken, DateTime AccessTokenExpiresAt, DateTime RefreshTokenExpiresAt, string[] Roles); public sealed record PcAuthorizeRequest(string? AuthorizationCode); public sealed record PcRefreshRequest(string? Token); public sealed record PcLogoutRequest(string? Token); public sealed record PcTokenResponse(string Token, DateTime ExpiresAt, string[] Roles); public enum ThirdPartyAuthCheckResult { Valid, AuthorizationLost, TemporaryFailure, } public interface IPcThirdPartyAuthorizationClient { Task ValidateAuthorizationCodeAsync(string authorizationCode, CancellationToken cancellationToken = default); Task RefreshAuthorizationAsync(string authorizationReference, CancellationToken cancellationToken = default); } }