/*
* 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.Configurations.Contracts.Entities;
namespace ProtonVPN.Configurations.Contracts;
public interface IConfiguration : IStaticConfiguration
{
string ClientVersion { get; }
string ApiClientId { get; }
string UserAgent { get; }
string ApiVersion { get; }
string ServerValidationPublicKey { get; }
string GuestHoleVpnUsername { get; }
string GuestHoleVpnPassword { get; }
string VpnUsernameSuffix { get; }
string DoHVerifyApiHost { get; }
string NtpServerUrl { get; }
int MaximumProfileNameLength { get; }
long BugReportingMaxFileSize { get; }
int MaxClientLogsAttached { get; }
int MaxServiceLogsAttached { get; }
int MaxDiagnosticLogsAttached { get; }
int ApiRetries { get; }
int MaxGuestHoleRetries { get; }
decimal? DeviceRolloutProportion { get; }
bool IsCertificateValidationEnabled { get; }
TimeSpan ServiceCheckInterval { get; }
TimeSpan ClientConfigUpdateInterval { get; }
TimeSpan FeatureFlagsUpdateInterval { get; }
TimeSpan ConnectionCertificateUpdateInterval { get; }
TimeSpan ServerUpdateInterval { get; }
TimeSpan ServerLoadUpdateInterval { get; }
TimeSpan MinimumServerLoadUpdateInterval { get; }
TimeSpan AnnouncementsUpdateInterval { get; }
TimeSpan AlternativeRoutingCheckInterval { get; }
TimeSpan UpdateCheckInterval { get; }
TimeSpan ApiUploadTimeout { get; }
TimeSpan ApiTimeout { get; }
TimeSpan FailedDnsRequestTimeout { get; }
TimeSpan NewCacheTimeToLiveOnResolveError { get; }
TimeSpan DnsResolveTimeout { get; }
TimeSpan DefaultDnsTimeToLive { get; }
TimeSpan DnsOverHttpsPerProviderTimeout { get; }
TimeSpan DohClientTimeout { get; }
TimeSpan VpnStatePollingInterval { get; }
TimeSpan VpnPlanRequestInterval { get; }
TimeSpan VpnPlanMinimumRequestInterval { get; }
TimeSpan NetShieldStatisticRequestInterval { get; }
TimeSpan P2PTrafficDetectionInterval { get; }
TimeSpan StatisticalEventMinimumWaitInterval { get; }
TimeSpan StatisticalEventSendTriggerInterval { get; }
TimeSpan ServerSearchDelay { get; }
TimeSpan ConflictingAdapterCheckerDelay { get; }
IList DohProviders { get; }
IUrlsConfiguration Urls { get; }
ITlsPinningConfiguration TlsPinning { get; }
}