Initial commit: Pezkuwi Wallet Android

Complete rebrand of Nova Wallet for Pezkuwichain ecosystem.

## Features
- Full Pezkuwichain support (HEZ & PEZ tokens)
- Polkadot ecosystem compatibility
- Staking, Governance, DeFi, NFTs
- XCM cross-chain transfers
- Hardware wallet support (Ledger, Polkadot Vault)
- WalletConnect v2
- Push notifications

## Languages
- English, Turkish, Kurmanci (Kurdish), Spanish, French, German, Russian, Japanese, Chinese, Korean, Portuguese, Vietnamese

Based on Nova Wallet by Novasama Technologies GmbH
© Dijital Kurdistan Tech Institute 2026
This commit is contained in:
2026-01-23 01:31:12 +03:00
commit 31c8c5995f
7621 changed files with 425838 additions and 0 deletions
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>
@@ -0,0 +1,20 @@
package io.novafoundation.nova.feature_buy_api.di
import io.novafoundation.nova.feature_buy_api.di.deeplinks.BuyDeepLinks
import io.novafoundation.nova.feature_buy_api.presentation.trade.TradeTokenRegistry
import io.novafoundation.nova.feature_buy_api.presentation.mixin.TradeMixin
import io.novafoundation.nova.feature_buy_api.presentation.trade.interceptors.mercuryo.MercuryoBuyRequestInterceptorFactory
import io.novafoundation.nova.feature_buy_api.presentation.trade.interceptors.mercuryo.MercuryoSellRequestInterceptorFactory
interface BuyFeatureApi {
val buyTokenRegistry: TradeTokenRegistry
val tradeMixinFactory: TradeMixin.Factory
val mercuryoBuyRequestInterceptorFactory: MercuryoBuyRequestInterceptorFactory
val mercuryoSellRequestInterceptorFactory: MercuryoSellRequestInterceptorFactory
val buyDeepLinks: BuyDeepLinks
}
@@ -0,0 +1,5 @@
package io.novafoundation.nova.feature_buy_api.di.deeplinks
import io.novafoundation.nova.feature_deep_linking.presentation.handling.DeepLinkHandler
class BuyDeepLinks(val deepLinkHandlers: List<DeepLinkHandler>)
@@ -0,0 +1,17 @@
package io.novafoundation.nova.feature_buy_api.presentation.mixin
import io.novafoundation.nova.common.mixin.MixinFactory
import io.novafoundation.nova.feature_buy_api.presentation.trade.TradeProvider
import io.novafoundation.nova.feature_buy_api.presentation.trade.TradeTokenRegistry
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
interface TradeMixin {
fun providersFor(chainAsset: Chain.Asset, tradeType: TradeTokenRegistry.TradeType): List<TradeProvider>
fun <T> providerFor(chainAsset: Chain.Asset, tradeFlow: TradeTokenRegistry.TradeType, providerId: String): T
interface Presentation : TradeMixin
interface Factory : MixinFactory<TradeMixin>
}
@@ -0,0 +1,62 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import io.novafoundation.nova.feature_buy_api.presentation.trade.common.OnTradeOperationFinishedListener
import io.novafoundation.nova.feature_buy_api.presentation.trade.common.OnSellOrderCreatedListener
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
typealias TradeProvider = TradeTokenRegistry.Provider<*>
interface TradeTokenRegistry {
fun hasProvider(chainAsset: Chain.Asset): Boolean
fun hasProvider(chainAsset: Chain.Asset, tradeType: TradeType): Boolean
fun availableProvidersFor(chainAsset: Chain.Asset, tradeType: TradeType): List<TradeProvider>
interface Provider<I : Integrator<*>> {
val id: String
val name: String
val officialUrl: String
@get:DrawableRes
val logoRes: Int
fun getPaymentMethods(tradeType: TradeType): List<PaymentMethod>
@StringRes
fun getDescriptionRes(tradeType: TradeType): Int
fun createIntegrator(
chainAsset: Chain.Asset,
address: String,
tradeFlow: TradeType,
onCloseListener: OnTradeOperationFinishedListener,
onSellOrderCreatedListener: OnSellOrderCreatedListener
): I
}
interface Integrator<T> {
suspend fun run(using: T)
}
enum class TradeType {
BUY, SELL
}
sealed interface PaymentMethod {
object Visa : PaymentMethod
object MasterCard : PaymentMethod
object ApplePay : PaymentMethod
object GooglePay : PaymentMethod
object Sepa : PaymentMethod
object BankTransfer : PaymentMethod
class Other(val quantity: Int) : PaymentMethod
}
}
@@ -0,0 +1,7 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.common
import java.math.BigDecimal
interface OnSellOrderCreatedListener {
fun onSellOrderCreated(orderId: String, address: String, amount: BigDecimal)
}
@@ -0,0 +1,5 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.common
interface OnTradeOperationFinishedListener {
fun onTradeOperationFinished(success: Boolean)
}
@@ -0,0 +1,10 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.interceptors.mercuryo
import io.novafoundation.nova.common.utils.webView.WebViewRequestInterceptor
import io.novafoundation.nova.feature_buy_api.presentation.trade.common.OnTradeOperationFinishedListener
interface MercuryoBuyRequestInterceptorFactory {
fun create(onTradeOperationFinishedListener: OnTradeOperationFinishedListener): MercuryoBuyRequestInterceptor
}
interface MercuryoBuyRequestInterceptor : WebViewRequestInterceptor
@@ -0,0 +1,14 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.interceptors.mercuryo
import io.novafoundation.nova.common.utils.webView.WebViewRequestInterceptor
import io.novafoundation.nova.feature_buy_api.presentation.trade.common.OnSellOrderCreatedListener
import io.novafoundation.nova.feature_buy_api.presentation.trade.common.OnTradeOperationFinishedListener
interface MercuryoSellRequestInterceptorFactory {
fun create(
tradeSellCallback: OnSellOrderCreatedListener,
onTradeOperationFinishedListener: OnTradeOperationFinishedListener
): MercuryoSellRequestInterceptor
}
interface MercuryoSellRequestInterceptor : WebViewRequestInterceptor
@@ -0,0 +1,5 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.providers
object ProviderUtils {
const val REDIRECT_URL_BASE = "https://www.google.com/"
}
@@ -0,0 +1,9 @@
package io.novafoundation.nova.feature_buy_api.presentation.trade.providers
import android.webkit.WebView
import io.novafoundation.nova.feature_buy_api.presentation.trade.TradeTokenRegistry
interface WebViewIntegrationProvider : TradeTokenRegistry.Provider<WebViewIntegrationProvider.Integrator> {
interface Integrator : TradeTokenRegistry.Integrator<WebView>
}