namespace Backend.Contracts;

public sealed record AdminSiteSettingsResponse(
    string HostDisplayName,
    string HostTagline,
    string NewsletterUrl,
    string PrivacyEmail,
    string PrivacyPolicyContent,
    string? PrivacyPolicyUpdatedBy,
    DateTimeOffset? PrivacyPolicyUpdatedAt,
    string ImprintUrl,
    string ImprintContent,
    string ContactUrl,
    string ContactContent,
    string SponsorsUrl,
    string SponsorsContent,
    IEnumerable<PublicSocialLinkDto> SocialLinks,
    IEnumerable<FaqItemDto> Faq);

public sealed record UpdateSiteSettingsRequest(
    string HostDisplayName,
    string HostTagline,
    string NewsletterUrl,
    string PrivacyEmail,
    string PrivacyPolicyContent,
    string ImprintUrl,
    string ImprintContent,
    string ContactUrl,
    string ContactContent,
    string SponsorsUrl,
    string SponsorsContent,
    PublicSocialLinkDto[] SocialLinks,
    FaqItemDto[] Faq);

public sealed record AdminOperationalSettingsResponse(
    bool DemoLoginManagedByDatabase,
    bool DemoLoginEnabled,
    string DemoLoginEmail,
    bool DemoLoginPasswordSet,
    string DemoLoginTwitchUserId,
    string DemoLoginDisplayName,
    bool TwitchAuthManagedByDatabase,
    bool TwitchAuthConfigured,
    string TwitchClientId,
    bool TwitchClientSecretSet,
    string TwitchRedirectUri,
    string TwitchScope,
    bool MaintenanceModeEnabled,
    string MaintenanceTitle,
    string MaintenanceMessage);

public sealed record UpdateOperationalSettingsRequest(
    bool DemoLoginEnabled,
    string DemoLoginEmail,
    string? DemoLoginPassword,
    string DemoLoginTwitchUserId,
    string DemoLoginDisplayName,
    string TwitchClientId,
    string? TwitchClientSecret,
    string TwitchRedirectUri,
    string TwitchScope,
    bool MaintenanceModeEnabled,
    string MaintenanceTitle,
    string MaintenanceMessage);
