/* * Copyright (c) 2025 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 ProtonVPN.Client.Logic.Servers.Contracts.Enums; using ProtonVPN.Client.Logic.Servers.Contracts.Models; namespace ProtonVPN.Client.Logic.Servers.Contracts; public interface IServersLoader { int GetServerCount(); int GetCountryCount(); Server? GetById(string serverId); IEnumerable GetFreeCountries(); IEnumerable GetCountries(); IEnumerable GetCountriesByFeatures(ServerFeatures serverFeatures); bool HasAnyCountries(); IEnumerable GetStates(); IEnumerable GetStatesByCountryCode(string countryCode); IEnumerable GetStatesByFeatures(ServerFeatures serverFeatures); IEnumerable GetStatesByFeaturesAndCountryCode(ServerFeatures serverFeatures, string countryCode); IEnumerable GetCities(); IEnumerable GetCitiesByCountryCode(string countryCode); IEnumerable GetCitiesByState(State state); IEnumerable GetCitiesByFeatures(ServerFeatures serverFeatures); IEnumerable GetCitiesByFeaturesAndCountryCode(ServerFeatures serverFeatures, string countryCode); IEnumerable GetCitiesByFeaturesAndState(ServerFeatures serverFeatures, State state); IEnumerable GetServers(); IEnumerable GetFreeServers(); IEnumerable GetFreeServersByFeatures(ServerFeatures serverFeatures); IEnumerable GetServersByState(State state); IEnumerable GetServersByCity(City city); IEnumerable GetServersByFeatures(ServerFeatures serverFeatures); IEnumerable GetServersByFeaturesAndCountryCode(ServerFeatures serverFeatures, string countryCode); IEnumerable GetServersByFeaturesAndState(ServerFeatures serverFeatures, State state); IEnumerable GetServersByFeaturesAndCity(ServerFeatures serverFeatures, City city); IEnumerable GetSecureCoreCountryPairs(); IEnumerable GetSecureCoreCountryPairsByExitCountryCode(string exitCountryCode); IEnumerable GetServersBySecureCoreCountryPair(SecureCoreCountryPair countryPair); IEnumerable GetGateways(); IEnumerable GetServersByGatewayName(string gatewayName); bool HasAnyGateways(); }