using System; using System.Collections.Generic; using BTCPayServer.Client.JsonConverters; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; namespace BTCPayServer.Client.Models { public abstract class StoreBaseData { /// /// the name of the store /// public string Name { get; set; } public string Website { get; set; } [JsonConverter(typeof(TimeSpanJsonConverter))] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public TimeSpan InvoiceExpiration { get; set; } = TimeSpan.FromMinutes(15); [JsonConverter(typeof(TimeSpanJsonConverter))] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public TimeSpan MonitoringExpiration { get; set; } = TimeSpan.FromMinutes(60); [JsonConverter(typeof(StringEnumConverter))] public SpeedPolicy SpeedPolicy { get; set; } public string LightningDescriptionTemplate { get; set; } public double PaymentTolerance { get; set; } = 0; public bool AnyoneCanCreateInvoice { get; set; } [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public bool ShowRecommendedFee { get; set; } = true; [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public int RecommendedFeeBlockTarget { get; set; } = 1; [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string DefaultLang { get; set; } = "en"; public bool LightningAmountInSatoshi { get; set; } public string CustomLogo { get; set; } public string CustomCSS { get; set; } public string HtmlTitle { get; set; } public bool RedirectAutomatically { get; set; } public bool RequiresRefundEmail { get; set; } [JsonConverter(typeof(StringEnumConverter))] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public NetworkFeeMode NetworkFeeMode { get; set; } = NetworkFeeMode.Never; public bool PayJoinEnabled { get; set; } public bool LightningPrivateRouteHints { get; set; } [JsonExtensionData] public IDictionary AdditionalData { get; set; } } public enum NetworkFeeMode { MultiplePaymentsOnly, Always, Never } public enum SpeedPolicy { HighSpeed = 0, MediumSpeed = 1, LowSpeed = 2, LowMediumSpeed = 3 } }