#nullable enable using System; using System.Threading; using System.Threading.Tasks; using Wino.Core.Domain.Entities.Shared; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Models.Accounts; using Wino.Mail.Api.Contracts.Ai; using Wino.Mail.Api.Contracts.Auth; using Wino.Mail.Api.Contracts.Billing; using Wino.Mail.Api.Contracts.Common; namespace Wino.Core.Domain.Interfaces; public interface IWinoAccountProfileService { Task RegisterAsync(string email, string password, CancellationToken cancellationToken = default); Task LoginAsync(string email, string password, CancellationToken cancellationToken = default); Task RefreshAsync(CancellationToken cancellationToken = default); Task RefreshProfileAsync(CancellationToken cancellationToken = default); Task GetActiveAccountAsync(); Task GetAuthenticatedAccountAsync(CancellationToken cancellationToken = default); Task HasActiveAccountAsync(); Task HasAddOnAsync(WinoAddOnProductType productId, CancellationToken cancellationToken = default); Task> GetCurrentUserAsync(CancellationToken cancellationToken = default); Task> GetAiStatusAsync(CancellationToken cancellationToken = default); Task> CreateCheckoutSessionAsync(WinoAddOnProductType productId, CancellationToken cancellationToken = default); Task> CreateCustomerPortalSessionAsync(CancellationToken cancellationToken = default); Task ProcessBillingCallbackAsync(Uri callbackUri, CancellationToken cancellationToken = default); Task SignOutAsync(CancellationToken cancellationToken = default); }