## What's new ### API module additions - ProtocolParameters: data class for fee calculation params - PaymentRequest: transaction request model - SignedTransaction: signed transaction result model - TransactionBuilder: interface for building/signing transactions - PaymentStatusPoller: interface for polling tx confirmation ### CardanoClient updates - Added getProtocolParameters() to interface - Implemented in KoiosCardanoClient with retry logic ### Implementation - DefaultTransactionBuilder: builds and signs transactions using cardano-client-lib - Largest-first UTXO selection - Fee calculation via protocol parameters - Min UTXO validation (1 ADA minimum) - Secure key handling (zeroed after use) - DefaultPaymentStatusPoller: polls Koios for tx confirmation - 10s polling interval, 60 attempts max (~10 minutes) - Emits TxStatus.PENDING -> CONFIRMED/FAILED flow ### Test module - FakeTransactionBuilder: configurable success/failure responses - FakePaymentStatusPoller: configurable status sequences - Updated FakeCardanoClient with getProtocolParameters() ### Unit tests - TransactionBuilderTest: UTXO selection, fee calculation, error handling - PaymentStatusPollerTest: polling behavior, error recovery
56 lines
1.5 KiB
Kotlin
56 lines
1.5 KiB
Kotlin
/*
|
|
* Copyright (c) 2026 Sulkta Coop.
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import extension.setupDependencyInjection
|
|
|
|
plugins {
|
|
id("io.element.android-compose-library")
|
|
alias(libs.plugins.kotlin.serialization)
|
|
}
|
|
|
|
android {
|
|
namespace = "io.element.android.features.wallet.impl"
|
|
|
|
testOptions {
|
|
unitTests {
|
|
isIncludeAndroidResources = true
|
|
}
|
|
}
|
|
}
|
|
|
|
setupDependencyInjection()
|
|
|
|
dependencies {
|
|
api(projects.features.wallet.api)
|
|
implementation(projects.libraries.architecture)
|
|
implementation(projects.libraries.core)
|
|
implementation(projects.libraries.matrix.api)
|
|
implementation(projects.libraries.matrix.impl)
|
|
implementation(projects.libraries.designsystem)
|
|
implementation(projects.libraries.cryptography.api)
|
|
implementation(projects.libraries.uiStrings)
|
|
|
|
// Cardano - using Koios backend (no API key required)
|
|
implementation("com.bloxbean.cardano:cardano-client-lib:0.7.1")
|
|
implementation("com.bloxbean.cardano:cardano-client-backend-koios:0.7.1")
|
|
implementation("com.bloxbean.cardano:cardano-client-crypto:0.7.1")
|
|
|
|
// Biometric
|
|
implementation(libs.androidx.biometric)
|
|
|
|
// JSON
|
|
implementation(libs.serialization.json)
|
|
|
|
// Coroutines
|
|
implementation(libs.coroutines.core)
|
|
|
|
// Testing
|
|
testImplementation(projects.features.wallet.test)
|
|
testImplementation(libs.test.junit)
|
|
testImplementation(libs.test.truth)
|
|
testImplementation(libs.coroutines.test)
|
|
testImplementation(libs.test.turbine)
|
|
}
|