ext {
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#3901
    ext.room_version = "2.4.0-alpha05" // 2.5.0-alpha01 in AOSP but needs testing
    // https://android.googlesource.com/platform/external/protobuf/+/refs/tags/android-13.0.0_r32/java/pom.xml#7
    ext.protobuf_version = "3.9.1"

    // test dependencies below - these do not care about AOSP and can be freely updated
    junit4_version = "4.13.2"
    junit5_version = "5.7.2" // careful, upgrading this can change a Cipher's IV size in tests!?
    mockk_version = "1.12.3"
    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: "${rootProject.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/external/kotlinx.coroutines/+/refs/tags/android-13.0.0_r32/CHANGES.md
            version { strictly '1.6.4' }
        },
        dependencies.create('org.jetbrains.kotlinx:kotlinx-coroutines-android') {
            // https://android.googlesource.com/platform/external/kotlinx.coroutines/+/refs/tags/android-13.0.0_r32/CHANGES.md
            version { strictly '1.6.4' }
        },
    ],
]

ext.std_libs = [
    androidx_core: [
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#2275
        dependencies.create('androidx.core:core') {
            version { strictly '1.9.0-alpha05' } // 1.9.0-alpha03 in AOSP but has SDK version issues
        },
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#2241
        dependencies.create('androidx.core:core-ktx') {
            version { strictly '1.9.0-alpha05' } // 1.9.0-alpha03 in AOSP but has SDK version issues
        },
    ],
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#2705
    androidx_fragment: dependencies.create('androidx.fragment:fragment-ktx') {
        version { strictly '1.5.0-alpha03' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#61
    androidx_activity: dependencies.create('androidx.activity:activity-ktx') {
        version { strictly '1.5.0-alpha03' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#4275
    androidx_preference: dependencies.create('androidx.preference:preference') {
        version { strictly '1.2.0-alpha01' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#3376
    androidx_lifecycle_viewmodel_ktx: dependencies.create('androidx.lifecycle:lifecycle-viewmodel-ktx') {
        version { strictly '2.5.0-alpha03' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#3134
    androidx_lifecycle_livedata_ktx: dependencies.create('androidx.lifecycle:lifecycle-livedata-ktx') {
        version { strictly '2.5.0-alpha03' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/extras/constraint-layout-x/Android.bp#64
    androidx_constraintlayout: dependencies.create('androidx.constraintlayout:constraintlayout') {
        version { strictly '2.2.0-alpha05' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/androidx/Android.bp#2411
    androidx_documentfile: dependencies.create('androidx.documentfile:documentfile') {
        version { strictly '1.1.0-alpha01' } // 1.1.0-alpha02 in AOSP but not released yet
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r32/current/extras/material-design-x/Android.bp#6
    com_google_android_material: dependencies.create('com.google.android.material:material') {
        version { strictly '1.7.0-alpha03' }
    },
]

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

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" }
    },
    // https://github.com/google/tink/releases
    com_google_crypto_tink_android: dependencies.create('com.google.crypto.tink:tink-android') {
        // careful with upgrading tink, so old backups continue to be decryptable
        version { strictly '1.7.0' }
    },
]
