Skip to content

Commit 1b2abab

Browse files
authored
Merge pull request #88 from reown-com/develop
BOM_1.3.3
2 parents 2b7d94b + 9328780 commit 1b2abab

File tree

31 files changed

+817
-219
lines changed

31 files changed

+817
-219
lines changed

.idea/codeStyles/Project.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ const val KEY_PUBLISH_ARTIFACT_ID = "PUBLISH_ARTIFACT_ID"
55
const val KEY_SDK_NAME = "SDK_NAME"
66

77
//Latest versions
8-
const val BOM_VERSION = "1.3.2"
9-
const val FOUNDATION_VERSION = "1.3.2"
10-
const val CORE_VERSION = "1.3.2"
11-
const val SIGN_VERSION = "1.3.2"
12-
const val NOTIFY_VERSION = "1.3.2"
13-
const val WALLETKIT_VERSION = "1.3.2"
14-
const val APPKIT_VERSION = "1.3.2"
15-
const val MODAL_CORE_VERSION = "1.3.2"
8+
const val BOM_VERSION = "1.3.3"
9+
const val FOUNDATION_VERSION = "1.3.3"
10+
const val CORE_VERSION = "1.3.3"
11+
const val SIGN_VERSION = "1.3.3"
12+
const val NOTIFY_VERSION = "1.3.3"
13+
const val WALLETKIT_VERSION = "1.3.3"
14+
const val APPKIT_VERSION = "1.3.3"
15+
const val MODAL_CORE_VERSION = "1.3.3"
1616

1717
//Artifact ids
1818
const val ANDROID_BOM = "android-bom"

product/walletkit/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ android {
6565

6666
dependencies {
6767
implementation("net.java.dev.jna:jna:5.15.0@aar")
68-
implementation("com.github.reown-com:yttrium:0.8.19") //unspecified
68+
implementation("com.github.reown-com:yttrium:0.9.4") //unspecified
6969

7070
implementation(platform(libs.firebase.bom))
7171
implementation(libs.firebase.messaging)

product/walletkit/src/main/kotlin/com/reown/walletkit/client/ClientMapper.kt

Lines changed: 76 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,14 @@ import uniffi.yttrium.InitialTransactionMetadata
1414
import uniffi.yttrium.OwnerSignature
1515
import uniffi.yttrium.PrepareResponseAvailable
1616
import uniffi.yttrium.PreparedSendTransaction
17+
import uniffi.yttrium.Route
18+
import uniffi.yttrium.RouteSig
19+
import uniffi.yttrium.SolanaTransaction
20+
import uniffi.yttrium.SolanaTxnDetails
1721
import uniffi.yttrium.Metadata as YMetadata
1822
import uniffi.yttrium.Transaction
1923
import uniffi.yttrium.TransactionFee
24+
import uniffi.yttrium.Transactions
2025
import uniffi.yttrium.TxnDetails
2126
import uniffi.yttrium.UiFields
2227

@@ -86,7 +91,13 @@ internal fun Wallet.Model.PayloadAuthRequestParams.toSign(): Sign.Model.PayloadP
8691

8792
@JvmSynthetic
8893
internal fun Sign.Model.Session.toWallet(): Wallet.Model.Session = Wallet.Model.Session(
89-
pairingTopic, topic, expiry, requiredNamespaces.toWalletProposalNamespaces(), optionalNamespaces?.toWalletProposalNamespaces(), namespaces.toWallet(), metaData
94+
pairingTopic,
95+
topic,
96+
expiry,
97+
requiredNamespaces.toWalletProposalNamespaces(),
98+
optionalNamespaces?.toWalletProposalNamespaces(),
99+
namespaces.toWallet(),
100+
metaData
90101
)
91102

92103
@JvmSynthetic
@@ -133,7 +144,8 @@ internal fun Sign.Model.SessionAuthenticate.toWallet(): Wallet.Model.SessionAuth
133144
Wallet.Model.SessionAuthenticate(id, topic, participant.toWallet(), payloadParams.toWallet())
134145

135146
@JvmSynthetic
136-
internal fun Sign.Model.SessionAuthenticate.Participant.toWallet(): Wallet.Model.SessionAuthenticate.Participant = Wallet.Model.SessionAuthenticate.Participant(publicKey, metadata)
147+
internal fun Sign.Model.SessionAuthenticate.Participant.toWallet(): Wallet.Model.SessionAuthenticate.Participant =
148+
Wallet.Model.SessionAuthenticate.Participant(publicKey, metadata)
137149

138150
@JvmSynthetic
139151
internal fun Sign.Model.PayloadParams.toWallet(): Wallet.Model.PayloadAuthRequestParams =
@@ -323,7 +335,13 @@ internal fun UiFields.toWallet(): Wallet.Model.PrepareSuccess.Available =
323335
Wallet.Model.PrepareSuccess.Available(
324336
orchestratorId = routeResponse.orchestrationId,
325337
checkIn = routeResponse.metadata.checkIn.toLong(),
326-
transactions = routeResponse.transactions.map { it.toWallet() },
338+
transactions = routeResponse.transactions.map {
339+
when (it) {
340+
is Transactions.Eip155 -> Wallet.Model.Transactions.Eip155(it.v1.map { eip155 -> eip155.toWallet() })
341+
is Transactions.Solana -> Wallet.Model.Transactions.Solana(it.v1.map { solana -> solana.toWallet() })
342+
else -> throw Exception("Unsupported Transaction type")
343+
}
344+
},
327345
initialTransaction = routeResponse.initialTransaction.toWallet(),
328346
initialTransactionMetadata = routeResponse.metadata.initialTransaction.toWallet(),
329347
funding = routeResponse.metadata.fundingFrom.map { it.toWallet() },
@@ -333,7 +351,13 @@ internal fun UiFields.toWallet(): Wallet.Model.PrepareSuccess.Available =
333351
private fun UiFields.toTransactionsDetails() = Wallet.Model.TransactionsDetails(
334352
localTotal = localTotal.toWallet(),
335353
initialDetails = initial.toWallet(),
336-
details = route.map { it.toWallet() },
354+
route = route.map {
355+
when (it) {
356+
is Route.Eip155 -> Wallet.Model.Route.Eip155(it.v1.map { eip155 -> eip155.toWallet() })
357+
is Route.Solana -> Wallet.Model.Route.Solana(it.v1.map { solana -> solana.toWallet() })
358+
else -> throw Exception("Unsupported Route type")
359+
}
360+
},
337361
bridgeFees = bridge.map { it.toWallet() },
338362
localFulfilmentTotal = localRouteTotal.toWallet(),
339363
localBridgeTotal = localBridgeTotal.toWallet()
@@ -349,12 +373,28 @@ internal fun Wallet.Model.PrepareSuccess.Available.toResponseYttrium(): PrepareR
349373
fundingFrom = funding.map { it.toYttrium() }
350374
),
351375
initialTransaction = initialTransaction.toYttrium(),
352-
transactions = transactions.map { it.toYttrium() })
376+
transactions = transactions.map {
377+
when (it) {
378+
is Wallet.Model.Transactions.Eip155 -> Transactions.Eip155(it.transactions.map { eip155 -> eip155.toYttrium() })
379+
is Wallet.Model.Transactions.Solana -> Transactions.Solana(it.transactions.map { solana -> solana.toYttrium() })
380+
}
381+
})
382+
383+
@JvmSynthetic
384+
internal fun Wallet.Model.RouteSig.toYttrium(): RouteSig = when (this) {
385+
is Wallet.Model.RouteSig.Eip155 -> RouteSig.Eip155(this.signatures)
386+
is Wallet.Model.RouteSig.Solana -> RouteSig.Solana(this.signatures)
387+
}
353388

354389
@JvmSynthetic
355390
internal fun Wallet.Model.PrepareSuccess.Available.toYttrium(): UiFields =
356391
UiFields(
357-
route = transactionsDetails.details.map { it.toYttrium() },
392+
route = transactionsDetails.route.map {
393+
when (it) {
394+
is Wallet.Model.Route.Eip155 -> Route.Eip155(it.transactionDetails.map { eip155 -> eip155.toYttrium() })
395+
is Wallet.Model.Route.Solana -> Route.Solana(it.solanaTransactionDetails.map { solana -> solana.toYttrium() })
396+
}
397+
},
358398
localTotal = transactionsDetails.localTotal.toYttrium(),
359399
localRouteTotal = transactionsDetails.localFulfilmentTotal.toYttrium(),
360400
bridge = transactionsDetails.bridgeFees.map { it.toYttrium() },
@@ -394,6 +434,13 @@ fun Transaction.toWallet(): Wallet.Model.Transaction = Wallet.Model.Transaction(
394434
chainId = chainId
395435
)
396436

437+
@JvmSynthetic
438+
fun SolanaTransaction.toWallet(): Wallet.Model.SolanaTransaction = Wallet.Model.SolanaTransaction(
439+
from = from,
440+
chainId = chainId,
441+
versionedTransaction = transaction
442+
)
443+
397444
@JvmSynthetic
398445
fun Wallet.Model.Transaction.toYttrium(): Transaction = Transaction(
399446
from = from,
@@ -406,13 +453,23 @@ fun Wallet.Model.Transaction.toYttrium(): Transaction = Transaction(
406453
)
407454

408455
@JvmSynthetic
409-
private fun Wallet.Model.FundingMetadata.toYttrium(): FundingMetadata = FundingMetadata(chainId, tokenContract, symbol, amount = amount, bridgingFee = bridgingFee, decimals = decimals.toUByte())
456+
fun Wallet.Model.SolanaTransaction.toYttrium(): SolanaTransaction = SolanaTransaction(
457+
from = from,
458+
chainId = chainId,
459+
transaction = versionedTransaction
460+
)
461+
462+
@JvmSynthetic
463+
private fun Wallet.Model.FundingMetadata.toYttrium(): FundingMetadata =
464+
FundingMetadata(chainId, tokenContract, symbol, amount = amount, bridgingFee = bridgingFee, decimals = decimals.toUByte())
410465

411466
@JvmSynthetic
412-
private fun FundingMetadata.toWallet(): Wallet.Model.FundingMetadata = Wallet.Model.FundingMetadata(chainId, tokenContract, symbol, amount, bridgingFee, 1)
467+
private fun FundingMetadata.toWallet(): Wallet.Model.FundingMetadata =
468+
Wallet.Model.FundingMetadata(chainId, tokenContract, symbol, amount, bridgingFee, 1)
413469

414470
@JvmSynthetic
415-
internal fun Eip1559Estimation.toWallet(): Wallet.Model.EstimatedFees = Wallet.Model.EstimatedFees(maxFeePerGas = maxFeePerGas, maxPriorityFeePerGas = maxPriorityFeePerGas)
471+
internal fun Eip1559Estimation.toWallet(): Wallet.Model.EstimatedFees =
472+
Wallet.Model.EstimatedFees(maxFeePerGas = maxFeePerGas, maxPriorityFeePerGas = maxPriorityFeePerGas)
416473

417474
@JvmSynthetic
418475
internal fun Amount.toWallet(): Wallet.Model.Amount = Wallet.Model.Amount(
@@ -438,12 +495,22 @@ private fun TxnDetails.toWallet(): Wallet.Model.TransactionDetails = Wallet.Mode
438495
transactionHashToSign = transactionHashToSign
439496
)
440497

498+
private fun SolanaTxnDetails.toWallet(): Wallet.Model.SolanaTransactionDetails = Wallet.Model.SolanaTransactionDetails(
499+
transaction = transaction.toWallet(),
500+
transactionHashToSign = transactionHashToSign
501+
)
502+
441503
private fun Wallet.Model.TransactionDetails.toYttrium(): TxnDetails = TxnDetails(
442504
transaction = feeEstimatedTransaction.toWallet(),
443505
fee = transactionFee.toYttrium(),
444506
transactionHashToSign = transactionHashToSign
445507
)
446508

509+
private fun Wallet.Model.SolanaTransactionDetails.toYttrium(): SolanaTxnDetails = SolanaTxnDetails(
510+
transaction = SolanaTransaction(chainId = transaction.chainId, from = transaction.from, transaction = transaction.versionedTransaction),
511+
transactionHashToSign = transactionHashToSign
512+
)
513+
447514
fun FeeEstimatedTransaction.toWallet(): Wallet.Model.FeeEstimatedTransaction = Wallet.Model.FeeEstimatedTransaction(
448515
from = from,
449516
to = to,

product/walletkit/src/main/kotlin/com/reown/walletkit/client/Wallet.kt

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,17 @@ object Wallet {
9191
var chainId: String
9292
) : Model()
9393

94+
data class SolanaTransaction(
95+
val from: String,
96+
val chainId: String,
97+
val versionedTransaction: String
98+
) : Model()
99+
100+
sealed class Transactions : Model() {
101+
data class Eip155(val transactions: List<Transaction>) : Transactions()
102+
data class Solana(val transactions: List<SolanaTransaction>) : Transactions()
103+
}
104+
94105
data class InitialTransaction(
95106
var from: String,
96107
var to: String,
@@ -128,7 +139,6 @@ object Wallet {
128139
var transferTo: String
129140
) : Model()
130141

131-
132142
data class EstimatedFees(
133143
val maxFeePerGas: String,
134144
val maxPriorityFeePerGas: String
@@ -138,7 +148,7 @@ object Wallet {
138148
data class Available(
139149
val orchestratorId: String,
140150
val checkIn: Long,
141-
val transactions: List<Transaction>,
151+
val transactions: List<Transactions>,
142152
val initialTransaction: Transaction,
143153
val initialTransactionMetadata: InitialTransactionMetadata,
144154
val funding: List<FundingMetadata>,
@@ -166,14 +176,29 @@ object Wallet {
166176
var localFee: Amount
167177
) : Model()
168178

179+
sealed class Route : Model() {
180+
data class Eip155(val transactionDetails: List<TransactionDetails>) : Route()
181+
data class Solana(val solanaTransactionDetails: List<SolanaTransactionDetails>) : Route()
182+
}
183+
184+
sealed class RouteSig : Model() {
185+
data class Eip155(val signatures: List<String>) : RouteSig()
186+
data class Solana(val signatures: List<String>) : RouteSig()
187+
}
188+
169189
data class TransactionDetails(
170190
var feeEstimatedTransaction: FeeEstimatedTransaction,
171191
var transactionFee: TransactionFee,
172192
val transactionHashToSign: String
173193
) : Model()
174194

195+
data class SolanaTransactionDetails(
196+
var transaction: SolanaTransaction,
197+
val transactionHashToSign: String
198+
) : Model()
199+
175200
data class TransactionsDetails(
176-
var details: List<TransactionDetails>,
201+
var route: List<Route>,
177202
var initialDetails: TransactionDetails,
178203
var bridgeFees: List<TransactionFee>,
179204
var localBridgeTotal: Amount,
@@ -182,9 +207,10 @@ object Wallet {
182207
) : Model()
183208

184209
sealed class PrepareError : Model() {
185-
data object NoRoutesAvailable : PrepareError()
186-
data object InsufficientFunds : PrepareError()
187-
data object InsufficientGasFunds : PrepareError()
210+
data class NoRoutesAvailable(val message: String) : PrepareError()
211+
data class InsufficientFunds(val message: String) : PrepareError()
212+
data class InsufficientGasFunds(val message: String) : PrepareError()
213+
data class AssetNotSupported(val message: String) : PrepareError()
188214
data class Unknown(val message: String) : PrepareError()
189215
}
190216

product/walletkit/src/main/kotlin/com/reown/walletkit/client/WalletKit.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,12 @@ object WalletKit {
355355
@ChainAbstractionExperimentalApi
356356
fun prepare(
357357
initialTransaction: Wallet.Model.InitialTransaction,
358+
accounts: List<String>,
358359
onSuccess: (Wallet.Model.PrepareSuccess) -> Unit,
359360
onError: (Wallet.Model.PrepareError) -> Unit
360361
) {
361362
try {
362-
prepareChainAbstractionUseCase(initialTransaction, onSuccess, onError)
363+
prepareChainAbstractionUseCase(initialTransaction, accounts, onSuccess, onError)
363364
} catch (e: Exception) {
364365
onError(Wallet.Model.PrepareError.Unknown(e.message ?: "Unknown error"))
365366
}
@@ -368,13 +369,13 @@ object WalletKit {
368369
@ChainAbstractionExperimentalApi
369370
fun execute(
370371
prepareAvailable: Wallet.Model.PrepareSuccess.Available,
371-
prepareSignedTxs: List<String>,
372+
signedTxs: List<Wallet.Model.RouteSig>,
372373
initSignedTx: String,
373374
onSuccess: (Wallet.Model.ExecuteSuccess) -> Unit,
374375
onError: (Wallet.Model.Error) -> Unit
375376
) {
376377
try {
377-
executeChainAbstractionUseCase(prepareAvailable, prepareSignedTxs, initSignedTx, onSuccess, onError)
378+
executeChainAbstractionUseCase(prepareAvailable, signedTxs, initSignedTx, onSuccess, onError)
378379
} catch (e: Exception) {
379380
onError(Wallet.Model.Error(e))
380381
}

product/walletkit/src/main/kotlin/com/reown/walletkit/di/WalletModule.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ internal fun walletKitModule() = module {
1919
ChainAbstractionClient(
2020
projectId = get<ProjectId>().value,
2121
pulseMetadata = PulseMetadata(
22-
packageName = null,
2322
sdkPlatform = "mobile",
2423
sdkVersion = "reown-kotlin-${BuildConfig.SDK_VERSION}",
2524
bundleId = get(named(AndroidCommonDITags.PACKAGE_NAME)),

product/walletkit/src/main/kotlin/com/reown/walletkit/use_cases/ExecuteChainAbstractionUseCase.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import kotlinx.coroutines.async
88
import kotlinx.coroutines.launch
99
import uniffi.uniffi_yttrium.ChainAbstractionClient
1010
import uniffi.yttrium.ExecuteDetails
11+
1112
class ExecuteChainAbstractionUseCase(private val chainAbstractionClient: ChainAbstractionClient) {
1213
operator fun invoke(
1314
prepareAvailable: Wallet.Model.PrepareSuccess.Available,
14-
signedRouteTxs: List<String>,
15+
signedRouteTxs: List<Wallet.Model.RouteSig>,
1516
initSignedTx: String,
1617
onSuccess: (Wallet.Model.ExecuteSuccess) -> Unit,
1718
onError: (Wallet.Model.Error) -> Unit
@@ -21,7 +22,7 @@ class ExecuteChainAbstractionUseCase(private val chainAbstractionClient: ChainAb
2122

2223
val result = async {
2324
try {
24-
chainAbstractionClient.execute(prepareAvailable.toYttrium(), signedRouteTxs, initSignedTx)
25+
chainAbstractionClient.execute(prepareAvailable.toYttrium(), signedRouteTxs.map { it.toYttrium() }, initSignedTx)
2526
} catch (e: Exception) {
2627
return@async onError(Wallet.Model.Error(e))
2728
}

0 commit comments

Comments
 (0)