object Version {

    object ClassPathVersion {
        const val kotlinVersion = "2.1.0"
        const val hiltVersion = "2.57"
        const val firebaseCrashlyticsVersion = "3.0.6"
        const val gmsVersion = "4.4.3"
    }

    const val compileSdk = 35
    const val applicationId = "com.remax.visualnovel"
    const val minSdk = 26
    const val targetSdk = 36
    const val versionCode = 1

    const val versionName = "1.0.0"

    const val kotlinCoroutines = "1.8.0"
    const val desugar = "2.1.5"


    const val testJunitVersion = "4.13.2"
    const val androidTestJunitAndroidExt = "1.1.3"
    const val androidTestEspressoCore = "3.4.0"

    const val appcompat = "1.6.1"
    const val constraintlayout = "2.1.4"
    const val flexbox = "3.0.0"
    const val coreKtx = "1.8.0"
    const val activityKtx = "1.7.0"
    const val fragmentKtx = "1.5.0"

    const val hiltCompilerVersion = "1.0.0"

    //lifecycle
    const val lifecycleVersion = "2.6.1"

    //dataStroe
    const val datastore = "1.0.0"
    const val viewpager2 = "1.0.0"
    const val multidex = "2.0.1"
    const val mmkv = "1.3.1"
    const val material = "1.6.1"
    const val gson = "2.9.0"

    const val firebaseBom = "32.7.4"
    const val gmsAuth = "21.0.0"
    const val credentials = "1.2.2"
    const val googleId = "1.1.0"

    //内购
    const val billing = "7.0.0"

    const val nimlib = "10.9.43"

    //rxJava
    //目前只有websocket使用，需要单独导入
    const val rxAndroid = "2.1.1"

    //Retrofit2
    const val retrofit2 = "2.9.0"
    const val okhttp3LoggingInterceptor = "4.10.0"

    const val timber = "5.0.1"

    //glide
    const val glide = "4.16.0"
    const val glideTransformations = "4.3.0"

    //新的事件发布、订阅总线库
    const val modularEventbus = "1.0.5"

    const val magicIndicator = "1.7.0"

    const val arouter = "1.5.2"

    const val brvah = "3.0.10"
    const val swipeMenuLayout = "1.1.4"
    const val BRV = "1.5.8"

    const val permission = "25.0"
    const val lottie = "6.6.2"

    //EasyFloat暂不升级
    const val easyFloat = "1.3.4"

    const val newbieGuide = "v2.4.4"
    const val refreshLayout = "2.0.5"

    //banner
    const val banner = "2.2.2"
    const val webSocket = "1.5.1"

    //s3文件上传
    const val awsAndroid = "2.75.0"

    // https://github.com/liangjingkanji/spannable
    // https://github.com/TxcA/SpannableX
    const val spannable = "1.2.7"

    //m4a转MP3转换
    const val mp3Recorder = "1.1.4"

    const val photoView = "2.3.0"

    //图片压缩
    const val Luban = "1.1.8"

    //键盘监听高度
    const val skbGlobal = "0.2.0"

    // 修改IME动画的属性、调用FLAG_FULLSCREEN的兼容方案，需要依赖inputview-compat
    const val inputView = "1.3.7"
}

object Deps {

    object ClassPath {
        const val gmsServices =
            "com.google.gms:google-services:${Version.ClassPathVersion.gmsVersion}"

        const val firebaseCrashlytics =
            "com.google.firebase:firebase-crashlytics-gradle:${Version.ClassPathVersion.firebaseCrashlyticsVersion}"
        const val hiltPlugin =
            "com.google.dagger:hilt-android-gradle-plugin:${Version.ClassPathVersion.hiltVersion}"
    }


    const val desugar = "com.android.tools:desugar_jdk_libs:${Version.desugar}"



    const val kotlinCoroutinesCore = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Version.kotlinCoroutines}"
    const val kotlinCoroutinesAndroid = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Version.kotlinCoroutines}"

    const val testJunit = "junit:junit:${Version.testJunitVersion}"
    const val androidTestJunit = "androidx.test.ext:junit:${Version.androidTestJunitAndroidExt}"
    const val androidTestEspresso =
        "androidx.test.espresso:espresso-core:${Version.androidTestEspressoCore}"

    const val appcompat = "androidx.appcompat:appcompat:${Version.appcompat}"
    const val constraintlayout = "androidx.constraintlayout:constraintlayout:${Version.constraintlayout}"
    const val flexbox = "com.google.android.flexbox:flexbox:${Version.flexbox}"
    const val coreKtx = "androidx.core:core-ktx:${Version.coreKtx}"
    const val activityKtx = "androidx.activity:activity-ktx:${Version.activityKtx}"
    const val activityCompose = "androidx.activity:activity-compose:${Version.activityKtx}"
    const val fragmentKtx = "androidx.fragment:fragment-ktx:${Version.fragmentKtx}"


    // ViewModel
    const val viewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Version.lifecycleVersion}"

    // Lifecycles only (without ViewModel or LiveData)
    const val lifecycleRuntime = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.lifecycleVersion}"

    // LiveData
    const val livedata = "androidx.lifecycle:lifecycle-livedata-ktx:${Version.lifecycleVersion}"

    // alternately - if using Java8, use the following instead of lifecycle-compiler
    const val lifecycleJava8 = "androidx.lifecycle:lifecycle-common-java8:${Version.lifecycleVersion}"

    //datastore
    const val datastore = "androidx.datastore:datastore-preferences:${Version.datastore}"
    // hilt
    const val hilt = "com.google.dagger:hilt-android:${Version.ClassPathVersion.hiltVersion}"
    const val hiltAndroidCompiler = "com.google.dagger:hilt-android-compiler:${Version.ClassPathVersion.hiltVersion}"
    const val hiltCompiler = "androidx.hilt:hilt-compiler:${Version.hiltCompilerVersion}"

    const val viewpager2 = "androidx.viewpager2:viewpager2:${Version.viewpager2}"
    const val multidex = "androidx.multidex:multidex:${Version.multidex}"

    //mmkv本地存储
    const val mmkv = "com.tencent:mmkv:${Version.mmkv}"

    const val material = "com.google.android.material:material:${Version.material}"
    const val gson = "com.google.code.gson:gson:${Version.gson}"

    //云信
    const val nimBase = "com.netease.nimlib:basesdk:${Version.nimlib}"
    const val nimPush = "com.netease.nimlib:push:${Version.nimlib}"

    const val firebaseBom = "com.google.firebase:firebase-bom:${Version.firebaseBom}"

    //推送
    const val firebaseMessageKtx = "com.google.firebase:firebase-messaging-ktx"

    //埋点
    const val firebaseAnalyticsKtx = "com.google.firebase:firebase-analytics-ktx"

    //崩溃上报
    const val firebaseCrashlyticsKtx = "com.google.firebase:firebase-crashlytics-ktx"

    //认证
    const val firebaseAuthKtx = "com.google.firebase:firebase-auth-ktx"

    // App Check 库
    const val firebaseAppCheck = "com.google.firebase:firebase-appcheck-playintegrity"

    // 以下先升级到 android 34
    const val credentials = "androidx.credentials:credentials:${Version.credentials}"
    const val credentialsAuth = "androidx.credentials:credentials-play-services-auth:${Version.credentials}"
    const val googleId = "com.google.android.libraries.identity.googleid:googleid:${Version.googleId}"

    //内购
    const val billing = "com.android.billingclient:billing:${Version.billing}"

    const val rxAndroid = "io.reactivex.rxjava2:rxandroid:${Version.rxAndroid}"
    //Retrofit2
    const val retrofit2 = "com.squareup.retrofit2:retrofit:${Version.retrofit2}"
    const val retrofitAdapterRxjava2 = "com.squareup.retrofit2:adapter-rxjava2:${Version.retrofit2}"
    const val retrofit2ConverterGson = "com.squareup.retrofit2:converter-gson:${Version.retrofit2}"
    const val okhttp3LoggingInterceptor = "com.squareup.okhttp3:logging-interceptor:${Version.okhttp3LoggingInterceptor}"

    const val timber = "com.jakewharton.timber:timber:${Version.timber}"

    //glide
    const val glide = "com.github.bumptech.glide:glide:${Version.glide}"
    const val glideCompiler = "com.github.bumptech.glide:compiler:${Version.glide}"
    const val glideTransformations = "jp.wasabeef:glide-transformations:${Version.glideTransformations}"
    const val glideWebpdecoder = "com.github.zjupure:webpdecoder:2.6.${Version.glide}"

    const val modularEventbus = "io.github.pengxurui:modular-eventbus-api:${Version.modularEventbus}"
    const val modularEventbusCompiler = "io.github.pengxurui:modular-eventbus-compiler:${Version.modularEventbus}"

    const val magicIndicator = "com.github.hackware1993:MagicIndicator:${Version.magicIndicator}"

    const val arouter = "com.alibaba:arouter-api:${Version.arouter}"
    const val arouterCompiler = "com.alibaba:arouter-compiler:${Version.arouter}"

    const val brvah = "com.github.CymChad:BaseRecyclerViewAdapterHelper:${Version.brvah}"
    const val swipeMenuLayout = "com.github.anzaizai:EasySwipeMenuLayout:${Version.swipeMenuLayout}"
    const val BRV = "com.github.liangjingkanji:BRV:${Version.BRV}"

    const val permission = "com.github.getActivity:XXPermissions:${Version.permission}"
    const val lottie = "com.airbnb.android:lottie:${Version.lottie}"

    //EasyFloat暂不升级
    const val easyFloat = "com.github.princekin-f:EasyFloat:${Version.easyFloat}"

    const val newbieGuide = "com.github.huburt-Hu:NewbieGuide:${Version.newbieGuide}"
    const val refreshLayout = "io.github.scwang90:refresh-layout-kernel:${Version.refreshLayout}"

    //banner
    const val banner = "io.github.youth5201314:banner:${Version.banner}"
    const val webSocket = "org.java-websocket:Java-WebSocket:${Version.webSocket}"

    //s3图片上传
    const val awsS3 = "com.amazonaws:aws-android-sdk-s3:${Version.awsAndroid}"
    const val awsCore = "com.amazonaws:aws-android-sdk-core:${Version.awsAndroid}"

    const val spannablex = "com.github.liangjingkanji:spannable:${Version.spannable}"

    //m4a转MP3转换
    const val mp3Recorder = "com.github.zhang-hai:Mp3Recorder:${Version.mp3Recorder}"

    //大图显示
    const val photoView = "com.github.chrisbanes:PhotoView:${Version.photoView}"
    const val transition = "androidx.transition:transition:1.4.1"
    const val paging = "androidx.paging:paging-runtime-ktx:3.1.1"
    const val exoplayer = "com.google.android.exoplayer:exoplayer:2.18.0"
    const val subsamplingScaleImageView = "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0"

    const val Luban = "com.github.Curzibn:Luban:${Version.Luban}"

    const val BlurView = "com.github.Dimezis:BlurView:version-2.0.6"

    const val skbGlobal = "com.github.boybeak:skb-global:${Version.skbGlobal}"

    const val apng = "com.github.sahasbhop:apng-view:1.3"
    const val BytePlusRTC = "com.byteplus:BytePlusRTC:3.58.1.15100"

    //inputview
    const val inputView = "com.github.xiaocydx.InputView:inputview:${Version.inputView}"
    const val inputViewCompat = "com.github.xiaocydx.InputView:inputview-compat:${Version.inputView}"
    const val inputViewTransform = "com.github.xiaocydx.InputView:inputview-transform:${Version.inputView}"

    // immersionbar
    const val immersionbar = "com.geyifeng.immersionbar:immersionbar:3.2.2"
    const val immersionbarktx = "com.geyifeng.immersionbar:immersionbar-ktx:3.2.2"

}

