WalletNavigation.kt
/*
* This file is part of GNU Taler
* (C) 2026 Taler Systems S.A.
*
* GNU Taler is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3, or (at your option) any later version.
*
* GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
package net.taler.wallet
import kotlinx.serialization.Serializable
import net.taler.wallet.scan.ScanTab
import net.taler.wallet.transactions.TransactionStateFilter
@Serializable
sealed interface WalletDestination {
@Serializable
data object Main : WalletDestination
@Serializable
data class ScanQr(val initialTab: ScanTab = ScanTab.SCAN_QR) : WalletDestination
@Serializable
data class Transactions(
val filter: TransactionStateFilter? = null,
) : WalletDestination
@Serializable
data object Settings : WalletDestination
@Serializable
data class HandleUri(val uri: String) : WalletDestination
@Serializable
data class PaytoUri(val uri: String) : WalletDestination
@Serializable
data class PromptWithdraw(
val withdrawUri: String? = null,
val withdrawExchangeUri: String? = null,
val exchangeBaseUrl: String? = null,
val amount: String? = null,
val editableCurrency: Boolean = true
) : WalletDestination
@Serializable
data object ExchangeList : WalletDestination
@Serializable
data class BankAccounts(val currency: String? = null) : WalletDestination
@Serializable
data class AddBankAccount(val bankAccountId: String? = null) : WalletDestination
@Serializable
data object DiscountList : WalletDestination
@Serializable
data object PassList : WalletDestination
@Serializable
data class DonauStatement(val host: String) : WalletDestination
@Serializable
data class SetDonau(val donauBaseUrl: String? = null) : WalletDestination
@Serializable
data object OutgoingPush : WalletDestination
@Serializable
data object OutgoingPull : WalletDestination
@Serializable
data class Deposit(
val amount: String? = null,
val receiverName: String? = null,
val receiverPostalCode: String? = null,
val receiverTown: String? = null,
val IBAN: String? = null
) : WalletDestination
@Serializable
data object PromptPullPayment : WalletDestination
@Serializable
data object PromptPushPayment : WalletDestination
@Serializable
data class PromptPayTemplate(val uri: String) : WalletDestination
@Serializable
data class WireTransferDetails(
val showQrCodes: Boolean,
) : WalletDestination
@Serializable
data class ReviewExchangeTOS(
val exchangeBaseUrl: String,
val readOnly: Boolean = false
) : WalletDestination
@Serializable
data object ExchangeShopping : WalletDestination
@Serializable
data object PerformanceStats : WalletDestination
@Serializable
data class Contacts(
val sendUri: String? = null,
val scopeInfo: String? = null,
val addContactUri: String? = null,
) : WalletDestination
@Serializable
data object Mailbox : WalletDestination
@Serializable
data object AliasRegistration : WalletDestination
// Transaction Details
@Serializable
data object TransactionWithdrawal : WalletDestination
@Serializable
data class TransactionPayment(val promptMode: Boolean = false) : WalletDestination
@Serializable
data object TransactionRefund : WalletDestination
@Serializable
data object TransactionRefresh : WalletDestination
@Serializable
data object TransactionDeposit : WalletDestination
@Serializable
data object TransactionPeer : WalletDestination
@Serializable
data object TransactionLoss : WalletDestination
@Serializable
data object TransactionDummy : WalletDestination
}