[versions] # SDK versions compileSdk = "37" minSdk = "28" # Kotlin & Compose kotlin = "2.3.21" ksp = "2.3.6" compose = "1.11.2" composeMaterial3 = "1.4.0" # AndroidX lifecycle = "2.10.0" appcompat = "1.7.1" constraintlayout = "2.2.1" coreKtx = "1.18.0" room = "2.8.4" work = "2.11.2" biometric = "1.1.0" credentials = "1.6.0" preference = "1.2.1" swiperefreshlayout = "1.2.0" splashscreen = "1.2.0" glance = "1.1.1" recyclerview = "1.4.0" browser = "1.10.0" activityCompose = "1.13.0" # Google material = "1.14.0" accompanist = "0.36.0" accompanistPermissions = "0.37.3" gson = "2.14.0" # Networking retrofit = "3.0.0" okhttp = "5.3.2" # Rx # Coroutines coroutines = "1.11.0" # Image loading coil = "2.7.0" # Logging timber = "5.0.1" leakcanary = "2.14" # Markdown commonmark = "0.17.0" markwon = "4.6.2" # QR zxing = "4.3.0" qrose = "1.1.2" # Reown (WalletConnect) reownBom = "1.6.13" # Web3 # Do not upgrade above 4.9.x: web3j dropped Android support after 4.9.x, so # newer releases may freely use Java APIs missing on older Android. Known # breakage: since 4.12.1 TypeDecoder calls BigInteger(int, byte[], int, int), # which exists only from API 33 -> NoSuchMethodError when decoding # transactions on Android <= 12. 4.9.8 is also what ethereumkit pins. web3j = "4.9.8" unstoppableDomains = "v7.1.0" # Wallet Kits moneroKit = "ccd6dd8b" zanoKit = "a1a207d" stellarKit = "4ecccc5" tonKit = "947c48a" bitcoinKit = "607354b" hdWalletKit = "a74b51f3" ethereumKit = "56b8874" feeRateKit = "393cc14" marketKit = "46c3360" solanaKit = "f46029e" tronKit = "4033245" thorchainKit = "9de6579" zcashSdk = "2.7.0-rc.4" # Binance binanceConnector = "3.4.1" # BouncyCastle bouncycastle = "1.70" # Ktor (for TonKit) ktor = "2.3.7" # Desugar desugar = "2.1.5" # Tor torAndroid = "0.4.9.8" jtorctl = "0.4.5.7" # Utils circleindicator = "2.1.6" twitterText = "3.1.0" androidShell = "1.0.0" portmapper = "2.0.6" # Startup startup = "1.2.0" # Billing billing = "9.0.0" # Testing junit = "4.13.2" classgraph = "4.8.181" junitExt = "1.3.0" archCoreTesting = "2.2.0" mockito = "5.23.0" mockitoKotlin = "1.6.0" powermock = "2.0.9" spek = "2.0.19" espresso = "3.7.0" testRunner = "1.7.0" # AGP agp = "9.4.0" # Nav 3 nav3Core = "1.1.2" lifecycleViewmodelNav3 = "2.10.0" kotlinSerialization = "2.3.21" kotlinxSerializationCore = "1.11.0" material3AdaptiveNav3 = "1.3.0-beta02" [libraries] # Core Navigation 3 libraries androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" } androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "nav3Core" } # Optional add-on libraries androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNav3" } kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerializationCore" } androidx-material3-adaptive-navigation3 = { group = "androidx.compose.material3.adaptive", name = "adaptive-navigation3", version.ref = "material3AdaptiveNav3" } # AndroidX Core androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" } androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preference" } androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" } androidx-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "splashscreen" } androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "glance" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } androidx-browser = { module = "androidx.browser:browser", version.ref = "browser" } androidx-biometric = { module = "androidx.biometric:biometric", version.ref = "biometric" } androidx-credentials = { module = "androidx.credentials:credentials", version.ref = "credentials" } androidx-credentials-play-services-auth = { module = "androidx.credentials:credentials-play-services-auth", version.ref = "credentials" } # Lifecycle androidx-lifecycle-extensions = { module = "androidx.lifecycle:lifecycle-extensions", version = "2.2.0" } androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" } androidx-lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" } androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" } androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" } androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "lifecycle" } androidx-lifecycle-reactivestreams-ktx = { module = "androidx.lifecycle:lifecycle-reactivestreams-ktx", version.ref = "lifecycle" } androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle" } androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" } # Room androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } # WorkManager androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "work" } # Compose androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" } androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "compose" } androidx-compose-animation = { module = "androidx.compose.animation:animation", version.ref = "compose" } androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" } androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "compose" } androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "composeMaterial3" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose" } # Google Material google-material = { module = "com.google.android.material:material", version.ref = "material" } # Accompanist accompanist-appcompat-theme = { module = "com.google.accompanist:accompanist-appcompat-theme", version.ref = "accompanist" } accompanist-flowlayout = { module = "com.google.accompanist:accompanist-flowlayout", version.ref = "accompanist" } accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanistPermissions" } # Networking retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" } retrofit-converter-scalars = { module = "com.squareup.retrofit2:converter-scalars", version.ref = "retrofit" } okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" } gson = { module = "com.google.code.gson:gson", version.ref = "gson" } # Rx # Coroutines kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } # Image loading coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } coil-svg = { module = "io.coil-kt:coil-svg", version.ref = "coil" } coil-gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" } # Logging timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" } leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } # Markdown commonmark = { module = "com.atlassian.commonmark:commonmark", version.ref = "commonmark" } markwon = { module = "io.noties.markwon:core", version.ref = "markwon" } # QR zxing = { module = "com.journeyapps:zxing-android-embedded", version.ref = "zxing" } qrose = { module = "io.github.alexzhirkevich:qrose", version.ref = "qrose" } # Reown (WalletConnect) reown-bom = { module = "com.reown:android-bom", version.ref = "reownBom" } reown-walletkit = { module = "com.reown:walletkit" } reown-android-core = { module = "com.reown:android-core" } # Web3 web3j = { module = "org.web3j:core", version.ref = "web3j" } unstoppable-domains = { module = "com.github.unstoppabledomains:resolution-java", version.ref = "unstoppableDomains" } # Wallet Kits kit-monero = { module = "com.github.horizontalsystems:monero-kit-android", version.ref = "moneroKit" } kit-zano = { module = "com.github.horizontalsystems:zano-kit-android", version.ref = "zanoKit" } kit-stellar = { module = "com.github.horizontalsystems:stellar-kit-android", version.ref = "stellarKit" } kit-ton = { module = "com.github.horizontalsystems:ton-kit-android", version.ref = "tonKit" } kit-bitcoin = { module = "com.github.horizontalsystems:bitcoin-kit-android", version.ref = "bitcoinKit" } kit-hd-wallet = { module = "com.github.horizontalsystems:hd-wallet-kit-android", version.ref = "hdWalletKit" } kit-hodler = { module = "com.github.horizontalsystems.bitcoin-kit-android:hodler", version.ref = "bitcoinKit" } kit-bitcoin-core = { module = "com.github.horizontalsystems.bitcoin-kit-android:bitcoincore", version.ref = "bitcoinKit" } kit-ethereum = { module = "com.github.horizontalsystems:ethereum-kit-android", version.ref = "ethereumKit" } kit-fee-rate = { module = "com.github.horizontalsystems:blockchain-fee-rate-kit-android", version.ref = "feeRateKit" } kit-market = { module = "com.github.horizontalsystems:market-kit-android", version.ref = "marketKit" } kit-solana = { module = "com.github.horizontalsystems:solana-kit-android", version.ref = "solanaKit" } kit-tron = { module = "com.github.horizontalsystems:tron-kit-android", version.ref = "tronKit" } kit-thorchain = { module = "com.github.horizontalsystems:thorchain-kit-android", version.ref = "thorchainKit" } zcash-android-sdk = { module = "cash.z.ecc.android:zcash-android-sdk", version.ref = "zcashSdk" } # rust backend of the sdk (transitive implementation dep) — needed at compile time for # synchronizer-free address validation (RustBackend.isValid*Addr) zcash-android-backend = { module = "cash.z.ecc.android:zcash-android-backend", version.ref = "zcashSdk" } # Binance binance-connector = { module = "io.github.binance:binance-connector-java", version.ref = "binanceConnector" } # BouncyCastle bouncycastle = { module = "org.bouncycastle:bcprov-jdk15on", version.ref = "bouncycastle" } # Desugar desugar-jdk-libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar" } # Tor tor-android = { module = "info.guardianproject:tor-android", version.ref = "torAndroid" } jtorctl = { module = "info.guardianproject:jtorctl", version.ref = "jtorctl" } # Utils circleindicator = { module = "me.relex:circleindicator", version.ref = "circleindicator" } twitter-text = { module = "com.twitter.twittertext:twitter-text", version.ref = "twitterText" } android-shell = { module = "com.jaredrummler:android-shell", version.ref = "androidShell" } portmapper = { module = "com.offbynull.portmapper:portmapper", version.ref = "portmapper" } # Startup androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "startup" } # Billing billing-ktx = { module = "com.android.billingclient:billing-ktx", version.ref = "billing" } # Compose Runtime (standalone) androidx-compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "compose" } # Testing junit = { module = "junit:junit", version.ref = "junit" } classgraph = { module = "io.github.classgraph:classgraph", version.ref = "classgraph" } junit-ext = { module = "androidx.test.ext:junit", version.ref = "junitExt" } arch-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "archCoreTesting" } mockito = { module = "org.mockito:mockito-core", version.ref = "mockito" } mockito-kotlin = { module = "com.nhaarman:mockito-kotlin-kt1.1", version.ref = "mockitoKotlin" } powermock-api-mockito2 = { module = "org.powermock:powermock-api-mockito2", version.ref = "powermock" } powermock-module-junit4 = { module = "org.powermock:powermock-module-junit4", version.ref = "powermock" } spek-dsl-jvm = { module = "org.spekframework.spek2:spek-dsl-jvm", version.ref = "spek" } spek-runner-junit5 = { module = "org.spekframework.spek2:spek-runner-junit5", version.ref = "spek" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" } test-runner = { module = "androidx.test:runner", version.ref = "testRunner" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } # Optional plugins jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinSerialization"}