/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

package ca.gosyer.jui.domain.settings.model

import androidx.compose.runtime.Stable

@Stable
class Settings(
    val authMode: AuthMode,
    val authPassword: String,
    val authUsername: String,
    val autoDownloadIgnoreReUploads: Boolean,
    val autoDownloadNewChapters: Boolean,
    val autoDownloadNewChaptersLimit: Int,
    val backupInterval: Int,
    val backupPath: String,
    val backupTTL: Int,
    val backupTime: String,
    val databasePassword: String,
    val databaseType: DatabaseType,
    val databaseUrl: String,
    val databaseUsername: String,
    val debugLogsEnabled: Boolean,
    val downloadAsCbz: Boolean,
    val downloadConversions: List<DownloadConversion>,
    val downloadsPath: String,
    val electronPath: String,
    val excludeCompleted: Boolean,
    val excludeEntryWithUnreadChapters: Boolean,
    val excludeNotStarted: Boolean,
    val excludeUnreadChapters: Boolean,
    val extensionRepos: List<String>,
    val flareSolverrAsResponseFallback: Boolean,
    val flareSolverrEnabled: Boolean,
    val flareSolverrSessionName: String,
    val flareSolverrSessionTtl: Int,
    val flareSolverrTimeout: Int,
    val flareSolverrUrl: String,
    val globalUpdateInterval: Double,
    val initialOpenInBrowserEnabled: Boolean,
    val ip: String,
    val jwtAudience: String,
    val jwtRefreshExpiry: Any,
    val jwtTokenExpiry: Any,
    val koreaderSyncChecksumMethod: KoreaderSyncChecksumMethod,
    val koreaderSyncDeviceId: String,
    val koreaderSyncPercentageTolerance: Double,
    val koreaderSyncServerUrl: String,
    val koreaderSyncStrategyBackward: KoreaderSyncConflictStrategy,
    val koreaderSyncStrategyForward: KoreaderSyncConflictStrategy,
    val koreaderSyncUserkey: String,
    val koreaderSyncUsername: String,
    val localSourcePath: String,
    val maxLogFileSize: String,
    val maxLogFiles: Int,
    val maxLogFolderSize: String,
    val maxSourcesInParallel: Int,
    val opdsChapterSortOrder: SortOrder,
    val opdsEnablePageReadProgress: Boolean,
    val opdsItemsPerPage: Int,
    val opdsMarkAsReadOnDownload: Boolean,
    val opdsShowOnlyDownloadedChapters: Boolean,
    val opdsShowOnlyUnreadChapters: Boolean,
    val opdsUseBinaryFileSizes: Boolean,
    val port: Int,
    val socksProxyEnabled: Boolean,
    val socksProxyHost: String,
    val socksProxyPassword: String,
    val socksProxyPort: String,
    val socksProxyUsername: String,
    val socksProxyVersion: Int,
    val systemTrayEnabled: Boolean,
    val updateMangas: Boolean,
    val webUIChannel: WebUIChannel,
    val webUIFlavor: WebUIFlavor,
    val webUIInterface: WebUIInterface,
    val webUIUpdateCheckInterval: Double,
)
