Add leaf sync (#999)

* add leaf sync to sync after payments

* add local leaf storage

* create leaf timeout function

* adding leaves function

* adding compatibility for blink recovery tool

* add UI to handle export

* adding function to get root nodes

* fix transaction overlap bug

* adding loading half modal since process can take some time

* cache full exit path to sql

* change wallet leaves to wallet backup, and update icon

* when force mode sync for all leaves not just pending ones

* fix modal double navigation bug

* add wallet backup to doomsday row
This commit is contained in:
Blake Kaufman
2026-07-09 14:19:56 -04:00
committed by GitHub
parent 546fcfc841
commit c1d030650e
29 changed files with 2897 additions and 19 deletions
+49 -1
View File
@@ -2268,7 +2268,55 @@
"blitzRestore": "Blitz-Wiederherstellung",
"point-of-sale": "Zahlungsterminal (POS)",
"pools": "Sparpools",
"show seed phrase": "Seed-Phrase sichern"
"show seed phrase": "Seed-Phrase sichern",
"wallet leaves": "Wallet-Daten"
},
"walletLeaves": {
"sats": "Sats",
"lastSynced": "Synchronisiert: {{time}}",
"never": "Nie",
"treeLabel": "Baum {{id}}",
"treeSubtitle": "{{count}} Blätter",
"showMore": "Mehr anzeigen",
"exportButton": "Backup exportieren",
"noLeavesToExport": "Es gibt noch keine Blätter zum Exportieren.",
"exportError": "Ihre Blätter konnten nicht exportiert werden. Bitte versuchen Sie es erneut.",
"notReadyTitle": "Nicht bereit zum Ausstieg",
"readyTitle": "Bereit zum Ausstieg",
"verdictSuffix": "/ {{total}} Blätter",
"verdictBodyNotReady": "Ihr Geld ist sicher. Keines Ihrer Blätter ist jedoch groß genug, um allein auszusteigen jedes muss mindestens {{min}} Sats enthalten, damit sich die On-Chain-Gebühren lohnen.",
"verdictBodyReady": "Sie haben Blätter, die groß genug sind, um allein auszusteigen. Jedes ausstiegsbereite Blatt überschreitet die {{min}} Sats, die nötig sind, um die On-Chain-Gebühren zu decken.",
"bucketReadyTitle": "Bereit zum Ausstieg",
"bucketReadySub": "Über {{min}} Sats",
"bucketBelowTitle": "Unter Schwellenwert",
"bucketBelowSub": "Zu klein für einen alleinigen Ausstieg",
"exportTitle": "Recovery-Tool öffnen",
"exportSubTitle": "Stellen Sie Ihre Guthaben ohne Spark wieder her",
"learnTitle": "Was ist ein einseitiger Ausstieg?",
"learnSubtitle": "Bitcoin ohne Spark zurückholen",
"guide": {
"unilateralExit": "Einseitiger Ausstieg",
"balanceCaption": "{{leaves}} Blätter · {{trees}} Bäume",
"howTitle": "So funktioniert ein Ausstieg",
"howSubtitle": "Direkt auf Bitcoin auszahlen ohne Genehmigung.",
"rootLabel": "WURZEL",
"leafLabel": "BLATT",
"diagramCaption": "Von oben nach unten übertragen, der Reihenfolge nach",
"step1": "Wählen Sie ein Blatt mit mehr als {{min}} Sats.",
"step2": "Übertragen Sie die Transaktionen in einer Sitzung von der Wurzel bis zum Blatt.",
"step3": "Die Gelder werden in Ihrer On-Chain-Bitcoin-Wallet gutgeschrieben.",
"warningTitle": "Nur eine Sitzung.",
"warningBody": "Ihre Wallet ist gesperrt, bis der Ausstieg abgeschlossen ist. Planen Sie daher genügend Zeit ein.",
"openBlink": "Ausstiegs-Tool öffnen"
},
"progress": {
"title": "Backup wird exportiert",
"gathering": "Wallet-Blätter werden gesammelt…",
"saving": "Lokales Backup wird gespeichert…",
"exit": "Ausstiegsdaten werden abgerufen…",
"building": "Backup-Datei wird erstellt…",
"sharing": "Freigabemenü wird geöffnet…"
}
},
"remotePayments": {
"lnAddress": "Lightning-Adresse",
+48
View File
@@ -2260,6 +2260,7 @@
"backup wallet": "Backup Wallet",
"show seed phrase": "Backup Wallet",
"spark info": "Spark Info",
"wallet leaves": "Wallet Data",
"delete wallet": "Delete Wallet",
"general": "General",
"preferences": "Preferences",
@@ -2270,6 +2271,53 @@
"blitzRestore": "Blitz Restore",
"point-of-sale": "Point-of-sale"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Synced: {{time}}",
"never": "Never",
"treeLabel": "Tree {{id}}",
"treeSubtitle": "{{count}} leaves",
"showMore": "Show more",
"exportButton": "Export backup",
"noLeavesToExport": "There are no leaves to export yet.",
"exportError": "Could not export your leaves. Please try again.",
"notReadyTitle": "Not ready to exit",
"readyTitle": "Ready to exit",
"verdictSuffix": " / {{total}} leaves",
"verdictBodyNotReady": "Your money is safe. But none of your leaves are large enough to exit on their own — each one must clear {{min}} sats to outweigh the on-chain fees.",
"verdictBodyReady": "You have leaves large enough to exit on their own. Each exit-ready leaf clears the {{min}} sats needed to outweigh the on-chain fees.",
"bucketReadyTitle": "Ready to exit",
"bucketReadySub": "Above {{min}} sats",
"bucketBelowTitle": "Below threshold",
"bucketBelowSub": "Too small to exit alone",
"exportTitle": "Open recovery tool",
"exportSubTitle": "Recover your funds without Spark",
"learnTitle": "What is a unilateral exit?",
"learnSubtitle": "Reclaim Bitcoin without Spark",
"guide": {
"unilateralExit": "Unilateral Exit",
"balanceCaption": "{{leaves}} leaves · {{trees}} trees",
"howTitle": "How an exit works",
"howSubtitle": "Withdraw straight to Bitcoin — no permission needed.",
"rootLabel": "ROOT",
"leafLabel": "LEAF",
"diagramCaption": "Broadcast top → bottom, in order",
"step1": "Pick a leaf worth more than {{min}} sats.",
"step2": "Broadcast its transactions from root to leaf, in one session.",
"step3": "Funds arrive in your on-chain Bitcoin wallet.",
"warningTitle": "One session only.",
"warningBody": "Your wallet is locked until the exit finishes, so set aside time before you start.",
"openBlink": "Open the exit tool"
},
"progress": {
"title": "Exporting backup",
"gathering": "Gathering your wallet leaves…",
"saving": "Saving a local backup…",
"exit": "Fetching exit data…",
"building": "Building your backup file…",
"sharing": "Opening the share sheet…"
}
},
"remotePayments": {
"lnAddress": "Lightning address",
"lnurlPageDesc": "Your Lightning address lets anyone pay you with no invoice needed."
+49 -1
View File
@@ -2268,7 +2268,55 @@
"blitzRestore": "Restauración Blitz",
"point-of-sale": "Punto de venta",
"pools": "Pools",
"show seed phrase": "Respaldar billetera"
"show seed phrase": "Respaldar billetera",
"wallet leaves": "Datos de la billetera"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Sincronizado: {{time}}",
"never": "Nunca",
"treeLabel": "Árbol {{id}}",
"treeSubtitle": "{{count}} hojas",
"showMore": "Mostrar más",
"exportButton": "Exportar respaldo",
"noLeavesToExport": "Todavía no hay hojas para exportar.",
"exportError": "No se pudieron exportar tus hojas. Inténtalo de nuevo.",
"notReadyTitle": "Aún no listo para salir",
"readyTitle": "Listo para salir",
"verdictSuffix": "/ {{total}} hojas",
"verdictBodyNotReady": "Tu dinero está seguro. Pero ninguna de tus hojas es lo suficientemente grande para salir por sí sola: cada una debe superar {{min}} sats para compensar las comisiones on-chain.",
"verdictBodyReady": "Tienes hojas lo suficientemente grandes para salir por sí solas. Cada hoja lista para salir supera los {{min}} sats necesarios para compensar las comisiones on-chain.",
"bucketReadyTitle": "Listo para salir",
"bucketReadySub": "Más de {{min}} sats",
"bucketBelowTitle": "Debajo del umbral",
"bucketBelowSub": "Demasiado pequeña para salir sola",
"exportTitle": "Abrir herramienta de recuperación",
"exportSubTitle": "Recupera tus fondos sin Spark",
"learnTitle": "¿Qué es una salida unilateral?",
"learnSubtitle": "Recupera tus Bitcoin sin Spark",
"guide": {
"unilateralExit": "Salida unilateral",
"balanceCaption": "{{leaves}} hojas · {{trees}} árboles",
"howTitle": "Cómo funciona una salida",
"howSubtitle": "Retira directamente a Bitcoin, sin necesidad de permiso.",
"rootLabel": "RAÍZ",
"leafLabel": "HOJA",
"diagramCaption": "Transmitir de arriba hacia abajo, en orden",
"step1": "Elige una hoja con un valor superior a {{min}} sats.",
"step2": "Transmite sus transacciones desde la raíz hasta la hoja en una sola sesión.",
"step3": "Los fondos llegarán a tu billetera Bitcoin on-chain.",
"warningTitle": "Una sola sesión.",
"warningBody": "Tu billetera permanecerá bloqueada hasta que finalice la salida, así que reserva tiempo antes de comenzar.",
"openBlink": "Abrir la herramienta de salida"
},
"progress": {
"title": "Exportando respaldo",
"gathering": "Recopilando las hojas de tu billetera…",
"saving": "Guardando un respaldo local…",
"exit": "Obteniendo datos de salida…",
"building": "Creando el archivo de respaldo…",
"sharing": "Abriendo el menú para compartir…"
}
},
"remotePayments": {
"lnAddress": "Dirección Lightning",
+49 -1
View File
@@ -2268,7 +2268,55 @@
"blitzRestore": "Restauration éclair",
"point-of-sale": "Point de vente",
"pools": "Pools",
"show seed phrase": "Sauvegarder le portefeuille"
"show seed phrase": "Sauvegarder le portefeuille",
"wallet leaves": "Données du portefeuille"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Synchronisé : {{time}}",
"never": "Jamais",
"treeLabel": "Arbre {{id}}",
"treeSubtitle": "{{count}} feuilles",
"showMore": "Afficher plus",
"exportButton": "Exporter la sauvegarde",
"noLeavesToExport": "Il ny a pas encore de feuilles à exporter.",
"exportError": "Impossible dexporter vos feuilles. Veuillez réessayer.",
"notReadyTitle": "Pas prêt à sortir",
"readyTitle": "Prêt à sortir",
"verdictSuffix": "/ {{total}} feuilles",
"verdictBodyNotReady": "Vos fonds sont en sécurité. Cependant, aucune de vos feuilles nest assez importante pour sortir seule : chacune doit dépasser {{min}} sats afin de compenser les frais on-chain.",
"verdictBodyReady": "Vous avez des feuilles suffisamment importantes pour sortir seules. Chaque feuille prête à sortir dépasse le seuil de {{min}} sats nécessaire pour compenser les frais on-chain.",
"bucketReadyTitle": "Prêt à sortir",
"bucketReadySub": "Au-dessus de {{min}} sats",
"bucketBelowTitle": "Sous le seuil",
"bucketBelowSub": "Trop petite pour sortir seule",
"exportTitle": "Ouvrir loutil de récupération",
"exportSubTitle": "Récupérez vos fonds sans Spark",
"learnTitle": "Quest-ce quune sortie unilatérale ?",
"learnSubtitle": "Récupérez vos bitcoins sans Spark",
"guide": {
"unilateralExit": "Sortie unilatérale",
"balanceCaption": "{{leaves}} feuilles · {{trees}} arbres",
"howTitle": "Comment fonctionne une sortie",
"howSubtitle": "Retirez directement vers Bitcoin, sans autorisation.",
"rootLabel": "RACINE",
"leafLabel": "FEUILLE",
"diagramCaption": "Diffuser du haut vers le bas, dans lordre",
"step1": "Choisissez une feuille valant plus de {{min}} sats.",
"step2": "Diffusez ses transactions de la racine jusqu’à la feuille, en une seule session.",
"step3": "Les fonds arrivent dans votre portefeuille Bitcoin on-chain.",
"warningTitle": "Une seule session.",
"warningBody": "Votre portefeuille est verrouillé jusqu’à la fin de la sortie. Prévoyez donc suffisamment de temps avant de commencer.",
"openBlink": "Ouvrir loutil de sortie"
},
"progress": {
"title": "Exportation de la sauvegarde",
"gathering": "Collecte des feuilles de votre portefeuille…",
"saving": "Enregistrement d'une sauvegarde locale…",
"exit": "Récupération des données de sortie…",
"building": "Création du fichier de sauvegarde…",
"sharing": "Ouverture de la feuille de partage…"
}
},
"remotePayments": {
"lnAddress": "Adresse Lightning",
+49 -1
View File
@@ -2268,7 +2268,55 @@
"blitzRestore": "Ripristino Blitz",
"point-of-sale": "Terminale POS",
"pools": "Pools",
"show seed phrase": "Backup portafoglio"
"show seed phrase": "Backup portafoglio",
"wallet leaves": "Dati del portafoglio"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Sincronizzato: {{time}}",
"never": "Mai",
"treeLabel": "Albero {{id}}",
"treeSubtitle": "{{count}} foglie",
"showMore": "Mostra altro",
"exportButton": "Esporta backup",
"noLeavesToExport": "Non ci sono ancora foglie da esportare.",
"exportError": "Impossibile esportare le tue foglie. Riprova.",
"notReadyTitle": "Non pronto per l'uscita",
"readyTitle": "Pronto per l'uscita",
"verdictSuffix": "/ {{total}} foglie",
"verdictBodyNotReady": "I tuoi fondi sono al sicuro. Tuttavia, nessuna delle tue foglie è abbastanza grande da uscire autonomamente: ciascuna deve superare {{min}} sats per compensare le commissioni on-chain.",
"verdictBodyReady": "Hai foglie abbastanza grandi da uscire autonomamente. Ogni foglia pronta per l'uscita supera la soglia di {{min}} sats necessaria per compensare le commissioni on-chain.",
"bucketReadyTitle": "Pronto per l'uscita",
"bucketReadySub": "Oltre {{min}} sats",
"bucketBelowTitle": "Sotto la soglia",
"bucketBelowSub": "Troppo piccola per uscire da sola",
"exportTitle": "Apri lo strumento di recupero",
"exportSubTitle": "Recupera i tuoi fondi senza Spark",
"learnTitle": "Cos'è un'uscita unilaterale?",
"learnSubtitle": "Recupera i tuoi Bitcoin senza Spark",
"guide": {
"unilateralExit": "Uscita unilaterale",
"balanceCaption": "{{leaves}} foglie · {{trees}} alberi",
"howTitle": "Come funziona un'uscita",
"howSubtitle": "Preleva direttamente in Bitcoin, senza bisogno di autorizzazioni.",
"rootLabel": "RADICE",
"leafLabel": "FOGLIA",
"diagramCaption": "Trasmetti dall'alto verso il basso, in ordine",
"step1": "Scegli una foglia con un valore superiore a {{min}} sats.",
"step2": "Trasmetti le sue transazioni dalla radice alla foglia in un'unica sessione.",
"step3": "I fondi arriveranno nel tuo portafoglio Bitcoin on-chain.",
"warningTitle": "Una sola sessione.",
"warningBody": "Il tuo portafoglio resterà bloccato fino al completamento dell'uscita. Assicurati di avere tempo sufficiente prima di iniziare.",
"openBlink": "Apri lo strumento di uscita"
},
"progress": {
"title": "Esportazione del backup",
"gathering": "Raccolta delle foglie del portafoglio…",
"saving": "Salvataggio di un backup locale…",
"exit": "Recupero dei dati di uscita…",
"building": "Creazione del file di backup…",
"sharing": "Apertura del menu di condivisione…"
}
},
"remotePayments": {
"lnAddress": "Indirizzo Lightning",
+49 -1
View File
@@ -2267,7 +2267,55 @@
"blitzRestore": "Blitz Restore",
"point-of-sale": "Ponto de venda",
"pools": "Vaquinhas",
"show seed phrase": "Fazer backup da carteira"
"show seed phrase": "Fazer backup da carteira",
"wallet leaves": "Dados da carteira"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Sincronizado: {{time}}",
"never": "Nunca",
"treeLabel": "Árvore {{id}}",
"treeSubtitle": "{{count}} folhas",
"showMore": "Mostrar mais",
"exportButton": "Exportar backup",
"noLeavesToExport": "Ainda não há folhas para exportar.",
"exportError": "Não foi possível exportar suas folhas. Tente novamente.",
"notReadyTitle": "Ainda não está pronto para sair",
"readyTitle": "Pronto para sair",
"verdictSuffix": "/ {{total}} folhas",
"verdictBodyNotReady": "Seu dinheiro está seguro. Mas nenhuma das suas folhas é grande o suficiente para sair sozinha — cada uma precisa ultrapassar {{min}} sats para compensar as taxas on-chain.",
"verdictBodyReady": "Você tem folhas grandes o suficiente para sair por conta própria. Cada folha pronta para saída ultrapassa os {{min}} sats necessários para compensar as taxas on-chain.",
"bucketReadyTitle": "Pronto para sair",
"bucketReadySub": "Acima de {{min}} sats",
"bucketBelowTitle": "Abaixo do limite",
"bucketBelowSub": "Pequena demais para sair sozinha",
"exportTitle": "Abrir ferramenta de recuperação",
"exportSubTitle": "Recupere seus fundos sem o Spark",
"learnTitle": "O que é uma saída unilateral?",
"learnSubtitle": "Recupere seus Bitcoins sem o Spark",
"guide": {
"unilateralExit": "Saída unilateral",
"balanceCaption": "{{leaves}} folhas · {{trees}} árvores",
"howTitle": "Como funciona uma saída",
"howSubtitle": "Retire diretamente para Bitcoin — sem precisar de permissão.",
"rootLabel": "RAIZ",
"leafLabel": "FOLHA",
"diagramCaption": "Transmita de cima para baixo, em ordem",
"step1": "Escolha uma folha com mais de {{min}} sats.",
"step2": "Transmita as transações da raiz até a folha em uma única sessão.",
"step3": "Os fundos chegarão à sua carteira Bitcoin on-chain.",
"warningTitle": "Apenas uma sessão.",
"warningBody": "Sua carteira ficará bloqueada até que a saída seja concluída. Reserve tempo suficiente antes de começar.",
"openBlink": "Abrir a ferramenta de saída"
},
"progress": {
"title": "Exportando backup",
"gathering": "Coletando as folhas da sua carteira…",
"saving": "Salvando um backup local…",
"exit": "Obtendo os dados de saída…",
"building": "Criando o arquivo de backup…",
"sharing": "Abrindo a folha de compartilhamento…"
}
},
"remotePayments": {
"lnAddress": "Endereço Blitz",
+49 -1
View File
@@ -2269,7 +2269,55 @@
"blitzRestore": "Восстановление Blitz",
"point-of-sale": "Терминал (POS)",
"pools": "Пулы",
"show seed phrase": "Резервное копирование кошелька"
"show seed phrase": "Резервное копирование кошелька",
"wallet leaves": "Данные кошелька"
},
"walletLeaves": {
"sats": "сат.",
"lastSynced": "Синхронизировано: {{time}}",
"never": "Никогда",
"treeLabel": "Дерево {{id}}",
"treeSubtitle": "{{count}} листьев",
"showMore": "Показать больше",
"exportButton": "Экспортировать резервную копию",
"noLeavesToExport": "Пока нет листьев для экспорта.",
"exportError": "Не удалось экспортировать листья. Попробуйте ещё раз.",
"notReadyTitle": "Пока не готово к выходу",
"readyTitle": "Готово к выходу",
"verdictSuffix": "/ {{total}} листьев",
"verdictBodyNotReady": "Ваши средства в безопасности. Но ни один из ваших листьев недостаточно велик для самостоятельного выхода — каждый должен превышать {{min}} сат., чтобы покрыть комиссии сети Bitcoin.",
"verdictBodyReady": "У вас есть листья, достаточно большие для самостоятельного выхода. Каждый готовый к выходу лист превышает порог {{min}} сат., необходимый для покрытия комиссий сети Bitcoin.",
"bucketReadyTitle": "Готово к выходу",
"bucketReadySub": "Более {{min}} сат.",
"bucketBelowTitle": "Ниже порога",
"bucketBelowSub": "Слишком мало для самостоятельного выхода",
"exportTitle": "Открыть инструмент восстановления",
"exportSubTitle": "Восстановите свои средства без Spark",
"learnTitle": "Что такое односторонний выход?",
"learnSubtitle": "Верните свои Bitcoin без Spark",
"guide": {
"unilateralExit": "Односторонний выход",
"balanceCaption": "{{leaves}} листьев · {{trees}} деревьев",
"howTitle": "Как работает выход",
"howSubtitle": "Выведите средства напрямую в Bitcoin — без чьего-либо разрешения.",
"rootLabel": "КОРЕНЬ",
"leafLabel": "ЛИСТ",
"diagramCaption": "Отправляйте сверху вниз по порядку",
"step1": "Выберите лист стоимостью более {{min}} сат.",
"step2": "Отправьте его транзакции от корня к листу за один сеанс.",
"step3": "Средства поступят в ваш Bitcoin-кошелёк в основной сети.",
"warningTitle": "Только один сеанс.",
"warningBody": "Ваш кошелёк будет заблокирован до завершения выхода, поэтому заранее выделите достаточно времени.",
"openBlink": "Открыть инструмент выхода"
},
"progress": {
"title": "Экспорт резервной копии",
"gathering": "Сбор листьев вашего кошелька…",
"saving": "Сохранение локальной резервной копии…",
"exit": "Получение данных для выхода…",
"building": "Создание файла резервной копии…",
"sharing": "Открытие меню «Поделиться»…"
}
},
"remotePayments": {
"lnAddress": "Адрес Молнии",
+49 -1
View File
@@ -2268,7 +2268,55 @@
"blitzRestore": "Blitz Återställning",
"point-of-sale": "Försäljningsställen",
"pools": "Pooler",
"show seed phrase": "Säkerhetskopiera plånbok"
"show seed phrase": "Säkerhetskopiera plånbok",
"wallet leaves": "Plånboksdata"
},
"walletLeaves": {
"sats": "sats",
"lastSynced": "Synkroniserad: {{time}}",
"never": "Aldrig",
"treeLabel": "Träd {{id}}",
"treeSubtitle": "{{count}} blad",
"showMore": "Visa fler",
"exportButton": "Exportera säkerhetskopia",
"noLeavesToExport": "Det finns inga blad att exportera ännu.",
"exportError": "Det gick inte att exportera dina blad. Försök igen.",
"notReadyTitle": "Inte redo att lämna",
"readyTitle": "Redo att lämna",
"verdictSuffix": "/ {{total}} blad",
"verdictBodyNotReady": "Dina pengar är säkra. Men inget av dina blad är tillräckligt stort för att lämna på egen hand varje blad måste överstiga {{min}} sats för att täcka on-chain-avgifterna.",
"verdictBodyReady": "Du har blad som är tillräckligt stora för att lämna på egen hand. Varje blad som är redo att lämna överstiger {{min}} sats som krävs för att täcka on-chain-avgifterna.",
"bucketReadyTitle": "Redo att lämna",
"bucketReadySub": "Över {{min}} sats",
"bucketBelowTitle": "Under gränsen",
"bucketBelowSub": "För litet för att lämna på egen hand",
"exportTitle": "Öppna återställningsverktyget",
"exportSubTitle": "Återställ dina medel utan Spark",
"learnTitle": "Vad är ett ensidigt utträde?",
"learnSubtitle": "Återta dina Bitcoin utan Spark",
"guide": {
"unilateralExit": "Ensidigt utträde",
"balanceCaption": "{{leaves}} blad · {{trees}} träd",
"howTitle": "Så fungerar ett utträde",
"howSubtitle": "Ta ut direkt till Bitcoin utan att behöva tillstånd.",
"rootLabel": "ROT",
"leafLabel": "BLAD",
"diagramCaption": "Sänd uppifrån och ned, i ordning",
"step1": "Välj ett blad värt mer än {{min}} sats.",
"step2": "Sänd dess transaktioner från rot till blad under en och samma session.",
"step3": "Pengarna kommer till din on-chain Bitcoin-plånbok.",
"warningTitle": "Endast en session.",
"warningBody": "Din plånbok är låst tills utträdet är klart, så avsätt tillräckligt med tid innan du börjar.",
"openBlink": "Öppna utträdesverktyget"
},
"progress": {
"title": "Exporterar säkerhetskopia",
"gathering": "Samlar in dina plånboksblad…",
"saving": "Sparar en lokal säkerhetskopia…",
"exit": "Hämtar utträdesdata…",
"building": "Skapar din säkerhetskopia…",
"sharing": "Öppnar delningsmenyn…"
}
},
"remotePayments": {
"lnAddress": "Lightning-adress",