[versions]
app = "1.0.1"
jvm = "21"
androidx-lifecycle = "2.9.6"
composeHotReload = "1.0.0"
compose-plugin = "1.11.0-alpha01"
junit = "4.13.2"
kotlin = "2.3.0"
kotlinx-coroutines = "1.10.2"
material3 = "1.11.0-alpha01"
serialization = "1.9.0"
cryptoRand = "0.6.0"
curve25519Kotlin = "0.0.8"
koin = "4.2.0-beta2"
ktor = "3.3.3"
conveyor = "1.13"
ksp = "2.3.0"
desktopJvm = "1.11.0-alpha01"
jnaPlatform = "5.18.1"
buildconfig = "6.0.7"
retry = "2.0.2"
aboutLibraries = "14.0.0-b01"
ktfmt = "0.25.0"
licensee = "1.14.1"
compose-multiplatform-lifecycle = "2.10.0-alpha07"
orbitCompose = "11.0.0"
sonner = "0.3.9"
materialKolor = "4.1.1"
nativeTray = "1.1.0"
mps = "1.3.0"

# Files
kmpIo = "0.3.0"
filekit = "0.13.0"

# UI
localina = "1.0.0-alpha3"
materialIcons = "1.7.3"
navigation3 = "1.1.0-alpha01"
reorderable = "3.0.0"
nucleus = "1.4.7"

# Logging
logbackClassic = "1.5.24"
kermit = "2.0.8"

picocli = "4.7.7"

androidx-room = "2.8.4"
androidx-sqlite = "2.6.2"

lang3 = "3.20.0"

[bundles]
ktor-client-jvm = ["ktor-client-core-jvm", "ktor-client-cio-jvm", "ktor-client-content-negotiation-jvm", "ktor-serialization-json-jvm", "ktor-client-okhttp", "ktor-client-websockets-jvm"]
ktor-server-jvm = ["ktor-server-cio-jvm", "ktor-serialization-json-jvm", "ktor-server-content-negotiation-jvm", "ktor-server-core-jvm", "ktor-server-websockets-jvm", "ktor-server-double-receive", "ktor-server-host-common", "ktor-server-status-pages"]

# UI
navigation3 = ["androidx-navigation3-runtime", "jetbrains-navigation3-ui"]
jetbrains-lifecycle = ["jetbrains-lifecycle-viewmodel-navigation3", "jetbrains-lifecycle-viewmodel-compose", "jetbrains-lifecycle-runtime-compose"]
compose-icons = ["compose-material-icons-core", "compose-material-icons-extended"]
filekit = [ "filekit-core", "filekit-dialogs", "filekit-dialogs-compose" ]
orbit-mvi = ["orbit-compose", "orbit-viewmodel", "orbit-core"]

nucleus = [ "nucleus-darkmode-detector", "nucleus-decorated-window-jni", "nucleus-decorated-window-matrial", "nucleus-linux-hidpi", "nucleus-system-color", "nucleus-enery-manager" ]

[libraries]
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
kotlin-testJunit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" }
junit = { module = "junit:junit", version.ref = "junit" }
androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-plugin" }
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-plugin" }
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-plugin" }
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose-plugin" }
compose-uiToolingPreview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose-plugin" }
kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }

# Serialization
kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" }
kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "serialization" }

# cryto
crypto-rand = { module = "org.kotlincrypto.random:crypto-rand", version.ref = "cryptoRand" }
curve25519-kotlin = { module = "io.github.andreypfau:curve25519-kotlin", version.ref = "curve25519Kotlin" }

# DI
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" }

# Targets
desktop-jvm-linux-x64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-linux-x64", version.ref = "desktopJvm" }
desktop-jvm-macos-arm64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-macos-arm64", version.ref = "desktopJvm" }
desktop-jvm-macos-x64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-macos-x64", version.ref = "desktopJvm" }
desktop-jvm-windows-x64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-windows-x64", version.ref = "desktopJvm" }
desktop-jvm-windows-arm64 = { module = "org.jetbrains.compose.desktop:desktop-jvm-windows-arm64", version.ref = "desktopJvm" }

# Ktor Server
ktor-server-core-jvm = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" }
ktor-server-cio-jvm = { module = "io.ktor:ktor-server-cio-jvm", version.ref = "ktor" }
ktor-server-content-negotiation-jvm = { module = "io.ktor:ktor-server-content-negotiation-jvm", version.ref = "ktor" }
ktor-server-websockets-jvm = { module = "io.ktor:ktor-server-websockets-jvm", version.ref = "ktor" }
ktor-server-double-receive = { module = "io.ktor:ktor-server-double-receive", version.ref = "ktor" }
ktor-server-host-common = { module = "io.ktor:ktor-server-host-common", version.ref = "ktor" }
ktor-server-status-pages = { module = "io.ktor:ktor-server-status-pages", version.ref = "ktor" }

# Ktor Client
ktor-client-core-jvm = { module = "io.ktor:ktor-client-core-jvm", version.ref = "ktor" }
ktor-client-cio-jvm = { module = "io.ktor:ktor-client-cio-jvm", version.ref = "ktor" }
ktor-client-content-negotiation-jvm = { module = "io.ktor:ktor-client-content-negotiation-jvm", version.ref = "ktor" }
ktor-serialization-json-jvm = { module = "io.ktor:ktor-serialization-kotlinx-json-jvm", version.ref = "ktor" }
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
ktor-client-websockets-jvm = { module = "io.ktor:ktor-client-websockets-jvm", version.ref = "ktor" }

# Coroutines
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }

# Logging
kermit = { module = "co.touchlab:kermit", version.ref = "kermit" }
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logbackClassic" }

# CLI
picocli = { module = "info.picocli:picocli", version.ref = "picocli" }
picocli-codegen = { module = "info.picocli:picocli-codegen", version.ref = "picocli" }

jna-platform = { module = "net.java.dev.jna:jna-platform", version.ref = "jnaPlatform" }

# Storage
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room" }
androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "androidx-sqlite" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room" }

# Util
apache-commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "lang3" }
kotlin-retry = { module = "com.michael-bull.kotlin-retry:kotlin-retry", version.ref = "retry" }

# Localization
localina = { module = "io.github.sudarshanmhasrup.localina:localina", version.ref = "localina" }

# Licenses
aboutlibraries-core = { module = "com.mikepenz:aboutlibraries-core", version.ref = "aboutLibraries" }
aboutlibraries-compose-core = { module = "com.mikepenz:aboutlibraries-compose-core", version.ref = "aboutLibraries" }
aboutlibraries-compose-m3 = { module = "com.mikepenz:aboutlibraries-compose-m3", version.ref = "aboutLibraries" }

# Lifecyle
jetbrains-lifecycle-viewmodel-navigation3 = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "compose-multiplatform-lifecycle" }
jetbrains-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "compose-multiplatform-lifecycle" }
jetbrains-lifecycle-runtime-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "compose-multiplatform-lifecycle" }

# UI
sonner = { module = "io.github.dokar3:sonner", version.ref = "sonner" }
material-kolor = { module = "com.materialkolor:material-kolor", version.ref = "materialKolor" }
reorderable = { module = "sh.calvin.reorderable:reorderable", version.ref = "reorderable" }
compose-native-tray = { module = "io.github.kdroidfilter:composenativetray", version.ref = "nativeTray" }

# Nucleus
nucleus-decorated-window-jni = { module = "io.github.kdroidfilter:nucleus.decorated-window-jni", version.ref = "nucleus" }
nucleus-decorated-window-matrial = { module = "io.github.kdroidfilter:nucleus.decorated-window-material", version.ref = "nucleus" }
nucleus-linux-hidpi = { module = "io.github.kdroidfilter:nucleus.linux-hidpi", version.ref = "nucleus" }
nucleus-system-color = { module = "io.github.kdroidfilter:nucleus.system-color", version.ref = "nucleus" }
nucleus-darkmode-detector = { module = "io.github.kdroidfilter:nucleus.darkmode-detector", version.ref = "nucleus" }
nucleus-enery-manager = { module = "io.github.kdroidfilter:nucleus.energy-manager", version.ref = "nucleus" }

# Icons
compose-material-icons-core = { group = "org.jetbrains.compose.material", name = "material-icons-core", version.ref = "materialIcons" }
compose-material-icons-extended = { group = "org.jetbrains.compose.material", name = "material-icons-extended", version.ref = "materialIcons" }

# Orbit
orbit-compose = { module = "org.orbit-mvi:orbit-compose", version.ref = "orbitCompose" }
orbit-core = { module = "org.orbit-mvi:orbit-core", version.ref = "orbitCompose" }
orbit-viewmodel = { module = "org.orbit-mvi:orbit-viewmodel", version.ref = "orbitCompose" }

# Nav
androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "navigation3" }
jetbrains-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "navigation3" }

# Files
kmp-io = { module = "io.github.skolson:kmp-io", version.ref = "kmpIo" }
filekit-core = { module = "io.github.vinceglb:filekit-core", version.ref = "filekit" }
filekit-dialogs = { module = "io.github.vinceglb:filekit-dialogs", version.ref = "filekit" }
filekit-dialogs-compose = { module = "io.github.vinceglb:filekit-dialogs-compose", version.ref = "filekit" }

multiplatform-settings = { module = "com.russhwolf:multiplatform-settings", version.ref = "mps" }


[plugins]
composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload" }
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "ksp" }
conveyor = { id = "dev.hydraulic.conveyor",  version.ref =  "conveyor" }
room = { id = "androidx.room", version.ref = "androidx-room" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
buildconfig = { id = "com.github.gmazzo.buildconfig", version.ref = "buildconfig"}
ktfmt = { id = "com.ncorti.ktfmt.gradle", version.ref = "ktfmt" }
licensee = { id = "app.cash.licensee", version.ref = "licensee" }
aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "aboutLibraries" }
resources = { id = "org.jetbrains.compose.resources", version.ref = "kotlin" }
