[versions]
aboutlibraries = "11.2.3"
acra = "5.12.0"
android-compileSdk = "35"
android-desugar = "2.1.4"
android-gradle = "8.7.3"
android-minSdk = "21"
android-targetSdk = "35"
androidx-activity = "1.9.3"
androidx-appcompat = "1.7.0"
androidx-cardview = "1.0.0"
androidx-compose-foundation = "1.7.6"
androidx-compose-ui = "1.7.6"
androidx-constraintlayout = "2.2.0"
androidx-core = "1.15.0"
androidx-fragment = "1.8.5"
androidx-leanback = "1.1.0-rc01"
androidx-lifecycle = "2.8.7"
androidx-media3 = "1.5.1"
androidx-preference = "1.2.1"
androidx-recyclerview = "1.3.2"
androidx-startup = "1.2.0"
androidx-tv = "1.0.0"
androidx-tvprovider = "1.1.0-alpha01"
androidx-window = "1.3.0"
androidx-work = "2.10.0"
coil = "3.1.0"
detekt = "1.23.7"
java-jdk = "21"
jellyfin-androidx-media = "1.5.0+1"
jellyfin-apiclient = "v0.7.10"
jellyfin-sdk = "1.6.6"
koin = "4.0.1"
koin-compose = "4.0.1"
kotest = "5.9.1"
kotlin = "2.0.21"
kotlinx-coroutines = "1.9.0"
kotlinx-serialization = "1.7.3"
markwon = "4.6.2"
mockk = "1.13.14"
slf4j-timber = "0.0.4"
timber = "5.0.1"

[plugins]
aboutlibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutlibraries" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

[libraries]
# Jellyfin
jellyfin-apiclient = { module = "com.github.jellyfin.jellyfin-sdk-kotlin:android", version.ref = "jellyfin-apiclient" }
jellyfin-sdk = { module = "org.jellyfin.sdk:jellyfin-core", version.ref = "jellyfin-sdk" }

# Kotlin
kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" }
kotlinx-coroutines-guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "kotlinx-coroutines" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }

# Android(x)
android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" }
androidx-activity = { module = "androidx.activity:activity", version.ref = "androidx-activity" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "androidx-cardview" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose-foundation" }
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose-ui" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-fragment = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" }
androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" }
androidx-leanback-core = { module = "androidx.leanback:leanback", version.ref = "androidx-leanback" }
androidx-leanback-preference = { module = "androidx.leanback:leanback-preference", version.ref = "androidx-leanback" }
androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle" }
androidx-lifecycle-service = { module = "androidx.lifecycle:lifecycle-service", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" }
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" }
androidx-preference = { module = "androidx.preference:preference-ktx", version.ref = "androidx-preference" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "androidx-recyclerview" }
androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "androidx-startup" }
androidx-tv-material = { module = "androidx.tv:tv-material", version.ref = "androidx-tv" }
androidx-tvprovider = { module = "androidx.tvprovider:tvprovider", version.ref = "androidx-tvprovider" }
androidx-window = { module = "androidx.window:window", version.ref = "androidx-window" }
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "androidx-work" }

# Dependency Injection
koin-android-compat = { module = "io.insert-koin:koin-android-compat", version.ref = "koin" }
koin-android-core = { module = "io.insert-koin:koin-android", version.ref = "koin" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin-compose" }
koin-androidx-workmanager = { module = "io.insert-koin:koin-androidx-workmanager", version.ref = "koin" }

# Media players
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" }
androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "androidx-media3" }
jellyfin-androidx-media3-ffmpeg-decoder = { group = "org.jellyfin.media3", name = "media3-ffmpeg-decoder", version.ref = "jellyfin-androidx-media" }

# Markwon
markwon-core = { module = "io.noties.markwon:core", version.ref = "markwon" }
markwon-html = { module = "io.noties.markwon:html", version.ref = "markwon" }

# Image utility
coil-core = { module = "io.coil-kt.coil3:coil-core", version.ref = "coil" }
coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" }
coil-gif = { module = "io.coil-kt.coil3:coil-gif", version.ref = "coil" }
coil-svg = { module = "io.coil-kt.coil3:coil-svg", version.ref = "coil" }

# Crash Reporting
acra-core = { module = "ch.acra:acra-core", version.ref = "acra" }
acra-toast = { module = "ch.acra:acra-toast", version.ref = "acra" }

# Libraries
aboutlibraries = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutlibraries" }

# Logging
slf4j-timber = { module = "io.github.unveloper:slf4j-timber", version.ref = "slf4j-timber" }
timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }

# Compatibility (desugaring)
android-desugar = { module = "com.android.tools:desugar_jdk_libs", version.ref = "android-desugar" }

# Test utilities
kotest-runner-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" }
kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" }
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }

[bundles]
acra = [
    "acra-core",
    "acra-toast",
]
androidx-compose = [
    "androidx-compose-foundation",
    "androidx-compose-ui-tooling",
    "androidx-tv-material"
]
androidx-lifecycle = [
    "androidx-lifecycle-process",
    "androidx-lifecycle-runtime",
    "androidx-lifecycle-service",
    "androidx-lifecycle-viewmodel",
]
coil = [
    "coil-core",
    "coil-network-okhttp",
    "coil-gif",
    "coil-svg",
]
koin = [
    "koin-android-compat",
    "koin-android-core",
    "koin-androidx-workmanager",
    "koin-androidx-compose",
]
markwon = [
    "markwon-core",
    "markwon-html",
]
