Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-25 12:09:02 +05:00
parent 40f24bd65b
commit 724a1fe19b
19 changed files with 550 additions and 587 deletions

View file

@ -5,29 +5,39 @@ import java.math.BigDecimal
data class TxHistoryItem(
val txHash: String,
val timestampInMillis: Long,
val direction: TransactionDirection,
val isOutgoing: Boolean,
val destinationType: DestinationType,
val sourceType: SourceType,
val interactionAddressType: InteractionAddressType,
val status: TransactionStatus,
val type: TransactionType,
val amount: BigDecimal,
) {
sealed interface TransactionDirection {
val address: Address
sealed class DestinationType {
data class Single(val addressType: AddressType) : DestinationType()
data class Multiple(val addressTypes: List<AddressType>) : DestinationType()
}
data class Incoming(override val address: Address) : TransactionDirection
data class Outgoing(override val address: Address) : TransactionDirection
sealed class SourceType {
data class Single(val address: String) : SourceType()
data class Multiple(val addresses: List<String>) : SourceType()
}
sealed class AddressType {
abstract val address: String
data class User(override val address: String) : AddressType()
data class Contract(override val address: String) : AddressType()
}
sealed interface TransactionType {
object Transfer : TransactionType
object Submit : TransactionType
object Approve : TransactionType
object Supply : TransactionType
object Withdraw : TransactionType
object Deposit : TransactionType
object Swap : TransactionType
object Unoswap : TransactionType
data class Custom(val id: String) : TransactionType
object UnknownOperation : TransactionType
data class Operation(val name: String) : TransactionType
}
sealed class TransactionStatus {
@ -36,8 +46,9 @@ data class TxHistoryItem(
object Confirmed : TransactionStatus()
}
sealed class Address {
data class Single(val rawAddress: String) : Address()
object Multiple : Address()
sealed class InteractionAddressType {
data class User(val address: String) : InteractionAddressType()
data class Contract(val address: String) : InteractionAddressType()
data class Multiple(val addresses: List<String>) : InteractionAddressType()
}
}