plugins {
  id 'com.android.application'
  id "kotlin-android"
  id 'kotlin-kapt'
  id 'kotlin-parcelize'
}

android {
  compileSdk 31
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdk 16
    targetSdk 30
    versionCode 70
    versionName VERSION_NAME
    multiDexEnabled true
    buildConfigField("String", "GIT_SHA", "\"" + gitSha + "\"")
    buildConfigField("String", "GIT_BRANCH", "\"" + gitBranch + "\"")
    vectorDrawables.useSupportLibrary = true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  }
  buildFeatures {
    viewBinding true
  }
  buildTypes {
    debug {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
    }
    release {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
      minifyEnabled false
    }
  }
  lintOptions {
    ignore 'InvalidPackage'
    ignore 'VectorDrawableCompat'
    textReport true
    textOutput 'stdout'
    baseline file("lint-baseline.xml")
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8.toString()
    freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi"]
  }
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
  packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
  }
}

dependencies {
  implementation project(':lottie')
  implementation 'androidx.multidex:multidex:2.0.1'

  implementation "androidx.appcompat:appcompat:$appcompatVersion"
  implementation "androidx.recyclerview:recyclerview:1.2.1"
  implementation "androidx.paging:paging-runtime-ktx:3.0.1"
  implementation "androidx.cardview:cardview:1.0.0"
  implementation "androidx.core:core-ktx:$coreVersion"
  implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
  implementation "androidx.browser:browser:1.3.0"
  implementation "com.google.android.material:material:$materialVersion"

  implementation "com.airbnb.android:epoxy:$epoxyVersion"
  kapt "com.airbnb.android:epoxy-processor:$epoxyVersion"
  implementation 'com.airbnb.android:mvrx:1.5.1'

  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
  implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
  implementation 'com.github.PhilJay:MPAndroidChart:3.1.0'
  implementation 'com.google.code.gson:gson:2.8.8'
  implementation 'com.squareup.okhttp3:okhttp:4.9.1'
  implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
  implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
  implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
  implementation 'com.github.bumptech.glide:glide:4.12.0'

  debugImplementation 'androidx.fragment:fragment-testing:1.3.6'

  testImplementation "junit:junit:$junitVersion"
  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
  androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
  androidTestImplementation 'androidx.test:core:1.3.0'
  androidTestImplementation 'androidx.test:rules:1.4.0'
  androidTestImplementation "org.mockito:mockito-android:$mockitoVersion"
  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
}
