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"
    // https://android.googlesource.com/platform/external/protobuf/+/refs/tags/android-13.0.0_r3/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: "$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_r3/CHANGES.md
            version { strictly '1.5.2' }
        },
        dependencies.create('org.jetbrains.kotlinx:kotlinx-coroutines-android') {
            // https://android.googlesource.com/platform/external/kotlinx.coroutines/+/refs/tags/android-13.0.0_r3/CHANGES.md
            version { strictly '1.5.2' }
        },
    ],
]

ext.std_libs = [
    androidx_core: [
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#1761
        dependencies.create('androidx.core:core') {
            version { strictly '1.9.0-alpha03' }
        },
        // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#1727
        dependencies.create('androidx.core:core-ktx') {
            version { strictly '1.9.0-alpha03' }
        },
    ],
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#2159
    androidx_fragment: dependencies.create('androidx.fragment:fragment-ktx') {
        version { strictly '1.4.0-alpha09' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#57
    androidx_activity: dependencies.create('androidx.activity:activity-ktx') {
        version { strictly '1.4.0-alpha02' }
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#3597
    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#2754
    androidx_lifecycle_viewmodel_ktx: dependencies.create('androidx.lifecycle:lifecycle-viewmodel-ktx') {
        version { strictly '2.4.0-alpha03' } // 2.4.0-alpha04 in AOSP but was never released
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/current/androidx/Android.bp#2550
    androidx_lifecycle_livedata_ktx: dependencies.create('androidx.lifecycle:lifecycle-livedata-ktx') {
        version { strictly '2.4.0-alpha03' } // 2.4.0-alpha04 in AOSP but was never released
    },
    // https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-13.0.0_r3/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-13.0.0_r3/current/androidx/Android.bp#1865
    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_r3/current/extras/material-design-x/Android.bp#6
    com_google_android_material: dependencies.create('com.google.android.material:material') {
        version { strictly '1.6.0-alpha03' } // 1.6.0-alpha0301 in AOSP
    },
]

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' }
    },
]
