diff --git a/cw_solana/lib/solana_client.dart b/cw_solana/lib/solana_client.dart index 175d13195..95376c563 100644 --- a/cw_solana/lib/solana_client.dart +++ b/cw_solana/lib/solana_client.dart @@ -1,12 +1,13 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:math'; +import 'dart:math' as math; import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/node.dart'; import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_solana/pending_solana_transaction.dart'; import 'package:cw_solana/solana_balance.dart'; +import 'package:cw_solana/solana_exceptions.dart'; import 'package:cw_solana/solana_transaction_model.dart'; import 'package:http/http.dart' as http; import 'package:solana/dto.dart'; @@ -180,7 +181,7 @@ class SolanaWalletClient { bool isOutgoingTx = transfer.source == publicKey.toBase58(); double amount = (double.tryParse(transfer.amount) ?? 0.0) / - pow(10, splTokenDecimal ?? 9); + math.pow(10, splTokenDecimal ?? 9); transactions.add( SolanaTransactionModel( @@ -276,6 +277,7 @@ class SolanaWalletClient { required String destinationAddress, required Ed25519HDKeyPair ownerKeypair, required bool isSendAll, + required double solBalance, String? tokenMint, List references = const [], }) async { @@ -290,6 +292,7 @@ class SolanaWalletClient { ownerKeypair: ownerKeypair, commitment: commitment, isSendAll: isSendAll, + solBalance: solBalance, ); return pendingNativeTokenTransaction; } else { @@ -301,6 +304,7 @@ class SolanaWalletClient { destinationAddress: destinationAddress, ownerKeypair: ownerKeypair, commitment: commitment, + solBalance: solBalance, ); return pendingSPLTokenTransaction; } @@ -353,6 +357,23 @@ class SolanaWalletClient { return fee; } + Future hasSufficientFundsLeftForRent({ + required double inputAmount, + required double solBalance, + required double fee, + }) async { + final rent = + await _client!.getMinimumBalanceForMintRentExemption(commitment: Commitment.confirmed); + + final rentInSol = (rent / lamportsPerSol).toDouble(); + + final remnant = solBalance - (inputAmount + fee); + + if (remnant > rentInSol) return true; + + return false; + } + Future _signNativeTokenTransaction({ required String tokenTitle, required int tokenDecimals, @@ -361,6 +382,7 @@ class SolanaWalletClient { required Ed25519HDKeyPair ownerKeypair, required Commitment commitment, required bool isSendAll, + required double solBalance, }) async { // Convert SOL to lamport int lamports = (inputAmount * lamportsPerSol).toInt(); @@ -378,6 +400,16 @@ class SolanaWalletClient { commitment, ); + bool hasSufficientFundsLeft = await hasSufficientFundsLeftForRent( + inputAmount: inputAmount, + fee: fee, + solBalance: solBalance, + ); + + if (!hasSufficientFundsLeft) { + throw SolanaSignNativeTokenTransactionRentException(); + } + SignedTx signedTx; if (isSendAll) { final feeInLamports = (fee * lamportsPerSol).toInt(); @@ -425,6 +457,7 @@ class SolanaWalletClient { required String destinationAddress, required Ed25519HDKeyPair ownerKeypair, required Commitment commitment, + required double solBalance, }) async { final destinationOwner = Ed25519HDPublicKey.fromBase58(destinationAddress); final mint = Ed25519HDPublicKey.fromBase58(tokenMint); @@ -447,7 +480,7 @@ class SolanaWalletClient { // Throw an appropriate exception if the sender has no associated // token account if (associatedSenderAccount == null) { - throw NoAssociatedTokenAccountException(ownerKeypair.address, mint.toBase58()); + throw SolanaNoAssociatedTokenAccountException(ownerKeypair.address, mint.toBase58()); } try { @@ -457,11 +490,11 @@ class SolanaWalletClient { funder: ownerKeypair, ); } catch (e) { - throw Exception('Insufficient SOL balance to complete this transaction: ${e.toString()}'); + throw SolanaCreateAssociatedTokenAccountException(e.toString()); } // Input by the user - final amount = (inputAmount * pow(10, tokenDecimals)).toInt(); + final amount = (inputAmount * math.pow(10, tokenDecimals)).toInt(); final instruction = TokenInstruction.transfer( source: Ed25519HDPublicKey.fromBase58(associatedSenderAccount.pubkey), @@ -483,6 +516,16 @@ class SolanaWalletClient { commitment, ); + bool hasSufficientFundsLeft = await hasSufficientFundsLeftForRent( + inputAmount: inputAmount, + fee: fee, + solBalance: solBalance, + ); + + if (!hasSufficientFundsLeft) { + throw SolanaSignSPLTokenTransactionRentException(); + } + final signedTx = await _signTransactionInternal( message: message, signers: signers, diff --git a/cw_solana/lib/solana_exceptions.dart b/cw_solana/lib/solana_exceptions.dart index 7409b0500..888c95068 100644 --- a/cw_solana/lib/solana_exceptions.dart +++ b/cw_solana/lib/solana_exceptions.dart @@ -19,3 +19,20 @@ class SolanaTransactionWrongBalanceException implements Exception { @override String toString() => exceptionMessage; } + +class SolanaSignNativeTokenTransactionRentException implements Exception {} + +class SolanaCreateAssociatedTokenAccountException implements Exception { + final String exceptionMessage; + + SolanaCreateAssociatedTokenAccountException(this.exceptionMessage); +} + +class SolanaSignSPLTokenTransactionRentException implements Exception {} + +class SolanaNoAssociatedTokenAccountException implements Exception { + const SolanaNoAssociatedTokenAccountException(this.account, this.mint); + + final String account; + final String mint; +} diff --git a/cw_solana/lib/solana_wallet.dart b/cw_solana/lib/solana_wallet.dart index c884d8e82..33a2e7df4 100644 --- a/cw_solana/lib/solana_wallet.dart +++ b/cw_solana/lib/solana_wallet.dart @@ -228,6 +228,8 @@ abstract class SolanaWalletBase final walletBalanceForCurrency = balance[transactionCurrency]!.balance; + final solBalance = balance[CryptoCurrency.sol]!.balance; + double totalAmount = 0.0; bool isSendAll = false; @@ -279,6 +281,7 @@ abstract class SolanaWalletBase ? solCredentials.outputs.first.extractedAddress! : solCredentials.outputs.first.address, isSendAll: isSendAll, + solBalance: solBalance, ); return pendingSolanaTransaction; diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index dc3b2701d..40f877fef 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -1,4 +1,3 @@ -import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/entities/contact.dart'; import 'package:cake_wallet/entities/evm_transaction_error_fees_handler.dart'; import 'package:cake_wallet/entities/priority_for_wallet_type.dart'; @@ -14,7 +13,6 @@ import 'package:cake_wallet/polygon/polygon.dart'; import 'package:cake_wallet/reactions/wallet_connect.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/solana/solana.dart'; -import 'package:cake_wallet/src/screens/ur/animated_ur_page.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/tron/tron.dart'; import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart'; @@ -29,6 +27,7 @@ import 'package:cw_core/unspent_coin_type.dart'; import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/send_template_view_model.dart'; import 'package:cw_core/utils/print_verbose.dart'; +import 'package:cw_solana/solana_exceptions.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; @@ -427,7 +426,7 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor // // state = FailureState(errorMsg); // } else { - state = FailureState(translateErrorMessage(e, wallet.type, wallet.currency)); + state = FailureState(translateErrorMessage(e, wallet.type, wallet.currency)); // } } return null; @@ -487,10 +486,11 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor try { state = TransactionCommitting(); - + if (pendingTransaction!.shouldCommitUR()) { final urstr = await pendingTransaction!.commitUR(); - final result = await Navigator.of(context).pushNamed(Routes.urqrAnimatedPage, arguments: urstr); + final result = + await Navigator.of(context).pushNamed(Routes.urqrAnimatedPage, arguments: urstr); if (result == null) { state = FailureState("Canceled by user"); return; @@ -507,12 +507,9 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor final descriptionKey = '${pendingTransaction!.id}_${wallet.walletAddresses.primaryAddress}'; _settingsStore.shouldSaveRecipientAddress ? await transactionDescriptionBox.add(TransactionDescription( - id: descriptionKey, - recipientAddress: address, - transactionNote: note)) - : await transactionDescriptionBox.add(TransactionDescription( - id: descriptionKey, - transactionNote: note)); + id: descriptionKey, recipientAddress: address, transactionNote: note)) + : await transactionDescriptionBox + .add(TransactionDescription(id: descriptionKey, transactionNote: note)); } state = TransactionCommitted(); @@ -674,10 +671,26 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor lamportsNeeded != null ? ((lamportsNeeded + 5000) / lamportsPerSol) : 0.0; return S.current.insufficient_lamports(solValueNeeded.toString()); } else { - printV("No match found."); return S.current.insufficient_lamport_for_tx; } } + + if (error is SolanaSignNativeTokenTransactionRentException) { + return S.current.solana_sign_native_transaction_rent_exception; + } + + if (error is SolanaCreateAssociatedTokenAccountException) { + return S.current.solana_create_associated_token_account_exception; + } + + if (error is SolanaSignSPLTokenTransactionRentException) { + return S.current.solana_sign_spl_token_transaction_rent_exception; + } + + if (error is SolanaNoAssociatedTokenAccountException) { + return S.current.solana_no_associated_token_account_exception; + } + if (errorMessage.contains('insufficient funds for rent')) { return S.current.insufficientFundsForRentError; } diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index bd7fa47d7..a57a4cd1f 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "إعدادات المدفوعات الصامتة", "single_seed_wallets_group": "محافظ بذرة واحدة", "slidable": "قابل للانزلاق", + "solana_create_associated_token_account_exception": "خطأ في إنشاء حساب رمز المرتبط بعنوان المستلم.", + "solana_no_associated_token_account_exception": "لا يوجد حساب مميز مرتبط بهذا العنوان.", + "solana_sign_native_transaction_rent_exception": "لا يمكن إكمال المعاملة. غادر SOL غير كاف للإيجار بعد المعاملة. يرجى أن تصل إلى رصيد SOL أو تقليل كمية SOL التي ترسلها.", + "solana_sign_spl_token_transaction_rent_exception": "لا يمكن إكمال المعاملة. غادر SOL غير كاف للإيجار بعد المعاملة. يرجى أن تصل إلى توازن سولك.", "sort_by": "ترتيب حسب", "spend_key_private": "مفتاح الإنفاق (خاص)", "spend_key_public": "مفتاح الإنفاق (عام)", diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index bff37e95c..2aca0f08e 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Настройки за безшумни плащания", "single_seed_wallets_group": "Портфейли с единични семена", "slidable": "Плъзгащ се", + "solana_create_associated_token_account_exception": "Грешка Създаване на свързана сметка за жетони за адреса на получател.", + "solana_no_associated_token_account_exception": "Няма свързана сметка за този адрес.", + "solana_sign_native_transaction_rent_exception": "Транзакцията не може да бъде завършена. Недостатъчен сол оставен под наем след транзакция. Любезно допълнете баланса си на SOL или намалете количеството SOL, което изпращате.", + "solana_sign_spl_token_transaction_rent_exception": "Транзакцията не може да бъде завършена. Недостатъчен сол оставен под наем след транзакция. Любезно допълнете баланса си на SOL.", "sort_by": "Сортирай по", "spend_key_private": "Spend key (таен)", "spend_key_public": "Spend key (публичен)", diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index d8025678f..7ce5538ae 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Nastavení tichých plateb", "single_seed_wallets_group": "Jednorázové peněženky", "slidable": "Posuvné", + "solana_create_associated_token_account_exception": "Vytvoření chyby přidruženého účtu tokenů pro adresu příjmu.", + "solana_no_associated_token_account_exception": "Pro tuto adresu není přidružen žádný přidružený token.", + "solana_sign_native_transaction_rent_exception": "Transakce nelze dokončit. Po transakci nedostatek Sol odešel k pronájmu. Laskavě doplňte rovnováhu SOL nebo snižte množství SOL, které odesíláte.", + "solana_sign_spl_token_transaction_rent_exception": "Transakce nelze dokončit. Po transakci nedostatek Sol odešel k pronájmu. Laskavě doplňte rovnováhu SOL.", "sort_by": "Seřazeno podle", "spend_key_private": "Klíč pro platby (soukromý)", "spend_key_public": "Klíč pro platby (veřejný)", diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index b3aad50b0..bc06b4a53 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -502,8 +502,8 @@ "placeholder_transactions": "Ihre Transaktionen werden hier angezeigt", "please_fill_totp": "Bitte geben Sie den 8-stelligen Code ein, der auf Ihrem anderen Gerät vorhanden ist", "please_make_selection": "Bitte treffen Sie unten eine Auswahl zum Erstellen oder Wiederherstellen Ihrer Wallet.", - "Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.", "please_reference_document": "Bitte verweisen Sie auf die folgenden Dokumente, um weitere Informationen zu erhalten.", + "Please_reference_document": "Weitere Informationen finden Sie in den Dokumenten unten.", "please_select": "Bitte auswählen:", "please_select_backup_file": "Bitte wählen Sie die Sicherungsdatei und geben Sie das Sicherungskennwort ein.", "please_try_to_connect_to_another_node": "Bitte versuchen Sie, sich mit einem anderen Knoten zu verbinden", @@ -742,6 +742,10 @@ "silent_payments_settings": "Einstellungen für stille Zahlungen", "single_seed_wallets_group": "Einzelne Wallets", "slidable": "Verschiebbar", + "solana_create_associated_token_account_exception": "Fehler beim Erstellen des zugehörigen Token -Kontos für die Empfängeradresse.", + "solana_no_associated_token_account_exception": "Für diese Adresse ist kein Token -Konto zugeordnet.", + "solana_sign_native_transaction_rent_exception": "Transaktion kann nicht abgeschlossen werden. Unzureichende Sol ließen nach der Transaktion zur Miete gelassen. Bitte geben Sie Ihre SOL -Balance auf oder reduzieren Sie die Menge an SOL, die Sie senden.", + "solana_sign_spl_token_transaction_rent_exception": "Transaktion kann nicht abgeschlossen werden. Unzureichende Sol ließen nach der Transaktion zur Miete gelassen. Bitte geben Sie Ihre SOL -Balance auf.", "sort_by": "Sortiere nach", "spend_key_private": "Spend Key (geheim)", "spend_key_public": "Spend Key (öffentlich)", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index bd483adb1..26771edf1 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Silent Payments settings", "single_seed_wallets_group": "Single Seed Wallets", "slidable": "Slidable", + "solana_create_associated_token_account_exception": "Error creating associated token account for receipient address.", + "solana_no_associated_token_account_exception": "There is no associated token account for this address.", + "solana_sign_native_transaction_rent_exception": "Transaction cannot be completed. Insufficient SOL left for rent after transaction. Kindly top up your SOL balance or reduce the amount of SOL you are sending.", + "solana_sign_spl_token_transaction_rent_exception": "Transaction cannot be completed. Insufficient SOL left for rent after transaction. Kindly top up your SOL balance.", "sort_by": "Sort by", "spend_key_private": "Spend key (private)", "spend_key_public": "Spend key (public)", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 45b1d279b..6f2bd60b9 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "Configuración de pagos silenciosos", "single_seed_wallets_group": "Billeteras de semillas individuales", "slidable": "deslizable", + "solana_create_associated_token_account_exception": "Error a crear una cuenta de token asociada para la dirección recibida.", + "solana_no_associated_token_account_exception": "No hay una cuenta de token asociada para esta dirección.", + "solana_sign_native_transaction_rent_exception": "La transacción no se puede completar. Sol insuficiente que queda en alquiler después de la transacción. Por favor, supere su saldo de sol o reduzca la cantidad de sol que está enviando.", + "solana_sign_spl_token_transaction_rent_exception": "La transacción no se puede completar. Sol insuficiente que queda en alquiler después de la transacción. Por favor, supere su balance de sol.", "sort_by": "Ordenar por", "spend_key_private": "Llave de gasto (privada)", "spend_key_public": "Llave de gasto (pública)", diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index a359e3630..ff5c17cde 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Paramètres de paiement silencieux", "single_seed_wallets_group": "Portefeuilles de semences simples", "slidable": "Glissable", + "solana_create_associated_token_account_exception": "Création d'erreur Création de jetons associés pour l'adresse détenue.", + "solana_no_associated_token_account_exception": "Il n'y a pas de compte de jeton associé pour cette adresse.", + "solana_sign_native_transaction_rent_exception": "La transaction ne peut pas être terminée. Sol insuffisant laissé à la location après la transaction. Veuillez compléter votre solde SOL ou réduire la quantité de Sol que vous envoyez.", + "solana_sign_spl_token_transaction_rent_exception": "La transaction ne peut pas être terminée. Sol insuffisant laissé à la location après la transaction. Veuillez compléter votre solde de Sol.", "sort_by": "Trier par", "spend_key_private": "Clef de dépense (spend key) (privée)", "spend_key_public": "Clef de dépense (spend key) (publique)", diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 48ede7b7c..a13ed2af4 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -743,6 +743,10 @@ "silent_payments_settings": "Saitunan Silent", "single_seed_wallets_group": "Guaro", "slidable": "Mai iya zamewa", + "solana_create_associated_token_account_exception": "Kuskuren ƙirƙirar asusun Asusun da aka danganta don Adireshin karɓar karɓa.", + "solana_no_associated_token_account_exception": "Babu wani haɗin yanar gizo mai alaƙa don wannan adireshin.", + "solana_sign_native_transaction_rent_exception": "Ma'amala ba za a iya kammala ba. Rashin cancanta na Sol ya bar haya bayan ma'amala. Da kyau a saman ma'auni na Solku ko rage adadin Sol da kuke aikawa.", + "solana_sign_spl_token_transaction_rent_exception": "Ma'amala ba za a iya kammala ba. Rashin cancanta na Sol ya bar haya bayan ma'amala. Da kyau sama da ma'auni na Sol.", "sort_by": "Kasa", "spend_key_private": "makullin biya (maɓallin kalmar sirri)", "spend_key_public": "makullin biya (maɓallin jama'a)", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index c2feea939..b73414dee 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -743,6 +743,10 @@ "silent_payments_settings": "मूक भुगतान सेटिंग्स", "single_seed_wallets_group": "एकल बीज बटुए", "slidable": "फिसलने लायक", + "solana_create_associated_token_account_exception": "रसीद पते के लिए संबद्ध टोकन खाता बनाने में त्रुटि।", + "solana_no_associated_token_account_exception": "इस पते के लिए कोई जुड़ा हुआ टोकन खाता नहीं है।", + "solana_sign_native_transaction_rent_exception": "लेन -देन पूरा नहीं किया जा सकता है। अपर्याप्त सोल लेनदेन के बाद किराए के लिए छोड़ दिया। कृपया अपने सोल बैलेंस को टॉप करें या आपके द्वारा भेजे जा रहे सोल की मात्रा को कम करें।", + "solana_sign_spl_token_transaction_rent_exception": "लेन -देन पूरा नहीं किया जा सकता है। अपर्याप्त सोल लेनदेन के बाद किराए के लिए छोड़ दिया। कृपया अपने सोल बैलेंस को ऊपर रखें।", "sort_by": "इसके अनुसार क्रमबद्ध करें", "spend_key_private": "खर्च करना (निजी)", "spend_key_public": "खर्च करना (जनता)", diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index c82e2a5f8..87d66122c 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Postavke tihih plaćanja", "single_seed_wallets_group": "Jednostruki novčanici", "slidable": "Klizna", + "solana_create_associated_token_account_exception": "Pogreška u stvaranju povezanog token računa za adresu primanja.", + "solana_no_associated_token_account_exception": "Za ovu adresu ne postoji povezani token račun.", + "solana_sign_native_transaction_rent_exception": "Transakcija se ne može završiti. Nedovoljno sol ostao je za najam nakon transakcije. Ljubazno nadopunite svoj SOL saldo ili smanjite količinu SOL -a koju šaljete.", + "solana_sign_spl_token_transaction_rent_exception": "Transakcija se ne može završiti. Nedovoljno sol ostao je za najam nakon transakcije. Ljubazno nadopunite svoju sol ravnotežu.", "sort_by": "Poredaj po", "spend_key_private": "Spend key (privatni)", "spend_key_public": "Spend key (javni)", diff --git a/res/values/strings_hy.arb b/res/values/strings_hy.arb index d83bc2a3a..dfbd94cdc 100644 --- a/res/values/strings_hy.arb +++ b/res/values/strings_hy.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Լուռ Վճարումներ Կարգավորումներ", "single_seed_wallets_group": "Մեկ սերմերի դրամապանակներ", "slidable": "Սահելի", + "solana_create_associated_token_account_exception": "Recesient Advent- ի համար հարակից նշանների հաշիվ ստեղծելու սխալ:", + "solana_no_associated_token_account_exception": "Այս հասցեի համար կապված նշանների հաշիվ չկա:", + "solana_sign_native_transaction_rent_exception": "Գործարքը հնարավոր չէ լրացնել: Անբավարար սոլը գործարքից հետո վարձով է մնացել: Սիրով վերացրեք ձեր SOL հավասարակշռությունը կամ նվազեցրեք ձեր ուղարկած սոլի քանակը:", + "solana_sign_spl_token_transaction_rent_exception": "Գործարքը հնարավոր չէ լրացնել: Անբավարար սոլը գործարքից հետո վարձով է մնացել: Սիրով վերացրեք ձեր SOL հավասարակշռությունը:", "sort_by": "Դասավորել ըստ", "spend_key_private": "Վճարման բանալի (գախտնի)", "spend_key_public": "Վճարման բանալի (հանրային)", diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index ca140e63e..b3ef0c67b 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -744,6 +744,10 @@ "silent_payments_settings": "Pengaturan pembayaran diam", "single_seed_wallets_group": "Dompet biji tunggal", "slidable": "Dapat digeser", + "solana_create_associated_token_account_exception": "Kesalahan Membuat Akun Token Terkait untuk Alamat Penerima.", + "solana_no_associated_token_account_exception": "Tidak ada akun token terkait untuk alamat ini.", + "solana_sign_native_transaction_rent_exception": "Transaksi tidak dapat diselesaikan. SOL yang tidak mencukupi pergi untuk disewa setelah transaksi. Mohon tambah saldo SOL Anda atau kurangi jumlah SOL yang Anda kirim.", + "solana_sign_spl_token_transaction_rent_exception": "Transaksi tidak dapat diselesaikan. SOL yang tidak mencukupi pergi untuk disewa setelah transaksi. Mohon tambah saldo SOL Anda.", "sort_by": "Sortir dengan", "spend_key_private": "Kunci pengeluaran (privat)", "spend_key_public": "Kunci pengeluaran (publik)", diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index f5dbc1c5a..2cf07fdd7 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -743,6 +743,10 @@ "silent_payments_settings": "Impostazioni di pagamenti silenziosi", "single_seed_wallets_group": "Portafogli singoli", "slidable": "Scorrevole", + "solana_create_associated_token_account_exception": "Errore Creazione di account token associato per l'indirizzo dei ricevimenti.", + "solana_no_associated_token_account_exception": "Non esiste un account token associato per questo indirizzo.", + "solana_sign_native_transaction_rent_exception": "La transazione non può essere completata. Sol insufficiente lasciato in affitto dopo la transazione. Si prega di ricaricare il saldo SOL o ridurre la quantità di sol che stai inviando.", + "solana_sign_spl_token_transaction_rent_exception": "La transazione non può essere completata. Sol insufficiente lasciato in affitto dopo la transazione. Si prega di ricaricare il tuo equilibrio sol.", "sort_by": "Ordina per", "spend_key_private": "Chiave di spesa (privata)", "spend_key_public": "Chiave di spesa (pubblica)", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 182133e68..3edb9f88d 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "サイレントペイメント設定", "single_seed_wallets_group": "シングルシードウォレット", "slidable": "スライド可能", + "solana_create_associated_token_account_exception": "関連するトークンの作成エラー受信アドレスのアカウント。", + "solana_no_associated_token_account_exception": "このアドレスに関連付けられたトークンアカウントはありません。", + "solana_sign_native_transaction_rent_exception": "トランザクションは完了できません。取引後にレンタルのために残された不十分なソル。ソルバランスを補充するか、送信するソルの量を減らしてください。", + "solana_sign_spl_token_transaction_rent_exception": "トランザクションは完了できません。取引後にレンタルのために残された不十分なソル。ソルバランスを補充してください。", "sort_by": "並び替え", "spend_key_private": "キーを使う (プライベート)", "spend_key_public": "キーを使う (パブリック)", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 747c316d6..6e5fb4a7b 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "조용한 지불 설정", "single_seed_wallets_group": "단일 씨앗 지갑", "slidable": "슬라이딩 가능", + "solana_create_associated_token_account_exception": "오류 생성 관련 토큰 계정 수령자 주소에 대한 계정.", + "solana_no_associated_token_account_exception": "이 주소에는 관련 토큰 계정이 없습니다.", + "solana_sign_native_transaction_rent_exception": "거래는 완료 될 수 없습니다. 거래 후 SOL이 임대료로 남았습니다. SOL 밸런스를 친절하게 위로 올리거나 보내는 솔의 양을 줄입니다.", + "solana_sign_spl_token_transaction_rent_exception": "거래는 완료 될 수 없습니다. 거래 후 SOL이 임대료로 남았습니다. SOL 균형을 친절하게 위에 올리십시오.", "sort_by": "정렬 기준", "spend_key_private": "지출 키 (은밀한)", "spend_key_public": "지출 키 (공공의)", diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index 8fe87b34c..a7ada97ef 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "အသံတိတ်ငွေပေးချေမှုဆက်တင်များ", "single_seed_wallets_group": "တစ်ခုတည်းမျိုးစေ့ပိုက်ဆံအိတ်", "slidable": "လျှောချနိုင်သည်။", + "solana_create_associated_token_account_exception": "Encipient Token အကောင့်ကိုလက်ခံသည့်လိပ်စာအတွက်အကောင့်များဖန်တီးခြင်းအတွက်အမှားအယွင်းများဖန်တီးခြင်း။", + "solana_no_associated_token_account_exception": "ဒီလိပ်စာအတွက်မပေါင်းသင်းတဲ့လက်ခဏာသက်သေအကောင့်မရှိဘူး။", + "solana_sign_native_transaction_rent_exception": "ငွေပေးငွေယူကိုမပြီးစီးနိုင်ပါ။ ငွေပေးငွေယူပြီးနောက်ငှားရန် Sol မလုံလောက်ပါ။ ကြင်နာစွာသင်၏ SOR ချိန်ခွင်လျှာကိုငွေဖြည့်ပါသို့မဟုတ်သင်ပို့နေသည့်ပမာဏကိုလျှော့ချပါ။", + "solana_sign_spl_token_transaction_rent_exception": "ငွေပေးငွေယူကိုမပြီးစီးနိုင်ပါ။ ငွေပေးငွေယူပြီးနောက်ငှားရန် Sol မလုံလောက်ပါ။ ကြင်နာစွာသင်၏ s ကိုချိန်ခွင်လျှာကိုတက်ပါ။", "sort_by": "အလိုက်စဥ်သည်", "spend_key_private": "သော့သုံးရန် (သီးသန့်)", "spend_key_public": "သုံးစွဲရန်သော့ (အများပြည်သူ)", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index ca7052b0e..ba20bb26a 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Stille betalingsinstellingen", "single_seed_wallets_group": "Enkele zaadportefeuilles", "slidable": "Verschuifbaar", + "solana_create_associated_token_account_exception": "Fout bij het maken van een geassocieerd tokenaccount voor ontvangingsadres.", + "solana_no_associated_token_account_exception": "Er is geen bijbehorende tokenaccount voor dit adres.", + "solana_sign_native_transaction_rent_exception": "Transactie kan niet worden voltooid. Onvoldoende Sol vertrok naar huur na transactie. Vul uw SOL -balans aan of verminder de hoeveelheid SOL die u verzendt.", + "solana_sign_spl_token_transaction_rent_exception": "Transactie kan niet worden voltooid. Onvoldoende Sol vertrok naar huur na transactie. Vul uw SOL -balans op.", "sort_by": "Sorteer op", "spend_key_private": "Sleutel uitgeven (privaat)", "spend_key_public": "Sleutel uitgeven (openbaar)", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index fad2bb026..d50def305 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Ustawienia o cichej płatności", "single_seed_wallets_group": "Pojedyncze portfele nasion", "slidable": "Przesuwne", + "solana_create_associated_token_account_exception": "Błąd tworzenia powiązanego konta tokena dla adresu wpływającego.", + "solana_no_associated_token_account_exception": "Nie ma powiązanego konta tokena dla tego adresu.", + "solana_sign_native_transaction_rent_exception": "Transakcji nie można zakończyć. Niewystarczający SOL w lewo do czynszu po transakcji. Uprzejmie uzupełnij saldo Sol lub zmniejsz ilość wysyłanej przez Ciebie rozwiązania.", + "solana_sign_spl_token_transaction_rent_exception": "Transakcji nie można zakończyć. Niewystarczający SOL w lewo do czynszu po transakcji. Uprzejmie uzupełnij saldo Sol.", "sort_by": "Sortuj według", "spend_key_private": "Klucz prywatny", "spend_key_public": "Klucz publiczny", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index c59afec65..7ff9fdc4e 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -743,6 +743,10 @@ "silent_payments_settings": "Configurações de pagamentos silenciosos", "single_seed_wallets_group": "Carteiras de sementes únicas", "slidable": "Deslizável", + "solana_create_associated_token_account_exception": "Erro a criação de um token associado Conta do endereço de recebimento.", + "solana_no_associated_token_account_exception": "Não existe uma conta de token associada para este endereço.", + "solana_sign_native_transaction_rent_exception": "A transação não pode ser concluída. Sol insuficiente deixou para alugar após a transação. Por favor, complete seu saldo sol ou reduza a quantidade de sol que você está enviando.", + "solana_sign_spl_token_transaction_rent_exception": "A transação não pode ser concluída. Sol insuficiente deixou para alugar após a transação. Por favor, complete seu equilíbrio sol.", "sort_by": "Ordenar por", "spend_key_private": "Chave de gastos (privada)", "spend_key_public": "Chave de gastos (pública)", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 94b1c7010..b1d6c2461 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "Silent Payments Settings", "single_seed_wallets_group": "Одиночные кошельки", "slidable": "Скользящий", + "solana_create_associated_token_account_exception": "Ошибка создания ассоциированной учетной записи для адреса для адреса.", + "solana_no_associated_token_account_exception": "Для этого адреса нет связанной учетной записи токена.", + "solana_sign_native_transaction_rent_exception": "Сделка не может быть завершена. Недостаточный соль ушел в аренду после транзакции. Пожалуйста, поместите свой баланс Sol или уменьшите количество Sol, которое вы отправляете.", + "solana_sign_spl_token_transaction_rent_exception": "Сделка не может быть завершена. Недостаточный соль ушел в аренду после транзакции. Пожалуйста, пополните свой баланс Sol.", "sort_by": "Сортировать по", "spend_key_private": "Приватный ключ траты", "spend_key_public": "Публичный ключ траты", diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index f35187cd4..b5587073b 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "การตั้งค่าการชำระเงินแบบเงียบ", "single_seed_wallets_group": "กระเป๋าเงินเดียว", "slidable": "เลื่อนได้", + "solana_create_associated_token_account_exception": "ข้อผิดพลาดในการสร้างบัญชีโทเค็นที่เกี่ยวข้องสำหรับที่อยู่รับ", + "solana_no_associated_token_account_exception": "ไม่มีบัญชีโทเค็นที่เกี่ยวข้องสำหรับที่อยู่นี้", + "solana_sign_native_transaction_rent_exception": "การทำธุรกรรมไม่สามารถเสร็จสิ้นได้ SOL ไม่เพียงพอเหลือให้เช่าหลังการทำธุรกรรม กรุณาเติมยอดคงเหลือโซลของคุณหรือลดจำนวนโซลที่คุณกำลังส่ง", + "solana_sign_spl_token_transaction_rent_exception": "การทำธุรกรรมไม่สามารถเสร็จสิ้นได้ SOL ไม่เพียงพอเหลือให้เช่าหลังการทำธุรกรรม กรุณาเติมยอดสมดุลโซลของคุณ", "sort_by": "เรียงตาม", "spend_key_private": "คีย์จ่าย (ส่วนตัว)", "spend_key_public": "คีย์จ่าย (สาธารณะ)", diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 290fcf4bf..774887859 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Mga setting ng tahimik na pagbabayad", "single_seed_wallets_group": "Solong mga pitaka ng binhi", "slidable": "Slidable", + "solana_create_associated_token_account_exception": "Error sa paglikha ng nauugnay na token account para sa resibo address.", + "solana_no_associated_token_account_exception": "Walang nauugnay na token account para sa address na ito.", + "solana_sign_native_transaction_rent_exception": "Hindi makumpleto ang transaksyon. Hindi sapat na SOL na naiwan para sa upa pagkatapos ng transaksyon. Mabuting itaas ang iyong balanse sa sol o bawasan ang dami ng sol na iyong ipinapadala.", + "solana_sign_spl_token_transaction_rent_exception": "Hindi makumpleto ang transaksyon. Hindi sapat na SOL na naiwan para sa upa pagkatapos ng transaksyon. Mabuting itaas ang iyong balanse sa sol.", "sort_by": "Pag-uri-uriin sa pamamagitan ng", "spend_key_private": "Spend key (private)", "spend_key_public": "Spend key (public)", diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 912cd52e4..83d766347 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "Sessiz Ödeme Ayarları", "single_seed_wallets_group": "Tek tohum cüzdanları", "slidable": "kaydırılabilir", + "solana_create_associated_token_account_exception": "ALIPITIENT ADRESİ İÇİN BAŞLANGIÇ HESABI oluşturma Hata.", + "solana_no_associated_token_account_exception": "Bu adres için ilişkili belirteç hesabı yoktur.", + "solana_sign_native_transaction_rent_exception": "İşlem tamamlanamaz. Yetersiz Sol işlemden sonra kira için kaldı. Lütfen sol bakiyenizi doldurun veya gönderdiğiniz Sol miktarını azaltın.", + "solana_sign_spl_token_transaction_rent_exception": "İşlem tamamlanamaz. Yetersiz Sol işlemden sonra kira için kaldı. Lütfen sol bakiyenizi doldurun.", "sort_by": "Göre sırala", "spend_key_private": "Harcama anahtarı (özel)", "spend_key_public": "Harcama anahtarı (genel)", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index fd03f437e..fd69c6cbf 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "Налаштування мовчазних платежів", "single_seed_wallets_group": "Поодинокі насінні гаманці", "slidable": "Розсувний", + "solana_create_associated_token_account_exception": "Помилка створення пов’язаного облікового запису Token для адреси приймання.", + "solana_no_associated_token_account_exception": "Для цієї адреси немає пов’язаного облікового запису маркера.", + "solana_sign_native_transaction_rent_exception": "Транзакція не може бути завершена. Недостатня SOL залишила оренду після транзакції. Будь ласка, поповніть свій баланс SOL або зменшіть кількість SOL, який ви надсилаєте.", + "solana_sign_spl_token_transaction_rent_exception": "Транзакція не може бути завершена. Недостатня SOL залишила оренду після транзакції. Будь ласка, наповніть свій баланс SOL.", "sort_by": "Сортувати за", "spend_key_private": "Приватний ключ витрати", "spend_key_public": "Публічний ключ витрати", diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index 03140020a..e4e8d8aee 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -743,6 +743,10 @@ "silent_payments_settings": "خاموش ادائیگی کی ترتیبات", "single_seed_wallets_group": "سنگل بیج کے بٹوے", "slidable": "سلائیڈ ایبل", + "solana_create_associated_token_account_exception": "وصول کنندہ ایڈریس کے لئے وابستہ ٹوکن اکاؤنٹ بنانے میں غلطی۔", + "solana_no_associated_token_account_exception": "اس پتے کے لئے کوئی وابستہ ٹوکن اکاؤنٹ نہیں ہے۔", + "solana_sign_native_transaction_rent_exception": "لین دین مکمل نہیں کیا جاسکتا۔ ٹرانزیکشن کے بعد کرایہ کے لئے ناکافی SOL چھوڑ دیا گیا ہے۔ برائے مہربانی اپنے سول توازن کو اوپر کریں یا آپ بھیج رہے ہیں اس کی مقدار کو کم کریں۔", + "solana_sign_spl_token_transaction_rent_exception": "لین دین مکمل نہیں کیا جاسکتا۔ ٹرانزیکشن کے بعد کرایہ کے لئے ناکافی SOL چھوڑ دیا گیا ہے۔ برائے مہربانی اپنے سول توازن کو اوپر رکھیں۔", "sort_by": "ترتیب دیں", "spend_key_private": "خرچ کی کلید (نجی)", "spend_key_public": "خرچ کی کلید (عوامی)", diff --git a/res/values/strings_vi.arb b/res/values/strings_vi.arb index e40edf458..f74078746 100644 --- a/res/values/strings_vi.arb +++ b/res/values/strings_vi.arb @@ -740,6 +740,10 @@ "silent_payments_settings": "Cài đặt thanh toán im lặng", "single_seed_wallets_group": "Ví hạt đơn", "slidable": "Có thể kéo", + "solana_create_associated_token_account_exception": "Lỗi Tạo tài khoản mã thông báo liên quan cho địa chỉ biên lai.", + "solana_no_associated_token_account_exception": "Không có tài khoản mã thông báo liên quan cho địa chỉ này.", + "solana_sign_native_transaction_rent_exception": "Giao dịch không thể được hoàn thành. Không đủ Sol còn lại cho thuê sau khi giao dịch. Vui lòng tăng số dư Sol của bạn hoặc giảm số lượng sol bạn đang gửi.", + "solana_sign_spl_token_transaction_rent_exception": "Giao dịch không thể được hoàn thành. Không đủ Sol còn lại cho thuê sau khi giao dịch. Vui lòng lên cân bằng sol của bạn.", "sort_by": "Sắp xếp theo", "spend_key_private": "Khóa chi tiêu (riêng tư)", "spend_key_public": "Khóa chi tiêu (công khai)", diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index 8b3cdc358..14f0e5cf6 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -742,6 +742,10 @@ "silent_payments_settings": "Awọn eto isanwo ti o dakẹ", "single_seed_wallets_group": "Awọn Wowei Awọn gige", "slidable": "Slidable", + "solana_create_associated_token_account_exception": "Aṣiṣe ṣiṣẹda akọọlẹ token ti o ni ibatan fun adirẹsi gbigba.", + "solana_no_associated_token_account_exception": "Ko si iroyin token ti o ni ibatan fun adirẹsi yii.", + "solana_sign_native_transaction_rent_exception": "Idunadura ko le pari. Solusi ti ko to ju fun iyalo lẹhin idunadura. Jowo oke iwọntunwọnsi rẹ tabi dinku iye sol ti o firanṣẹ.", + "solana_sign_spl_token_transaction_rent_exception": "Idunadura ko le pari. Solusi ti ko to ju fun iyalo lẹhin idunadura. Sanra si oke ni iwọntunwọnsi Sol rẹ.", "sort_by": "Sa pelu", "spend_key_private": "Kọ́kọ́rọ́ sísan (àdáni)", "spend_key_public": "Kọ́kọ́rọ́ sísan (kò àdáni)", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 63e92a67d..8d9828c6a 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -741,6 +741,10 @@ "silent_payments_settings": "无声付款设置", "single_seed_wallets_group": "单个种子钱包", "slidable": "可滑动", + "solana_create_associated_token_account_exception": "错误创建有关接收地址的关联令牌帐户。", + "solana_no_associated_token_account_exception": "该地址没有关联的令牌帐户。", + "solana_sign_native_transaction_rent_exception": "交易无法完成。交易后剩下的溶胶不足。请增强您的溶胶余额或减少您发送的SOL的量。", + "solana_sign_spl_token_transaction_rent_exception": "交易无法完成。交易后剩下的溶胶不足。请增强您的溶液余额。", "sort_by": "排序方式", "spend_key_private": "Spend 密钥 (私钥)", "spend_key_public": "Spend 密钥 (公钥)",