diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml
index 54e8e0fde3..b9a72b2466 100644
--- a/.github/workflows/pr-checks.yml
+++ b/.github/workflows/pr-checks.yml
@@ -51,6 +51,7 @@ jobs:
infra:images
infra:auth-store
infra:auth-logic
+ infra:matching
reportsId: infra2
feature-unit-tests1:
diff --git a/feature/matcher/build.gradle.kts b/feature/matcher/build.gradle.kts
index e6a34a307d..31747c11c3 100644
--- a/feature/matcher/build.gradle.kts
+++ b/feature/matcher/build.gradle.kts
@@ -12,12 +12,9 @@ dependencies {
implementation(project(":infra:orchestrator-data"))
implementation(project(":infra:enrolment-records:repository"))
- implementation(project(":infra:events"))
+ implementation(project(":infra:matching"))
implementation(project(":infra:config-store"))
implementation(project(":infra:config-sync"))
- implementation(project(":face:infra:bio-sdk-resolver"))
-
- implementation(project(":fingerprint:infra:bio-sdk"))
implementation(project(":infra:auth-store"))
}
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/MatchContract.kt b/feature/matcher/src/main/java/com/simprints/matcher/MatchContract.kt
index 9500085e9e..79efa31499 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/MatchContract.kt
+++ b/feature/matcher/src/main/java/com/simprints/matcher/MatchContract.kt
@@ -5,6 +5,7 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
+import com.simprints.infra.matching.MatchParams
object MatchContract {
val DESTINATION = R.id.matcherFragment
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchFragment.kt b/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchFragment.kt
index cb16d60914..0cde3b8112 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchFragment.kt
+++ b/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchFragment.kt
@@ -16,11 +16,11 @@ import com.simprints.core.tools.extentions.hasPermission
import com.simprints.core.tools.extentions.permissionFromResult
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.ORCHESTRATION
import com.simprints.infra.logging.Simber
+import com.simprints.infra.matching.MatchParams
import com.simprints.infra.uibase.navigation.finishWithResult
import com.simprints.infra.uibase.navigation.navigationParams
import com.simprints.infra.uibase.view.applySystemBarInsets
import com.simprints.infra.uibase.viewbinding.viewBinding
-import com.simprints.matcher.MatchParams
import com.simprints.matcher.R
import com.simprints.matcher.databinding.FragmentMatcherBinding
import com.simprints.matcher.screen.MatchViewModel.MatchState
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchViewModel.kt b/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchViewModel.kt
index 9b5995d860..2fc45b1ef9 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchViewModel.kt
+++ b/feature/matcher/src/main/java/com/simprints/matcher/screen/MatchViewModel.kt
@@ -10,14 +10,14 @@ import com.simprints.core.tools.time.TimeHelper
import com.simprints.infra.authstore.AuthStore
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.config.sync.ConfigManager
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.MatchResultItem
-import com.simprints.matcher.usecases.FaceMatcherUseCase
-import com.simprints.matcher.usecases.FingerprintMatcherUseCase
-import com.simprints.matcher.usecases.MatcherUseCase
-import com.simprints.matcher.usecases.SaveMatchEventUseCase
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.MatchResultItem
+import com.simprints.infra.matching.usecase.FaceMatcherUseCase
+import com.simprints.infra.matching.usecase.FingerprintMatcherUseCase
+import com.simprints.infra.matching.usecase.MatcherUseCase
+import com.simprints.infra.matching.usecase.SaveMatchEventUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -104,9 +104,11 @@ internal class MatchViewModel @Inject constructor(
private suspend fun getDecisionPolicy(params: MatchParams): DecisionPolicy {
val config = configManager.getProjectConfiguration()
+ val faceSDK = params.faceSDK
+ val fingerprintSDK = params.fingerprintSDK
val policy = when {
- params.faceSDK != null -> config.face?.getSdkConfiguration(params.faceSDK)?.decisionPolicy
- params.fingerprintSDK != null -> config.fingerprint?.getSdkConfiguration(params.fingerprintSDK)?.decisionPolicy
+ faceSDK != null -> config.face?.getSdkConfiguration(faceSDK)?.decisionPolicy
+ fingerprintSDK != null -> config.fingerprint?.getSdkConfiguration(fingerprintSDK)?.decisionPolicy
else -> null
}
return policy ?: fallbackDecisionPolicy()
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/screen/MatchViewModelTest.kt b/feature/matcher/src/test/java/com/simprints/matcher/screen/MatchViewModelTest.kt
index fe26281df1..7e4ffd3f99 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/screen/MatchViewModelTest.kt
+++ b/feature/matcher/src/test/java/com/simprints/matcher/screen/MatchViewModelTest.kt
@@ -13,14 +13,14 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration.BioSdk.SECUGEN_SIM_MATCHER
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
-import com.simprints.matcher.MatchBatchInfo
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.usecases.FaceMatcherUseCase
-import com.simprints.matcher.usecases.FingerprintMatcherUseCase
-import com.simprints.matcher.usecases.MatcherUseCase
-import com.simprints.matcher.usecases.SaveMatchEventUseCase
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.usecase.FaceMatcherUseCase
+import com.simprints.infra.matching.usecase.FingerprintMatcherUseCase
+import com.simprints.infra.matching.usecase.MatcherUseCase
+import com.simprints.infra.matching.usecase.SaveMatchEventUseCase
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import com.simprints.testtools.common.livedata.getOrAwaitValue
import io.mockk.*
diff --git a/feature/orchestrator/build.gradle.kts b/feature/orchestrator/build.gradle.kts
index b84bb6dc9b..8515c2065c 100644
--- a/feature/orchestrator/build.gradle.kts
+++ b/feature/orchestrator/build.gradle.kts
@@ -37,6 +37,7 @@ dependencies {
implementation(project(":infra:events"))
implementation(project(":infra:event-sync"))
implementation(project(":infra:images"))
+ implementation(project(":infra:matching"))
implementation(libs.jackson.core)
implementation(libs.androidX.ui.preference)
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorViewModel.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorViewModel.kt
index ef6f57f5f9..6c3d195128 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorViewModel.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/OrchestratorViewModel.kt
@@ -39,10 +39,10 @@ import com.simprints.infra.config.store.models.GeneralConfiguration
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.ORCHESTRATION
import com.simprints.infra.logging.Simber
+import com.simprints.infra.matching.MatchParams
import com.simprints.infra.orchestration.data.ActionRequest
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppResponse
-import com.simprints.matcher.MatchParams
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import java.io.Serializable
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/MatchStepStubPayload.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/MatchStepStubPayload.kt
index 3f5f42b978..176570381b 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/MatchStepStubPayload.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/MatchStepStubPayload.kt
@@ -6,8 +6,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
+import com.simprints.infra.matching.MatchParams
import com.simprints.matcher.MatchContract
-import com.simprints.matcher.MatchParams
/**
* Actual matching step payload is based on capture step results, so until the it is done we are storing
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/Step.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/Step.kt
index cc3add88ea..097f692445 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/Step.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/steps/Step.kt
@@ -35,9 +35,9 @@ import com.simprints.fingerprint.connect.FingerprintConnectParams
import com.simprints.fingerprint.connect.FingerprintConnectResult
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
-import com.simprints.matcher.MatchParams
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
+import com.simprints.infra.matching.MatchParams
import java.io.Serializable
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "resultType")
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCase.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCase.kt
index 21baca8249..251a2183e2 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCase.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCase.kt
@@ -8,8 +8,8 @@ import com.simprints.feature.enrollast.FingerTemplateCaptureResult
import com.simprints.feature.enrollast.MatchResult
import com.simprints.fingerprint.capture.FingerprintCaptureResult
import com.simprints.infra.config.store.models.fromModuleApiToDomain
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCase.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCase.kt
index 5754c93eaf..8b6d7a42c4 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCase.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCase.kt
@@ -5,8 +5,8 @@ import com.simprints.infra.events.session.SessionEventRepository
import com.simprints.infra.orchestration.data.responses.AppIdentifyResponse
import com.simprints.infra.orchestration.data.responses.AppMatchResult
import com.simprints.infra.orchestration.data.responses.AppResponse
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCase.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCase.kt
index 200f79f82d..9ceb8ea8ba 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCase.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCase.kt
@@ -8,8 +8,8 @@ import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppMatchResult
import com.simprints.infra.orchestration.data.responses.AppResponse
import com.simprints.infra.orchestration.data.responses.AppVerifyResponse
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject
diff --git a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCase.kt b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCase.kt
index 9316714d30..2993c22a21 100644
--- a/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCase.kt
+++ b/feature/orchestrator/src/main/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCase.kt
@@ -1,8 +1,8 @@
package com.simprints.feature.orchestrator.usecases.response
import com.simprints.infra.config.store.models.ProjectConfiguration
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject
import kotlin.text.compareTo
diff --git a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/OrchestratorViewModelTest.kt b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/OrchestratorViewModelTest.kt
index 4038614599..3d41306ee2 100644
--- a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/OrchestratorViewModelTest.kt
+++ b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/OrchestratorViewModelTest.kt
@@ -37,8 +37,8 @@ import com.simprints.infra.config.store.models.GeneralConfiguration
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
+import com.simprints.infra.matching.MatchParams
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
-import com.simprints.matcher.MatchParams
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import io.mockk.MockKAnnotations
import io.mockk.clearMocks
diff --git a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCaseTest.kt b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCaseTest.kt
index 24ce04a8c3..08fa5e8d11 100644
--- a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCaseTest.kt
+++ b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/MapStepsForLastBiometricEnrolUseCaseTest.kt
@@ -12,8 +12,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.Finger
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.events.sampledata.SampleDefaults.GUID1
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import org.junit.Before
import org.junit.Test
diff --git a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCaseTest.kt b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCaseTest.kt
index 5e34c5b0ea..47717fce77 100644
--- a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCaseTest.kt
+++ b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateIdentifyResponseUseCaseTest.kt
@@ -6,8 +6,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.events.session.SessionEventRepository
import com.simprints.infra.orchestration.data.responses.AppIdentifyResponse
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.every
diff --git a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCaseTest.kt b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCaseTest.kt
index ecfa5bf937..b83cb332f7 100644
--- a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCaseTest.kt
+++ b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/CreateVerifyResponseUseCaseTest.kt
@@ -4,8 +4,8 @@ import com.google.common.truth.Truth.*
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppVerifyResponse
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
import io.mockk.*
import org.junit.Before
import org.junit.Test
diff --git a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCaseTest.kt b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCaseTest.kt
index 49eed8295b..72a334f078 100644
--- a/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCaseTest.kt
+++ b/feature/orchestrator/src/test/java/com/simprints/feature/orchestrator/usecases/response/IsNewEnrolmentUseCaseTest.kt
@@ -1,15 +1,13 @@
package com.simprints.feature.orchestrator.usecases.response
-import com.google.common.truth.Truth.assertThat
+import com.google.common.truth.Truth.*
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.ProjectConfiguration
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.FingerprintMatchResult
-import io.mockk.MockKAnnotations
-import io.mockk.every
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.FingerprintMatchResult
+import io.mockk.*
import io.mockk.impl.annotations.MockK
-import io.mockk.mockk
import org.junit.Before
import org.junit.Test
diff --git a/infra/matching/.gitignore b/infra/matching/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/infra/matching/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/infra/matching/README.md b/infra/matching/README.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/infra/matching/build.gradle.kts b/infra/matching/build.gradle.kts
new file mode 100644
index 0000000000..6d93bcfa4c
--- /dev/null
+++ b/infra/matching/build.gradle.kts
@@ -0,0 +1,21 @@
+plugins {
+ id("simprints.feature")
+}
+
+android {
+ namespace = "com.simprints.infra.mathching"
+}
+
+dependencies {
+
+ implementation(project(":infra:orchestrator-data"))
+ implementation(project(":infra:enrolment-records:repository"))
+ implementation(project(":infra:events"))
+ implementation(project(":infra:config-store"))
+ implementation(project(":infra:config-sync"))
+
+ implementation(project(":face:infra:bio-sdk-resolver"))
+
+ implementation(project(":fingerprint:infra:bio-sdk"))
+ implementation(project(":infra:auth-store"))
+}
diff --git a/infra/matching/src/main/AndroidManifest.xml b/infra/matching/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..e100076157
--- /dev/null
+++ b/infra/matching/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/MatchBatchInfo.kt b/infra/matching/src/main/java/com/simprints/infra/matching/MatchBatchInfo.kt
similarity index 86%
rename from feature/matcher/src/main/java/com/simprints/matcher/MatchBatchInfo.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/MatchBatchInfo.kt
index 1255722ed8..41ade6ca98 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/MatchBatchInfo.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/MatchBatchInfo.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher
+package com.simprints.infra.matching
import com.simprints.core.tools.time.Timestamp
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/MatchParams.kt b/infra/matching/src/main/java/com/simprints/infra/matching/MatchParams.kt
similarity index 98%
rename from feature/matcher/src/main/java/com/simprints/matcher/MatchParams.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/MatchParams.kt
index 56df8746ba..5d32f1b864 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/MatchParams.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/MatchParams.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher
+package com.simprints.infra.matching
import androidx.annotation.Keep
import com.simprints.core.domain.common.FlowType
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/MatchResult.kt b/infra/matching/src/main/java/com/simprints/infra/matching/MatchResult.kt
similarity index 96%
rename from feature/matcher/src/main/java/com/simprints/matcher/MatchResult.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/MatchResult.kt
index 17748a9494..6cf595c3eb 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/MatchResult.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/MatchResult.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher
+package com.simprints.infra.matching
import androidx.annotation.Keep
import com.simprints.core.domain.step.StepResult
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/CreateRangesUseCase.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/CreateRangesUseCase.kt
similarity index 94%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/CreateRangesUseCase.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/CreateRangesUseCase.kt
index dd1ed5f129..ffc6f68db6 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/CreateRangesUseCase.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/CreateRangesUseCase.kt
@@ -1,10 +1,10 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.simprints.core.AvailableProcessors
import javax.inject.Inject
import kotlin.math.ceil
-internal class CreateRangesUseCase @Inject constructor(
+class CreateRangesUseCase @Inject constructor(
@AvailableProcessors private val availableProcessors: Int,
) {
/**
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/FaceMatcherUseCase.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/FaceMatcherUseCase.kt
similarity index 94%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/FaceMatcherUseCase.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/FaceMatcherUseCase.kt
index b48b050260..227e4de282 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/FaceMatcherUseCase.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/FaceMatcherUseCase.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.simprints.core.DispatcherBG
import com.simprints.core.tools.time.TimeHelper
@@ -12,10 +12,10 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.domain.models.IdentityBatch
import com.simprints.infra.logging.LoggingConstants
import com.simprints.infra.logging.Simber
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.MatchBatchInfo
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.usecases.MatcherUseCase.MatcherState
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.usecase.MatcherUseCase.MatcherState
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.flow.Flow
@@ -25,7 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger
import javax.inject.Inject
import com.simprints.infra.enrolment.records.repository.domain.models.FaceIdentity as DomainFaceIdentity
-internal class FaceMatcherUseCase @Inject constructor(
+class FaceMatcherUseCase @Inject constructor(
private val timeHelper: TimeHelper,
private val enrolmentRecordRepository: EnrolmentRecordRepository,
private val resolveFaceBioSdk: ResolveFaceBioSdkUseCase,
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/FingerprintMatcherUseCase.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCase.kt
similarity index 96%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/FingerprintMatcherUseCase.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCase.kt
index a6a4bdc93d..0a48bbc1c1 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/FingerprintMatcherUseCase.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCase.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.simprints.core.DispatcherBG
import com.simprints.core.domain.common.FlowType
@@ -17,10 +17,10 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.domain.models.IdentityBatch
import com.simprints.infra.logging.LoggingConstants
import com.simprints.infra.logging.Simber
-import com.simprints.matcher.FingerprintMatchResult
-import com.simprints.matcher.MatchBatchInfo
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.usecases.MatcherUseCase.MatcherState
+import com.simprints.infra.matching.FingerprintMatchResult
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.usecase.MatcherUseCase.MatcherState
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.flow.Flow
@@ -30,7 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger
import javax.inject.Inject
import com.simprints.infra.enrolment.records.repository.domain.models.FingerprintIdentity as DomainFingerprintIdentity
-internal class FingerprintMatcherUseCase @Inject constructor(
+class FingerprintMatcherUseCase @Inject constructor(
private val timeHelper: TimeHelper,
private val enrolmentRecordRepository: EnrolmentRecordRepository,
private val resolveBioSdkWrapper: ResolveBioSdkWrapperUseCase,
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/MatchResultSet.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatchResultSet.kt
similarity index 92%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/MatchResultSet.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatchResultSet.kt
index 928d028397..f0129ff06f 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/MatchResultSet.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatchResultSet.kt
@@ -1,12 +1,12 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
-import com.simprints.matcher.MatchResultItem
+import com.simprints.infra.matching.MatchResultItem
import java.util.concurrent.ConcurrentSkipListSet
import java.util.concurrent.atomic.AtomicReference
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock
-internal class MatchResultSet(
+class MatchResultSet(
private val maxSize: Int = MAX_RESULTS,
) {
private val lowestConfidence = AtomicReference(0f)
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/MatcherUseCase.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatcherUseCase.kt
similarity index 80%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/MatcherUseCase.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatcherUseCase.kt
index 0633a13940..061a39fc4c 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/MatcherUseCase.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/MatcherUseCase.kt
@@ -1,13 +1,13 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.simprints.infra.config.store.models.Project
import com.simprints.infra.logging.LoggingConstants
-import com.simprints.matcher.MatchBatchInfo
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.MatchResultItem
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.MatchResultItem
import kotlinx.coroutines.flow.Flow
-internal interface MatcherUseCase {
+interface MatcherUseCase {
val crashReportTag: LoggingConstants.CrashReportTag
/**
diff --git a/feature/matcher/src/main/java/com/simprints/matcher/usecases/SaveMatchEventUseCase.kt b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCase.kt
similarity index 95%
rename from feature/matcher/src/main/java/com/simprints/matcher/usecases/SaveMatchEventUseCase.kt
rename to infra/matching/src/main/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCase.kt
index ee20206b99..b223d97f03 100644
--- a/feature/matcher/src/main/java/com/simprints/matcher/usecases/SaveMatchEventUseCase.kt
+++ b/infra/matching/src/main/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCase.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.simprints.core.SessionCoroutineScope
import com.simprints.core.domain.common.FlowType
@@ -11,15 +11,15 @@ import com.simprints.infra.events.event.domain.models.MatchEntry
import com.simprints.infra.events.event.domain.models.OneToManyMatchEvent
import com.simprints.infra.events.event.domain.models.OneToOneMatchEvent
import com.simprints.infra.events.session.SessionEventRepository
-import com.simprints.matcher.MatchBatchInfo
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.MatchResultItem
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
+import com.simprints.infra.matching.MatchResultItem
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import javax.inject.Inject
import com.simprints.infra.config.store.models.FingerprintConfiguration.FingerComparisonStrategy as ConfigFingerComparisonStrategy
-internal class SaveMatchEventUseCase @Inject constructor(
+class SaveMatchEventUseCase @Inject constructor(
private val eventRepository: SessionEventRepository,
private val configManager: ConfigManager,
@SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope,
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/usecases/CreateRangesUseCaseTest.kt b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/CreateRangesUseCaseTest.kt
similarity index 99%
rename from feature/matcher/src/test/java/com/simprints/matcher/usecases/CreateRangesUseCaseTest.kt
rename to infra/matching/src/test/java/com/simprints/infra/matching/usecase/CreateRangesUseCaseTest.kt
index e0b73d2a98..594e6329c8 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/usecases/CreateRangesUseCaseTest.kt
+++ b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/CreateRangesUseCaseTest.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import com.google.common.truth.Truth.assertThat
import org.junit.Test
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/usecases/FaceMatcherUseCaseTest.kt b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/FaceMatcherUseCaseTest.kt
similarity index 97%
rename from feature/matcher/src/test/java/com/simprints/matcher/usecases/FaceMatcherUseCaseTest.kt
rename to infra/matching/src/test/java/com/simprints/infra/matching/usecase/FaceMatcherUseCaseTest.kt
index aaae5e3212..941c902404 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/usecases/FaceMatcherUseCaseTest.kt
+++ b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/FaceMatcherUseCaseTest.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.google.common.truth.Truth.*
@@ -13,8 +13,8 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.FaceIdentity
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.MatchParams
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.MatchParams
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import io.mockk.*
import io.mockk.impl.annotations.MockK
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/usecases/FingerprintMatcherUseCaseTest.kt b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCaseTest.kt
similarity index 98%
rename from feature/matcher/src/test/java/com/simprints/matcher/usecases/FingerprintMatcherUseCaseTest.kt
rename to infra/matching/src/test/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCaseTest.kt
index f59f4a05a9..f11bfacf83 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/usecases/FingerprintMatcherUseCaseTest.kt
+++ b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/FingerprintMatcherUseCaseTest.kt
@@ -1,4 +1,4 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.google.common.truth.Truth.*
@@ -17,7 +17,7 @@ import com.simprints.infra.enrolment.records.repository.domain.models.BiometricD
import com.simprints.infra.enrolment.records.repository.domain.models.FingerprintIdentity
import com.simprints.infra.enrolment.records.repository.domain.models.IdentityBatch
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
-import com.simprints.matcher.MatchParams
+import com.simprints.infra.matching.MatchParams
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import io.mockk.*
import io.mockk.impl.annotations.MockK
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/usecases/MatchResultSetTest.kt b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/MatchResultSetTest.kt
similarity index 97%
rename from feature/matcher/src/test/java/com/simprints/matcher/usecases/MatchResultSetTest.kt
rename to infra/matching/src/test/java/com/simprints/infra/matching/usecase/MatchResultSetTest.kt
index ef37f711e7..3a89c730b3 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/usecases/MatchResultSetTest.kt
+++ b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/MatchResultSetTest.kt
@@ -1,7 +1,7 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
-import com.google.common.truth.Truth.assertThat
-import com.simprints.matcher.FingerprintMatchResult
+import com.google.common.truth.Truth.*
+import com.simprints.infra.matching.FingerprintMatchResult
import org.junit.Test
import java.util.concurrent.CountDownLatch
import java.util.concurrent.Executors
diff --git a/feature/matcher/src/test/java/com/simprints/matcher/usecases/SaveMatchEventUseCaseTest.kt b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCaseTest.kt
similarity index 97%
rename from feature/matcher/src/test/java/com/simprints/matcher/usecases/SaveMatchEventUseCaseTest.kt
rename to infra/matching/src/test/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCaseTest.kt
index dd27c90068..ae84096e7c 100644
--- a/feature/matcher/src/test/java/com/simprints/matcher/usecases/SaveMatchEventUseCaseTest.kt
+++ b/infra/matching/src/test/java/com/simprints/infra/matching/usecase/SaveMatchEventUseCaseTest.kt
@@ -1,6 +1,6 @@
-package com.simprints.matcher.usecases
+package com.simprints.infra.matching.usecase
-import com.google.common.truth.Truth.assertThat
+import com.google.common.truth.Truth.*
import com.simprints.core.domain.common.FlowType
import com.simprints.core.domain.fingerprint.IFingerIdentifier
import com.simprints.core.domain.tokenization.asTokenizableEncrypted
@@ -15,16 +15,12 @@ import com.simprints.infra.events.event.domain.models.OneToManyMatchEvent.OneToM
import com.simprints.infra.events.event.domain.models.OneToOneMatchEvent
import com.simprints.infra.events.event.domain.models.OneToOneMatchEvent.OneToOneMatchPayload.OneToOneMatchPayloadV4
import com.simprints.infra.events.session.SessionEventRepository
-import com.simprints.matcher.FaceMatchResult
-import com.simprints.matcher.MatchParams
-import com.simprints.matcher.MatchBatchInfo
+import com.simprints.infra.matching.FaceMatchResult
+import com.simprints.infra.matching.MatchBatchInfo
+import com.simprints.infra.matching.MatchParams
import com.simprints.testtools.common.coroutines.TestCoroutineRule
-import io.mockk.MockKAnnotations
-import io.mockk.Runs
-import io.mockk.coEvery
-import io.mockk.coVerify
+import io.mockk.*
import io.mockk.impl.annotations.MockK
-import io.mockk.just
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/settings.gradle.kts b/settings.gradle.kts
index a4fd410e7e..b827c4b8ee 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -140,6 +140,7 @@ include(
":infra:license",
":infra:logging",
":infra:logging-persistent",
+ ":infra:matching",
":infra:auth-store",
":infra:auth-logic",
":infra:network",