/* * Copyright (c) 2026 Proton AG * * This file is part of ProtonVPN. * * ProtonVPN is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ProtonVPN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ProtonVPN. If not, see . */ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using ProtonVPN.Api.Contracts.Announcements; using ProtonVPN.Api.Contracts.Auth; using ProtonVPN.Api.Contracts.Certificates; using ProtonVPN.Api.Contracts.Common; using ProtonVPN.Api.Contracts.Events; using ProtonVPN.Api.Contracts.Features; using ProtonVPN.Api.Contracts.Geographical; using ProtonVPN.Api.Contracts.NpsSurvey; using ProtonVPN.Api.Contracts.Partners; using ProtonVPN.Api.Contracts.ReportAnIssue; using ProtonVPN.Api.Contracts.Servers; using ProtonVPN.Api.Contracts.Streaming; using ProtonVPN.Api.Contracts.Users; using ProtonVPN.Api.Contracts.VpnConfig; using ProtonVPN.Common.Core.Geographical; using ProtonVPN.Common.Core.StatisticalEvents; namespace ProtonVPN.Api.Contracts; public interface IApiClient : IClientBase { Task> GetCityNamesAsync(CancellationToken cancellationToken = default); Task> PostUnauthSessionAsync(CancellationToken cancellationToken = default); Task> GetAuthResponse(AuthRequest authRequest, CancellationToken cancellationToken = default); Task> GetAuthInfoResponse(AuthInfoRequest authInfoRequest, CancellationToken cancellationToken = default); Task> GetTwoFactorAuthResponse(TwoFactorRequest twoFactorRequest, string accessToken, string uid, CancellationToken cancellationToken = default); Task> GetServerAsync(string serverId); Task> GetVpnInfoResponse(CancellationToken cancellationToken = default); Task> GetLogoutResponse(); Task> GetEventResponse(string lastId = default); Task> GetServersAsync(DeviceLocation? deviceLocation, IEnumerable favoriteServerIds = null, CancellationToken cancellationToken = default); Task> GetServerLoadsAndStatusBinaryStringAsync(string statusId, CancellationToken cancellationToken = default); Task> GetServersCountAsync(); Task> GetReportAnIssueFormData(); Task> GetServerLoadsAsync(DeviceLocation? deviceLocation, CancellationToken cancellationToken); Task> GetLocationDataAsync(); Task> ReportBugAsync(IEnumerable> fields, IEnumerable files); Task> GetVpnConfigAsync(DeviceLocation? deviceLocation, CancellationToken cancellationToken = default); Task> GetAnnouncementsAsync(AnnouncementsRequest request); Task> GetStreamingServicesAsync(); Task> GetPartnersAsync(); Task> RequestConnectionCertificateAsync(CertificateRequest request, CancellationToken cancellationToken = default); Task> ApplyPromoCodeAsync(PromoCodeRequest promoCodeRequest); Task> ForkAuthSessionAsync(AuthForkSessionRequest request); Task> PostUnauthenticatedStatisticalEventsAsync(StatisticalEventsBatch statisticalEvents); Task> PostAuthenticatedStatisticalEventsAsync(StatisticalEventsBatch statisticalEvents); Task> GetUserAsync(CancellationToken cancellationToken = default); Task> GetIpv6FragmentsAsync(CancellationToken cancellationToken = default); Task> GetFeatureFlagsAsync(CancellationToken cancellationToken = default); Task> GetServerByNameAsync(string serverName, DeviceLocation? deviceLocation); Task> SubmitNpsSurveyAsync(NpsSurveyRequest request, DeviceLocation? deviceLocation); Task> DismissNpsSurveyAsync(DeviceLocation? deviceLocation); }