ext {
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#2943
    ext.room_version = "2.3.0-beta02"
    // https://android.googlesource.com/platform/external/protobuf/+/refs/tags/android-12.0.0_r2/java/pom.xml#7
    ext.protobuf_version = "3.9.1"
    junit4_version = "4.13.2"
    junit5_version = "5.5.2" // careful, upgrading this can change a Cipher's IV size in tests!?
    mockk_version = "1.12.0"
    espresso_version = "3.4.0"
}

// To produce these binaries, in latest AOSP source tree, run
// $ m
ext.aosp_libs = fileTree(include: [
    // For more information about this module:
    // https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-11.0.0_r3/Android.bp#507
    // framework_intermediates/classes-header.jar works for gradle build as well,
    // but not unit tests, so we use the actual classes (without updatable modules).
    //
    // out/target/common/obj/JAVA_LIBRARIES/framework-minus-apex_intermediates/classes.jar
    'android.jar',
    // out/target/common/obj/JAVA_LIBRARIES/core-libart.com.android.art_intermediates/classes.jar
    'libcore.jar',
], dir: "$projectDir/app/libs")

ext.kotlin_libs = [
    std: [
        dependencies.create('org.jetbrains.kotlin:kotlin-stdlib') {
            version { strictly "$aosp_kotlin_version" }
        },
        dependencies.create('org.jetbrains.kotlin:kotlin-stdlib-jdk8') {
            version { strictly "$aosp_kotlin_version" }
        },
        dependencies.create('org.jetbrains.kotlin:kotlin-stdlib-common') {
            version { strictly "$aosp_kotlin_version" }
        },
    ],
    coroutines: [
        dependencies.create('org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm') {
            // https://android.googlesource.com/platform/prebuilts/tools/+/refs/tags/android-12.0.0_r2/common/m2/Android.bp#273
            version { strictly '1.4.2' }
        },
        dependencies.create('org.jetbrains.kotlinx:kotlinx-coroutines-android') {
            // https://android.googlesource.com/platform/prebuilts/tools/+/refs/tags/android-12.0.0_r2/common/m2/Android.bp#288
            version { strictly '1.3.0' }
        },
    ],
]

ext.std_libs = [
    androidx_core: [
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#867
        dependencies.create('androidx.core:core') {
            version { strictly '1.6.0' } // should be 1.6.0-beta03, but that is not even released, yet
        },
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#833
        dependencies.create('androidx.core:core-ktx') {
            version { strictly '1.5.0-beta02' }
        },
    ],
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#1189
    androidx_fragment: dependencies.create('androidx.fragment:fragment-ktx') {
        version { strictly '1.4.0-alpha01' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#20
    androidx_activity: dependencies.create('androidx.activity:activity-ktx') {
        version { strictly '1.3.0-alpha03' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#2695
    androidx_preference: dependencies.create('androidx.preference:preference') {
        version { strictly '1.1.1' } // should be 1.2.0-alpha01, but that is not even released, yet
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#1820
    androidx_lifecycle_viewmodel_ktx: dependencies.create('androidx.lifecycle:lifecycle-viewmodel-ktx') {
        version { strictly '2.4.0-alpha01' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#1618
    androidx_lifecycle_livedata_ktx: dependencies.create('androidx.lifecycle:lifecycle-livedata-ktx') {
        version { strictly '2.4.0-alpha01' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/extras/constraint-layout-x/Android.bp#39
    androidx_constraintlayout: dependencies.create('androidx.constraintlayout:constraintlayout') {
        version { strictly '2.0.0-beta7' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/androidx/Android.bp#969
    androidx_documentfile: dependencies.create('androidx.documentfile:documentfile') {
        version { strictly '1.1.0-alpha01' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-12.0.0_r2/current/extras/material-design-x/Android.bp#6
    com_google_android_material: dependencies.create('com.google.android.material:material') {
        version { strictly '1.4.0' }
    },
]

ext.lint_libs = [
    exceptions: 'com.github.thirdegg:lint-rules:0.0.6-beta'
]

ext.storage_libs = [
    androidx_room_runtime: dependencies.create('androidx.room:room-runtime') {
        version { strictly "$room_version" }
    },
    com_google_protobuf_javalite: dependencies.create('com.google.protobuf:protobuf-javalite') {
        version { strictly "$protobuf_version" }
    },
    com_google_crypto_tink_android: dependencies.create('com.google.crypto.tink:tink-android') {
        version { strictly '1.6.1' }
    },
]
