diff --git a/.idea/file.template.settings.xml b/.idea/file.template.settings.xml
new file mode 100644
index 0000000000..857b87aec1
--- /dev/null
+++ b/.idea/file.template.settings.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/fileTemplates/Decompose component.kt b/.idea/fileTemplates/Decompose component.kt
new file mode 100644
index 0000000000..6e80375530
--- /dev/null
+++ b/.idea/fileTemplates/Decompose component.kt
@@ -0,0 +1,13 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end
+
+import com.tangem.core.decompose.factory.ComponentFactory
+import com.tangem.core.ui.decompose.ComposableContentComponent
+
+interface ${NAME}Component : ComposableContentComponent {
+
+ data class Params(
+ val data: Any, // TODO("Not yet implemented")
+ )
+
+ interface Factory : ComponentFactory
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Decompose component.kt.child.0.kt b/.idea/fileTemplates/Decompose component.kt.child.0.kt
new file mode 100644
index 0000000000..2fc14ed4ee
--- /dev/null
+++ b/.idea/fileTemplates/Decompose component.kt.child.0.kt
@@ -0,0 +1,5 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.entity#end
+
+internal data class ${NAME}UM(
+ val onBackClick: () -> Unit,
+)
\ No newline at end of file
diff --git a/.idea/fileTemplates/Decompose component.kt.child.1.kt b/.idea/fileTemplates/Decompose component.kt.child.1.kt
new file mode 100644
index 0000000000..1ebfb9ccfb
--- /dev/null
+++ b/.idea/fileTemplates/Decompose component.kt.child.1.kt
@@ -0,0 +1,56 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.ui#end
+
+import android.content.res.Configuration
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.tooling.preview.PreviewParameter
+import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
+import com.tangem.core.ui.components.appbar.AppBarWithBackButton
+import com.tangem.core.ui.res.TangemTheme
+import com.tangem.core.ui.res.TangemThemePreview
+import ${PACKAGE_NAME}.entity.${NAME}UM
+
+@Composable
+internal fun ${NAME}Content(state: ${NAME}UM, modifier: Modifier = Modifier) {
+ Column(
+ modifier = modifier
+ .background(color = TangemTheme.colors.background.secondary)
+ .fillMaxSize()
+ .imePadding()
+ .systemBarsPadding(),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ AppBarWithBackButton(
+ onBackClick = state.onBackClick,
+ modifier = Modifier.height(TangemTheme.dimens.size56),
+ )
+
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(horizontal = TangemTheme.dimens.spacing16)
+ .weight(1f),
+
+ ) {
+ }
+ }
+}
+
+@Preview(showBackground = true, widthDp = 360)
+@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)
+@Composable
+private fun ${NAME}ContentPreview(@PreviewParameter(PreviewStateProvider::class) state: ${NAME}UM) {
+ TangemThemePreview {
+ ${NAME}Content(state = state)
+ }
+}
+
+private class PreviewStateProvider : CollectionPreviewParameterProvider<${NAME}UM>(
+ buildList {
+ TODO("Not yet implemented")
+ },
+)
\ No newline at end of file
diff --git a/.idea/fileTemplates/Decompose component.kt.child.2.kt b/.idea/fileTemplates/Decompose component.kt.child.2.kt
new file mode 100644
index 0000000000..4e0b35fd69
--- /dev/null
+++ b/.idea/fileTemplates/Decompose component.kt.child.2.kt
@@ -0,0 +1,31 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.model#end
+
+import com.tangem.core.decompose.di.ModelScoped
+import com.tangem.core.decompose.model.Model
+import com.tangem.core.decompose.model.ParamsContainer
+import com.tangem.core.decompose.navigation.Router
+import com.tangem.core.decompose.ui.UiMessageSender
+import ${PACKAGE_NAME}.${NAME}Component
+import ${PACKAGE_NAME}.entity.${NAME}UM
+import com.tangem.utils.coroutines.CoroutineDispatcherProvider
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import javax.inject.Inject
+
+@ModelScoped
+internal class ${NAME}Model @Inject constructor(
+ paramsContainer: ParamsContainer,
+ private val messageSender: UiMessageSender,
+ private val router: Router,
+ override val dispatchers: CoroutineDispatcherProvider,
+) : Model() {
+
+ private val params = paramsContainer.require<${NAME}Component.Params>()
+
+ val uiState: StateFlow<${NAME}UM>
+ field: MutableStateFlow<${NAME}UM> = MutableStateFlow(getInitialState())
+
+ private fun getInitialState(): ${NAME}UM {
+ TODO("Not yet implemented")
+ }
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Decompose component.kt.child.3.kt b/.idea/fileTemplates/Decompose component.kt.child.3.kt
new file mode 100644
index 0000000000..240ab70b6a
--- /dev/null
+++ b/.idea/fileTemplates/Decompose component.kt.child.3.kt
@@ -0,0 +1,39 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end
+
+import androidx.activity.compose.BackHandler
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Modifier
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.tangem.core.decompose.context.AppComponentContext
+import com.tangem.core.decompose.model.getOrCreateModel
+import ${PACKAGE_NAME}.model.${NAME}Model
+import ${PACKAGE_NAME}.ui.${NAME}Content
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+
+internal class Default${NAME}Component @AssistedInject constructor(
+ @Assisted appComponentContext: AppComponentContext,
+ @Assisted params: ${NAME}Component.Params,
+) : AppComponentContext by appComponentContext, ${NAME}Component {
+
+ private val model: ${NAME}Model = getOrCreateModel(params)
+
+ @Composable
+ override fun Content(modifier: Modifier) {
+ val state by model.uiState.collectAsStateWithLifecycle()
+
+ ${NAME}Content(modifier = modifier, state = state)
+
+ BackHandler(onBack = state.onBackClick)
+ }
+
+ @AssistedFactory
+ interface Factory : ${NAME}Component.Factory {
+ override fun create(
+ context: AppComponentContext,
+ params: ${NAME}Component.Params,
+ ): Default${NAME}Component
+ }
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FeatureToggles.kt b/.idea/fileTemplates/FeatureToggles.kt
new file mode 100644
index 0000000000..0446ea3f55
--- /dev/null
+++ b/.idea/fileTemplates/FeatureToggles.kt
@@ -0,0 +1,6 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
+
+interface ${NAME}FeatureToggles {
+
+ val isFeatureEnabled: Boolean
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FeatureToggles.kt.child.0.kt b/.idea/fileTemplates/FeatureToggles.kt.child.0.kt
new file mode 100644
index 0000000000..7bc97d405a
--- /dev/null
+++ b/.idea/fileTemplates/FeatureToggles.kt.child.0.kt
@@ -0,0 +1,11 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
+
+import com.tangem.core.configtoggle.feature.FeatureTogglesManager
+
+internal class Default${NAME}FeatureToggles(
+ private val featureTogglesManager: FeatureTogglesManager,
+) : ${NAME}FeatureToggles {
+
+ override val isFeatureEnabled: Boolean
+ get() = featureTogglesManager.isFeatureEnabled(name = TODO("add feature name"))
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt b/.idea/fileTemplates/FlowPackaging.kt
new file mode 100644
index 0000000000..ac3c0c8000
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt
@@ -0,0 +1,17 @@
+#if ($FlowType && $FlowType != "")
+ #set($Type = $FlowType)
+#else
+ #set($Type = "TODO")
+#end
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.producer#end
+
+import com.tangem.domain.core.flow.FlowProducer
+
+interface ${NAME}Producer : FlowProducer<${FlowType}> {
+
+ data class Params(
+ val id: String, // TODO("Not yet implemented")
+ )
+
+ interface Factory : FlowProducer.Factory
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.0.kt b/.idea/fileTemplates/FlowPackaging.kt.child.0.kt
new file mode 100644
index 0000000000..5cabc5491d
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.0.kt
@@ -0,0 +1,18 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.di#end
+
+import ${PACKAGE_NAME}.fetcher.Default${NAME}Fetcher
+import ${PACKAGE_NAME}.fetcher.${NAME}Fetcher
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+internal interface ${NAME}FetcherModule {
+
+ @Binds
+ @Singleton
+ fun bind${NAME}Fetcher(impl: Default${NAME}Fetcher): ${NAME}Fetcher
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.1.kt b/.idea/fileTemplates/FlowPackaging.kt.child.1.kt
new file mode 100644
index 0000000000..67c5ccff53
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.1.kt
@@ -0,0 +1,20 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.di#end
+
+import ${PACKAGE_NAME}.producer.Default${NAME}Producer
+import ${PACKAGE_NAME}.producer.${NAME}Producer
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+internal interface ${NAME}ProducerFactoryModule {
+
+ @Binds
+ @Singleton
+ fun bind${NAME}ProducerFactory(
+ impl: Default${NAME}Producer.Factory,
+ ): ${NAME}Producer.Factory
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.2.kt b/.idea/fileTemplates/FlowPackaging.kt.child.2.kt
new file mode 100644
index 0000000000..e706f14285
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.2.kt
@@ -0,0 +1,23 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.di#end
+
+import ${PACKAGE_NAME}.producer.${NAME}Producer
+import ${PACKAGE_NAME}.supplier.${NAME}Supplier
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+internal object ${NAME}SupplierModule {
+
+ @Provides
+ @Singleton
+ fun provide${NAME}Supplier(factory: ${NAME}Producer.Factory): ${NAME}Supplier {
+ return object : ${NAME}Supplier(
+ factory = factory,
+ keyCreator = { TODO("Not yet implemented") },
+ ) {}
+ }
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.3.kt b/.idea/fileTemplates/FlowPackaging.kt.child.3.kt
new file mode 100644
index 0000000000..8cf215c774
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.3.kt
@@ -0,0 +1,14 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.fetcher#end
+
+import arrow.core.Either
+import com.tangem.utils.coroutines.CoroutineDispatcherProvider
+import javax.inject.Inject
+
+internal class Default${NAME}Fetcher @Inject constructor(
+ private val dispatchers: CoroutineDispatcherProvider,
+) : ${NAME}Fetcher {
+
+ override suspend fun invoke(params: ${NAME}Fetcher.Params): Either {
+ TODO("Not yet implemented")
+ }
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.4.kt b/.idea/fileTemplates/FlowPackaging.kt.child.4.kt
new file mode 100644
index 0000000000..572696e7d0
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.4.kt
@@ -0,0 +1,31 @@
+#if ($FlowType && $FlowType != "")
+ #set($Type = $FlowType)
+#else
+ #set($Type = "TODO")
+#end
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.producer#end
+
+import arrow.core.Option
+import com.tangem.utils.coroutines.CoroutineDispatcherProvider
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import kotlinx.coroutines.flow.Flow
+
+internal class Default${NAME}Producer @AssistedInject constructor(
+ @Assisted val params: ${NAME}Producer.Params,
+ private val dispatchers: CoroutineDispatcherProvider,
+) : TestProducer {
+
+ override val fallback: Option<$Type>
+ get() = TODO("Not yet implemented")
+
+ override fun produce(): Flow<$Type> {
+ TODO("Not yet implemented")
+ }
+
+ @AssistedFactory
+ interface Factory : ${NAME}Producer.Factory {
+ override fun create(params: ${NAME}Producer.Params): Default${NAME}Producer
+ }
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.5.kt b/.idea/fileTemplates/FlowPackaging.kt.child.5.kt
new file mode 100644
index 0000000000..a4a91bec1b
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.5.kt
@@ -0,0 +1,10 @@
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.fetcher#end
+
+import com.tangem.domain.core.flow.FlowFetcher
+
+interface ${NAME}Fetcher : FlowFetcher<${NAME}Fetcher.Params> {
+
+ data class Params(
+ val id: String, // TODO("Not yet implemented")
+ )
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/FlowPackaging.kt.child.6.kt b/.idea/fileTemplates/FlowPackaging.kt.child.6.kt
new file mode 100644
index 0000000000..e354307a9b
--- /dev/null
+++ b/.idea/fileTemplates/FlowPackaging.kt.child.6.kt
@@ -0,0 +1,15 @@
+#if ($FlowType && $FlowType != "")
+ #set($Type = $FlowType)
+#else
+ #set($Type = "TODO")
+#end
+#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME}.supplier#end
+
+import ${PACKAGE_NAME}.producer.${NAME}Producer
+import com.tangem.domain.core.flow.FlowCachingSupplier
+import kotlinx.coroutines.flow.Flow
+
+abstract class ${NAME}Supplier(
+ override val factory: ${NAME}Producer.Factory,
+ override val keyCreator: (${NAME}Producer.Params) -> String,
+) : FlowCachingSupplier<${NAME}Producer, ${NAME}Producer.Params, $Type>()
\ No newline at end of file