[versions]
# AGP
android-gradle-plugin = "9.2.1" # Keep lint version in sync
android-lint = "32.2.1"

# Kotlin
coroutines = "1.11.0"
kotlin = "2.4.0"
serialization = "1.11.0"

# AndroidX
activity = "1.13.0"
annotation = "1.10.0"
annotation-experimental = "1.6.0"
appcompat = "1.7.1"
arch = "2.2.0"
autofill = "1.3.0"
benchmark = "1.4.1"
biometric = "1.1.0"
browser = "1.10.0"
cardview = "1.0.0"
collection = "1.6.0"
compose-bom = "2026.06.01"
concurrent = "1.3.0"
constraintlayout = "2.2.1"
constraintlayout-compose = "1.1.1"
coordinatorlayout = "1.3.0"
core = "1.19.0"
core-splashscreen = "1.2.0"
datastore = "1.2.1"
datastore-core = "1.2.1"
documentfile = "1.1.0"
drawerlayout = "1.2.0"
emoji2 = "1.6.0"
exifinterface = "1.4.2"
fragment = "1.8.9"
lifecycle = "2.11.0"
media = "1.7.1"
media3 = "1.10.1"
navigation = "2.9.8"
navigation3 = "1.1.2"
paging = "3.5.0"
palette = "1.0.0"
preference = "1.2.1"
profileinstaller = "1.4.1"
recyclerview = "1.4.0"
room = "2.8.4"
savedstate = "1.5.0"
startup = "1.2.0"
swiperefreshlayout = "1.2.0"
transition = "1.7.0"
viewpager2 = "1.1.0"
window = "1.5.1"
work = "2.11.2"

# Google other
accompanist = "0.37.3"
firebase-messaging = "25.0.2"
installreferrer = "2.2"
ksp = "2.3.9"
material = "1.14.0"
mlkit-prompt = "1.0.0-beta2"
osslicenses-plugin = "0.12.0"
play-integrity = "1.6.0"
play-review = "2.0.2"
play-services-ads-id = "18.3.0"
play-services-base = "18.10.0"
play-services-fido = "21.3.0"
protobuf = "4.35.0" # Keep Protobuf in sync with the version used by AppServices.

# Gradle plugins
dependency-analysis = "3.12.0"
jacoco = "0.8.15"
kaml = "0.104.0"
protobuf-plugin = "0.10.0"
python-envs-plugin = "0.0.31"
semanticdb-javac = "0.12.0"
semanticdb-kotlinc = "0.10.0"
tomlj = "1.1.1"

# Linters
androidx-lint = "1.0.0"
detekt = "1.23.8"
google-java-format = "1.28.0"
ktlint = "1.8.0"
spotless = "8.8.0"

# Mozilla
glean = "68.0.1"

# Testing libraries
androidx-test = "1.7.0"
androidx-test-espresso = "3.7.0"
androidx-test-ext = "1.3.0"
androidx-test-monitor = "1.8.0"
androidx-test-orchestrator = "1.6.1"
androidx-test-runner = "1.7.0"
androidx-test-uiautomator = "2.4.0"
hamcrest = "2.2"
junit4 = "4.13.2"
junit6 = "6.1.1"
leakcanary = "2.14"
mockito = "5.23.0"
mockk = "1.14.11"
robolectric = "4.16.1"

# Third party libraries
adjust = "5.7.0"
androidsvg = "1.4"
disklrucache = "2.0.2"
jetbrains-markdown = "0.7.3"
jna = "5.18.1"
json = "20260522"
jsoup = "1.22.2"
lottie = "6.7.1"
okhttp = "5.4.0"
okio = "3.17.0"
sentry = "8.47.0"
zxing = "3.5.4"

[libraries]
# AGP
android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" }

# Kotlin
kotlin-annotations-jvm = { module = "org.jetbrains.kotlin:kotlin-annotations-jvm", version.ref = "kotlin" }
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
kotlin-serialization = { module = "org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin", version.ref = "kotlin" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" }
kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
kotlinx-coroutines-play-services = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "coroutines" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }

# AndroidX
androidx-activity = { module = "androidx.activity:activity", version.ref = "activity" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity" }
androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" }
androidx-annotation-experimental = { module = "androidx.annotation:annotation-experimental", version.ref = "annotation-experimental" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
androidx-arch-core-common = { module = "androidx.arch.core:core-common", version.ref = "arch" }
androidx-arch-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "arch" }
androidx-autofill = { module = "androidx.autofill:autofill", version.ref = "autofill" }
androidx-benchmark-gradle = { module = "androidx.benchmark:benchmark-gradle-plugin", version.ref = "benchmark" }
androidx-benchmark-junit4 = { module = "androidx.benchmark:benchmark-junit4", version.ref = "benchmark" }
androidx-benchmark-macro-junit4 = { module = "androidx.benchmark:benchmark-macro-junit4", version.ref = "benchmark" }
androidx-biometric = { module = "androidx.biometric:biometric", version.ref = "biometric" }
androidx-browser = { module = "androidx.browser:browser", version.ref = "browser" }
androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "cardview" }
androidx-collection = { module = "androidx.collection:collection", version.ref = "collection" }
androidx-concurrent = { module = "androidx.concurrent:concurrent-futures-ktx", version.ref = "concurrent" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "constraintlayout-compose" }
androidx-coordinatorlayout = { module = "androidx.coordinatorlayout:coordinatorlayout", version.ref = "coordinatorlayout" }
androidx-core = { module = "androidx.core:core", version.ref = "core" }
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "core-splashscreen" }
androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
androidx-datastore-core = { group = "androidx.datastore", name = "datastore-core", version.ref = "datastore-core" }
androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
androidx-documentfile = { module = "androidx.documentfile:documentfile", version.ref = "documentfile" }
androidx-drawerlayout = { module = "androidx.drawerlayout:drawerlayout", version.ref = "drawerlayout" }
androidx-emoji2 = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" }
androidx-exifinterface = { module = "androidx.exifinterface:exifinterface", version.ref = "exifinterface" }
androidx-fragment = { module = "androidx.fragment:fragment", version.ref = "fragment" }
androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "fragment" }
androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment" }
androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "fragment" }
androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref = "lifecycle" }
androidx-lifecycle-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" }
androidx-lifecycle-livedata = { module = "androidx.lifecycle:lifecycle-livedata", version.ref = "lifecycle" }
androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "lifecycle" }
androidx-lifecycle-runtime-testing = { module = "androidx.lifecycle:lifecycle-runtime-testing", version.ref = "lifecycle" }
androidx-lifecycle-service = { module = "androidx.lifecycle:lifecycle-service", version.ref = "lifecycle" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "lifecycle" }
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle" }
androidx-media = { module = "androidx.media:media", version.ref = "media" }
androidx-media3-common = { module = "androidx.media3:media3-common", version.ref = "media3" }
androidx-media3-datasource = { module = "androidx.media3:media3-datasource", version.ref = "media3" }
androidx-media3-decoder = { module = "androidx.media3:media3-decoder", version.ref = "media3" }
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
androidx-media3-exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "media3" }
androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigation" }
androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "navigation" }
androidx-navigation-safeargs = { module = "androidx.navigation:navigation-safe-args-gradle-plugin", version.ref = "navigation" }
androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "navigation" }
androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "navigation3" }
androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" }
androidx-paging = { module = "androidx.paging:paging-runtime", version.ref = "paging" }
androidx-palette = { module = "androidx.palette:palette-ktx", version.ref = "palette" }
androidx-preference = { module = "androidx.preference:preference", version.ref = "preference" }
androidx-profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version.ref = "profileinstaller" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
androidx-room-runtime = { module = "androidx.room:room-ktx", version.ref = "room" }
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "room" }
androidx-savedstate = { module = "androidx.savedstate:savedstate", version.ref = "savedstate" }
androidx-startup-runtime = { module = "androidx.startup:startup-runtime", version.ref = "startup" }
androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
androidx-transition = { module = "androidx.transition:transition", version.ref = "transition" }
androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version.ref = "viewpager2" }
androidx-window-core = { module = "androidx.window:window-core", version.ref = "window" }
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "work" }
androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "work" }

# AndroidX Compose
androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "compose-bom" }
androidx-compose-animation = { module = "androidx.compose.animation:animation" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-material-icons = { module = "androidx.compose.material:material-icons-core" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive" }
androidx-compose-material3-adaptivelayout = { module = "androidx.compose.material3.adaptive:adaptive-layout" }
androidx-compose-material3-adaptivenavigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation" }
androidx-compose-material3-adaptivenavigationsuite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" }
androidx-compose-material3-windowsizeclass = { module = "androidx.compose.material3:material3-window-size-class" }
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
androidx-compose-runtime-saveable = { module = "androidx.compose.runtime:runtime-saveable" }
androidx-compose-ui = { module = "androidx.compose.ui:ui" }
androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" }
androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test-junit4" }
androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" }
androidx-compose-ui-text-android = { module = "androidx.compose.ui:ui-text-android" }
androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }

# Google other
accompanist-drawablepainter = { module = "com.google.accompanist:accompanist-drawablepainter", version.ref = "accompanist" }
firebase-messaging = { module = "com.google.firebase:firebase-messaging", version.ref = "firebase-messaging" }
google-material = { module = "com.google.android.material:material", version.ref = "material" }
installreferrer = { module = "com.android.installreferrer:installreferrer", version.ref = "installreferrer" }
ksp-symbol-processing-aa = { module = "com.google.devtools.ksp:symbol-processing-aa", version.ref = "ksp" }
ksp-symbol-processing-aa-embeddable = { module = "com.google.devtools.ksp:symbol-processing-aa-embeddable", version.ref = "ksp" }
ksp-symbol-processing-api = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" }
ksp-symbol-processing-common-deps = { module = "com.google.devtools.ksp:symbol-processing-common-deps", version.ref = "ksp" }
mlkit-prompt = { module = "com.google.mlkit:genai-prompt", version.ref = "mlkit-prompt" }
osslicenses-plugin = { module = "com.google.android.gms:oss-licenses-plugin", version.ref = "osslicenses-plugin" }
play-integrity = { module = "com.google.android.play:integrity", version.ref = "play-integrity" }
play-review = { module = "com.google.android.play:review", version.ref = "play-review" }
play-review-ktx = { module = "com.google.android.play:review-ktx", version.ref = "play-review" }
play-services-ads-id = { module = "com.google.android.gms:play-services-ads-identifier", version.ref = "play-services-ads-id" }
play-services-base = { module = "com.google.android.gms:play-services-base", version.ref = "play-services-base" }
play-services-fido = { module = "com.google.android.gms:play-services-fido", version.ref = "play-services-fido" }
protobuf-compiler = { module = "com.google.protobuf:protoc", version.ref = "protobuf" }
protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf" }

# Gradle plugins
kaml = { module = "com.charleskorn.kaml:kaml", version.ref = "kaml" }
semanticdb-java = { module = "com.sourcegraph:semanticdb-javac", version.ref = "semanticdb-javac" }
semanticdb-kotlin = { module = "com.github.mozsearch.semanticdb-kotlinc:semanticdb-kotlinc", version.ref = "semanticdb-kotlinc" }
tomlj = { module = "org.tomlj:tomlj", version.ref = "tomlj" }

# Linters
android-lint = { module = "com.android.tools.lint:lint", version.ref = "android-lint" }
android-lint-api = { module = "com.android.tools.lint:lint-api", version.ref = "android-lint" }
android-lint-checks = { module = "com.android.tools.lint:lint-checks", version.ref = "android-lint" }
android-lint-tests = { module = "com.android.tools.lint:lint-tests", version.ref = "android-lint" }
androidx-lint = { module = "androidx.lint:lint-gradle", version.ref = "androidx-lint" }
detekt-api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = "detekt" }
detekt-cli = { module = "io.gitlab.arturbosch.detekt:detekt-cli", version.ref = "detekt" }
detekt-test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version.ref = "detekt" }
google-java-format = { module = "com.google.googlejavaformat:google-java-format", version.ref = "google-java-format" }
ktlint = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" }

# Mozilla
mozilla-glean = { module = "org.mozilla.telemetry:glean", version.ref = "glean" }
mozilla-glean-forUnitTests = { module = "org.mozilla.telemetry:glean-native-forUnitTests", version.ref = "glean" }
mozilla-glean-gradle-plugin = { module = "org.mozilla.telemetry:glean-gradle-plugin", version.ref = "glean" }

# Testing libraries
androidx-test-core = { module = "androidx.test:core-ktx", version.ref = "androidx-test" }
androidx-test-espresso-contrib = { module = "androidx.test.espresso:espresso-contrib", version.ref = "androidx-test-espresso" }
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" }
androidx-test-espresso-idling-resource = { module = "androidx.test.espresso:espresso-idling-resource", version.ref = "androidx-test-espresso" }
androidx-test-espresso-intents = { module = "androidx.test.espresso:espresso-intents", version.ref = "androidx-test-espresso" }
androidx-test-espresso-web = { module = "androidx.test.espresso:espresso-web", version.ref = "androidx-test-espresso" }
androidx-test-junit = { module = "androidx.test.ext:junit-ktx", version.ref = "androidx-test-ext" }
androidx-test-monitor = { module = "androidx.test:monitor", version.ref = "androidx-test-monitor" }
androidx-test-orchestrator = { module = "androidx.test:orchestrator", version.ref = "androidx-test-orchestrator" }
androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" }
androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" }
androidx-test-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "androidx-test-uiautomator" }
hamcrest-core = { module = "org.hamcrest:hamcrest-core", version.ref = "hamcrest" }
hamcrest-library = { module = "org.hamcrest:hamcrest-library", version.ref = "hamcrest" }
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit6" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter" }
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" }
junit-vintage = { module = "org.junit.vintage:junit-vintage-engine" }
junit4 = { module = "junit:junit", version.ref = "junit4" }
leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" }
leakcanary-instrumentation = { module = "com.squareup.leakcanary:leakcanary-android-instrumentation", version.ref = "leakcanary" }
mockito = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockk" }
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }

# Third party libraries
adjust = { module = "com.adjust.sdk:adjust-android", version.ref = "adjust" }
androidsvg = { module = "com.caverock:androidsvg-aar", version.ref = "androidsvg" }
disklrucache = { module = "com.jakewharton:disklrucache", version.ref = "disklrucache" }
jetbrains-markdown = { module = "org.jetbrains:markdown", version.ref = "jetbrains-markdown" }
jna = { module = "net.java.dev.jna:jna", version.ref = "jna" }
json = { module = "org.json:json", version.ref = "json" }
jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
lottie-compose = { module = "com.airbnb.android:lottie-compose", version.ref = "lottie" }
mockwebserver = { module = "com.squareup.okhttp3:mockwebserver3", version.ref = "okhttp" }
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okhttp-urlconnection = { module = "com.squareup.okhttp3:okhttp-urlconnection", version.ref = "okhttp" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
sentry = { module = "io.sentry:sentry-android-core", version.ref = "sentry" }
zxing = { module = "com.google.zxing:core", version.ref = "zxing" }

[plugins]
android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
android-lint-plugin = { id = "com.android.lint", version.ref = "android-gradle-plugin" }
# No version: supplied by the buildscript classpath, which the plugins DSL must not version-check.
androidx-safeargs = { id = "androidx.navigation.safeargs.kotlin" }
dependency-analysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependency-analysis" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
# No version: bundled in the Kotlin Gradle plugin classpath, which the plugins DSL must not version-check.
kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
protobuf-plugin = { id = "com.google.protobuf", version.ref = "protobuf-plugin" }
python-envs-plugin = { id = "com.jetbrains.python.envs", version.ref = "python-envs-plugin" }
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
