diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ce8a2776e1..3081823d17 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -53,7 +53,7 @@
This card has enforced security delay
Please hold the card firmly\n until the operation is completed…
You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds.
- This is a genuine Tangem card. Please follow instructions written on the card to install the official app.
+ Uh oh!\nYour Tangem card was made to work with a different application. Please see the name and instructions on your card, and install the correct app.
Manage user PIN1…
diff --git a/settings.gradle b/settings.gradle
index db8941d8f2..9a87107347 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':tangem-sdk-old', ':server-android', ':tangem-card-old', ':tangem-core', ':tangem-sdk', ':tangem-demo', ':blockchain', ':blockchain-demo'
\ No newline at end of file
+include ':app', ':tangem-sdk-old', ':server-android', ':tangem-card-old', ':tangem-core', ':tangem-sdk', ':tangem-devkit', ':blockchain', ':blockchain-demo'
\ No newline at end of file
diff --git a/tangem-core/src/main/java/com/tangem/CardFilter.kt b/tangem-core/src/main/java/com/tangem/CardFilter.kt
new file mode 100644
index 0000000000..d1275d1d1d
--- /dev/null
+++ b/tangem-core/src/main/java/com/tangem/CardFilter.kt
@@ -0,0 +1,14 @@
+package com.tangem
+
+import com.tangem.common.extensions.CardType
+import java.util.*
+
+/**
+ * Filter that can be used to limit cards that can be interacted with in TangemSdk.
+ *
+ * @property allowedCardTypes Type of cards that are allowed to be interacted with in TangemSdk.
+ */
+data class CardFilter(
+
+ var allowedCardTypes: EnumSet = EnumSet.allOf(CardType::class.java)
+)
\ No newline at end of file
diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt
index 450c056997..e2cbafb179 100644
--- a/tangem-core/src/main/java/com/tangem/CardSession.kt
+++ b/tangem-core/src/main/java/com/tangem/CardSession.kt
@@ -8,6 +8,7 @@ import com.tangem.common.CompletionResult
import com.tangem.common.apdu.CommandApdu
import com.tangem.common.apdu.ResponseApdu
import com.tangem.common.extensions.calculateSha256
+import com.tangem.common.extensions.getType
import com.tangem.crypto.EncryptionHelper
import com.tangem.crypto.FastEncryptionHelper
import com.tangem.crypto.StrongEncryptionHelper
@@ -20,7 +21,7 @@ interface CardSessionRunnable {
/**
* The starting point for custom business logic.
- * Implement this interface and use [TangemSdk.startSession] to run.
+ * Implement this interface and use [TangemSdk.startSessionWithRunnable] to run.
* @param session run commands in this [CardSession].
* @param callback trigger the callback to complete the task.
*/
@@ -136,6 +137,12 @@ class CardSession(
callback(CompletionResult.Failure(SessionError.WrongCard()))
return@run
}
+ val allowedCardTypes = environment.cardFilter.allowedCardTypes
+ if (!allowedCardTypes.contains(result.data.getType())) {
+ stopWithError(SessionError.WrongCardType())
+ callback(CompletionResult.Failure(SessionError.WrongCardType()))
+ return@run
+ }
environment.card = result.data
cardId = receivedCardId
callback(CompletionResult.Success(result.data))
diff --git a/tangem-core/src/main/java/com/tangem/Config.kt b/tangem-core/src/main/java/com/tangem/Config.kt
index d99c57fcf9..20c5c849bd 100644
--- a/tangem-core/src/main/java/com/tangem/Config.kt
+++ b/tangem-core/src/main/java/com/tangem/Config.kt
@@ -18,16 +18,21 @@ class Config(
the correctness of Terminal_Transaction_Signature using previously stored Terminal_PublicKey
and, if correct, will skip security delay for the current SIGN operation.
*/
- val linkedTerminal: Boolean = true,
+ var linkedTerminal: Boolean = true,
/**
* If not null, it will be used to validate Issuer data and issuer extra data.
* If null, issuerPublicKey from current card will be used.
*/
- val issuerPublicKey: ByteArray? = null,
+ var issuerPublicKey: ByteArray? = null,
/**
* Level of encryption used in communication with a Tangem Card.
*/
- val encryptionMode: EncryptionMode = EncryptionMode.NONE
+ var encryptionMode: EncryptionMode = EncryptionMode.NONE,
+
+ /**
+ * Filter that can be used to limit cards that can be interacted with in TangemSdk.
+ */
+ val cardFilter: CardFilter = CardFilter()
)
\ No newline at end of file
diff --git a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt
index 0dabbc74d6..6400e98e39 100644
--- a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt
+++ b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt
@@ -20,7 +20,8 @@ data class SessionEnvironment(
val terminalKeys: KeyPair? = null,
var encryptionMode: EncryptionMode = EncryptionMode.NONE,
var encryptionKey: ByteArray? = null,
- val cvc: ByteArray? = null
+ val cvc: ByteArray? = null,
+ var cardFilter: CardFilter
) {
fun setPin1(pin1: String) {
diff --git a/tangem-core/src/main/java/com/tangem/SessionError.kt b/tangem-core/src/main/java/com/tangem/SessionError.kt
index 07209b6a3f..b5f702ceb2 100644
--- a/tangem-core/src/main/java/com/tangem/SessionError.kt
+++ b/tangem-core/src/main/java/com/tangem/SessionError.kt
@@ -106,6 +106,13 @@ sealed class SessionError(val code: Int) : Exception() {
*/
class HashSizeMustBeEqual : SessionError(3005)
+
+ /**
+ * This error is returned when a user scans a card of a [com.tangem.common.extensions.CardType]
+ * that is not specified in [Config.allowedCards].
+ */
+ class WrongCardType : SessionError(3006)
+
/**
* This error is returned when [com.tangem.TangemSdk] was called with a new [Task],
* while a previous [Task] is still in progress.
diff --git a/tangem-core/src/main/java/com/tangem/TangemSdk.kt b/tangem-core/src/main/java/com/tangem/TangemSdk.kt
index 145efc088e..a5f90dc0ca 100644
--- a/tangem-core/src/main/java/com/tangem/TangemSdk.kt
+++ b/tangem-core/src/main/java/com/tangem/TangemSdk.kt
@@ -49,7 +49,7 @@ class TangemSdk(
* in the form of [Card] if the task was performed successfully or [SessionError] in case of an error.
*/
fun scanCard(initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) {
- startSession(ScanTask(), null, initialMessage, callback)
+ startSessionWithRunnable(ScanTask(), null, initialMessage, callback)
}
/**
@@ -72,7 +72,7 @@ class TangemSdk(
*/
fun sign(hashes: Array, cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(SignCommand(hashes), cardId, initialMessage, callback)
+ startSessionWithRunnable(SignCommand(hashes), cardId, initialMessage, callback)
}
/**
@@ -90,7 +90,7 @@ class TangemSdk(
*/
fun readIssuerData(cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(ReadIssuerDataCommand(config.issuerPublicKey), cardId, initialMessage, callback)
+ startSessionWithRunnable(ReadIssuerDataCommand(config.issuerPublicKey), cardId, initialMessage, callback)
}
/**
@@ -109,7 +109,7 @@ class TangemSdk(
*/
fun readIssuerExtraData(cardId: String,
callback: (result: CompletionResult) -> Unit) {
- startSession(ReadIssuerExtraDataCommand(config.issuerPublicKey), cardId, null, callback)
+ startSessionWithRunnable(ReadIssuerExtraDataCommand(config.issuerPublicKey), cardId, null, callback)
}
/**
@@ -140,7 +140,7 @@ class TangemSdk(
issuerDataCounter,
config.issuerPublicKey
)
- startSession(command, cardId, initialMessage, callback)
+ startSessionWithRunnable(command, cardId, initialMessage, callback)
}
/**
@@ -179,7 +179,7 @@ class TangemSdk(
issuerDataCounter,
config.issuerPublicKey
)
- startSession(command, cardId, initialMessage, callback)
+ startSessionWithRunnable(command, cardId, initialMessage, callback)
}
/**
@@ -206,7 +206,7 @@ class TangemSdk(
callback: (result: CompletionResult) -> Unit
) {
val command = WriteUserDataCommand(userData, userProtectedData, userCounter, userProtectedCounter)
- startSession(command, cardId, initialMessage, callback)
+ startSessionWithRunnable(command, cardId, initialMessage, callback)
}
/**
@@ -228,7 +228,7 @@ class TangemSdk(
*/
fun readUserData(cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(ReadUserDataCommand(), cardId, initialMessage, callback)
+ startSessionWithRunnable(ReadUserDataCommand(), cardId, initialMessage, callback)
}
/**
@@ -250,7 +250,7 @@ class TangemSdk(
*/
fun createWallet(cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(CreateWalletTask(), cardId, initialMessage, callback)
+ startSessionWithRunnable(CreateWalletTask(), cardId, initialMessage, callback)
}
/**
@@ -269,7 +269,7 @@ class TangemSdk(
*/
fun purgeWallet(cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(PurgeWalletCommand(), cardId, initialMessage, callback)
+ startSessionWithRunnable(PurgeWalletCommand(), cardId, initialMessage, callback)
}
/**
@@ -287,7 +287,7 @@ class TangemSdk(
* */
fun depersonalize(cardId: String, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
- startSession(DepersonalizeCommand(), cardId, initialMessage, callback)
+ startSessionWithRunnable(DepersonalizeCommand(), cardId, initialMessage, callback)
}
/**
@@ -313,7 +313,7 @@ class TangemSdk(
initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
val command = PersonalizeCommand(config, issuer, manufacturer, acquirer)
- startSession(command, null, initialMessage, callback)
+ startSessionWithRunnable(command, null, initialMessage, callback)
}
/**
@@ -330,7 +330,7 @@ class TangemSdk(
* If null, default message will be used.
* @callback: Standard [TangemSdk] callback.
*/
- fun startSession(
+ fun startSessionWithRunnable(
runnable: CardSessionRunnable, cardId: String? = null, initialMessage: Message? = null,
callback: (result: CompletionResult) -> Unit) {
val cardSession = CardSession(buildEnvironment(), reader, viewDelegate, cardId, initialMessage)
@@ -349,8 +349,7 @@ class TangemSdk(
* @callback: At first, you should check that the [SessionError] is not null,
* then you can use the [CardSession] to interact with a card.
*/
- fun startSession(
- cardId: String? = null, initialMessage: Message? = null,
+ fun startSession(cardId: String? = null, initialMessage: Message? = null,
callback: (session: CardSession, error: SessionError?) -> Unit) {
val cardSession = CardSession(buildEnvironment(), reader, viewDelegate, cardId, initialMessage)
Thread().run { cardSession.start(callback) }
@@ -367,7 +366,8 @@ class TangemSdk(
private fun buildEnvironment(): SessionEnvironment {
val terminalKeys = if (config.linkedTerminal) terminalKeysService?.getKeys() else null
return SessionEnvironment(
- terminalKeys = terminalKeys
+ terminalKeys = terminalKeys,
+ cardFilter = config.cardFilter
)
}
diff --git a/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt b/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt
new file mode 100644
index 0000000000..97243f3655
--- /dev/null
+++ b/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt
@@ -0,0 +1,22 @@
+package com.tangem.common.extensions
+
+import com.tangem.commands.Card
+
+fun Card.getType(): CardType {
+ val firmware = this.firmwareVersion ?: return CardType.Unknown
+ return when {
+ firmware.endsWith("d SDK") -> {
+ CardType.Sdk
+ }
+ firmware.endsWith("r") -> {
+ CardType.Release
+ }
+ else -> {
+ CardType.Unknown
+ }
+ }
+}
+
+enum class CardType {
+ Sdk, Release, Unknown
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt
deleted file mode 100644
index 2ed1e1ab8f..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.tangem.tangemtest._arch.widget
-
-import android.view.ViewGroup
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
-import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget
-
-/**
-[REDACTED_AUTHOR]
- */
-interface ItemWidgetBuilder {
- fun build(item: BaseItem, parent: ViewGroup): ViewWidget?
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt
deleted file mode 100644
index 1b832e362a..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.tangem.tangemtest._arch.widget.impl
-
-import android.view.ViewGroup
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItemViewModel
-import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget
-
-/**
-[REDACTED_AUTHOR]
- */
-class StubWidget(id: Id, parent: ViewGroup) : BaseViewWidget(parent, BaseItem(id, BaseItemViewModel())) {
- override fun getLayoutId(): Int = R.layout.w_empty
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt
deleted file mode 100644
index c892b6761b..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.managers
-
-import com.tangem.tangemtest._arch.structure.impl.EditTextItem
-import com.tangem.tangemtest.ucase.domain.actions.DepersonalizeAction
-import com.tangem.tangemtest.ucase.domain.actions.ScanAction
-import com.tangem.tangemtest.ucase.domain.actions.SignAction
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.SignScanConsequence
-import com.tangem.tangemtest.ucase.variants.TlvId
-
-/**
-[REDACTED_AUTHOR]
- */
-class ScanItemsManager : BaseItemsManager(ScanAction())
-
-class DepersonalizeItemsManager : BaseItemsManager(DepersonalizeAction()) {
-
- init {
- setItems(listOf(EditTextItem(TlvId.CardId, null)))
- }
-}
-
-class SignItemsManager : BaseItemsManager(SignAction()) {
-
- init {
- setItemChangeConsequences(SignScanConsequence())
- setItems(listOf(
- EditTextItem(TlvId.CardId, null),
- EditTextItem(TlvId.TransactionOutHash, "Data used for hashing")
- ))
- }
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt
deleted file mode 100644
index bb771e86f6..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence
-
-import com.tangem.commands.Card
-import com.tangem.commands.EllipticCurve
-import com.tangem.common.extensions.calculateSha256
-import com.tangem.common.extensions.calculateSha512
-import com.tangem.common.extensions.toHexString
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey
-import com.tangem.tangemtest.ucase.tunnel.ActionView
-import com.tangem.tangemtest.ucase.variants.TlvId
-import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI
-
-/**
-[REDACTED_AUTHOR]
- *
- * The ParamsChangeConsequence class family modifies parameters depending on the state
- * of the incoming parameter
- */
-interface ItemsChangeConsequence {
- fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List- ): List
- ?
-}
-
-class SignScanConsequence : ItemsChangeConsequence {
-
- override fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List
- ): List
- ? {
- if (changedItem.id != TlvId.CardId) return null
-
- val hashItem = itemList.findItem(TlvId.TransactionOutHash) ?: return null
- val affectedItems = mutableListOf(hashItem)
- val card = payload.remove(PayloadKey.card) as Card?
- if (card == null) {
- hashItem.restoreDefaultData()
- postUI { (payload.get(PayloadKey.actionView) as? ActionView)?.enableActionFab(false) }
- } else {
- val dataForHashing = hashItem.getData() as? String ?: "Any data mother...s"
- val hashedData = when (card.curve) {
- EllipticCurve.Secp256k1 -> dataForHashing.calculateSha256()
- EllipticCurve.Ed25519 -> dataForHashing.calculateSha512()
- else -> return null
- }
- hashItem.setData(hashedData.toHexString())
- }
- return affectedItems.toList()
- }
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt
deleted file mode 100644
index 13f4ddcf27..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.tangem.tangemtest.ucase.variants
-
-import com.tangem.tangemtest._arch.structure.Id
-
-/**
-[REDACTED_AUTHOR]
- */
-enum class TlvId : Id {
- CardId,
- TransactionOutHash,
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt
deleted file mode 100644
index 107ab9b3b3..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.tangem.tangemtest.ucase.variants.depersonalize.ui
-
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.managers.DepersonalizeItemsManager
-import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
-
-/**
-[REDACTED_AUTHOR]
- */
-class DepersonalizeActionFragment : BaseCardActionFragment() {
-
- override val itemsManager: ItemsManager by lazy { DepersonalizeItemsManager() }
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt
deleted file mode 100644
index 452b1e47bc..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.tangem.tangemtest.ucase.variants.responses.item
-
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItemViewModel
-import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel
-import com.tangem.tangemtest._arch.structure.abstraction.ViewState
-import com.tangem.tangemtest._arch.structure.impl.TypedItem
-
-open class TextHeaderItem(id: Id, viewModel: ItemViewModel) : TypedItem(id, viewModel) {
- constructor(id: Id, value: String? = null, viewState: ViewState = ViewState())
- : this(id, BaseItemViewModel(value, viewState))
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt
deleted file mode 100644
index ec39879032..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.tangem.tangemtest.ucase.variants.responses.ui.widget
-
-import android.view.ViewGroup
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
-import com.tangem.tangemtest._arch.structure.impl.BoolItem
-import com.tangem.tangemtest._arch.structure.impl.TextItem
-import com.tangem.tangemtest._arch.widget.ItemWidgetBuilder
-import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget
-import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem
-
-/**
-[REDACTED_AUTHOR]
- */
-class ResponseItemBuilder : ItemWidgetBuilder {
- override fun build(item: BaseItem, parent: ViewGroup): ViewWidget? {
- return when (item) {
- is TextHeaderItem -> ResponseHeaderWidget(parent, item)
- is TextItem -> ResponseTextWidget(parent, item)
- is BoolItem -> CheckBoxWidget(parent, item)
- else -> null
- }
- }
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt
deleted file mode 100644
index 4453eec6e1..0000000000
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.tangem.tangemtest.ucase.variants.sign.ui
-
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.managers.SignItemsManager
-import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
-
-/**
-[REDACTED_AUTHOR]
- */
-class SignActionFragment : BaseCardActionFragment() {
-
- override val itemsManager: ItemsManager by lazy { SignItemsManager() }
-}
\ No newline at end of file
diff --git a/tangem-demo/src/main/res/drawable/ic_launcher_background.xml b/tangem-demo/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 0d025f9bf6..0000000000
--- a/tangem-demo/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index eca70cfe52..0000000000
--- a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index eca70cfe52..0000000000
--- a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 898f3ed59a..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index dffca3601e..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 64ba76f75e..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index dae5e08234..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index e5ed46597e..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 14ed0af350..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index b0907cac3b..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index d8ae031549..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 2c18de9e66..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index beed3cdd2c..0000000000
Binary files a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/tangem-demo/.gitignore b/tangem-devkit/.gitignore
similarity index 100%
rename from tangem-demo/.gitignore
rename to tangem-devkit/.gitignore
diff --git a/tangem-demo/build.gradle b/tangem-devkit/build.gradle
similarity index 97%
rename from tangem-demo/build.gradle
rename to tangem-devkit/build.gradle
index fd56546bed..e692140432 100644
--- a/tangem-demo/build.gradle
+++ b/tangem-devkit/build.gradle
@@ -6,7 +6,7 @@ android {
buildToolsVersion "29.0.3"
defaultConfig {
- applicationId "com.tangem.tangemtest"
+ applicationId "com.tangem.devkit"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
diff --git a/tangem-demo/proguard-rules.pro b/tangem-devkit/proguard-rules.pro
similarity index 100%
rename from tangem-demo/proguard-rules.pro
rename to tangem-devkit/proguard-rules.pro
diff --git a/tangem-demo/src/main/AndroidManifest.xml b/tangem-devkit/src/main/AndroidManifest.xml
similarity index 91%
rename from tangem-demo/src/main/AndroidManifest.xml
rename to tangem-devkit/src/main/AndroidManifest.xml
index cf184dcfe2..e0749468f0 100644
--- a/tangem-demo/src/main/AndroidManifest.xml
+++ b/tangem-devkit/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
+ package="com.tangem.devkit">
-
+
@@ -48,7 +48,7 @@
android:resource="@xml/nfc_tech_filter" />
-
+
diff --git a/tangem-devkit/src/main/ic_launcher-playstore.png b/tangem-devkit/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000000..6e5af9f8f6
Binary files /dev/null and b/tangem-devkit/src/main/ic_launcher-playstore.png differ
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt b/tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt
similarity index 79%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt
index ab604ee506..60ee3d4564 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt
@@ -1,11 +1,11 @@
-package com.tangem.tangemtest
+package com.tangem.devkit
import android.app.Application
import android.content.Context
import android.content.SharedPreferences
-import com.tangem.tangemtest._arch.structure.ILog
-import com.tangem.tangemtest._arch.structure.ItemLogger
-import com.tangem.tangemtest.commons.TangemLogger
+import com.tangem.devkit._arch.structure.ILog
+import com.tangem.devkit._arch.structure.ItemLogger
+import com.tangem.devkit.commons.TangemLogger
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt
similarity index 99%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt
index 40998ca19b..ffccc70603 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest
+package com.tangem.devkit
import android.content.Intent
import android.os.Bundle
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt
similarity index 99%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt
index 7f3ba0639d..c6124d542f 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest
+package com.tangem.devkit
import android.os.Bundle
import android.view.View
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt
similarity index 96%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt
index 943023a1c1..1e6ed8667e 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch
+package com.tangem.devkit._arch
import android.util.Log
import androidx.annotation.MainThread
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt
similarity index 86%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt
index 309309c947..018e074061 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.structure
+package com.tangem.devkit._arch.structure
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt
similarity index 82%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt
index 5e517808f2..e3fcb31dbf 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.structure
+package com.tangem.devkit._arch.structure
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt
similarity index 94%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt
index e71fc33cb6..5ba36bbbaa 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.structure
+package com.tangem.devkit._arch.structure
import ru.dev.gbixahue.eu4d.lib.android.global.log.Logger
import ru.dev.gbixahue.eu4d.lib.android.global.log.TagLogger
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt
similarity index 81%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt
index 2aa3fb6af5..41a4aab5ae 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt
similarity index 87%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt
index 7800192199..d1fae9c535 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt
index 20a8def0e6..1d38ba6f6d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt
@@ -1,7 +1,7 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
-import com.tangem.tangemtest._arch.structure.ILog
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.ILog
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt
similarity index 93%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt
index fc106588e6..eead6c8e3d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt
@@ -1,8 +1,8 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
-import com.tangem.tangemtest._arch.structure.ILog
-import com.tangem.tangemtest._arch.structure.Payload
-import com.tangem.tangemtest._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.ILog
+import com.tangem.devkit._arch.structure.Payload
+import com.tangem.devkit._arch.structure.PayloadHolder
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt
similarity index 86%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt
index 09823a8495..d6b1cdb38c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt
similarity index 75%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt
index 71bdc779c7..aaa6254d7c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.structure.abstraction
+package com.tangem.devkit._arch.structure.abstraction
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt
index d4e4dde775..80145d31e4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt
@@ -1,7 +1,7 @@
-package com.tangem.tangemtest._arch.structure.impl
+package com.tangem.devkit._arch.structure.impl
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.*
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.*
/**
[REDACTED_AUTHOR]
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt
new file mode 100644
index 0000000000..4659c0ac49
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt
@@ -0,0 +1,12 @@
+package com.tangem.devkit._arch.widget
+
+import android.view.ViewGroup
+import com.tangem.devkit._arch.structure.abstraction.BaseItem
+import com.tangem.devkit._arch.widget.abstraction.ViewWidget
+
+/**
+[REDACTED_AUTHOR]
+ */
+interface ItemWidgetBuilder {
+ fun build(item: BaseItem, parent: ViewGroup): ViewWidget?
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt
similarity index 65%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt
index 3d9a3493a5..cb39aa9072 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest._arch.widget
+package com.tangem.devkit._arch.widget
import android.view.ViewGroup
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup
-import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget
-import com.tangem.tangemtest._arch.widget.impl.LinearGroupWidget
-import com.tangem.tangemtest._arch.widget.impl.StubWidget
+import com.tangem.devkit._arch.structure.abstraction.BaseItem
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.ItemGroup
+import com.tangem.devkit._arch.widget.abstraction.ViewWidget
+import com.tangem.devkit._arch.widget.impl.LinearGroupWidget
+import com.tangem.devkit._arch.widget.impl.StubWidget
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt
similarity index 87%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt
index 9b6c5f9d2c..752d178400 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._arch.widget.abstraction
+package com.tangem.devkit._arch.widget.abstraction
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
@@ -6,11 +6,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.ColorRes
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.StringResId
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.ViewState
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.StringResId
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.ViewState
import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt
similarity index 53%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt
index 97c8d36a35..54948387de 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest._arch.widget.impl
+package com.tangem.devkit._arch.widget.impl
import android.view.ViewGroup
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup
-import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.ItemGroup
+import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget
/**
[REDACTED_AUTHOR]
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt
new file mode 100644
index 0000000000..0edc41b3be
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt
@@ -0,0 +1,15 @@
+package com.tangem.devkit._arch.widget.impl
+
+import android.view.ViewGroup
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.BaseItem
+import com.tangem.devkit._arch.structure.abstraction.BaseItemViewModel
+import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget
+
+/**
+[REDACTED_AUTHOR]
+ */
+class StubWidget(id: Id, parent: ViewGroup) : BaseViewWidget(parent, BaseItem(id, BaseItemViewModel())) {
+ override fun getLayoutId(): Int = R.layout.w_empty
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt
similarity index 97%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt
index c47ac39601..dbfd82105f 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._main
+package com.tangem.devkit._main
import android.content.res.Resources
import android.os.Bundle
@@ -12,7 +12,7 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupWithNavController
-import com.tangem.tangemtest.R
+import com.tangem.devkit.R
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt
similarity index 95%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt
index 3900d86530..6766c6d77f 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._main
+package com.tangem.devkit._main
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt
similarity index 84%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt
index 4e10211223..78af64f574 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest._main.entryPoint
+package com.tangem.devkit._main.entryPoint
import android.os.Bundle
import android.view.View
@@ -7,13 +7,13 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._main.MainViewModel
-import com.tangem.tangemtest.extensions.view.beginDelayedTransition
-import com.tangem.tangemtest.ucase.getDefaultNavigationOptions
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
-import com.tangem.tangemtest.ucase.ui.BaseFragment
+import com.tangem.devkit.R
+import com.tangem.devkit._main.MainViewModel
+import com.tangem.devkit.extensions.view.beginDelayedTransition
+import com.tangem.devkit.ucase.getDefaultNavigationOptions
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.resources.MainResourceHolder
+import com.tangem.devkit.ucase.ui.BaseFragment
import kotlinx.android.synthetic.main.fg_entry_point.*
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt
index 5433027e92..01162d2eee 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt
@@ -1,14 +1,14 @@
-package com.tangem.tangemtest._main.entryPoint
+package com.tangem.devkit._main.entryPoint
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest.ucase.resources.ActionRes
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
+import com.tangem.devkit.R
+import com.tangem.devkit.ucase.resources.ActionRes
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.resources.MainResourceHolder
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseVH
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt
similarity index 87%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt
index 6c3b1abc26..3a1776e7c6 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.commons
+package com.tangem.devkit.commons
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt
similarity index 98%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt
index de7db7ae3e..5d4c924409 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.commons
+package com.tangem.devkit.commons
import android.app.Activity
import android.app.Dialog
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt
similarity index 83%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt
index 59ae0da2b9..0f80ba2e83 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.commons
+package com.tangem.devkit.commons
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt
similarity index 77%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt
index 795c23c726..94e709455a 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.commons
+package com.tangem.devkit.commons
import ru.dev.gbixahue.eu4d.lib.android.global.log.TagLogger
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt
similarity index 90%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt
index ce21b9fae6..4e134e0336 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.commons.view
+package com.tangem.devkit.commons.view
import android.widget.TextView
import androidx.annotation.StringRes
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt
similarity index 92%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt
index 3a9205574c..032e162d53 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.extensions
+package com.tangem.devkit.extensions
import android.content.Intent
import androidx.activity.ComponentActivity
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt
similarity index 99%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt
index ab8c84334b..fb3fefaeed 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.extensions
+package com.tangem.devkit.extensions
import android.app.Application
import android.content.Context
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt
similarity index 90%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt
index d637d6f89a..f40be815b4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.extensions
+package com.tangem.devkit.extensions
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt
similarity index 87%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt
index d58f12aa97..1a6762eca0 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.extensions.view
+package com.tangem.devkit.extensions.view
import android.view.ViewGroup
import androidx.transition.AutoTransition
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt
similarity index 85%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt
index fa588f2b68..c006bf6aa4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt
@@ -1,8 +1,8 @@
-package com.tangem.tangemtest.ucase
+package com.tangem.devkit.ucase
import androidx.navigation.NavOptions
import androidx.navigation.navOptions
-import com.tangem.tangemtest.R
+import com.tangem.devkit.R
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt
similarity index 72%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt
index e8358b8071..f0c92ad43e 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt
@@ -1,14 +1,14 @@
-package com.tangem.tangemtest.ucase.domain.actions
+package com.tangem.devkit.ucase.domain.actions
import com.tangem.TangemSdk
import com.tangem.common.CompletionResult
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.Payload
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.Payload
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt
similarity index 67%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt
index 5dd9d80fc1..d938eb85ad 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.domain.actions
+package com.tangem.devkit.ucase.domain.actions
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.variants.TlvId
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.findItem
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.variants.TlvId
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt
similarity index 66%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt
index 457b4baac3..b289159d6c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt
@@ -1,19 +1,19 @@
-package com.tangem.tangemtest.ucase.domain.actions
+package com.tangem.devkit.ucase.domain.actions
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest._arch.structure.impl.EditTextItem
-import com.tangem.tangemtest._arch.structure.impl.NumberItem
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey
-import com.tangem.tangemtest.ucase.tunnel.ActionView
-import com.tangem.tangemtest.ucase.tunnel.ItemError
-import com.tangem.tangemtest.ucase.variants.personalize.CardNumber
-import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter
-import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigToCardConfig
-import com.tangem.tangemtest.ucase.variants.personalize.dto.DefaultPersonalizationParams
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.findItem
+import com.tangem.devkit._arch.structure.impl.EditTextItem
+import com.tangem.devkit._arch.structure.impl.NumberItem
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey
+import com.tangem.devkit.ucase.tunnel.ActionView
+import com.tangem.devkit.ucase.tunnel.ItemError
+import com.tangem.devkit.ucase.variants.personalize.CardNumber
+import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter
+import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigToCardConfig
+import com.tangem.devkit.ucase.variants.personalize.dto.DefaultPersonalizationParams
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt
similarity index 50%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt
index 213fea8b63..5e4e42aa08 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt
@@ -1,8 +1,8 @@
-package com.tangem.tangemtest.ucase.domain.actions
+package com.tangem.devkit.ucase.domain.actions
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterScanModifier
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction.AfterScanModifier
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt
similarity index 71%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt
index f44f36d1ee..a1cf64ae35 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.domain.actions
+package com.tangem.devkit.ucase.domain.actions
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.variants.TlvId
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.findItem
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.variants.TlvId
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt
similarity index 73%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt
index 20d2ed3eb8..35022b0af4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager
+package com.tangem.devkit.ucase.domain.paramsManager
import com.tangem.TangemSdk
import com.tangem.common.CompletionResult
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.Payload
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.Payload
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
typealias ActionResponse = CompletionResult<*>
typealias AffectedList = List
-
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt
similarity index 72%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt
index a3308d623d..7fcba9d02c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt
@@ -1,18 +1,18 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.managers
+package com.tangem.devkit.ucase.domain.paramsManager.managers
import androidx.lifecycle.LifecycleObserver
import com.tangem.TangemSdk
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.Payload
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest._arch.structure.abstraction.iterate
-import com.tangem.tangemtest.ucase.domain.actions.Action
-import com.tangem.tangemtest.ucase.domain.actions.AttrForAction
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.domain.paramsManager.AffectedItemsCallback
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.Payload
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.findItem
+import com.tangem.devkit._arch.structure.abstraction.iterate
+import com.tangem.devkit.ucase.domain.actions.Action
+import com.tangem.devkit.ucase.domain.actions.AttrForAction
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.domain.paramsManager.AffectedItemsCallback
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt
similarity index 64%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt
index 4a9c0b0572..a8125f2a51 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt
@@ -1,13 +1,13 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.managers
+package com.tangem.devkit.ucase.domain.paramsManager.managers
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.OnLifecycleEvent
import com.tangem.TangemSdk
-import com.tangem.tangemtest.commons.Store
-import com.tangem.tangemtest.ucase.domain.actions.PersonalizeAction
-import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
-import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit.commons.Store
+import com.tangem.devkit.ucase.domain.actions.PersonalizeAction
+import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback
+import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
/**
[REDACTED_AUTHOR]
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt
new file mode 100644
index 0000000000..a2a7ab9e8b
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt
@@ -0,0 +1,32 @@
+package com.tangem.devkit.ucase.domain.paramsManager.managers
+
+import com.tangem.devkit._arch.structure.impl.EditTextItem
+import com.tangem.devkit.ucase.domain.actions.DepersonalizeAction
+import com.tangem.devkit.ucase.domain.actions.ScanAction
+import com.tangem.devkit.ucase.domain.actions.SignAction
+import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.CardIdConsequence
+import com.tangem.devkit.ucase.variants.TlvId
+
+/**
+[REDACTED_AUTHOR]
+ */
+class ScanItemsManager : BaseItemsManager(ScanAction())
+
+class DepersonalizeItemsManager : BaseItemsManager(DepersonalizeAction()) {
+
+ init {
+ setItemChangeConsequences(CardIdConsequence())
+ setItems(listOf(EditTextItem(TlvId.CardId, null)))
+ }
+}
+
+class SignItemsManager : BaseItemsManager(SignAction()) {
+
+ init {
+ setItemChangeConsequences(CardIdConsequence())
+ setItems(listOf(
+ EditTextItem(TlvId.CardId, null),
+ EditTextItem(TlvId.TransactionOutHash, "Data used for hashing")
+ ))
+ }
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt
similarity index 66%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt
index 48ab757ff0..74940b79d1 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt
@@ -1,8 +1,8 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction
+package com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction
import com.tangem.common.CompletionResult
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt
similarity index 72%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt
index f63694fcc7..219f6a72c9 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt
@@ -1,15 +1,15 @@
-package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction
+package com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction
import com.tangem.commands.Card
import com.tangem.commands.CardStatus
import com.tangem.common.CompletionResult
-import com.tangem.tangemtest._arch.structure.PayloadHolder
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.findItem
-import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey
-import com.tangem.tangemtest.ucase.tunnel.ActionView
-import com.tangem.tangemtest.ucase.tunnel.CardError
-import com.tangem.tangemtest.ucase.variants.TlvId
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.findItem
+import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey
+import com.tangem.devkit.ucase.tunnel.ActionView
+import com.tangem.devkit.ucase.tunnel.CardError
+import com.tangem.devkit.ucase.variants.TlvId
import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt
new file mode 100644
index 0000000000..6da18ea8b7
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt
@@ -0,0 +1,30 @@
+package com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence
+
+import com.tangem.devkit._arch.structure.PayloadHolder
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey
+import com.tangem.devkit.ucase.tunnel.ActionView
+import com.tangem.devkit.ucase.variants.TlvId
+import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI
+
+/**
+[REDACTED_AUTHOR]
+ *
+ * The ParamsChangeConsequence class family modifies parameters depending on the state
+ * of the incoming parameter
+ */
+interface ItemsChangeConsequence {
+ fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List
- ): List
-
+}
+
+class CardIdConsequence : ItemsChangeConsequence {
+
+ override fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List
- ): List
- {
+ val affectedList = mutableListOf
- ()
+ if (changedItem.id != TlvId.CardId) return affectedList
+
+ val cidDataIsNull = changedItem.getData() == null
+ postUI { (payload.get(PayloadKey.actionView) as? ActionView)?.enableActionFab(!cidDataIsNull) }
+ return affectedList
+ }
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt
similarity index 97%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt
index 5533c3682d..06ca8702e5 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.domain.responses
+package com.tangem.devkit.ucase.domain.responses
import com.google.gson.*
import com.tangem.commands.*
import com.tangem.common.extensions.toHexString
-import com.tangem.tangemtest.extensions.print
+import com.tangem.devkit.extensions.print
import java.lang.reflect.Type
import java.text.DateFormat
import java.util.*
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt
similarity index 75%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt
index e686f0f8c3..1daedb6326 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest.ucase.resources
+package com.tangem.devkit.ucase.resources
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt
similarity index 68%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt
index 86c7454365..e62d993f69 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt
@@ -1,14 +1,14 @@
-package com.tangem.tangemtest.ucase.resources
+package com.tangem.devkit.ucase.resources
-import com.tangem.tangemtest.AppTangemDemo
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.StringResId
-import com.tangem.tangemtest.ucase.resources.initializers.ActionResources
-import com.tangem.tangemtest.ucase.resources.initializers.PersonalizationResources
-import com.tangem.tangemtest.ucase.resources.initializers.ResponseResources
-import com.tangem.tangemtest.ucase.resources.initializers.TlvResources
+import com.tangem.devkit.AppTangemDemo
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.StringResId
+import com.tangem.devkit.ucase.resources.initializers.ActionResources
+import com.tangem.devkit.ucase.resources.initializers.PersonalizationResources
+import com.tangem.devkit.ucase.resources.initializers.ResponseResources
+import com.tangem.devkit.ucase.resources.initializers.TlvResources
import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt
similarity index 85%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt
index 72fad2464a..8ba64f087d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.resources
+package com.tangem.devkit.ucase.resources
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt
similarity index 88%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt
index 053710adf7..2d7adcea1c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.resources.initializers
+package com.tangem.devkit.ucase.resources.initializers
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest.ucase.resources.ActionRes
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.resources.ResourceHolder
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit.ucase.resources.ActionRes
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.resources.ResourceHolder
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt
similarity index 97%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt
index a45bc55ed4..f92eee7e95 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.resources.initializers
+package com.tangem.devkit.ucase.resources.initializers
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest.ucase.resources.ResourceHolder
-import com.tangem.tangemtest.ucase.resources.Resources
-import com.tangem.tangemtest.ucase.variants.personalize.*
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit.ucase.resources.ResourceHolder
+import com.tangem.devkit.ucase.resources.Resources
+import com.tangem.devkit.ucase.variants.personalize.*
import ru.dev.gbixahue.eu4d.lib.kotlin.common.TypedHolder
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt
similarity index 92%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt
index a199a04a26..37a044c9fa 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest.ucase.resources.initializers
+package com.tangem.devkit.ucase.resources.initializers
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
-import com.tangem.tangemtest.ucase.resources.Resources
-import com.tangem.tangemtest.ucase.variants.responses.CardDataId
-import com.tangem.tangemtest.ucase.variants.responses.CardId
-import com.tangem.tangemtest.ucase.variants.responses.DepersonalizeId
-import com.tangem.tangemtest.ucase.variants.responses.SignId
+import com.tangem.devkit.R
+import com.tangem.devkit.ucase.resources.MainResourceHolder
+import com.tangem.devkit.ucase.resources.Resources
+import com.tangem.devkit.ucase.variants.responses.CardDataId
+import com.tangem.devkit.ucase.variants.responses.CardId
+import com.tangem.devkit.ucase.variants.responses.DepersonalizeId
+import com.tangem.devkit.ucase.variants.responses.SignId
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt
similarity index 61%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt
index 4de4ab008f..a1b64dd45d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.resources.initializers
+package com.tangem.devkit.ucase.resources.initializers
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
-import com.tangem.tangemtest.ucase.resources.Resources
-import com.tangem.tangemtest.ucase.variants.TlvId
+import com.tangem.devkit.R
+import com.tangem.devkit.ucase.resources.MainResourceHolder
+import com.tangem.devkit.ucase.resources.Resources
+import com.tangem.devkit.ucase.variants.TlvId
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt
similarity index 65%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt
index 8ae2a5370a..72cbde4699 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest.ucase.tunnel
+package com.tangem.devkit.ucase.tunnel
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt
similarity index 81%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt
index 53ab0b4883..64aa754c6b 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt
@@ -1,7 +1,7 @@
-package com.tangem.tangemtest.ucase.tunnel
+package com.tangem.devkit.ucase.tunnel
import com.google.android.material.snackbar.Snackbar
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
interface SnackbarHolder {
fun showSnackbar(message: String, length: Int = Snackbar.LENGTH_SHORT)
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt
similarity index 87%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt
index 80e1840a9d..3c04d86d59 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.ui
+package com.tangem.devkit.ucase.ui
import android.view.View
import androidx.annotation.UiThread
@@ -9,17 +9,19 @@ import com.tangem.TangemSdk
import com.tangem.commands.Card
import com.tangem.commands.CommandResponse
import com.tangem.common.CompletionResult
-import com.tangem.tangemtest._arch.SingleLiveEvent
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.Payload
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.iterate
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.responses.ResponseJsonConverter
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.tunnel.ViewScreen
-import com.tangem.tangemtest.ucase.variants.personalize.converter.ItemTypes
+import com.tangem.common.extensions.CardType
+import com.tangem.devkit._arch.SingleLiveEvent
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.Payload
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.iterate
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.responses.ResponseJsonConverter
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.tunnel.ViewScreen
+import com.tangem.devkit.ucase.variants.personalize.converter.ItemTypes
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
+import java.util.*
/**
[REDACTED_AUTHOR]
@@ -43,6 +45,7 @@ class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif
fun setCardManager(tangemSdk: TangemSdk) {
this.tangemSdk = tangemSdk
+ this.tangemSdk.config.cardFilter.allowedCardTypes = EnumSet.of(CardType.Sdk)
}
@Deprecated("Events must be send directly from the Widget")
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt
similarity index 92%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt
index 32c0746431..97bb78f808 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.ui
+package com.tangem.devkit.ucase.ui
import android.os.Bundle
import android.view.LayoutInflater
@@ -13,15 +13,15 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.tangem.TangemSdk
import com.tangem.commands.Card
import com.tangem.commands.CommandResponse
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._main.MainViewModel
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey
+import com.tangem.devkit.ucase.tunnel.ActionView
+import com.tangem.devkit.ucase.tunnel.CardError
+import com.tangem.devkit.ucase.ui.widgets.ParameterWidget
import com.tangem.tangem_sdk_new.extensions.init
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._main.MainViewModel
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey
-import com.tangem.tangemtest.ucase.tunnel.ActionView
-import com.tangem.tangemtest.ucase.tunnel.CardError
-import com.tangem.tangemtest.ucase.ui.widgets.ParameterWidget
import ru.dev.gbixahue.eu4d.lib.android._android.views.enable
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt
similarity index 88%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt
index 29dfeec6be..e3b6f16cad 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.ui
+package com.tangem.devkit.ucase.ui
import android.os.Bundle
import android.view.LayoutInflater
@@ -8,8 +8,8 @@ import androidx.fragment.app.Fragment
import androidx.navigation.NavOptions
import androidx.navigation.fragment.NavHostFragment.findNavController
import com.google.android.material.snackbar.Snackbar
-import com.tangem.tangemtest.ucase.getDefaultNavigationOptions
-import com.tangem.tangemtest.ucase.tunnel.SnackbarHolder
+import com.tangem.devkit.ucase.getDefaultNavigationOptions
+import com.tangem.devkit.ucase.tunnel.SnackbarHolder
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt
index ab01e1a692..1187a6d9db 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.ui.widgets
+package com.tangem.devkit.ucase.ui.widgets
import android.text.Editable
import android.text.TextWatcher
@@ -8,14 +8,14 @@ import android.widget.Button
import android.widget.TextView
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.impl.EditTextItem
-import com.tangem.tangemtest.extensions.view.beginDelayedTransition
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
-import com.tangem.tangemtest.ucase.resources.Resources
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.impl.EditTextItem
+import com.tangem.devkit.extensions.view.beginDelayedTransition
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.resources.MainResourceHolder
+import com.tangem.devkit.ucase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt
new file mode 100644
index 0000000000..e372276e8a
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt
@@ -0,0 +1,11 @@
+package com.tangem.devkit.ucase.variants
+
+import com.tangem.devkit._arch.structure.Id
+
+/**
+[REDACTED_AUTHOR]
+ */
+enum class TlvId : Id {
+ CardId,
+ TransactionOutHash,
+}
\ No newline at end of file
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt
new file mode 100644
index 0000000000..802ba1e807
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt
@@ -0,0 +1,13 @@
+package com.tangem.devkit.ucase.variants.depersonalize.ui
+
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.managers.DepersonalizeItemsManager
+import com.tangem.devkit.ucase.ui.BaseCardActionFragment
+
+/**
+[REDACTED_AUTHOR]
+ */
+class DepersonalizeActionFragment : BaseCardActionFragment() {
+
+ override val itemsManager: ItemsManager by lazy { DepersonalizeItemsManager() }
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt
similarity index 94%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt
index 6305b68975..2e10c89ab8 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest.ucase.variants.personalize
+package com.tangem.devkit.ucase.variants.personalize
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt
similarity index 85%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt
index 9c774a8071..a0c9435a4f 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt
@@ -1,13 +1,13 @@
-package com.tangem.tangemtest.ucase.variants.personalize
+package com.tangem.devkit.ucase.variants.personalize
import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import com.google.gson.Gson
-import com.tangem.tangemtest.AppTangemDemo
-import com.tangem.tangemtest.commons.KeyedStore
-import com.tangem.tangemtest.commons.Store
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit.AppTangemDemo
+import com.tangem.devkit.commons.KeyedStore
+import com.tangem.devkit.commons.Store
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
class PersonalizationConfigStore(context: Context) : Store, KeyedStore {
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt
similarity index 95%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt
index 2f406d98c3..bb3edb89e9 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.personalize.converter
+package com.tangem.devkit.ucase.variants.personalize.converter
import com.tangem.commands.EllipticCurve
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.KeyValue
-import com.tangem.tangemtest.ucase.variants.personalize.*
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.KeyValue
+import com.tangem.devkit.ucase.variants.personalize.*
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt
similarity index 96%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt
index b1013de610..209036fc03 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt
@@ -1,7 +1,7 @@
-package com.tangem.tangemtest.ucase.variants.personalize.converter
+package com.tangem.devkit.ucase.variants.personalize.converter
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest.ucase.variants.personalize.*
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit.ucase.variants.personalize.*
class ItemTypes {
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt
similarity index 96%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt
index 3d7fb1e3d1..c2c6810da3 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt
@@ -1,11 +1,11 @@
-package com.tangem.tangemtest.ucase.variants.personalize.converter
+package com.tangem.devkit.ucase.variants.personalize.converter
-import com.tangem.tangemtest._arch.structure.Additional
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.*
-import com.tangem.tangemtest._arch.structure.impl.*
-import com.tangem.tangemtest.ucase.variants.personalize.*
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit._arch.structure.Additional
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.*
+import com.tangem.devkit._arch.structure.impl.*
+import com.tangem.devkit.ucase.variants.personalize.*
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt
similarity index 97%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt
index a1c710527b..e71acdacd5 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.variants.personalize.converter
+package com.tangem.devkit.ucase.variants.personalize.converter
import com.tangem.commands.*
import com.tangem.commands.personalization.entities.CardConfig
import com.tangem.commands.personalization.entities.NdefRecord
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter
import java.util.*
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt
index ace112c0af..afa1d5f114 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.dto
+package com.tangem.devkit.ucase.variants.personalize.dto
import com.tangem.KeyPair
import com.tangem.commands.personalization.entities.Acquirer
@@ -41,7 +41,7 @@ interface DefaultPersonalizationParams {
}
fun manufacturer(): Manufacturer {
- val keys = Manufacturer(com.tangem.tangemtest.ucase.variants.personalize.dto.Manufacturer.Mode.Developer)
+ val keys = Manufacturer(com.tangem.devkit.ucase.variants.personalize.dto.Manufacturer.Mode.Developer)
return Manufacturer(
name = "Tangem",
keyPair = KeyPair(keys.publicKey, keys.privateKey)
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt
similarity index 98%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt
index 8a366eeb26..eccc075888 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.dto
+package com.tangem.devkit.ucase.variants.personalize.dto
class Manufacturer(private val mode: Mode) {
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt
similarity index 98%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt
index ebb7daea63..836eac58bb 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.dto
+package com.tangem.devkit.ucase.variants.personalize.dto
import com.tangem.commands.EllipticCurve
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt
similarity index 82%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt
index cab78e4834..9fbc9d8b01 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui
+package com.tangem.devkit.ucase.variants.personalize.ui
import android.content.DialogInterface
import android.os.Bundle
@@ -15,29 +15,29 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.transition.Fade
import com.tangem.commands.Card
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged
-import com.tangem.tangemtest._arch.widget.WidgetBuilder
-import com.tangem.tangemtest.commons.DialogController
-import com.tangem.tangemtest.commons.view.MultiActionView
-import com.tangem.tangemtest.commons.view.ViewAction
-import com.tangem.tangemtest.extensions.view.beginDelayedTransition
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey
-import com.tangem.tangemtest.ucase.domain.paramsManager.managers.PersonalizationItemsManager
-import com.tangem.tangemtest.ucase.resources.ActionType
-import com.tangem.tangemtest.ucase.tunnel.ActionView
-import com.tangem.tangemtest.ucase.tunnel.ItemError
-import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
-import com.tangem.tangemtest.ucase.variants.personalize.PersonalizationConfigStore
-import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.PersonalizationPresetManager
-import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.PersonalizationPresetView
-import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.RvPresetNamesAdapter
-import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.PersonalizationItemBuilder
-import com.tangem.tangemtest.ucase.variants.responses.ui.ResponseFragment
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged
+import com.tangem.devkit._arch.widget.WidgetBuilder
+import com.tangem.devkit.commons.DialogController
+import com.tangem.devkit.commons.view.MultiActionView
+import com.tangem.devkit.commons.view.ViewAction
+import com.tangem.devkit.extensions.view.beginDelayedTransition
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey
+import com.tangem.devkit.ucase.domain.paramsManager.managers.PersonalizationItemsManager
+import com.tangem.devkit.ucase.resources.ActionType
+import com.tangem.devkit.ucase.tunnel.ActionView
+import com.tangem.devkit.ucase.tunnel.ItemError
+import com.tangem.devkit.ucase.ui.BaseCardActionFragment
+import com.tangem.devkit.ucase.variants.personalize.PersonalizationConfigStore
+import com.tangem.devkit.ucase.variants.personalize.ui.presets.PersonalizationPresetManager
+import com.tangem.devkit.ucase.variants.personalize.ui.presets.PersonalizationPresetView
+import com.tangem.devkit.ucase.variants.personalize.ui.presets.RvPresetNamesAdapter
+import com.tangem.devkit.ucase.variants.personalize.ui.widgets.PersonalizationItemBuilder
+import com.tangem.devkit.ucase.variants.responses.ui.ResponseFragment
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.android.global.threading.post
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt
similarity index 75%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt
index ff63bca036..c1fd8e43a6 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.presets
+package com.tangem.devkit.ucase.variants.personalize.ui.presets
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.variants.personalize.PersonalizationConfigStore
-import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter
-import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig
+import com.tangem.devkit.R
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.variants.personalize.PersonalizationConfigStore
+import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter
+import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig
class PersonalizationPresetManager(
private val itemsManager: ItemsManager,
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt
similarity index 55%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt
index d4988973dc..be3fb55716 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt
@@ -1,7 +1,7 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.presets
+package com.tangem.devkit.ucase.variants.personalize.ui.presets
-import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged
-import com.tangem.tangemtest.ucase.tunnel.SnackbarHolder
+import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged
+import com.tangem.devkit.ucase.tunnel.SnackbarHolder
interface PersonalizationPresetView : SnackbarHolder {
fun showSavePresetDialog(onOk: SafeValueChanged)
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt
index ff00dcf179..b32f84a29b 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt
@@ -1,11 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.presets
+package com.tangem.devkit.ucase.variants.personalize.ui.presets
import android.view.View
import android.view.ViewGroup
-import android.widget.Button
import android.widget.TextView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvVH
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt
similarity index 62%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt
index 5900b5da37..8b79b64bc9 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget
-import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget
-import com.tangem.tangemtest.ucase.resources.MainResourceHolder
-import com.tangem.tangemtest.ucase.resources.Resources
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget
+import com.tangem.devkit._arch.widget.abstraction.ViewWidget
+import com.tangem.devkit.ucase.resources.MainResourceHolder
+import com.tangem.devkit.ucase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt
similarity index 78%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt
index a8fe8af66c..4867a63afe 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt
@@ -1,11 +1,11 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
import android.widget.TextView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.ViewState
-import com.tangem.tangemtest.extensions.view.beginDelayedTransition
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.ViewState
+import com.tangem.devkit.extensions.view.beginDelayedTransition
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt
similarity index 90%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt
index df0951947d..2fce4d4f11 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.text.Editable
import android.text.TextWatcher
import android.view.ViewGroup
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.EditTextItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.EditTextItem
import ru.dev.gbixahue.eu4d.lib.android._android.views.moveCursorToEnd
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt
index 61cab1f430..2fef1e296f 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.text.Editable
import android.text.InputFilter
@@ -6,9 +6,9 @@ import android.text.TextWatcher
import android.view.ViewGroup
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.NumberItem
-import com.tangem.tangemtest.ucase.variants.personalize.CardNumber
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.NumberItem
+import com.tangem.devkit.ucase.variants.personalize.CardNumber
import ru.dev.gbixahue.eu4d.lib.android._android.views.addInputFilter
import ru.dev.gbixahue.eu4d.lib.android._android.views.moveCursorToEnd
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt
similarity index 63%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt
index f18839f056..09c134bc2d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
-import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
-import com.tangem.tangemtest._arch.structure.impl.*
-import com.tangem.tangemtest._arch.widget.ItemWidgetBuilder
-import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget
+import com.tangem.devkit._arch.structure.abstraction.BaseItem
+import com.tangem.devkit._arch.structure.impl.*
+import com.tangem.devkit._arch.widget.ItemWidgetBuilder
+import com.tangem.devkit._arch.widget.abstraction.ViewWidget
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt
similarity index 91%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt
index c1c9a5a3f8..e42afb0571 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.View
import android.view.ViewGroup
@@ -6,10 +6,10 @@ import android.widget.AdapterView
import android.widget.BaseAdapter
import android.widget.Spinner
import android.widget.TextView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.KeyValue
-import com.tangem.tangemtest._arch.structure.abstraction.ListViewModel
-import com.tangem.tangemtest._arch.structure.impl.SpinnerItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.KeyValue
+import com.tangem.devkit._arch.structure.abstraction.ListViewModel
+import com.tangem.devkit._arch.structure.impl.SpinnerItem
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt
similarity index 86%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt
index ffa0b6879b..0b9c534056 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
import android.widget.CompoundButton
import androidx.appcompat.widget.SwitchCompat
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.BoolItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.BoolItem
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt
similarity index 70%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt
index ab52a1981b..0892061a0a 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
+package com.tangem.devkit.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
import android.widget.TextView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.TextItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.TextItem
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt
similarity index 89%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt
index 2e84215136..8e00cef963 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt
@@ -1,6 +1,6 @@
-package com.tangem.tangemtest.ucase.variants.responses
+package com.tangem.devkit.ucase.variants.responses
-import com.tangem.tangemtest._arch.structure.Id
+import com.tangem.devkit._arch.structure.Id
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt
similarity index 80%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt
index 488b8f014b..0da3fbceb4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.responses
+package com.tangem.devkit.ucase.variants.responses
import android.view.View
import androidx.lifecycle.ViewModel
@@ -6,11 +6,11 @@ import com.tangem.commands.Card
import com.tangem.commands.CommandResponse
import com.tangem.commands.SignResponse
import com.tangem.commands.personalization.DepersonalizeResponse
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.ModelToItems
-import com.tangem.tangemtest._arch.structure.abstraction.iterate
-import com.tangem.tangemtest.ucase.variants.responses.converter.ConvertersStore
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.ModelToItems
+import com.tangem.devkit._arch.structure.abstraction.iterate
+import com.tangem.devkit.ucase.variants.responses.converter.ConvertersStore
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt
similarity index 68%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt
index b685392de9..c1eded3858 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.variants.responses.converter
+package com.tangem.devkit.ucase.variants.responses.converter
-import com.tangem.tangemtest._arch.structure.Id
-import com.tangem.tangemtest._arch.structure.abstraction.*
-import com.tangem.tangemtest.ucase.domain.responses.ResponseFieldConverter
-import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.*
+import com.tangem.devkit.ucase.domain.responses.ResponseFieldConverter
+import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
/**
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt
similarity index 86%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt
index 6b3ad13430..44e2a5d571 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt
@@ -1,16 +1,16 @@
-package com.tangem.tangemtest.ucase.variants.responses.converter
+package com.tangem.devkit.ucase.variants.responses.converter
import com.tangem.commands.*
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.StringId
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup
-import com.tangem.tangemtest._arch.structure.abstraction.iterate
-import com.tangem.tangemtest._arch.structure.impl.BoolItem
-import com.tangem.tangemtest._arch.structure.impl.TextItem
-import com.tangem.tangemtest.ucase.variants.responses.CardDataId
-import com.tangem.tangemtest.ucase.variants.responses.CardId
-import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.StringId
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.abstraction.ItemGroup
+import com.tangem.devkit._arch.structure.abstraction.iterate
+import com.tangem.devkit._arch.structure.impl.BoolItem
+import com.tangem.devkit._arch.structure.impl.TextItem
+import com.tangem.devkit.ucase.variants.responses.CardDataId
+import com.tangem.devkit.ucase.variants.responses.CardId
+import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt
similarity index 90%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt
index 067d47027c..85b9f38442 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.responses.converter
+package com.tangem.devkit.ucase.variants.responses.converter
import com.tangem.commands.Card
import com.tangem.commands.SignResponse
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt
similarity index 74%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt
index 64b8edbec5..980c10f01d 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt
@@ -1,11 +1,11 @@
-package com.tangem.tangemtest.ucase.variants.responses.converter
+package com.tangem.devkit.ucase.variants.responses.converter
import com.tangem.commands.SignResponse
import com.tangem.commands.personalization.DepersonalizeResponse
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest._arch.structure.impl.TextItem
-import com.tangem.tangemtest.ucase.variants.responses.DepersonalizeId
-import com.tangem.tangemtest.ucase.variants.responses.SignId
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit._arch.structure.impl.TextItem
+import com.tangem.devkit.ucase.variants.responses.DepersonalizeId
+import com.tangem.devkit.ucase.variants.responses.SignId
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
/**
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt
new file mode 100644
index 0000000000..bb677f0dec
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt
@@ -0,0 +1,12 @@
+package com.tangem.devkit.ucase.variants.responses.item
+
+import com.tangem.devkit._arch.structure.Id
+import com.tangem.devkit._arch.structure.abstraction.BaseItemViewModel
+import com.tangem.devkit._arch.structure.abstraction.ItemViewModel
+import com.tangem.devkit._arch.structure.abstraction.ViewState
+import com.tangem.devkit._arch.structure.impl.TypedItem
+
+open class TextHeaderItem(id: Id, viewModel: ItemViewModel) : TypedItem(id, viewModel) {
+ constructor(id: Id, value: String? = null, viewState: ViewState = ViewState())
+ : this(id, BaseItemViewModel(value, viewState))
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt
similarity index 81%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt
index 07676a18f2..0dcb15e807 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.responses.ui
+package com.tangem.devkit.ucase.variants.responses.ui
import android.os.Bundle
import android.view.*
@@ -8,14 +8,14 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.widget.WidgetBuilder
-import com.tangem.tangemtest._main.MainViewModel
-import com.tangem.tangemtest.extensions.shareText
-import com.tangem.tangemtest.ucase.domain.responses.ResponseJsonConverter
-import com.tangem.tangemtest.ucase.ui.BaseFragment
-import com.tangem.tangemtest.ucase.variants.responses.ResponseViewModel
-import com.tangem.tangemtest.ucase.variants.responses.ui.widget.ResponseItemBuilder
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.widget.WidgetBuilder
+import com.tangem.devkit._main.MainViewModel
+import com.tangem.devkit.extensions.shareText
+import com.tangem.devkit.ucase.domain.responses.ResponseJsonConverter
+import com.tangem.devkit.ucase.ui.BaseFragment
+import com.tangem.devkit.ucase.variants.responses.ResponseViewModel
+import com.tangem.devkit.ucase.variants.responses.ui.widget.ResponseItemBuilder
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt
similarity index 81%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt
index 65dd1a5831..bafc6e7500 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt
@@ -1,9 +1,9 @@
-package com.tangem.tangemtest.ucase.variants.responses.ui.widget
+package com.tangem.devkit.ucase.variants.responses.ui.widget
import android.view.ViewGroup
import com.google.android.material.checkbox.MaterialCheckBox
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.BoolItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.BoolItem
import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom
/**
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt
new file mode 100644
index 0000000000..172cca0c83
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt
@@ -0,0 +1,23 @@
+package com.tangem.devkit.ucase.variants.responses.ui.widget
+
+import android.view.ViewGroup
+import com.tangem.devkit._arch.structure.abstraction.BaseItem
+import com.tangem.devkit._arch.structure.impl.BoolItem
+import com.tangem.devkit._arch.structure.impl.TextItem
+import com.tangem.devkit._arch.widget.ItemWidgetBuilder
+import com.tangem.devkit._arch.widget.abstraction.ViewWidget
+import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem
+
+/**
+[REDACTED_AUTHOR]
+ */
+class ResponseItemBuilder : ItemWidgetBuilder {
+ override fun build(item: BaseItem, parent: ViewGroup): ViewWidget? {
+ return when (item) {
+ is TextHeaderItem -> ResponseHeaderWidget(parent, item)
+ is TextItem -> ResponseTextWidget(parent, item)
+ is BoolItem -> CheckBoxWidget(parent, item)
+ else -> null
+ }
+ }
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt
similarity index 80%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt
index a221c03124..8ef678b37c 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt
@@ -1,10 +1,10 @@
-package com.tangem.tangemtest.ucase.variants.responses.ui.widget
+package com.tangem.devkit.ucase.variants.responses.ui.widget
import android.view.ViewGroup
import android.widget.TextView
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.impl.TextItem
-import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.impl.TextItem
+import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem
/**
[REDACTED_AUTHOR]
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt
similarity index 80%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt
index f6554124cf..9931b63df4 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt
@@ -1,12 +1,12 @@
-package com.tangem.tangemtest.ucase.variants.responses.ui.widget
+package com.tangem.devkit.ucase.variants.responses.ui.widget
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.view.ViewGroup
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest._arch.structure.abstraction.Item
-import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWidget
+import com.tangem.devkit.R
+import com.tangem.devkit._arch.structure.abstraction.Item
+import com.tangem.devkit.ucase.variants.personalize.ui.widgets.DescriptionWidget
import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom
import ru.dev.gbixahue.eu4d.lib.android._android.views.toast
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt
similarity index 81%
rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt
rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt
index a125e30adf..f5dc1bcf94 100644
--- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt
@@ -1,4 +1,4 @@
-package com.tangem.tangemtest.ucase.variants.scan.ui
+package com.tangem.devkit.ucase.variants.scan.ui
import android.os.Bundle
import android.util.TypedValue
@@ -7,11 +7,11 @@ import android.view.View
import android.widget.FrameLayout
import android.widget.TextView
import com.tangem.commands.Card
-import com.tangem.tangemtest.R
-import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
-import com.tangem.tangemtest.ucase.domain.paramsManager.managers.ScanItemsManager
-import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
-import com.tangem.tangemtest.ucase.variants.responses.ui.ResponseFragment
+import com.tangem.devkit.R
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.managers.ScanItemsManager
+import com.tangem.devkit.ucase.ui.BaseCardActionFragment
+import com.tangem.devkit.ucase.variants.responses.ui.ResponseFragment
import ru.dev.gbixahue.eu4d.lib.android._android.views.dpToPx
/**
diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt
new file mode 100644
index 0000000000..760d09e39d
--- /dev/null
+++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt
@@ -0,0 +1,13 @@
+package com.tangem.devkit.ucase.variants.sign.ui
+
+import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager
+import com.tangem.devkit.ucase.domain.paramsManager.managers.SignItemsManager
+import com.tangem.devkit.ucase.ui.BaseCardActionFragment
+
+/**
+[REDACTED_AUTHOR]
+ */
+class SignActionFragment : BaseCardActionFragment() {
+
+ override val itemsManager: ItemsManager by lazy { SignItemsManager() }
+}
\ No newline at end of file
diff --git a/tangem-demo/src/main/res/anim/fade_in.xml b/tangem-devkit/src/main/res/anim/fade_in.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/fade_in.xml
rename to tangem-devkit/src/main/res/anim/fade_in.xml
diff --git a/tangem-demo/src/main/res/anim/fade_out.xml b/tangem-devkit/src/main/res/anim/fade_out.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/fade_out.xml
rename to tangem-devkit/src/main/res/anim/fade_out.xml
diff --git a/tangem-demo/src/main/res/anim/slide_in_left.xml b/tangem-devkit/src/main/res/anim/slide_in_left.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/slide_in_left.xml
rename to tangem-devkit/src/main/res/anim/slide_in_left.xml
diff --git a/tangem-demo/src/main/res/anim/slide_in_right.xml b/tangem-devkit/src/main/res/anim/slide_in_right.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/slide_in_right.xml
rename to tangem-devkit/src/main/res/anim/slide_in_right.xml
diff --git a/tangem-demo/src/main/res/anim/slide_out_left.xml b/tangem-devkit/src/main/res/anim/slide_out_left.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/slide_out_left.xml
rename to tangem-devkit/src/main/res/anim/slide_out_left.xml
diff --git a/tangem-demo/src/main/res/anim/slide_out_right.xml b/tangem-devkit/src/main/res/anim/slide_out_right.xml
similarity index 100%
rename from tangem-demo/src/main/res/anim/slide_out_right.xml
rename to tangem-devkit/src/main/res/anim/slide_out_right.xml
diff --git a/tangem-demo/src/main/res/color/menu_switch_color_thumb.xml b/tangem-devkit/src/main/res/color/menu_switch_color_thumb.xml
similarity index 100%
rename from tangem-demo/src/main/res/color/menu_switch_color_thumb.xml
rename to tangem-devkit/src/main/res/color/menu_switch_color_thumb.xml
diff --git a/tangem-demo/src/main/res/color/menu_switch_color_track.xml b/tangem-devkit/src/main/res/color/menu_switch_color_track.xml
similarity index 100%
rename from tangem-demo/src/main/res/color/menu_switch_color_track.xml
rename to tangem-devkit/src/main/res/color/menu_switch_color_track.xml
diff --git a/tangem-demo/src/main/res/color/mtrl_fab_bg_color_selector.xml b/tangem-devkit/src/main/res/color/mtrl_fab_bg_color_selector.xml
similarity index 100%
rename from tangem-demo/src/main/res/color/mtrl_fab_bg_color_selector.xml
rename to tangem-devkit/src/main/res/color/mtrl_fab_bg_color_selector.xml
diff --git a/tangem-demo/src/main/res/color/mtrl_fab_icon_text_color_selector.xml b/tangem-devkit/src/main/res/color/mtrl_fab_icon_text_color_selector.xml
similarity index 100%
rename from tangem-demo/src/main/res/color/mtrl_fab_icon_text_color_selector.xml
rename to tangem-devkit/src/main/res/color/mtrl_fab_icon_text_color_selector.xml
diff --git a/tangem-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml b/tangem-devkit/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 100%
rename from tangem-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml
rename to tangem-devkit/src/main/res/drawable-v24/ic_launcher_foreground.xml
diff --git a/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml b/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000000..ca3826a46c
--- /dev/null
+++ b/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml b/tangem-devkit/src/main/res/drawable/ic_share_white_18dp.xml
similarity index 100%
rename from tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml
rename to tangem-devkit/src/main/res/drawable/ic_share_white_18dp.xml
diff --git a/tangem-demo/src/main/res/layout/a_main.xml b/tangem-devkit/src/main/res/layout/a_main.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/a_main.xml
rename to tangem-devkit/src/main/res/layout/a_main.xml
diff --git a/tangem-demo/src/main/res/layout/activity_test_user_data.xml b/tangem-devkit/src/main/res/layout/activity_test_user_data.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/activity_test_user_data.xml
rename to tangem-devkit/src/main/res/layout/activity_test_user_data.xml
diff --git a/tangem-demo/src/main/res/layout/dlg_personalization_preset_load.xml b/tangem-devkit/src/main/res/layout/dlg_personalization_preset_load.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/dlg_personalization_preset_load.xml
rename to tangem-devkit/src/main/res/layout/dlg_personalization_preset_load.xml
diff --git a/tangem-demo/src/main/res/layout/dlg_personalization_preset_save.xml b/tangem-devkit/src/main/res/layout/dlg_personalization_preset_save.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/dlg_personalization_preset_save.xml
rename to tangem-devkit/src/main/res/layout/dlg_personalization_preset_save.xml
diff --git a/tangem-demo/src/main/res/layout/fg_base_action_layout.xml b/tangem-devkit/src/main/res/layout/fg_base_action_layout.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/fg_base_action_layout.xml
rename to tangem-devkit/src/main/res/layout/fg_base_action_layout.xml
diff --git a/tangem-demo/src/main/res/layout/fg_card_response.xml b/tangem-devkit/src/main/res/layout/fg_card_response.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/fg_card_response.xml
rename to tangem-devkit/src/main/res/layout/fg_card_response.xml
diff --git a/tangem-demo/src/main/res/layout/fg_entry_point.xml b/tangem-devkit/src/main/res/layout/fg_entry_point.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/fg_entry_point.xml
rename to tangem-devkit/src/main/res/layout/fg_entry_point.xml
diff --git a/tangem-demo/src/main/res/layout/m_divider_h.xml b/tangem-devkit/src/main/res/layout/m_divider_h.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/m_divider_h.xml
rename to tangem-devkit/src/main/res/layout/m_divider_h.xml
diff --git a/tangem-demo/src/main/res/layout/m_divider_v.xml b/tangem-devkit/src/main/res/layout/m_divider_v.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/m_divider_v.xml
rename to tangem-devkit/src/main/res/layout/m_divider_v.xml
diff --git a/tangem-demo/src/main/res/layout/menu_item_switch.xml b/tangem-devkit/src/main/res/layout/menu_item_switch.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/menu_item_switch.xml
rename to tangem-devkit/src/main/res/layout/menu_item_switch.xml
diff --git a/tangem-demo/src/main/res/layout/old_activity_main.xml b/tangem-devkit/src/main/res/layout/old_activity_main.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/old_activity_main.xml
rename to tangem-devkit/src/main/res/layout/old_activity_main.xml
diff --git a/tangem-demo/src/main/res/layout/v_content_container.xml b/tangem-devkit/src/main/res/layout/v_content_container.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/v_content_container.xml
rename to tangem-devkit/src/main/res/layout/v_content_container.xml
diff --git a/tangem-demo/src/main/res/layout/v_item_list_container.xml b/tangem-devkit/src/main/res/layout/v_item_list_container.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/v_item_list_container.xml
rename to tangem-devkit/src/main/res/layout/v_item_list_container.xml
diff --git a/tangem-demo/src/main/res/layout/vh_actions.xml b/tangem-devkit/src/main/res/layout/vh_actions.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/vh_actions.xml
rename to tangem-devkit/src/main/res/layout/vh_actions.xml
diff --git a/tangem-demo/src/main/res/layout/vh_personalization_preset_name.xml b/tangem-devkit/src/main/res/layout/vh_personalization_preset_name.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/vh_personalization_preset_name.xml
rename to tangem-devkit/src/main/res/layout/vh_personalization_preset_name.xml
diff --git a/tangem-demo/src/main/res/layout/vh_sp_dropdown_item.xml b/tangem-devkit/src/main/res/layout/vh_sp_dropdown_item.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/vh_sp_dropdown_item.xml
rename to tangem-devkit/src/main/res/layout/vh_sp_dropdown_item.xml
diff --git a/tangem-demo/src/main/res/layout/vh_sp_item.xml b/tangem-devkit/src/main/res/layout/vh_sp_item.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/vh_sp_item.xml
rename to tangem-devkit/src/main/res/layout/vh_sp_item.xml
diff --git a/tangem-demo/src/main/res/layout/view_simple_button.xml b/tangem-devkit/src/main/res/layout/view_simple_button.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/view_simple_button.xml
rename to tangem-devkit/src/main/res/layout/view_simple_button.xml
diff --git a/tangem-demo/src/main/res/layout/w_action_response_json.xml b/tangem-devkit/src/main/res/layout/w_action_response_json.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_action_response_json.xml
rename to tangem-devkit/src/main/res/layout/w_action_response_json.xml
diff --git a/tangem-demo/src/main/res/layout/w_card_incoming_param.xml b/tangem-devkit/src/main/res/layout/w_card_incoming_param.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_card_incoming_param.xml
rename to tangem-devkit/src/main/res/layout/w_card_incoming_param.xml
diff --git a/tangem-demo/src/main/res/layout/w_empty.xml b/tangem-devkit/src/main/res/layout/w_empty.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_empty.xml
rename to tangem-devkit/src/main/res/layout/w_empty.xml
diff --git a/tangem-demo/src/main/res/layout/w_field_description.xml b/tangem-devkit/src/main/res/layout/w_field_description.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_field_description.xml
rename to tangem-devkit/src/main/res/layout/w_field_description.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_edit_text.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_edit_text.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_item_edit_text.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_item_edit_text.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_header.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_header.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_item_header.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_item_header.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_number.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_number.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_item_number.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_item_number.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_spinner.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_spinner.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_item_spinner.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_item_spinner.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_switch.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_switch.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_item_switch.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_item_switch.xml
diff --git a/tangem-demo/src/main/res/layout/w_personalize_widgets_together.xml b/tangem-devkit/src/main/res/layout/w_personalize_widgets_together.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personalize_widgets_together.xml
rename to tangem-devkit/src/main/res/layout/w_personalize_widgets_together.xml
diff --git a/tangem-demo/src/main/res/layout/w_personilize_block.xml b/tangem-devkit/src/main/res/layout/w_personilize_block.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_personilize_block.xml
rename to tangem-devkit/src/main/res/layout/w_personilize_block.xml
diff --git a/tangem-demo/src/main/res/layout/w_response_item.xml b/tangem-devkit/src/main/res/layout/w_response_item.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_response_item.xml
rename to tangem-devkit/src/main/res/layout/w_response_item.xml
diff --git a/tangem-demo/src/main/res/layout/w_response_item_checkbox.xml b/tangem-devkit/src/main/res/layout/w_response_item_checkbox.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_response_item_checkbox.xml
rename to tangem-devkit/src/main/res/layout/w_response_item_checkbox.xml
diff --git a/tangem-demo/src/main/res/layout/w_response_item_header.xml b/tangem-devkit/src/main/res/layout/w_response_item_header.xml
similarity index 100%
rename from tangem-demo/src/main/res/layout/w_response_item_header.xml
rename to tangem-devkit/src/main/res/layout/w_response_item_header.xml
diff --git a/tangem-demo/src/main/res/menu/menu_activity_main.xml b/tangem-devkit/src/main/res/menu/menu_activity_main.xml
similarity index 100%
rename from tangem-demo/src/main/res/menu/menu_activity_main.xml
rename to tangem-devkit/src/main/res/menu/menu_activity_main.xml
diff --git a/tangem-demo/src/main/res/menu/menu_fg_peronalization.xml b/tangem-devkit/src/main/res/menu/menu_fg_peronalization.xml
similarity index 100%
rename from tangem-demo/src/main/res/menu/menu_fg_peronalization.xml
rename to tangem-devkit/src/main/res/menu/menu_fg_peronalization.xml
diff --git a/tangem-demo/src/main/res/menu/menu_fg_response.xml b/tangem-devkit/src/main/res/menu/menu_fg_response.xml
similarity index 100%
rename from tangem-demo/src/main/res/menu/menu_fg_response.xml
rename to tangem-devkit/src/main/res/menu/menu_fg_response.xml
diff --git a/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000000..036d09bc5f
--- /dev/null
+++ b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000000..036d09bc5f
--- /dev/null
+++ b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000..ab0b9f8707
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000..b474df4060
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..334c1411a6
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000..9e66da64b2
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000..aa294642f2
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..5d2270c85d
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000..e141514ce0
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000..8ae5df3319
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..a7d5201273
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000..645b3d79dc
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000..03e74f693a
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..6d19be8f7f
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000..3229c5217c
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000..d24821ce81
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..b9b1c8f1a6
Binary files /dev/null and b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/tangem-demo/src/main/res/navigation/navigation.xml b/tangem-devkit/src/main/res/navigation/navigation.xml
similarity index 80%
rename from tangem-demo/src/main/res/navigation/navigation.xml
rename to tangem-devkit/src/main/res/navigation/navigation.xml
index c8d276f4d7..a6cd6c3ff8 100644
--- a/tangem-demo/src/main/res/navigation/navigation.xml
+++ b/tangem-devkit/src/main/res/navigation/navigation.xml
@@ -16,7 +16,7 @@
@@ -61,79 +61,79 @@
diff --git a/tangem-demo/src/main/res/values/colors.xml b/tangem-devkit/src/main/res/values/colors.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/colors.xml
rename to tangem-devkit/src/main/res/values/colors.xml
diff --git a/tangem-demo/src/main/res/values/dimens.xml b/tangem-devkit/src/main/res/values/dimens.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/dimens.xml
rename to tangem-devkit/src/main/res/values/dimens.xml
diff --git a/tangem-demo/src/main/res/values/dimens_item_widget.xml b/tangem-devkit/src/main/res/values/dimens_item_widget.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/dimens_item_widget.xml
rename to tangem-devkit/src/main/res/values/dimens_item_widget.xml
diff --git a/tangem-devkit/src/main/res/values/ic_launcher_background.xml b/tangem-devkit/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000000..c5d5899fdf
--- /dev/null
+++ b/tangem-devkit/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/tangem-demo/src/main/res/values/strings.xml b/tangem-devkit/src/main/res/values/strings.xml
similarity index 96%
rename from tangem-demo/src/main/res/values/strings.xml
rename to tangem-devkit/src/main/res/values/strings.xml
index 38c96cca46..07540ce2b6 100644
--- a/tangem-demo/src/main/res/values/strings.xml
+++ b/tangem-devkit/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
- Tangem Development Kit
+ Tangem DevKit
Description
diff --git a/tangem-demo/src/main/res/values/strings_action.xml b/tangem-devkit/src/main/res/values/strings_action.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/strings_action.xml
rename to tangem-devkit/src/main/res/values/strings_action.xml
diff --git a/tangem-demo/src/main/res/values/strings_personalization.xml b/tangem-devkit/src/main/res/values/strings_personalization.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/strings_personalization.xml
rename to tangem-devkit/src/main/res/values/strings_personalization.xml
diff --git a/tangem-demo/src/main/res/values/strings_response.xml b/tangem-devkit/src/main/res/values/strings_response.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/strings_response.xml
rename to tangem-devkit/src/main/res/values/strings_response.xml
diff --git a/tangem-demo/src/main/res/values/strings_scan.xml b/tangem-devkit/src/main/res/values/strings_scan.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/strings_scan.xml
rename to tangem-devkit/src/main/res/values/strings_scan.xml
diff --git a/tangem-demo/src/main/res/values/strings_tlv.xml b/tangem-devkit/src/main/res/values/strings_tlv.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/strings_tlv.xml
rename to tangem-devkit/src/main/res/values/strings_tlv.xml
diff --git a/tangem-demo/src/main/res/values/styles.xml b/tangem-devkit/src/main/res/values/styles.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/styles.xml
rename to tangem-devkit/src/main/res/values/styles.xml
diff --git a/tangem-demo/src/main/res/values/theme_debug.xml b/tangem-devkit/src/main/res/values/theme_debug.xml
similarity index 100%
rename from tangem-demo/src/main/res/values/theme_debug.xml
rename to tangem-devkit/src/main/res/values/theme_debug.xml
diff --git a/tangem-demo/src/main/res/xml/nfc_tech_filter.xml b/tangem-devkit/src/main/res/xml/nfc_tech_filter.xml
similarity index 100%
rename from tangem-demo/src/main/res/xml/nfc_tech_filter.xml
rename to tangem-devkit/src/main/res/xml/nfc_tech_filter.xml
diff --git a/tangem-sdk-android-config/.circleci/config.yml b/tangem-sdk-android-config/.circleci/config.yml
new file mode 100755
index 0000000000..a4cf65b34c
--- /dev/null
+++ b/tangem-sdk-android-config/.circleci/config.yml
@@ -0,0 +1,23 @@
+version: 2.1
+
+orbs:
+ android: circleci/android@0.2.0
+
+jobs:
+ build:
+ executor: android/android
+ environment:
+ JVM_OPTS: -Xmx2048m
+ GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
+ steps:
+ - checkout
+ - run:
+ name: Build
+ command: ./gradlew build
+ - run:
+ name: Run Tests
+ command: ./gradlew test
+ - store_test_results: # for display in Test Summary: https://circleci.com/docs/2.0/collect-test-data/
+ path: tangem-core/build/test-results/
+
+
diff --git a/tangem-sdk-android-config/README.md b/tangem-sdk-android-config/README.md
index 5447c511bb..5acf8ff48f 100644
--- a/tangem-sdk-android-config/README.md
+++ b/tangem-sdk-android-config/README.md
@@ -1,5 +1,6 @@
-
+[](https://jitpack.io/#tangem/tangem-sdk-android)
[](https://opensource.org/licenses/MIT)
+[](https://circleci.com/gh/Tangem/tangem-sdk-android)
# Welcome to Tangem
The Tangem card is a self-custodial hardware wallet for blockchain assets. The main functions of Tangem cards are to securely create and store a private key from a blockchain wallet and sign blockchain transactions. The Tangem card does not allow users to import/export, backup/restore private keys, thereby guaranteeing that the wallet is unique and unclonable.
@@ -12,10 +13,24 @@ The Tangem card is a self-custodial hardware wallet for blockchain assets. The m
- [Card interaction](#card-interaction)
- [Scan card](#scan-card)
- [Sign](#sign)
+ - [Wallet](#wallet)
+ - [Create Wallet](#create-wallet)
+ - [Purge Wallet](#purge-wallet)
+ - [Issuer Data](#issuer-data)
+ - [Read Issuer Data](#read-issuer-data)
+ - [Read Issuer Extra Data](#read-issuer-extra-data)
+ - [Write Issuer Data](#write-issuer-data)
+ - [Write Issuer Extra Data](#write-issuer-extra-data)
+ - [User Data](#user-data)
+ - [Write User Data](#write-user-data)
+ - [Read User Data](#read-user-data)
+ - [Personalization](#personalization)
+ - [Depersonalize](#depersonalize)
+ - [Personalize](#personalize)
- [Customization](#customization)
- [UI](#ui)
- - [Tasks](#tasks)
- - [Localization](#localization)
+ - [Reader](#reader)
+ - [Custom Tasks](#custom-tasks)
## Getting Started
@@ -25,9 +40,9 @@ Android with minimal SDK version of 21 and a device with NFC support
### Installation
-1) Add Tangem library to the project:
+1. Add Tangem library to the project:
-Add to a project build.gradle file:
+Add to a project `build.gradle` file:
```gradle
allprojects {
@@ -37,18 +52,18 @@ allprojects {
}
```
-And add Tangem library to the dependencies (in an app or module build.gradle file):
+And add Tangem library to the dependencies (in an app or module `build.gradle` file):
```gradle
dependencies {
- implementation "com.github.tangem.tangem-sdk-android:tangem-core:$latestVersionOfCore"
- implementation "com.github.tangem.tangem-sdk-android:tangem-sdk:$latestVersionOfSdk"
+ implementation "com.github.tangem.tangem-sdk-android:tangem-core:$latestVersion"
+ implementation "com.github.tangem.tangem-sdk-android:tangem-sdk:$latestVersion"
}
```
-Tangem Core is a JVM library (without Android dependencies) that provides core functionality of interacting with Tangem cards.
-Tangem Sdk is an Android library that implements NFC interaction between Android devices and Tangem cards and graphical interface for this interaction.
+`tangem-core` is a JVM library (without Android dependencies) that provides core functionality of interacting with Tangem cards.
+`tangem-sdk` is an Android library that implements NFC interaction between Android devices and Tangem cards and graphical interface for this interaction.
-2) Add res file ‘tech_filter’ with the following:
+2. Save the file (you can name it anything you wish) with the following tech-list filters in the `/res/xml`
```xml
@@ -60,170 +75,361 @@ Tangem Sdk is an Android library that implements NFC interaction between Android
```
-3) Add to Manifest:
+3. Add to `AndroidManifest.xml`:
```xml
-
+
+ android:name=“android.nfc.action.TECH_DISCOVERED”
+ android:resource=“@xml/tech_filter” />
```
## Usage
-
Tangem SDK is a self-sufficient solution that implements a card abstraction model, methods of interaction with the card and interactions with the user via UI.
### Initialization
-To get started, you need to create an instance of the `CardManager` class. It provides the simple way of interacting with the card.
-Our default implementation of `CardManager` requires `NfcReader` and `DefaultCardManagerDelegate`.
-
+To get started, you need to create an instance of the `TangemSdk` class. It provides the simple way of interacting with the card.
```kotlin
-private val nfcManager = NfcManager()
-private val cardManagerDelegate: DefaultCardManagerDelegate = DefaultCardManagerDelegate(nfcManager.reader)
-private val cardManager = CardManager(nfcManager.reader, cardManagerDelegate)
+val tangemSdk: TangemSdk = TangemSdk.init(activity)
```
-NfcManager requires a reference to activity in order to use Android API for interacting with NFC. DefaultCardManagerDelegate requires a reference to activity in order to render views.
-
-```kotlin
-nfcManager.setCurrentActivity(this)
-cardManagerDelegate.activity = this
-```
-
-```kotlin
-lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
-```
-
-Default implementation of `NfcManager`, `CardReader` and `CardManagerDelegate` allows you to start using CardManager in your application without any additional setup.
-
-You can also provide your implementations of `CardReader` and `CardManagerDelegate`.
-You can read more about this in [Customization](#сustomization).
-
-### Tasks
+TangemSdk requires a reference to activity in order to use Android API for interacting with NFC and to render views.
+Default implementation of `TangemSdk` allows you to start using SDK in your application without any additional setup.
+(You can read about additional options in [Customization](#customization)).
+### Card interaction
#### Scan card
-To start using any card, you first need to read it using the `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. Optionally, if the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one.
+To obtain data from the card use `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. If the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one.
Example:
-
```kotlin
-cardManager.scanCard { taskEvent ->
- when (taskEvent) {
- is TaskEvent.Event -> {
- when (taskEvent.data) {
- is ScanEvent.OnReadEvent -> {
- // Handle returned card data
- cardId = (taskEvent.data as ScanEvent.OnReadEvent).card.cardId
- // Switch to UI thread to show results in UI
- runOnUiThread {}
- }
- is ScanEvent.OnVerifyEvent -> {
- //Handle card verification
- val isGenuine = (taskEvent.data as ScanEvent.OnVerifyEvent).isGenuine
- }
+tangemSdk.scanCard { result ->
+ when (result) {
+ is CompletionResult.Success -> {
+ // Handle returned card data
+ val card = result.data
+ cardId = card.cardId
+ // Switch to UI thread to show results in UI
+ runOnUiThread {
+ tv_card_cid?.text = cardId
}
- }
- is TaskEvent.Completion -> {
- if (taskEvent.error != null) {
- if (taskEvent.error is TaskError.UserCancelledError) {
- // Handle case when user cancelled manually
- }
- // Handle other errors
+ }
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
}
- // Handle completion
+ // Handle other errors
}
}
}
```
-Communication with the card is an asynchronous operation. In order to get a result for the method, you need to subscribe to the task callback. In order to render the callback results on UI, you need to switch to the main thread.
+Communication with the card is an asynchronous operation. In order to get a result for the method, you need to implement the callback function. In order to render the callback results on UI, you need to switch to the main thread.
-Every task can invoke callback several times with different events:
+`CompletionResult` – this is the sealed class for the results of `CardSessionRunnable`.
-`Completion(val error: TaskError? = null)` – this event is triggered only once when task is completely finished. It means that it's the final callback. If error is not nil, then something went wrong during the operation.
-
-`Event(val data: T)` – this event is triggered when one of operations inside the task is completed.
-
-**Possible events of the Scan card task:**
-
-`OnReadEvent(val result: Card)` – this event is triggered after the card has been successfully read. In addition, the obtained card object is contained inside the enum. At this stage, the authenticity of the card is ***NOT*** verified.
-
-`OnVerifyEvent(val isGenuine: Boolean)` – this event is triggered when the card’s authenticity has been verified. If the card is authentic, isGenuine will be set to true, otherwise, it will be set to false.
+`Success(val data: T)` is triggered after successful operation and contains a `CommandResponse`.
+`Failure(val error: SessionError)` is triggered on error.
#### Sign
This method allows you to sign one or multiple hashes. Simultaneous signing of array of hashes in a single SIGN command is required to support Bitcoin-type multi-input blockchains (UTXO). The SIGN command will return a corresponding array of signatures.
```kotlin
-cardManager.sign(
+tangemSdk.sign(
hashes = arrayOf(hash1, hash2),
- cardId = card.cardId) { taskEvent ->
- when (taskEvent) {
- is TaskEvent.Event -> {
- // Handle sign response data
- val signResponse = taskEvent.data
+ cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
}
- is TaskEvent.Completion -> {
- if (taskEvent.error != null) {
- if (taskEvent.error is TaskError.UserCancelledError) {
- // Handle case when user cancelled manually
- }
- // Handle other errors
- }
- // Handle completion
+ is CompletionResult.Success -> {
+ val signResponse = result.data
}
}
}
```
+#### Issuer Data
+
+##### Read Issuer Data
+An example of usage (description is available at documentation for `TangemSdk.readIssuerData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.readIssuerData(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> {
+ val issuerData = result.data.issuerData
+ val issuerDataSignature = result.data.issuerDataSignature
+ }
+ }
+ }
+```
+
+##### Read Issuer Extra Data
+An example of usage (description is available at documentation for `TangemSdk.readIssuerExtraData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.readIssuerExtraData(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> {
+ val issuerData = result.data.issuerData
+ val issuerDataSignature = result.data.issuerDataSignature
+ }
+ }
+ }
+```
+
+##### Write Issuer Data
+An example of usage (description is available at documentation for `TangemSdk.writeIssuerData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.writeIssuerData(cardId, issuerData, issuerDataSignature, issuerDataCounter) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> {
+ val writeIssuerDataResult = result.data
+ }
+ }
+ }
+```
+
+##### Write Issuer Extra Data
+An example of usage (description is available at documentation for `TangemSdk.writeIssuerExtraData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.writeIssuerExtraData(cardId,
+ issuerData, startingSignature, finalizingSignature, issuerDataCounter
+ ) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val writeIssuerDataResult = result.data
+ }
+ }
+ }
+```
+#### User Data
+##### Write User Data
+An example of usage (description is available at documentation for `TangemSdk.writeUserData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.writeUserData(
+ cardId, userData, userProtectedData, userCounter, userProtectedCounter
+ ) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val writeUserDataResult = result.data
+ }
+ }
+ }
+```
+
+##### Read User Data
+An example of usage (description is available at documentation for `TangemSdk.readUserData` method and corresponding command class):
+
+```kotlin
+ tangemSdk.readUserData(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val readUserDataResult = result.data
+ }
+ }
+ }
+```
+#### Wallet
+##### Create Wallet
+An example of usage (description is available at documentation for `TangemSdk.createWallet` method and corresponding command class):
+
+```kotlin
+ tangemSdk.createWallet(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val createWalletResult = result.data
+ }
+ }
+ }
+```
+
+##### Purge Wallet
+An example of usage (description is available at documentation for `TangemSdk.purgeWallet` method and corresponding command class):
+
+```kotlin
+ tangemSdk.purgeWallet(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val purgeWalletResult = result.data
+ }
+ }
+ }
+```
+
+#### Personalization
+##### Depersonalize
+An example of usage (description is available at documentation for `TangemSdk.depersonalize` method and corresponding command class):
+
+```kotlin
+ tangemSdk.depersonalize(cardId) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val depersonalizeResult = result.data
+ }
+ }
+ }
+```
+
+##### Personalize
+An example of usage (description is available at documentation for `TangemSdk.personalize` method and corresponding command class):
+
+```kotlin
+ tangemSdk.personalize(config, issuer, manufacturer, acquirer) { result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> runOnUiThread {
+ val card = result.data
+ }
+ }
+ }
+```
+
+
## Customization
### UI
-If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `CardManagerDelegate` inteface. After this, initialize the `CardManager` class with your delegate class.
+If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `SessionViewDelegate` interface. After this, initialize the `TangemSdk` class with your delegate class.
```kolin
-val myCardManagerDelegate = MyCardManagerDelegate()
-val cardManager = CardManager(cardManagerDelegate = myCardManagerDelegate)
+val tangemSdk = TangemSdk.customInit(this, MySessionViewDelegate())
```
-> If you pass null instead of `cardManagerDelegate`, the SDK won’t be able to process errors that require user intervention and return them to `.failure(let error)`.
+### Reader
-### Tasks
-`CardManager` only covers general tasks. If you want to trigger card commands in a certain order, you need to create your own task.
+TangemSdk uses Android NFC capabilities to communicate with TangemCards. If there is a need to use other means of communication or other platforms, it is possible to implement this functionality by implementing `CardReader` interface and using it instead of the default `NfcReader`.
-To do this, you need to create a subclass of the `Task` class, and override the `onRun(..)` method.
+### Custom Tasks
+`TangemSdk` specific methods run particular commands and tasks. If you want to trigger card commands in a different order, or implement additional
+ business logic, you have several options.
+
+One option is to start a session, get an instance of `CardSession`, and use it to perform commands.
+To do this, you need to call `tangemSdk.startSession()` method and get a `CardSession` instance in a callback.
-Then call the `runTask(..)` method of the `CardManager` class with you task.
+> For example, if you want to read the card and immediately sign a transaction with it, you can achieve it this way.
```kotlin
-val task = YourTask()
-cardManager.runTask(task) { taskEvent ->
- // Handle your events
-}
-```
-> For example, you want to read the card and immediately sign a transaction on it. In such a case, you need to inherit from the `Task` class and override the `onRun(..)` method, in which you implement the required behavior.
-
-It’s possible to run just one command without the need to create a separate task by using the `runCommand(..)` method.
-> For example, if you need to read the card details, but don’t need to check the authenticity.
-```kotlin
-// Create command
-val readCommand = ReadCardCommand()
-// Run command with the callback
-cardManager.runCommand(readCommand) { taskEvent ->
- when (taskEvent) {
- is TaskEvent.Event -> {
- // Handle returned card data
- val card: Card = taskEvent.data
- }
- is TaskEvent.Completion -> {
- if (taskEvent.error != null) {
- if (taskEvent.error is TaskError.UserCancelledError) {
- // Handle case when user cancelled manually
+ tangemSdk.startSession { session, error ->
+ if (error == null) {
+ session.startWithRunnable(
+ SignCommand(createSampleHashes())) {result ->
+ when (result) {
+ is CompletionResult.Failure -> {
+ if (result.error is SessionError.UserCancelledError) {
+ // Handle case when user cancelled manually
+ }
+ // Handle other errors
+ }
+ is CompletionResult.Success -> {
+ val signResponse = result.data
+ }
+ }
+ }
+ }
+ }
+```
+
+Another option is to put all logic in a in `CardSessionRunnable` class and launch it using `tangemSdk.startSessionWithRunnable()` method.
+In Tangem SDK we use this approach for our `ScanTask`.
+
+> For example, if you want to read the card and immediately sign a transaction with it, with subclassing `CardSessionRunnable` you can achieve it this way.
+
+```kotlin
+class OneTapSignTask(private val hashesToSign: Array) : CardSessionRunnable {
+
+ override fun run(session: CardSession, callback: (result: CompletionResult) -> Unit) {
+
+ val card = session.environment.card
+
+ if (card == null) {
+ callback(CompletionResult.Failure(SessionError.MissingPreflightRead()))
+
+ } else if (card.cardData?.productMask?.contains(Product.Tag) != false) {
+ callback(CompletionResult.Success(card))
+
+ } else if (card.status != CardStatus.Loaded) {
+ callback(CompletionResult.Success(card))
+
+ } else if (card.curve == null || card.walletPublicKey == null) {
+ callback(CompletionResult.Failure(SessionError.CardError()))
+
+ } else {
+ val signCommand = SignCommand(hashesToSign)
+
+ signCommand.run(session) { result ->
+ when (result) {
+ is CompletionResult.Success -> callback(CompletionResult.Success(result.data))
+ is CompletionResult.Failure -> callback(CompletionResult.Failure(result.error))
}
- // Handle other errors
}
- // Handle completion
}
}
}
diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt
index f69b7c96cf..e9a6ab555c 100644
--- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt
+++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt
@@ -1,21 +1,47 @@
package com.tangem.tangem_sdk_new.extensions
import androidx.fragment.app.FragmentActivity
+import com.tangem.Config
+import com.tangem.SessionViewDelegate
import com.tangem.TangemSdk
import com.tangem.tangem_sdk_new.DefaultSessionViewDelegate
import com.tangem.tangem_sdk_new.NfcLifecycleObserver
import com.tangem.tangem_sdk_new.TerminalKeysStorage
import com.tangem.tangem_sdk_new.nfc.NfcManager
-fun TangemSdk.Companion.init(activity: FragmentActivity): TangemSdk {
- val nfcManager = NfcManager().apply {
- this.setCurrentActivity(activity)
- activity.lifecycle.addObserver(NfcLifecycleObserver(this))
- }
- val viewDelegate = DefaultSessionViewDelegate(nfcManager.reader).apply {
- this.activity = activity
- }
- return TangemSdk(nfcManager.reader, viewDelegate).apply {
- this.setTerminalKeysService(TerminalKeysStorage(activity.application))
- }
+fun TangemSdk.Companion.init(activity: FragmentActivity, config: Config = Config()): TangemSdk {
+ val nfcManager = TangemSdk.initNfcManager(activity)
+
+ val viewDelegate = DefaultSessionViewDelegate(nfcManager.reader)
+ viewDelegate.activity = activity
+
+ val tangemSdk = TangemSdk(nfcManager.reader, viewDelegate, config)
+ tangemSdk.setTerminalKeysService(TerminalKeysStorage(activity.application))
+
+ return tangemSdk
+}
+
+fun TangemSdk.Companion.customInit(
+ activity: FragmentActivity,
+ viewDelegate: SessionViewDelegate? = null,
+ config: Config = Config()
+): TangemSdk {
+ val nfcManager = TangemSdk.initNfcManager(activity)
+
+ val tangemSdk = TangemSdk(
+ nfcManager.reader,
+ viewDelegate ?: DefaultSessionViewDelegate(nfcManager.reader)
+ .apply { this.activity = activity },
+ config
+ )
+ tangemSdk.setTerminalKeysService(TerminalKeysStorage(activity.application))
+
+ return tangemSdk
+}
+
+fun TangemSdk.Companion.initNfcManager(activity: FragmentActivity): NfcManager {
+ val nfcManager = NfcManager()
+ nfcManager.setCurrentActivity(activity)
+ activity.lifecycle.addObserver(NfcLifecycleObserver(nfcManager))
+ return nfcManager
}
\ No newline at end of file