diff --git a/apps/wallet-mobile/.env b/apps/wallet-mobile/.env
index ce15a8175f..17db531d54 100644
--- a/apps/wallet-mobile/.env
+++ b/apps/wallet-mobile/.env
@@ -4,8 +4,6 @@ BUILD_VARIANT=STAGING
SENTRY_DSN=https://fb3745d47d994059917e358dae581466@o1138840.ingest.sentry.io/4505319746764800
DISABLE_LOGBOX=true
-SHOW_PROD_POOLS_IN_DEV=true
-USE_TESTNET=true
WALLET_1_MNEMONIC=abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon address
WALLET_1_NETWORK_ID=300
diff --git a/apps/wallet-mobile/.env.staging b/apps/wallet-mobile/.env.staging
index 9c9cbb8f5d..638b2a744c 100644
--- a/apps/wallet-mobile/.env.staging
+++ b/apps/wallet-mobile/.env.staging
@@ -4,8 +4,6 @@ BUILD_VARIANT=STAGING
SENTRY_DSN=https://fb3745d47d994059917e358dae581466@o1138840.ingest.sentry.io/4505319746764800
USE_TESTNET=true
-DISABLE_LOG_BOX=true
-SHOW_PROD_POOLS_IN_DEV=true
WALLET_1_MNEMONIC=abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon address
WALLET_1_NETWORK_ID=300
diff --git a/apps/wallet-mobile/.storybook/storybook.requires.js b/apps/wallet-mobile/.storybook/storybook.requires.js
index 78213ed93d..dd85e8e235 100644
--- a/apps/wallet-mobile/.storybook/storybook.requires.js
+++ b/apps/wallet-mobile/.storybook/storybook.requires.js
@@ -55,15 +55,6 @@ try {
const getStories = () => {
return {
"./.storybook/stories/Button/ExampleButton.stories.js": require("./stories/Button/ExampleButton.stories.js"),
- "./src/auth/backgroundTimeout.stories.tsx": require("../src/auth/backgroundTimeout.stories.tsx"),
- "./src/auth/ChangePinScreen/ChangePinScreen.stories.tsx": require("../src/auth/ChangePinScreen/ChangePinScreen.stories.tsx"),
- "./src/auth/CheckPinInput/CheckPinInput.stories.tsx": require("../src/auth/CheckPinInput/CheckPinInput.stories.tsx"),
- "./src/auth/CreatePinInput/CreatePinInput.stories.tsx": require("../src/auth/CreatePinInput/CreatePinInput.stories.tsx"),
- "./src/auth/CreatePinScreen/CreatePinScreen.stories.tsx": require("../src/auth/CreatePinScreen/CreatePinScreen.stories.tsx"),
- "./src/auth/OsAuthScreen/OsAuthScreen.stories.tsx": require("../src/auth/OsAuthScreen/OsAuthScreen.stories.tsx"),
- "./src/auth/OsLoginScreen/OsLoginScreen.stories.tsx": require("../src/auth/OsLoginScreen/OsLoginScreen.stories.tsx"),
- "./src/auth/PinInput/PinInput.stories.tsx": require("../src/auth/PinInput/PinInput.stories.tsx"),
- "./src/auth/PinLoginScreen/PinLoginScreen.stories.tsx": require("../src/auth/PinLoginScreen/PinLoginScreen.stories.tsx"),
"./src/Catalyst/VotingBanner.stories.tsx": require("../src/Catalyst/VotingBanner.stories.tsx"),
"./src/Catalyst/VotingRegistration.stories.tsx": require("../src/Catalyst/VotingRegistration.stories.tsx"),
"./src/components/AmountItem/AmountItem.stories.tsx": require("../src/components/AmountItem/AmountItem.stories.tsx"),
@@ -109,9 +100,20 @@ const getStories = () => {
"./src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.stories.tsx": require("../src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.stories.tsx"),
"./src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.stories.tsx": require("../src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.stories.tsx"),
"./src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.stories.tsx": require("../src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.stories.tsx"),
+ "./src/features/Auth/backgroundTimeout.stories.tsx": require("../src/features/Auth/backgroundTimeout.stories.tsx"),
+ "./src/features/Auth/ChangePinScreen/ChangePinScreen.stories.tsx": require("../src/features/Auth/ChangePinScreen/ChangePinScreen.stories.tsx"),
+ "./src/features/Auth/CheckPinInput/CheckPinInput.stories.tsx": require("../src/features/Auth/CheckPinInput/CheckPinInput.stories.tsx"),
+ "./src/features/Auth/CreatePinInput/CreatePinInput.stories.tsx": require("../src/features/Auth/CreatePinInput/CreatePinInput.stories.tsx"),
+ "./src/features/Auth/CreatePinScreen/CreatePinScreen.stories.tsx": require("../src/features/Auth/CreatePinScreen/CreatePinScreen.stories.tsx"),
+ "./src/features/Auth/OsAuthScreen/OsAuthScreen.stories.tsx": require("../src/features/Auth/OsAuthScreen/OsAuthScreen.stories.tsx"),
+ "./src/features/Auth/OsLoginScreen/OsLoginScreen.stories.tsx": require("../src/features/Auth/OsLoginScreen/OsLoginScreen.stories.tsx"),
+ "./src/features/Auth/PinInput/PinInput.stories.tsx": require("../src/features/Auth/PinInput/PinInput.stories.tsx"),
+ "./src/features/Auth/PinLoginScreen/PinLoginScreen.stories.tsx": require("../src/features/Auth/PinLoginScreen/PinLoginScreen.stories.tsx"),
"./src/features/Claim/illustrations/Ilustrations.stories.tsx": require("../src/features/Claim/illustrations/Ilustrations.stories.tsx"),
"./src/features/Claim/useCases/AskConfirmation.stories.tsx": require("../src/features/Claim/useCases/AskConfirmation.stories.tsx"),
"./src/features/Claim/useCases/ShowSuccessScreen.stories.tsx": require("../src/features/Claim/useCases/ShowSuccessScreen.stories.tsx"),
+ "./src/features/Dev/Palettes.stories.tsx": require("../src/features/Dev/Palettes.stories.tsx"),
+ "./src/features/Discover/common/ConfirmConnectionModal.stories.tsx": require("../src/features/Discover/common/ConfirmConnectionModal.stories.tsx"),
"./src/features/Discover/common/LabelCategoryDApp.stories.tsx": require("../src/features/Discover/common/LabelCategoryDApp.stories.tsx"),
"./src/features/Discover/common/LabelConnected.stories.tsx": require("../src/features/Discover/common/LabelConnected.stories.tsx"),
"./src/features/Discover/useCases/BrowseDapp/BrowseDappScreen.stories.tsx": require("../src/features/Discover/useCases/BrowseDapp/BrowseDappScreen.stories.tsx"),
@@ -146,6 +148,7 @@ const getStories = () => {
"./src/features/Initialization/InitialScreen/InitialScreen.stories.tsx": require("../src/features/Initialization/InitialScreen/InitialScreen.stories.tsx"),
"./src/features/Initialization/LanguagePickerScreen/LanguagePickerScreen.stories.tsx": require("../src/features/Initialization/LanguagePickerScreen/LanguagePickerScreen.stories.tsx"),
"./src/features/Initialization/TermsOfServiceChangedScreen/TermsOfServiceChangedScreen.stories.tsx": require("../src/features/Initialization/TermsOfServiceChangedScreen/TermsOfServiceChangedScreen.stories.tsx"),
+ "./src/features/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx": require("../src/features/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx"),
"./src/features/Links/useCases/AskToOpenAWalletScreen/AskToOpenAWalletScreen.stories.tsx": require("../src/features/Links/useCases/AskToOpenAWalletScreen/AskToOpenAWalletScreen.stories.tsx"),
"./src/features/Links/useCases/AskToRedirect/AskToRedirectScreen.stories.tsx": require("../src/features/Links/useCases/AskToRedirect/AskToRedirectScreen.stories.tsx"),
"./src/features/Links/useCases/RequestedAdaPaymentWithLinkScreen/RequestedAdaPaymentWithLink.stories.tsx": require("../src/features/Links/useCases/RequestedAdaPaymentWithLinkScreen/RequestedAdaPaymentWithLink.stories.tsx"),
@@ -192,6 +195,7 @@ const getStories = () => {
"./src/features/Settings/ManageCollateral/ManageCollateralScreen.stories.tsx": require("../src/features/Settings/ManageCollateral/ManageCollateralScreen.stories.tsx"),
"./src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.stories.tsx": require("../src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.stories.tsx"),
"./src/features/Settings/RemoveWallet/RemoveWalletScreen.stories.tsx": require("../src/features/Settings/RemoveWallet/RemoveWalletScreen.stories.tsx"),
+ "./src/features/Settings/SystemLogScreen/SystemLogScreen.stories.tsx": require("../src/features/Settings/SystemLogScreen/SystemLogScreen.stories.tsx"),
"./src/features/Settings/TermsOfService/TermsOfServiceScreen.stories.tsx": require("../src/features/Settings/TermsOfService/TermsOfServiceScreen.stories.tsx"),
"./src/features/Settings/WalletSettings/WalletSettingsScreen.stories.tsx": require("../src/features/Settings/WalletSettings/WalletSettingsScreen.stories.tsx"),
"./src/features/SetupWallet/common/ButtonCard/ButtonCard.stories.tsx": require("../src/features/SetupWallet/common/ButtonCard/ButtonCard.stories.tsx"),
@@ -265,11 +269,10 @@ const getStories = () => {
"./src/HW/LedgerConnect/DeviceItem/DeviceItem.stories.tsx": require("../src/HW/LedgerConnect/DeviceItem/DeviceItem.stories.tsx"),
"./src/HW/LedgerConnect/LedgerConnect.stories.tsx": require("../src/HW/LedgerConnect/LedgerConnect.stories.tsx"),
"./src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.stories.tsx": require("../src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.stories.tsx"),
+ "./src/kernel/metrics/metrics.stories.tsx": require("../src/kernel/metrics/metrics.stories.tsx"),
"./src/legacy/Modal/Modal.stories.tsx": require("../src/legacy/Modal/Modal.stories.tsx"),
- "./src/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx": require("../src/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx"),
- "./src/metrics/metrics.stories.tsx": require("../src/metrics/metrics.stories.tsx"),
- "./src/NftDetails/NftDetails.stories.tsx": require("../src/NftDetails/NftDetails.stories.tsx"),
- "./src/NftDetails/NftDetailsImage.stories.tsx": require("../src/NftDetails/NftDetailsImage.stories.tsx"),
+ "./src/Nfts/NftDetails/NftDetails.stories.tsx": require("../src/Nfts/NftDetails/NftDetails.stories.tsx"),
+ "./src/Nfts/NftDetails/NftDetailsImage.stories.tsx": require("../src/Nfts/NftDetails/NftDetailsImage.stories.tsx"),
"./src/Nfts/Nfts.stories.tsx": require("../src/Nfts/Nfts.stories.tsx"),
"./src/Nfts/NoNftsScreen.stories.tsx": require("../src/Nfts/NoNftsScreen.stories.tsx"),
"./src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx": require("../src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx"),
@@ -278,7 +281,6 @@ const getStories = () => {
"./src/Staking/PoolTransition/PoolTransitionModal.stories.tsx": require("../src/Staking/PoolTransition/PoolTransitionModal.stories.tsx"),
"./src/Staking/PoolWarningModal/PoolWarningModal.stories.tsx": require("../src/Staking/PoolWarningModal/PoolWarningModal.stories.tsx"),
"./src/Staking/StakingCenter/StakingCenter.stories.tsx": require("../src/Staking/StakingCenter/StakingCenter.stories.tsx"),
- "./src/theme/Palettes.stories.tsx": require("../src/theme/Palettes.stories.tsx"),
"./src/TxHistory/AssetList/ChipButton/ChipButton.stories.tsx": require("../src/TxHistory/AssetList/ChipButton/ChipButton.stories.tsx"),
"./src/TxHistory/AssetList/FilterBalancesByType.stories.tsx": require("../src/TxHistory/AssetList/FilterBalancesByType.stories.tsx"),
"./src/TxHistory/BalanceBanner.stories.tsx": require("../src/TxHistory/BalanceBanner.stories.tsx"),
diff --git a/apps/wallet-mobile/ampli.json b/apps/wallet-mobile/ampli.json
index b876770945..b35b876223 100644
--- a/apps/wallet-mobile/ampli.json
+++ b/apps/wallet-mobile/ampli.json
@@ -10,7 +10,7 @@
"Platform": "React Native",
"Language": "TypeScript",
"SDK": "@amplitude/analytics-react-native@^1.0",
- "Path": "./src/metrics/ampli",
+ "Path": "./src/kernel/metrics/ampli",
"InstanceNames": [
"track"
]
diff --git a/apps/wallet-mobile/i18n-unused.config.js b/apps/wallet-mobile/i18n-unused.config.js
index de6369c189..88c1c3c17a 100644
--- a/apps/wallet-mobile/i18n-unused.config.js
+++ b/apps/wallet-mobile/i18n-unused.config.js
@@ -1,4 +1,4 @@
module.exports = {
- localesPath: 'src/i18n/locales/',
+ localesPath: 'src/kernel/i18n/locales/',
srcPath: 'src'
}
diff --git a/apps/wallet-mobile/index.js b/apps/wallet-mobile/index.js
index bf8437e34c..dc855de200 100644
--- a/apps/wallet-mobile/index.js
+++ b/apps/wallet-mobile/index.js
@@ -1,11 +1,9 @@
import './polyfills'
-import 'react-native-url-polyfill/auto'
-import 'react-native-gesture-handler' // required by react-navigation
import './global'
-import './src/i18n/polyfills' // https://formatjs.io/docs/polyfills
+
+import 'react-native-gesture-handler' // required by react-navigation
import BigNumber from 'bignumber.js'
import {enableMapSet} from 'immer'
-
import {AppRegistry} from 'react-native'
import {name} from './app.json'
diff --git a/apps/wallet-mobile/jestSetup.ts b/apps/wallet-mobile/jestSetup.ts
index d9f7427bad..fc6ef21b1d 100644
--- a/apps/wallet-mobile/jestSetup.ts
+++ b/apps/wallet-mobile/jestSetup.ts
@@ -1,14 +1,12 @@
/* eslint-env jest */
/* This module sets up Jest */
import 'react-native-gesture-handler/jestSetup'
-
import fetch from 'node-fetch'
-import {Logger, LogLevel} from './src/legacy/logging'
-import * as YoroiLogging from './src/yoroi-wallets/logging'
+import {logger} from './src/kernel/logger/logger'
+logger.disable()
global.fetch = fetch
-Logger.setLogLevel(LogLevel.Warn)
jest.mock('react-native-device-info', () => ({getVersion: () => '1.5.1'}))
jest.mock('react-native-randombytes', () => require('crypto').randomBytes)
@@ -60,5 +58,3 @@ jest.mock('react-native-localize', () => ({
usesAutoTimeZone: () => true,
}))
-Logger.setLogLevel(LogLevel.Nothing)
-YoroiLogging.Logger.setLogLevel(YoroiLogging.LogLevel.Nothing)
diff --git a/apps/wallet-mobile/package.json b/apps/wallet-mobile/package.json
index 407c76ce46..877a68d992 100644
--- a/apps/wallet-mobile/package.json
+++ b/apps/wallet-mobile/package.json
@@ -99,7 +99,7 @@
"@emurgo/csl-mobile-bridge": "6.0.0-alpha.9",
"@emurgo/react-native-blockies-svg": "^0.0.2",
"@emurgo/react-native-hid": "^5.15.6",
- "@emurgo/yoroi-lib": "0.15.4-alpha.6",
+ "@emurgo/yoroi-lib": "0.15.4-alpha.7",
"@formatjs/intl-datetimeformat": "^6.7.0",
"@formatjs/intl-getcanonicallocales": "^2.1.0",
"@formatjs/intl-locale": "^3.2.1",
diff --git a/apps/wallet-mobile/polyfills.ts b/apps/wallet-mobile/polyfills.ts
index ec16baa528..bdc112b131 100644
--- a/apps/wallet-mobile/polyfills.ts
+++ b/apps/wallet-mobile/polyfills.ts
@@ -1,4 +1,6 @@
import {Buffer} from 'buffer'
+import 'react-native-url-polyfill/auto'
+import './src/kernel/i18n/polyfills' // https://formatjs.io/docs/polyfills
Object.fromEntries = Object.fromEntries || ((arr) => arr.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}))
diff --git a/apps/wallet-mobile/src/AppNavigator.tsx b/apps/wallet-mobile/src/AppNavigator.tsx
index 331e64d958..7572e4dd53 100644
--- a/apps/wallet-mobile/src/AppNavigator.tsx
+++ b/apps/wallet-mobile/src/AppNavigator.tsx
@@ -9,13 +9,15 @@ import {Alert, AppState, AppStateStatus, InteractionManager, Platform} from 'rea
import RNBootSplash from 'react-native-bootsplash'
import StorybookScreen from '../.storybook'
-import {OsLoginScreen, PinLoginScreen, useBackgroundTimeout} from './auth'
-import {useAuth} from './auth/AuthProvider'
-import {supportsAndroidFingerprintOverlay} from './auth/biometrics'
-import {EnableLoginWithPin} from './auth/EnableLoginWithPin'
import {useStatusBar} from './components/hooks/useStatusBar'
import {ModalProvider} from './components/Modal/ModalContext'
import {ModalScreen} from './components/Modal/ModalScreen'
+import {OsLoginScreen, PinLoginScreen, useBackgroundTimeout} from './features/Auth'
+import {useAuth} from './features/Auth/AuthProvider'
+import {supportsAndroidFingerprintOverlay} from './features/Auth/common/biometrics'
+import {AuthSetting, useAuthSetting, useAuthWithOs, useIsAuthOsSupported} from './features/Auth/common/hooks'
+import {EnableLoginWithPin} from './features/Auth/EnableLoginWithPin'
+import {DeveloperScreen} from './features/Dev/DeveloperScreen'
import {AgreementChangedNavigator, InitializationNavigator} from './features/Initialization'
import {LegalAgreement, useLegalAgreement} from './features/Initialization/common'
import {useDeepLinkWatcher} from './features/Links/common/useDeepLinkWatcher'
@@ -26,12 +28,10 @@ import {
useShowBiometricsScreen,
} from './features/SetupWallet/useCases/ChooseBiometricLogin/ChooseBiometricLoginScreen'
import {useWalletManager} from './features/WalletManager/context/WalletManagerContext'
-import {CONFIG} from './legacy/config'
-import {DeveloperScreen} from './legacy/DeveloperScreen'
-import {AppRoutes} from './navigation'
+import {agreementDate} from './kernel/config'
+import {AppRoutes} from './kernel/navigation'
import {SearchProvider} from './Search/SearchContext'
import {WalletNavigator} from './WalletNavigator'
-import {AuthSetting, useAuthSetting, useAuthWithOs, useIsAuthOsSupported} from './yoroi-wallets/auth'
import {useHasWallets} from './yoroi-wallets/hooks'
const Stack = createStackNavigator()
@@ -280,7 +280,7 @@ const getFirstAction = (
authSetting: AuthSetting,
legalAgreement: LegalAgreement | undefined | null,
): FirstAction => {
- const hasAccepted = legalAgreement?.latestAcceptedAgreementsDate === CONFIG.AGREEMENT_DATE
+ const hasAccepted = legalAgreement?.latestAcceptedAgreementsDate === agreementDate
if (isString(authSetting) && !hasAccepted) return 'show-agreement-changed-notice'
diff --git a/apps/wallet-mobile/src/Catalyst/ConfirmPin.tsx b/apps/wallet-mobile/src/Catalyst/ConfirmPin.tsx
index a0ad16f1a8..ad2142ee19 100644
--- a/apps/wallet-mobile/src/Catalyst/ConfirmPin.tsx
+++ b/apps/wallet-mobile/src/Catalyst/ConfirmPin.tsx
@@ -5,8 +5,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {ProgressStep, Spacer} from '../components'
import {BACKSPACE, NumericKeyboard} from '../components/NumericKeyboard'
-import {showErrorDialog} from '../dialogs'
-import {errorMessages} from '../i18n/global-messages'
+import {showErrorDialog} from '../kernel/dialogs'
+import {errorMessages} from '../kernel/i18n/global-messages'
import {Description, PinBox, Row, Title} from './components'
const PIN_LENGTH = 4
diff --git a/apps/wallet-mobile/src/Catalyst/ConfirmVotingTx.tsx b/apps/wallet-mobile/src/Catalyst/ConfirmVotingTx.tsx
index f326704a24..41db976d3d 100644
--- a/apps/wallet-mobile/src/Catalyst/ConfirmVotingTx.tsx
+++ b/apps/wallet-mobile/src/Catalyst/ConfirmVotingTx.tsx
@@ -8,8 +8,8 @@ import {ConfirmTx} from '../components/ConfirmTx'
import {debugWalletInfo, features} from '../features'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
import {Instructions as HWInstructions} from '../HW'
-import {errorMessages, txLabels} from '../i18n/global-messages'
-import LocalizableError from '../i18n/LocalizableError'
+import {errorMessages, txLabels} from '../kernel/i18n/global-messages'
+import LocalizableError from '../kernel/i18n/LocalizableError'
import {formatTokenWithSymbol} from '../legacy/format'
import {useVotingRegTx} from '../yoroi-wallets/hooks'
import {Amounts} from '../yoroi-wallets/utils'
diff --git a/apps/wallet-mobile/src/Catalyst/DisplayPin.tsx b/apps/wallet-mobile/src/Catalyst/DisplayPin.tsx
index 6b84d91985..ea0b4a8b0b 100644
--- a/apps/wallet-mobile/src/Catalyst/DisplayPin.tsx
+++ b/apps/wallet-mobile/src/Catalyst/DisplayPin.tsx
@@ -4,7 +4,7 @@ import {ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, ProgressStep, Spacer} from '../components'
-import {confirmationMessages} from '../i18n/global-messages'
+import {confirmationMessages} from '../kernel/i18n/global-messages'
import {Actions, Description, PinBox, Row, Title} from './components'
import {useCountdown} from './hooks'
diff --git a/apps/wallet-mobile/src/Catalyst/DownloadCatalyst.tsx b/apps/wallet-mobile/src/Catalyst/DownloadCatalyst.tsx
index 1ccb011989..20e43f5e72 100644
--- a/apps/wallet-mobile/src/Catalyst/DownloadCatalyst.tsx
+++ b/apps/wallet-mobile/src/Catalyst/DownloadCatalyst.tsx
@@ -10,8 +10,7 @@ import AppDownload from '../assets/img/pic-catalyst-step1.png'
import {Button, ProgressStep, Spacer, StandardModal, Text} from '../components'
import {useStakingInfo} from '../Dashboard/StakePoolInfos'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages, {confirmationMessages} from '../i18n/global-messages'
-import {Logger} from '../legacy/logging'
+import globalMessages, {confirmationMessages} from '../kernel/i18n/global-messages'
import {Actions, Row} from './components'
type Props = {
@@ -77,11 +76,7 @@ const Tip = (props: ViewProps) =>
const PlayStoreButton = () => {
const openPlayStore = async () => {
- try {
- await Linking.openURL('https://play.google.com/store/apps/details?id=io.iohk.vitvoting')
- } catch (e) {
- Logger.error(e as any)
- }
+ await Linking.openURL('https://play.google.com/store/apps/details?id=io.iohk.vitvoting')
}
return (
@@ -93,11 +88,7 @@ const PlayStoreButton = () => {
const AppStoreButton = () => {
const openAppStore = async () => {
- try {
- await Linking.openURL('https://apps.apple.com/kg/app/catalyst-voting/id1517473397')
- } catch (e) {
- Logger.error(e as any)
- }
+ await Linking.openURL('https://apps.apple.com/kg/app/catalyst-voting/id1517473397')
}
return (
diff --git a/apps/wallet-mobile/src/Catalyst/InsufficientFundsModal.tsx b/apps/wallet-mobile/src/Catalyst/InsufficientFundsModal.tsx
index 8006a7219c..23da9a614c 100644
--- a/apps/wallet-mobile/src/Catalyst/InsufficientFundsModal.tsx
+++ b/apps/wallet-mobile/src/Catalyst/InsufficientFundsModal.tsx
@@ -5,7 +5,7 @@ import {StyleSheet, Text, View} from 'react-native'
import {StandardModal} from '../components'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages, {confirmationMessages} from '../i18n/global-messages'
+import globalMessages, {confirmationMessages} from '../kernel/i18n/global-messages'
import {formatTokenWithText} from '../legacy/format'
import {CATALYST} from '../yoroi-wallets/cardano/utils'
import {useBalances} from '../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/Catalyst/QrCode.tsx b/apps/wallet-mobile/src/Catalyst/QrCode.tsx
index b500810e43..99954068cb 100644
--- a/apps/wallet-mobile/src/Catalyst/QrCode.tsx
+++ b/apps/wallet-mobile/src/Catalyst/QrCode.tsx
@@ -6,8 +6,8 @@ import QRCodeSVG from 'react-native-qrcode-svg'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, CopyButton, ProgressStep, Spacer, Text} from '../components'
-import {confirmationMessages} from '../i18n/global-messages'
-import {useBlockGoBack} from '../navigation'
+import {confirmationMessages} from '../kernel/i18n/global-messages'
+import {useBlockGoBack} from '../kernel/navigation'
import {useAllowScreenshots} from '../utils'
import {Actions, Description, Title} from './components'
import {useCountdown} from './hooks'
diff --git a/apps/wallet-mobile/src/Catalyst/VotingBanner.tsx b/apps/wallet-mobile/src/Catalyst/VotingBanner.tsx
index 74d199bc83..ae8e067f22 100644
--- a/apps/wallet-mobile/src/Catalyst/VotingBanner.tsx
+++ b/apps/wallet-mobile/src/Catalyst/VotingBanner.tsx
@@ -6,9 +6,9 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {Icon, Text} from '../components'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages, {confirmationMessages} from '../i18n/global-messages'
-import {isNightly} from '../legacy/config'
-import {Logger} from '../legacy/logging'
+import {isNightly} from '../kernel/env'
+import globalMessages, {confirmationMessages} from '../kernel/i18n/global-messages'
+import {logger} from '../kernel/logger/logger'
import {useCanVote} from './hooks'
import {InsufficientFundsModal} from './InsufficientFundsModal'
@@ -38,14 +38,14 @@ export const VotingBanner = ({onPress, disabled}: Props) => {
registrationEnd: currentFund.registrationEnd,
}
}
- } catch (e) {
- Logger.debug('Could not get Catalyst fund info from server', e)
+ } catch (error) {
+ logger.error(error as Error)
}
}
const catalyst = catalystManagerMaker()
- setShowCatalystBanner((canVote && catalyst.isRegistrationOpen(fundInfo)) || isNightly() || __DEV__)
+ setShowCatalystBanner((canVote && catalyst.isRegistrationOpen(fundInfo)) || isNightly || __DEV__)
}
checkCatalystFundInfo()
diff --git a/apps/wallet-mobile/src/Catalyst/VotingRegistration.tsx b/apps/wallet-mobile/src/Catalyst/VotingRegistration.tsx
index 50c71e84ab..1ec6a98cb7 100644
--- a/apps/wallet-mobile/src/Catalyst/VotingRegistration.tsx
+++ b/apps/wallet-mobile/src/Catalyst/VotingRegistration.tsx
@@ -5,14 +5,14 @@ import React, {useState} from 'react'
import {useIntl} from 'react-intl'
import {Boundary} from '../components'
-import globalMessages from '../i18n/global-messages'
-import {useMetrics} from '../metrics/metricsManager'
+import globalMessages from '../kernel/i18n/global-messages'
+import {useMetrics} from '../kernel/metrics/metricsManager'
import {
defaultStackNavigationOptions,
useWalletNavigation,
VotingRegistrationRouteNavigation,
VotingRegistrationRoutes,
-} from '../navigation'
+} from '../kernel/navigation'
import {ConfirmPin} from './ConfirmPin'
import {ConfirmVotingTx} from './ConfirmVotingTx'
import {DisplayPin} from './DisplayPin'
diff --git a/apps/wallet-mobile/src/Catalyst/VotingRegistrationBackupCheckModal.tsx b/apps/wallet-mobile/src/Catalyst/VotingRegistrationBackupCheckModal.tsx
index cb14befa7a..5633665f30 100644
--- a/apps/wallet-mobile/src/Catalyst/VotingRegistrationBackupCheckModal.tsx
+++ b/apps/wallet-mobile/src/Catalyst/VotingRegistrationBackupCheckModal.tsx
@@ -3,7 +3,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
import {Button, Checkbox, Spacer, Text} from '../components'
-import globalMessages, {confirmationMessages} from '../i18n/global-messages'
+import globalMessages, {confirmationMessages} from '../kernel/i18n/global-messages'
import {Modal} from '../legacy/Modal'
type Props = {
diff --git a/apps/wallet-mobile/src/Dashboard/Dashboard.tsx b/apps/wallet-mobile/src/Dashboard/Dashboard.tsx
index 013b1f37b2..4ae7747ad2 100644
--- a/apps/wallet-mobile/src/Dashboard/Dashboard.tsx
+++ b/apps/wallet-mobile/src/Dashboard/Dashboard.tsx
@@ -15,9 +15,9 @@ import {
} from '../features/Staking/Governance'
import {useIsGovernanceFeatureEnabled} from '../features/Staking/Governance'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages from '../i18n/global-messages'
+import globalMessages from '../kernel/i18n/global-messages'
+import {DashboardRoutes, useWalletNavigation} from '../kernel/navigation'
import {Modal} from '../legacy/Modal'
-import {DashboardRoutes, useWalletNavigation} from '../navigation'
import {PoolTransitionNotice} from '../Staking/PoolTransition/PoolTransitionNotice'
import {usePoolTransition} from '../Staking/PoolTransition/usePoolTransition'
import {isEmptyString} from '../utils/utils'
diff --git a/apps/wallet-mobile/src/Dashboard/DashboardNavigator.tsx b/apps/wallet-mobile/src/Dashboard/DashboardNavigator.tsx
index 6a0bcd1b41..3389864b17 100644
--- a/apps/wallet-mobile/src/Dashboard/DashboardNavigator.tsx
+++ b/apps/wallet-mobile/src/Dashboard/DashboardNavigator.tsx
@@ -8,7 +8,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {SettingsButton} from '../components/Button'
import {useGovernanceManagerMaker} from '../features/Staking/Governance'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {DashboardRoutes, defaultStackNavigationOptions, useWalletNavigation} from '../navigation'
+import {DashboardRoutes, defaultStackNavigationOptions, useWalletNavigation} from '../kernel/navigation'
import {DelegationConfirmation, FailedTxScreen} from '../Staking'
import {StakingCenter} from '../Staking/StakingCenter'
import {useWalletName} from '../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/Dashboard/EpochProgress.tsx b/apps/wallet-mobile/src/Dashboard/EpochProgress.tsx
index 1c9efac7e5..0878f741b9 100644
--- a/apps/wallet-mobile/src/Dashboard/EpochProgress.tsx
+++ b/apps/wallet-mobile/src/Dashboard/EpochProgress.tsx
@@ -4,7 +4,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
import {ProgressCircle, Text, TitledCard} from '../components'
-import globalMessages from '../i18n/global-messages'
+import globalMessages from '../kernel/i18n/global-messages'
type Props = {
percentage: number
diff --git a/apps/wallet-mobile/src/Dashboard/UserSummary.tsx b/apps/wallet-mobile/src/Dashboard/UserSummary.tsx
index 31bce99d20..e60a226442 100644
--- a/apps/wallet-mobile/src/Dashboard/UserSummary.tsx
+++ b/apps/wallet-mobile/src/Dashboard/UserSummary.tsx
@@ -7,7 +7,7 @@ import {StyleSheet, View} from 'react-native'
import {Button, Icon, Text, TitledCard} from '../components'
import {usePrivacyMode} from '../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages from '../i18n/global-messages'
+import globalMessages from '../kernel/i18n/global-messages'
import {formatAdaWithText} from '../legacy/format'
import {asQuantity} from '../yoroi-wallets/utils'
diff --git a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithHW.tsx b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithHW.tsx
index b21405b9df..43dd0ac279 100644
--- a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithHW.tsx
+++ b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithHW.tsx
@@ -4,7 +4,7 @@ import {useIntl} from 'react-intl'
import {Boundary, TwoActionView} from '../../../components'
import {walletManager} from '../../../features/WalletManager/common/walletManager'
import {LedgerConnect, LedgerTransportSwitch} from '../../../HW'
-import {confirmationMessages, txLabels} from '../../../i18n/global-messages'
+import {confirmationMessages, txLabels} from '../../../kernel/i18n/global-messages'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {useSignWithHwAndSubmitTx} from '../../../yoroi-wallets/hooks'
import {DeviceId, DeviceObj, withBLE, withUSB} from '../../../yoroi-wallets/hw'
diff --git a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithOS.tsx b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithOS.tsx
index 3a4c5a14b6..026b969eb5 100644
--- a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithOS.tsx
+++ b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithOS.tsx
@@ -3,8 +3,8 @@ import {useIntl} from 'react-intl'
import {TwoActionView} from '../../../components'
import {LoadingOverlay} from '../../../components/LoadingOverlay'
-import {confirmationMessages, txLabels} from '../../../i18n/global-messages'
-import {useAuthOsWithEasyConfirmation} from '../../../yoroi-wallets/auth/auth'
+import {useAuthOsWithEasyConfirmation} from '../../../features/Auth/common/hooks'
+import {confirmationMessages, txLabels} from '../../../kernel/i18n/global-messages'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {useSignAndSubmitTx} from '../../../yoroi-wallets/hooks'
import {YoroiUnsignedTx} from '../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.tsx b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.tsx
index 945b7e942f..6ce48b8a21 100644
--- a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.tsx
+++ b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/ConfirmTx/ConfirmTxWithPassword.tsx
@@ -4,7 +4,7 @@ import {ActivityIndicator, View} from 'react-native'
import {TextInput, TwoActionView} from '../../../components'
import {debugWalletInfo, features} from '../../../features'
-import {confirmationMessages, txLabels} from '../../../i18n/global-messages'
+import {confirmationMessages, txLabels} from '../../../kernel/i18n/global-messages'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {useSignWithPasswordAndSubmitTx} from '../../../yoroi-wallets/hooks'
import {YoroiUnsignedTx} from '../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.tsx b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.tsx
index 7302d426fb..67620063c3 100644
--- a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.tsx
+++ b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.tsx
@@ -5,7 +5,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {Linking, StyleSheet, TouchableOpacity, View, ViewProps} from 'react-native'
import {Text} from '../../../components'
-import {confirmationMessages, txLabels} from '../../../i18n/global-messages'
+import {confirmationMessages, txLabels} from '../../../kernel/i18n/global-messages'
import {formatTokenWithText} from '../../../legacy/format'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {YoroiStaking, YoroiUnsignedTx} from '../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx
index e55b99dfc0..3509406c9b 100644
--- a/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx
+++ b/apps/wallet-mobile/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx
@@ -1,11 +1,11 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet} from 'react-native'
import Markdown from 'react-native-markdown-display'
import {Boundary, DangerousAction, PleaseWaitView, Spacer} from '../../components'
-import globalMessages, {ledgerMessages} from '../../i18n/global-messages'
-import {theme} from '../../theme'
+import globalMessages, {ledgerMessages} from '../../kernel/i18n/global-messages'
import {YoroiWallet} from '../../yoroi-wallets/cardano/types'
import {useWithdrawalTx} from '../../yoroi-wallets/hooks'
import {YoroiUnsignedTx} from '../../yoroi-wallets/types'
@@ -49,6 +49,7 @@ export const WithdrawalTxForm = ({
wallet: YoroiWallet
onDone: (withdrawalTx: YoroiUnsignedTx) => void
}) => {
+ const styles = useStyles()
const {stakingInfo} = useStakingInfo(wallet, {suspense: true})
const strings = useStrings()
const [deregister, setDeregister] = React.useState()
@@ -97,11 +98,15 @@ export const WithdrawalTxForm = ({
const Route = ({active, children}: {active: boolean; children: React.ReactNode}) => <>{active ? children : null}>
-const styles = StyleSheet.create({
- paragraph: {
- ...theme.text,
- },
-})
+const useStyles = () => {
+ const {atoms} = useTheme()
+ const styles = StyleSheet.create({
+ paragraph: {
+ ...atoms.body_1_lg_regular,
+ },
+ })
+ return styles
+}
const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/HW/Instructions/Instructions.tsx b/apps/wallet-mobile/src/HW/Instructions/Instructions.tsx
index b729f0c544..1c8242fcb9 100644
--- a/apps/wallet-mobile/src/HW/Instructions/Instructions.tsx
+++ b/apps/wallet-mobile/src/HW/Instructions/Instructions.tsx
@@ -3,7 +3,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {Platform, StyleSheet, Text, View} from 'react-native'
import {BulletPointItem} from '../../components'
-import {ledgerMessages} from '../../i18n/global-messages'
+import {ledgerMessages} from '../../kernel/i18n/global-messages'
type Props = {
useUSB?: boolean
diff --git a/apps/wallet-mobile/src/HW/LedgerConnect/LedgerConnect.tsx b/apps/wallet-mobile/src/HW/LedgerConnect/LedgerConnect.tsx
index d9c6747c73..9266766592 100644
--- a/apps/wallet-mobile/src/HW/LedgerConnect/LedgerConnect.tsx
+++ b/apps/wallet-mobile/src/HW/LedgerConnect/LedgerConnect.tsx
@@ -3,6 +3,7 @@
// @ts-ignore
import TransportHID from '@emurgo/react-native-hid'
import TransportBLE from '@ledgerhq/react-native-hw-transport-ble'
+import {useTheme} from '@yoroi/theme'
import * as React from 'react'
import type {IntlShape} from 'react-intl'
import {defineMessages, useIntl} from 'react-intl'
@@ -11,16 +12,16 @@ import {ActivityIndicator, Alert, FlatList, Image, RefreshControl, ScrollView, S
import bleImage from '../../assets/img/bluetooth.png'
import usbImage from '../../assets/img/ledger-nano-usb.png'
import {BulletPointItem, Button, Text} from '../../components'
-import globalMessages, {confirmationMessages, ledgerMessages} from '../../i18n/global-messages'
-import LocalizableError from '../../i18n/LocalizableError'
-import {Logger} from '../../legacy/logging'
-import {COLORS, spacing} from '../../theme'
+import globalMessages, {confirmationMessages, ledgerMessages} from '../../kernel/i18n/global-messages'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
+import {logger} from '../../kernel/logger/logger'
import {BluetoothDisabledError, DeviceId, DeviceObj, RejectedByUserError} from '../../yoroi-wallets/hw'
import {Device} from '../../yoroi-wallets/types'
import {DeviceItem} from './DeviceItem'
type Props = {
intl: IntlShape
+ styles: ReturnType
defaultDevices?: Array | null // for storybook
onConnectUSB: (deviceObj: DeviceObj) => Promise | void
onConnectBLE: (deviceId: DeviceId) => Promise | void
@@ -39,7 +40,7 @@ type State = {
}
// eslint-disable-next-line react-prefer-function-component/react-prefer-function-component
-class _LedgerConnect extends React.Component {
+class LedgerConnectInt extends React.Component {
state: State = {
devices: this.props.defaultDevices ? this.props.defaultDevices : [],
deviceId: null,
@@ -67,7 +68,7 @@ class _LedgerConnect extends React.Component {
TransportBLE.observeState({
next: (e: {available: boolean}) => {
if (this._isMounted) {
- Logger.debug('BLE observeState event', e)
+ logger.debug('BLE observeState event', e)
if (this._bluetoothEnabled == null && !e.available) {
this.setState({
error: new BluetoothDisabledError(),
@@ -103,7 +104,7 @@ class _LedgerConnect extends React.Component {
const {useUSB} = this.props
const onComplete = () => {
- Logger.debug('listen: subscription completed')
+ logger.debug('listen: subscription completed', {useUSB})
this.setState({refreshing: false})
}
@@ -113,7 +114,7 @@ class _LedgerConnect extends React.Component {
const onBLENext = (e: {type: string; descriptor: Device}) => {
if (e.type === 'add') {
- Logger.debug('listen: new device detected')
+ logger.debug('listen: new device detected', {useUSB, event: e})
// with bluetooth, new devices are appended in the screen
this.setState(deviceAddition(e.descriptor))
}
@@ -121,7 +122,7 @@ class _LedgerConnect extends React.Component {
const onHWNext = (e: {type: string; descriptor: DeviceObj}) => {
if (e.type === 'add') {
- Logger.debug('listen: new device detected')
+ logger.debug('listen: new device detected', {useUSB, event: e})
// if a device is detected, save it in state immediately
this.setState({refreshing: false, deviceObj: e.descriptor})
}
@@ -169,11 +170,11 @@ class _LedgerConnect extends React.Component {
await onConnectBLE(device.id.toString())
} catch (e) {
if (!(e instanceof Error)) return
- Logger.debug(e as any)
if (e instanceof RejectedByUserError) {
this.reload()
return
}
+ logger.error(e, {device})
this.setState({error: e})
} finally {
this.setState({waiting: false})
@@ -189,11 +190,11 @@ class _LedgerConnect extends React.Component {
await this.props.onConnectUSB(deviceObj)
} catch (e) {
if (!(e instanceof Error)) return
- Logger.debug(e as any)
if (e instanceof RejectedByUserError) {
this.reload()
return
}
+ logger.error(e, {deviceObj})
this.setState({error: e})
} finally {
this.setState({waiting: false})
@@ -202,7 +203,7 @@ class _LedgerConnect extends React.Component {
ListHeader = () => {
const {error, waiting, deviceObj} = this.state
- const {intl, onWaitingMessage} = this.props
+ const {intl, onWaitingMessage, styles} = this.props
const ListHeaderWrapper = ({msg, err}: {msg: string; err?: string | null}) => (
@@ -234,7 +235,7 @@ class _LedgerConnect extends React.Component {
}
render() {
- const {intl, useUSB, fillSpace} = this.props
+ const {intl, useUSB, fillSpace, styles} = this.props
const {error, devices, refreshing, deviceId, deviceObj, waiting} = this.state
const rows = [intl.formatMessage(ledgerMessages.enterPin), intl.formatMessage(ledgerMessages.openApp)]
@@ -305,10 +306,11 @@ class _LedgerConnect extends React.Component {
}
}
-export const LedgerConnect = (props: Omit) => {
+export const LedgerConnect = (props: Omit) => {
const intl = useIntl()
+ const styles = useStyles()
- return <_LedgerConnect {...props} intl={intl} />
+ return
}
const messages = defineMessages({
@@ -338,57 +340,62 @@ const deviceAddition =
}
}
-const styles = StyleSheet.create({
- container: {
- paddingTop: 30,
- paddingHorizontal: 20,
- },
- fillSpace: {
- flex: 1,
- },
- scrollView: {
- marginBottom: 22,
- },
- heading: {
- alignItems: 'center',
- justifyContent: 'center',
- marginBottom: spacing.paragraphBottomMargin,
- },
- caption: {
- marginTop: 12,
- },
- flatList: {
- flex: 1,
- flexDirection: 'column',
- height: 150,
- },
- flatListContentContainer: {
- flexGrow: 1,
- },
- listHeader: {
- alignItems: 'center',
- justifyContent: 'center',
- },
- paragraph: {
- marginBottom: spacing.paragraphBottomMargin,
- },
- error: {
- color: COLORS.ERROR_TEXT_COLOR,
- },
- instructionsBlock: {
- marginVertical: 24,
- },
- paragraphText: {
- fontSize: 14,
- lineHeight: 22,
- },
- item: {
- marginTop: 12,
- fontSize: 14,
- lineHeight: 22,
- },
- button: {
- marginHorizontal: 10,
- marginBottom: 8,
- },
-})
+const useStyles = () => {
+ const {color} = useTheme()
+ const styles = StyleSheet.create({
+ container: {
+ paddingTop: 30,
+ paddingHorizontal: 20,
+ },
+ fillSpace: {
+ flex: 1,
+ },
+ scrollView: {
+ marginBottom: 22,
+ },
+ heading: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ marginBottom: 16,
+ },
+ caption: {
+ marginTop: 12,
+ },
+ flatList: {
+ flex: 1,
+ flexDirection: 'column',
+ height: 150,
+ },
+ flatListContentContainer: {
+ flexGrow: 1,
+ },
+ listHeader: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ paragraph: {
+ marginBottom: 16,
+ },
+ error: {
+ color: color.sys_magenta_c500,
+ },
+ instructionsBlock: {
+ marginVertical: 24,
+ },
+ paragraphText: {
+ fontSize: 14,
+ lineHeight: 22,
+ },
+ item: {
+ marginTop: 12,
+ fontSize: 14,
+ lineHeight: 22,
+ },
+ button: {
+ marginHorizontal: 10,
+ marginBottom: 8,
+ },
+ })
+
+ return styles
+}
diff --git a/apps/wallet-mobile/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx b/apps/wallet-mobile/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx
index 5d225dbfb0..b4321a3665 100644
--- a/apps/wallet-mobile/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx
+++ b/apps/wallet-mobile/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx
@@ -4,9 +4,8 @@ import {Alert, Platform, ScrollView, StyleSheet, View} from 'react-native'
import DeviceInfo from 'react-native-device-info'
import {Button, Text} from '../../components'
-import globalMessages from '../../i18n/global-messages'
+import globalMessages from '../../kernel/i18n/global-messages'
import {Modal} from '../../legacy/Modal'
-import {spacing} from '../../theme'
import {HARDWARE_WALLETS, useLedgerPermissions} from '../../yoroi-wallets/hw'
type Props = {
@@ -154,7 +153,7 @@ const styles = StyleSheet.create({
paddingRight: 10,
},
paragraph: {
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
fontSize: 14,
lineHeight: 22,
},
@@ -170,10 +169,10 @@ const styles = StyleSheet.create({
fontSize: 20,
lineHeight: 22,
fontWeight: 'bold',
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
},
button: {
marginHorizontal: 10,
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
},
})
diff --git a/apps/wallet-mobile/src/InitApp.tsx b/apps/wallet-mobile/src/InitApp.tsx
index ad09ce8d6c..7c9ac79874 100644
--- a/apps/wallet-mobile/src/InitApp.tsx
+++ b/apps/wallet-mobile/src/InitApp.tsx
@@ -1,16 +1,13 @@
-import {isString, useAsyncStorage} from '@yoroi/common'
+import {useAsyncStorage} from '@yoroi/common'
import {App} from '@yoroi/types'
-import React, {useEffect, useRef} from 'react'
+import React, {useEffect} from 'react'
import {Platform, UIManager} from 'react-native'
-import * as Sentry from 'sentry-expo'
import uuid from 'uuid'
import {AppNavigator} from './AppNavigator'
import {useInitScreenShare} from './features/Settings/ScreenShare'
import {walletManager} from './features/WalletManager/common/walletManager'
-import {CONFIG, isProduction} from './legacy/config'
-import {storageVersionMaker} from './migrations/storageVersion'
-import {useCrashReportsEnabled} from './yoroi-wallets/hooks'
+import {storageVersionMaker} from './kernel/storage/migrations/storageVersion'
if (Platform.OS === 'android') {
if (UIManager.setLayoutAnimationEnabledExperimental != null) {
@@ -19,8 +16,8 @@ if (Platform.OS === 'android') {
}
export const InitApp = () => {
- const loaded = useInitApp()
- if (!loaded) return null
+ const isLoaded = useInitApp()
+ if (!isLoaded) return null
return
}
@@ -28,12 +25,9 @@ export const InitApp = () => {
const useInitApp = () => {
const [loaded, setLoaded] = React.useState(false)
const storage = useAsyncStorage()
- const crashReportsEnabled = useCrashReportsEnabled()
const {initialised: screenShareInitialized} = useInitScreenShare()
- useInitSentry({enabled: crashReportsEnabled})
-
useEffect(() => {
const load = async () => {
await initApp(storage)
@@ -54,6 +48,7 @@ const initInstallationId = async (storage: App.Storage) => {
await storage.setItem('appSettings/installationId', newInstallationId, () => newInstallationId) // LEGACY: installationId is not serialized
// new installation set the storage version to the current version
+ // migrations happend before this, so when reading if empty returns current version
await storageVersionMaker(storage).newInstallation()
}
@@ -61,23 +56,3 @@ export const initApp = async (storage: App.Storage) => {
await initInstallationId(storage)
await walletManager.removeDeletedWallets()
}
-
-const useInitSentry = (options: {enabled: boolean}) => {
- const ref = useRef(options.enabled)
- ref.current = options.enabled
-
- useEffect(() => {
- if (!isString(CONFIG.SENTRY_DSN)) return
- Sentry.init({
- dsn: CONFIG.SENTRY_DSN,
- patchGlobalPromise: true,
- enableInExpoDevelopment: true,
- tracesSampleRate: isProduction() ? 0.25 : 1,
- beforeSend(event) {
- // https://github.com/getsentry/sentry-javascript/issues/2039
- const isEnabled = ref.current
- return isEnabled ? event : null
- },
- })
- }, [])
-}
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/index.ts b/apps/wallet-mobile/src/Legal/PrivacyPolicy/index.ts
deleted file mode 100644
index 9f14ce30a7..0000000000
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export {PrivacyPolicy, usePrivacyPolicy} from './PrivacyPolicy'
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/index.ts b/apps/wallet-mobile/src/Legal/TermsOfService/index.ts
deleted file mode 100644
index 07beb83a27..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './TermsOfService'
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/cs-CZ.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/cs-CZ.md
deleted file mode 100644
index 75a5fe39d1..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/cs-CZ.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Podmínky užití
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/de-DE.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/de-DE.md
deleted file mode 100644
index 301f68ad59..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/de-DE.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Allgemeine Nutzungsbedingungen
-
-DIESE ALLGEMEINEN NUTZUNGSBEDINGUNGEN ("Vereinbarung") gelten zwischen EMURGO Co., Ltd. ("Unternehmen") und jeder natürlichen oder juristischen Person ("Benutzer") die den Prozess zum Herunterladen, Verwenden oder Betreiben in Bezug auf die als Yoroi Kryptowährungs-Wallet-Applikation bekannte Software den Datenverarbeitungsdienst, die Anwendung, den Kommunikationsdienst oder anderer Inhalte oder die vom Unternehmen angebotenen oder mit der vom Unternehmen bereitgestellten Software abschliesst ("Software"). Das Unternehmen und der Benutzer werden gemeinsam als "Parteien." bezeichnet. DURCH ANKLICKEN DER ANNAHMETASTE ODER DURCH AKTIVIERUNG, NUTZUNG ODER INSTALLATION JEGLICHER TEILE DER SOFTWARE STIMMT DER BENUTZER AUSDRÜCKLICH ZU UND ERKLÄRT SICH DAMIT EINVERSTANDEN, AN ALLE BEDINGUNGEN DIESER VEREINBARUNG RECHTLICH GEBUNDEN ZU SEIN. WENN DER BENUTZER NICHT ALLEN BEDINGUNGEN DIESER VEREINBARUNG ZUSTIMMT, IST DER BENUTZER NICHT BERECHTIGT, AUF IRGENDEINEN TEIL DER SOFTWARE ZUZUGREIFEN, SIE ZU VERWENDEN ODER ZU INSTALLIEREN.
-
-## 1. Rechte und Pflichten
-
-**a. Beschreibung.** Die Software fungiert als kostenloses, Open-Source, digitaler Kryptowährungs-Wallet. Die Software stellt kein Konto dar, auf dem das Unternehmen oder andere Dritte als Finanzintermediäre oder Verwahrer der ADA des Benutzers oder einer anderen Kryptowährung fungieren. Obwohl die Software Beta-Tests durchlaufen hat und fortlaufend durch Feedback von der Entwicklergemeinschaft, Open-Source-Mitarbeitern und Beta-Testern verbessert wird, kann das Unternehmen keine Garantie für eine fehlerfreie Software abgeben. Der Benutzer anerkennt, dass die Nutzung der Software auf eigene Gefahr, Diskretion und in Übereinstimmung mit allen geltenden Gesetzen erfolgt. Der Benutzer ist dafür verantwortlich die Passwörter, PINs, Private Keys, Redemption Keys, Shielded Vending Keys, mnemonische Passphrasen für die Wiederherstellung von Backups, ADA-Passwörtern und alle anderen Codes aufzubewahren, die der Benutzer für den Zugriff auf die Software oder sonstige Informationen, ADA, Voucher oder andere Kryptowährungseinheiten verwendet. WENN DER BENUTZER DEN ZUGANG ZU DEM KRYPTOWÄHRUNGS-WALLET ODER DEN PRIVATE KEY DES BENUTZERS VERLIERT UND KEINE SEPARATE SICHERUNG DER KRYPTOWÄHRUNGS-WALLET(S) ODER DER MNEMONISCHEN PASSPHRASE(N) UND DER ENTSPRECHENDEN PASSWÖRTER FÜR DIE WIEDERHERSTELLUNG VON BACKUPS ERSTELLT HAT, STIMMT DER BENUTZER HIERMIT ZU UND ANERKENNT, DASS ADA ODER ANDERE KRYPTOWÄHRUNGEN, DIE DER BENUTZER MIT DIESEN KRYPTOWÄHRUNGS-WALLET IN VERBINDUNG GEBRACHT HAT UNZUGÄNGLICH WERDEN. Alle Transaktionsanfragen sind unwiderruflich. Das Unternehmen und seine Aktionäre, Verwaltungsräte, Geschäftsführer, Mitarbeiter, Konzerngesellschaften und Vertreter können keine Garantie für die Transaktionsbestätigung übernehmen oder die Private Keys oder Passwörter des Benutzers abrufen, wenn dieser sie verliert oder vergisst.
-
-**b. Zugänglichkeit.** Der Benutzer stimmt zu, dass die Software von Zeit zu Zeit aus irgendeinem Grund unzugänglich oder nicht funktionsfähig sein kann, einschliesslich, aber nicht beschränkt aus folgenden Gründen: (i) Gerätefehlfunktionen; (ii) regelmässige Wartungsverfahren oder Reparaturen, die das Unternehmen von Zeit zu Zeit durchführen kann; oder (iii) Ursachen, die ausserhalb der Kontrolle des Unternehmens liegen oder die für das Unternehmen nicht vernünftigerweise vorhersehbar sind.
-
-**c. Ausstattung.** Der Benutzer ist allein verantwortlich für die Bereitstellung, Aufrechterhaltung und Sicherstellung der Kompatibilität mit der Software, aller Hardware, Software, elektrischen und anderen physikalischen Anforderungen für die Nutzung der Software durch den Benutzer, einschliesslich, aber nicht beschränkt auf Telekommunikations- und Internetzugangsverbindungen und -links, Webbrowser oder andere Geräte, Programme und Dienstleistungen, die für den Zugriff auf die Software und deren Nutzung erforderlich sind.
-
-**d. Sicherheit.** Der Benutzer ist allein verantwortlich für die Sicherheit, Vertraulichkeit und Integrität aller Informationen und Inhalte, die er erhält, überträgt oder auf der Software speichert. Jeder autorisierte oder unbefugte Zugriff durch eine Drittperson auf das Benutzerkonto liegt alleine in der Verantwortung des Benutzers. Der Benutzer verpflichtet sich, die volle Verantwortung für die Vertraulichkeit der Sicherheitsvorrichtungen, Informationen, Schlüssel und Passwörter des Benutzers zu tragen.
-
-**e. Datenschutz.** Wenn es vernünftigerweise durchführbar ist, wird das Unternehmen versuchen, die Privatsphäre des Benutzers zu respektieren. Das Unternehmen wird ohne vorherige Zustimmung des Benutzers keine personenbezogenen Daten über den Benutzer oder das Benutzerkonto, einschliesslich seines Inhalts oder der Nutzung der Software durch den Benutzer, überwachen, bearbeiten oder offenlegen, es sei denn, das Unternehmen ist im treuen Glauben der Ansicht, dass eine solche Massnahme erforderlich ist: (i) den rechtlichen Prozess oder andere rechtliche Anforderungen einer Regierungsbehörde einzuhalten; (ii) die Rechte oder das Eigentum des Unternehmens zu schützen und zu verteidigen; (iii) diese Vereinbarung durchzusetzen; (iv) die Interessen anderer Benutzer der Software als des Benutzers oder einer anderen Person zu schützen; oder (v) die Dienstleistungen oder Geräte des Unternehmens zu betreiben oder zu warten und zu reparieren, einschliesslich der gesetzlich zugelassenen Software. Im Hinblick auf das Internet im Allgemeinen hat der Benutzer keine Erwartungen an Datenschutz. Die IP-Adresse des Benutzers wird mit jeder Nachricht oder anderen Informationen, die der Benutzer von der Software sendet, übertragen und aufgezeichnet.
-
-## 2. Steuern und Gebühren
-
-Alle Währungsumrechnungsgebühren, Drittanbietergebühren, Verkaufs-, Nutzungs-, Mehrwert-, Eigentums- oder andere Steuern, Zölle oder Abgaben jeglicher Art, einschliesslich Zinsen und Strafen auf solche, die jetzt oder in Zukunft von einer Regierungseinrichtung erhoben werden, sowie Gebühren, die dem Benutzer durch den Zugriff, die Nutzung oder die Installation der Software durch den Benutzer entstehen, fallen in die alleinige Verantwortung des Benutzers.
-
-## 3. Benutzer-Zusicherungen
-
-Der Benutzer sicher hiermit zu, dass: (a) wenn der Benutzer eine natürliche Person ist, er über achtzehn Jahre(18) alt ist; (b) der Benutzer die Befugnis hat, die Verpflichtungen des Benutzers aus diesem Vertrag einzugehen und zu erfüllen; (c) alle Informationen, die der Benutzer dem Unternehmen zur Verfügung stellt, wahrheitsgemäss, genau und vollständig sind; (d) der Benutzer alle Gesetze und Vorschriften der jeweiligen Gerichtsbarkeit in Bezug auf den Zugriff, die Nutzung oder die Installation der Software einhalten wird; (e) der Benutzer verpflichtet ist, alle Bedingungen dieser Vereinbarung einzuhalten, einschliesslich, aber ohne Beschränkung auf die in Abschnitt 4 dargelegten Bestimmungen; und (f) der Benutzer genaue und vollständige Angaben, die für den Zugriff, die Nutzung oder die Installation der Software erforderlich sind, zur Verfügung gestellt hat und dies auch weiterhin tun wird.
-
-## 4. Verbotene Nutzung
-
-Der Benutzer trägt die alleinige Verantwortung für alle Handlungen und Unterlassungen, die unter Verwendung seines Benutzerkontos, der Sicherheitsdaten, der Dateischlüssel oder des Passwortes vorgenommen werden. Darüber hinaus verpflichtet er sich, keine unzulässige Nutzung der Software vorzunehmen, einschliesslich aber ohne Einschränkungen auf die Nutzung der Software zur: (a) Verbreitung, Speicherung oder Übertragung unerwünschter Nachrichten, Kettenbriefe oder unerwünschter kommerzieller E-Mails; (b) Verbreitung oder Übertragung von Materialien, die eine vernünftige Person als missbräuchlich, obszön, pornographisch, rufschädigend, belästigend, grob anstössig, vulgär, rechts- oder sittenwidrig erachten kann; (c) Verbreitung, Speicherung oder Übertragung von Dateien, Grafiken, Software oder anderem Material, das tatsächlich oder potenziell die Urheber-, Marken- oder Patentrechte, sowie das Geschäftsgeheimnis oder andere Rechte an geistigem Eigentum einer Person verletzt; (d) Verschaffung einer falschen Identität oder anderweitiger Versuche, eine Person über die Identität oder den Ursprung einer Kommunikation irrezuführen; (e) Förderung von Ausfuhr und Wiederausfuhr oder das Herunterladen von Nachrichten oder Inhalten unter Verletzung von Export- oder Importgesetzen, Bestimmung oder Einschränkung einer anwendbaren Gerichtsbarkeit ohne der erforderlichen Genehmigungen, Lizenzen oder Lizenzfreistellungen; (f) Beeinträchtigung, Unterbrechung oder zum Versuch sich unbefugten Zugriff auf andere Konten in der Software oder ein anderes Computernetzwerk zu verschaffen; oder (g) Verbreitung, Speicherung oder Übertragung von Viren, Trojanern oder anderen schädigenden Codes oder Programmen.
-
-## 5. Kündigung
-
-Diese Vereinbarung wird mit der Annahme wirksam und bleibt in vollem Umfang in Kraft, solange der Benutzer auf die Software zugreift, diese nutzt oder installiert. Das Unternehmen behält sich das Recht vor, nach eigenem Ermessen und ohne Vorankündigung jederzeit und aus beliebigem Grund: (a) den Zugriff auf die gesamte oder einen Teil der Software zu sperren oder zu deaktivieren; (b) den Zugriff des Benutzers auf die gesamte oder einen Teil der Software zu sperren; und (c) diese Vereinbarung zu kündigen.
-
-## 6. Gewährleistungsausschluss
-
-DIE SOFTWARE WIRD "WIE SIE IST" BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG. DIE NUTZUNG DER SOFTWARE ERFOLGT AUF EIGENE GEFAHR DES BENUTZERS. DAS UNTERNEHMEN GARANTIERT NICHT, DASS DIE SOFTWARE UNUNTERBROCHEN ZUR VERFÜGUNG STEHT ODER FEHLERFREI IST, NOCH GIBT DAS UNTERNEHMEN EINE GARANTIE FÜR ERGEBNISSE, DIE DURCH DIE NUTZUNG DER SOFTWARE ERZIELT WERDEN KÖNNEN. DAS UNTERNEHMEN GIBT KEINE WEITEREN AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GARANTIEN ODER ZUSICHERUNGEN AB. DAS UNTERNEHMEN LEHNT AUSDRÜCKLICH JEGLICHE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DIE GEWÄHRLEISTUNG DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, DIE GEWÄHRLEISTUNG VON RECHT ODER RECHTSANSPRUCH ODER DIE GEWÄHRLEISTUNG DER NICHTVERLETZUNG AB.
-
-## 7. Haftungsbeschränkung
-
-IN KEINEM FALL KÖNNEN DAS UNTERNEHMEN ODER SEINE AKTIONÄRE, VERWALTUNGSRÄTE, GESCHÄFTSFÜHRER, MITARBEITER, KONZERNGESELLSCHAFTEN, VERTRETER ODER DEREN JEWEILIGEN DIENSTLEISTER GEGENÜBER DEM BENUTZER ODER EINEM DRITTEN HAFTBAR GEMACHT WERDEN FÜR JEGLICHE NUTZUNG, UNTERBRECHUNG, VERZÖGERUNG ODER NICHTAUSFÜHRBARKEIT DER SOFTWARE, ENTGANGENE EINNAHMEN ODER GEWINNE, VERZÖGERUNGEN, UNTERBRECHUNG ODER VERLUST VON DIENSTLEISTUNGEN, VERLUSTE BETREFFEND DIE GESCHÄFTSTÄTIGKEIT ODER DEN GOODWILL, VERLUST ODER BESCHÄDIGUNG VON DATEN, VERLUST DURCH AUSFALL VON SYSTEM- ODER SYSTEMDIENSTAUSFALL, ABSCHALTUNG ODER FEHLFUNKTION, FEHLERHAFTES LESEN ODER ÜBERTRAGEN UND ÜBERMITTELN VON INFORMATIONEN, UNTERLASSUNG DER AKTUALISIERUNG ODER BEREITSTELLUNG KORREKTER INFORMATIONEN UND SYSTEMINKOMPATIBILITÄT ODER BEREITSTELLUNG FALSCHER KOMPATIBILITÄTSINFORMATIONEN ODER VERSTÖSSE GEGEN DIE SYSTEMSICHERHEIT ODER FÜR ZUFÄLLIGE, INDIREKTE, EXEMPLARISCHE, BESONDERE ODER STRAF- UND FOLGESCHÄDEN, UNABHÄNGIG DAVON, OB SIE SICH AUS ODER IM ZUSAMMENHANG MIT DIESER VEREINBARUNG, VERTRAGSBRUCH, UNERLAUBTER HANDLUNG (EINSCHLIESSLICH FAHRLÄSSIGKEIT) ODER ANDERWEITIG ERGEBEN, UNABHÄNGIG DAVON, OB SOLCHE SCHÄDEN VORHERSEHBAR WAREN UND OB WIR ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN INFORMIERT WURDEN ODER NICHT.
-
-## 8. Schadloshaltung
-
-Der Benutzer verpflichtet sich, das Unternehmen, seine Aktionäre, Verwaltungsräte, Geschäftsführer, Mitarbeiter, Konzerngesellschaften und Vertreter ("freigestellte Parteien") für alle Handlungen, Ursachen, Ansprüche, Schäden, Schulden, Forderungen oder Haftungen, einschliesslich angemessener Kosten und Anwaltskosten, die von einer Person geltend gemacht werden, zu entschädigen, schadlos zu halten und zu verteidigen, insbesondere die sich aus oder: (a) in Zusammenhang mit dieser Vereinbarung ergeben; (b) dem Zugriff, Nutzung oder Installation der Software durch den Benutzer ergeben oder damit zusammenhängen, einschliesslich aller Daten oder Arbeiten, die vom Benutzer übertragen oder empfangen wurden; und (c) jede inakzeptable Verwendung der Software durch eine Person, einschliesslich, aber ohne Einschränkung aller Aussagen, Daten oder Inhalte, die vom Benutzer oder einer Person gemacht, übertragen oder neu veröffentlicht wurden und die gemäss Abschnitt 4 verboten sind. DIESE SCHADLOSHALTUNG BEINHALTET DIE AUSDRÜCKLICHE ENTSCHÄDIGUNG DES UNTERNEHMENS UND ALLER FREIGESTELLTEN PARTEIEN FÜR JEDE ANGEBLICHE FAHRLÄSSIGKEIT (EINSCHLIESSLICH JEGLICHER GROBEN FAHRLÄSSIGKEIT) ODER EIN ANDERES ANGEBLICHES FEHLVERHALTEN DES UNTERNEHMENS ODER EINER FREIGESTELLTEN PARTEI.
-
-## 9. Geistiges Eigentum
-
-Das Unternehmen behält alle Rechte, Titel und Anteile an allen Marken, Logos und Markenzeichen des Unternehmens, einschliesslich, aber nicht beschränkt auf EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App und Variationen des Wortlauts der vorgenannten Marken, Logos und Markenzeichen.
-
-## 10. Warnhinweise
-
-Der Benutzer erklärt sich damit einverstanden, dass das Unternehmen nicht für die Übertragung, Sicherung oder Aufrechterhaltung von Private Keys und/oder der ADA des Benutzers oder einer anderen Kryptowährung verantwortlich ist. Wenn der Benutzer und/oder alle Mitzeichnungsberechtigten die zugehörigen Private Keys verloren, missbraucht oder gestohlen haben oder wenn die Mitzeichnungsberechtigten sich weigern, die erforderliche Vollmacht zu erteilen, erklärt sich der Benutzer damit einverstanden, dass er gegebenfalls nicht in der Lage ist, die ADA des Benutzers oder eine andere Kryptowährung wiederherzustellen, und dass das Unternehmen für diesen Verlust nicht verantwortlich ist.
-
-Der Benutzer erklärt sich damit einverstanden, dass sich ADA oder andere durch die Software und/oder das Unternehmen ermöglichte Transaktionen in Kryptowährung verzögern können, und dass das Unternehmen nicht für damit verbundene Verluste verantwortlich ist. Der Benutzer erklärt sich damit einverstanden, dass das Unternehmen für keinen Aspekt der Informationen, Inhalte oder Dienstleistungen verantwortlich ist, die in Materialien von Drittanbietern oder auf Websites von Drittanbietern enthalten sind, die mit der Software und/oder dem Unternehmen zugänglich sind oder mit dieser verlinkt sind.
-
-Der Benutzer stimmt zu, dass er das Benutzerzertifikat niemals an eine natürliche oder juristische Person weitergeben darf, einschliesslich das Unternehmen Cardano Foundation, Input Output HK Limited oder eine andere Einheit. Darüber hinaus anerkennt der Benutzer, dass die Weitergabe des Benutzerzertifikats zum Verlust der ADA des Benutzers oder einer anderen Kryptowährung führen kann, und der Benutzer stimmt zu, dass das Unternehmen nicht für diesen Verlust verantwortlich ist. Der Benutzer stimmt zu, dass er durch die Einlösung von ADA im Testnetz nur Test-ADA einlöst und dass er zur Einlösung von ADA den Vorgang im Mainnet wiederholen muss, sobald freigegeben.
-
-Durch die Verwendung der Software anerkennt und stimmt der Benutzer zu: (i) dass das Unternehmen nicht für den Betrieb der zugrunde liegenden Protokolle verantwortlich ist und keine Garantie für deren Funktionalität, Sicherheit oder Verfügbarkeit gibt; und (ii) dass die zugrunde liegenden Protokolle plötzlichen Änderungen der Betriebsvorschriften in der Hauptkette ("Fork") unterliegen, und dass solche Forks den Wert und/oder die Funktion des ADA oder einer anderen Kryptowährung, die der Benutzer in der Software speichert, wesentlich beeinflussen können. Im Falle eines Forks stimmt der Benutzer zu, dass das Unternehmen den Betrieb der Software vorübergehend aussetzen kann (mit oder ohne Benachrichtigung des Benutzers), und dass das Unternehmen nach eigenem Ermessen (a) seine Systeme konfigurieren oder neu konfigurieren kann oder (b) beschliessen kann, das Fork-Protokoll nicht vollständig zu unterstützen (oder nicht mehr zu unterstützen) unter der Voraussetzung, dass der Benutzer die Möglichkeit hat, Gelder von der Software abzuheben. Der Benutzer anerkennt und stimmt zu, dass das Unternehmen keinerlei Verantwortung in Bezug auf einen nicht unterstützten Zweig eines Fork-Protokolls übernimmt.
-
-## 11. Sonstiges
-
-**a. Ergänzung.** Das Unternehmen ist jederzeit und ohne Vorankündigung berechtigt, die Bedingungen dieser Vereinbarung zu ergänzen oder zu ändern. Die elektronische Zustellung der geänderten Bedingungen an den Benutzer erfolgt über ein beliebiges Medium an eine Adresse, die der Benutzer dem Unternehmen zur Verfügung stellt. Der Zugriff des Benutzers auf die Software oder deren Nutzung nach der Zustellung der geänderten Bedingungen gilt als Zustimmung.
-
-**b. Teilbarkeit.** Sollte eine Bestimmung oder Teilbestimmung dieser Vereinbarung ungültig, illegal oder nicht durchsetzbar sein oder werden, gilt sie als so weit geändert, wie es erforderlich ist, um es gültig, legal und durchsetzbar zu machen. Ist eine solche Änderung nicht möglich, so gilt die betreffende Bestimmung oder Teilbestimmung als gestrichen. Eine Änderung oder Streichung einer Bestimmung oder Teilbestimmung nach diesem Artikel berührt nicht die Gültigkeit und Durchsetzbarkeit des übrigen Teils dieser Vereinbarung.
-
-**c. Gesamte Vereinbarung – Haftungsausschluss** Diese Vereinbarung stellt die gesamte Vereinbarung zwischen den Parteien in Bezug auf den Gegenstand dieser Vereinbarung dar und ersetzt alle früheren Vereinbarungen oder Absprachen zwischen den Parteien. Der Benutzer versichert ausdrücklich und garantiert, dass er sich nicht auf andere als die in dieser Vereinbarung ausdrücklich genannten Erklärungen, Vereinbarungen, Vorstellungen, Erwartungen oder Vereinbarungen verlässt.
-
-**d. DIESE VEREINBARUNG UNTERLIEGT EINEM VERBINDLICHEN SCHIEDSVERFAHREN** Der Benutzer stimmt zu, dass alle Streitigkeiten oder Ansprüche gegen eine Person, die sich aus oder in irgendeiner Weise im Zusammenhang mit dieser Vereinbarung oder dem Zugriff, der Nutzung oder der Installation der Software durch den Benutzer oder eine andere Person ergeben, unter Ausschluss des Rechtsweges durch ein Schiedsgericht entschieden werden, das auf Basis der Schiedsgerichtsordnung der Internationalen Handelskammer gebildet wird und durch einen oder mehrere Schiedsrichter, die gemäss dieser Ordnung ernannt werden, entscheidet. Schiedsort ist Japan. Sprache des Schiedsverfahrens ist English.
-
-**e. SPRACHE** Jede Übersetzung dieser Vereinbarung dient nur der lokalen Referenz. Im Falle von Unstimmigkeiten zwischen der englischen und einer nicht-englischen Version hat die englische Version dieser Vereinbarung Vorrang und gilt in jeder Hinsicht.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/el-GR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/el-GR.md
deleted file mode 100644
index e7a3391e12..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/el-GR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Terms of Service Agreement
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/es-ES.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/es-ES.md
deleted file mode 100644
index 92a83261e6..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/es-ES.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Acuerdo de Términos de Servicio
-
-ESTE ACUERDO DE TÉRMINOS DE SERVICIO ("Acuerdo") se realiza entre EMURGO Co. ("Empresa") y cualquier persona o entidad ("Usuario") que complete el proceso para descargar, utilizar u operar el software conocido como la aplicación de la Billetera de criptomoneda Yoroi, y el servicio de procesamiento de datos, aplicación, servicio de comunicación u otro contenido u ofrecido o suministrado con el software por la Empresa ("Software"). La Compañía y el Usuario se denominan colectivamente las Partes; AL HACER CLIC EN EL BOTÓN DE ACEPTACIÓN O AL ACCEDER, USAR O INSTALAR CUALQUIER PARTE DEL SOFTWARE, EL USUARIO ACEPTA Y CONSIENTE EXPRESAMENTE ESTAR LEGALMENTE OBLIGADO POR TODOS LOS TÉRMINOS DE ESTE ACUERDO. SI EL USUARIO NO ESTÁ DE ACUERDO CON TODOS LOS TÉRMINOS DE ESTE ACUERDO, NO ESTARÁ AUTORIZADO A ACCEDER, USAR O INSTALAR NINGUNA PARTE DEL SOFTWARE.
-
-## 1. Derechos y Obligaciones
-
-**a. Descripción.** El Software funciona como una billetera digital de criptomoneda de código abierto y libre. El Software no constituye una cuenta por la cual la Compañía o cualquier otro tercero sirva como intermediarios financieros o custodios de la ADA del Usuario o de cualquier otra divisa de criptomoneda. Aunque el Software ha sido sometido a pruebas beta y continúa siendo mejorado gracias a la retroalimentación de la comunidad de desarrolladores, de los colaboradores de código abierto y de los beta-testers, la Compañía no puede garantizar que no habrá errores en el Software. El Usuario reconoce que el uso del del Software es por cuenta y riesgo del Usuario, a su discreción y en cumplimiento de todas las leyes aplicables. El usuario es responsable de custodiar las contraseñas de Usuario, PINs, claves privadas, claves de redención, claves de venta protegidas, frases mnemotécnicas de recuperación de copias de seguridad, contraseñas ADA y cualquier otro código que el usuario utilice para acceder al Software o a cualquier información, ADA, cupón u otra unidad de criptomoneda. SI EL USUARIO PIERDE EL ACCESO A LA BILLETERA DE CRIPTOMONEDA DEL USUARIO O CLAVES PRIVADAS Y NO HA ALMACENADO POR SEPARADO UNA COPIA DE SEGURIDAD DE LA BILLETERA DE CRIPTOMONEDA DEL USUARIO O UNA FRASE MNEMOTÉCNICA DE RECUPERACIÓN DE COPIA DE SEGURIDAD Y LA CONTRASEÑA O CONTRASEÑAS CORRESPONDIENTES, EL USUARIO RECONOCE Y ACEPTA QUE CUALQUIER ADA O CUALQUIER OTRO USUARIO DE CRIPTOMONEDAS ASOCIADO CON ESA BILLETERA DE CRIPTOMONEDA SERÁ INACCESIBLE. Todas las solicitudes de transacciones son irreversibles. La Compañía y sus accionistas, directores, funcionarios, empleados, afiliados y agentes no pueden garantizar la confirmación de la transacción o recuperar las claves o contraseñas privadas del Usuario si el Usuario las pierde u olvida.
-
-**b. Accesibilidad.** El Usuario acepta que de vez en cuando el Software puede ser inaccesible o inoperable por cualquier razón, incluyendo, sin limitación: (i) mal funcionamiento de los equipos; (ii) procedimientos de mantenimiento periódico o reparaciones que la Compañía pueda llevar a cabo de vez en cuando; o (iii) causas fuera del control de la Compañía o que no sean razonablemente previsibles por la Compañía.
-
-**c. Equipamiento.** El Usuario será el único responsable de proporcionar, mantener y asegurar la compatibilidad con el Software, todo el hardware, software, requerimientos eléctricos y otros requisitos físicos para el uso del Software por parte del Usuario, incluyendo, sin limitación, conexiones y enlaces de telecomunicaciones y acceso a Internet, navegadores web u otros equipos, programas y servicios necesarios para acceder y usar el Software.
-
-**d. Seguridad.** El Usuario será el único responsable de la seguridad, confidencialidad e integridad de toda la información y contenido que reciba, transmita o almacene en el Software. El Usuario será el único responsable de cualquier acceso autorizado o no autorizado a cualquier cuenta del Usuario por cualquier persona. El usuario se compromete a asumir toda la responsabilidad de la confidencialidad de los dispositivos de seguridad del Usuario, información, claves y contraseñas.
-
-**e. Privacidad.** Cuando sea razonablemente posible, la Compañía intentará respetar la privacidad del Usuario. La Empresa no supervisará, editará ni divulgará ninguna información personal sobre el Usuario o la cuenta del Usuario, incluyendo su contenido o el uso que el Usuario haga del Software, sin el consentimiento previo del Usuario a menos que la Empresa crea de buena fe que dicha acción es necesaria para ello: (i) cumplir con el proceso legal u otros requisitos legales de cualquier autoridad gubernamental; (ii) proteger y defender los derechos o propiedad de la Compañía; (iii) hacer cumplir este Acuerdo; (iv) proteger los intereses de los usuarios del Software que no sean el Usuario o cualquier otra persona; o (v) operar o realizar el mantenimiento y la reparación de los servicios o equipos de la Compañía, incluyendo el Software según lo autorizado por la ley. El usuario no tiene expectativas de privacidad con respecto a Internet en general. La dirección IP del Usuario se transmite y registra con cada mensaje u otra información que el usuario envía desde el software.
-
-## 2. Impuestos y tasas
-
-Todos los cargos por conversión de divisas, tasas de terceros, ventas, uso, valor añadido, propiedad personal u otros impuestos, tasas o gravámenes de cualquier tipo, incluidos los intereses y penalizaciones sobre los mismos, ya sean impuestos ahora o en el futuro por cualquier entidad gubernamental, y las tasas en las que incurra el Usuario a causa del acceso del Usuario, uso o instalación del Software, serán responsabilidad exclusiva del Usuario.
-
-## 3. Representaciones de los usuarios
-
-El usuario declara y garantiza a la Compañía que: (a) si el usuario es una persona física, el usuario es mayor de dieciocho (18) años; (b) el Usuario tiene el poder y la autoridad para entrar y cumplir con las obligaciones del Usuario en virtud del presente Acuerdo; (c) toda la información proporcionada por el usuario a la empresa es veraz, precisa y completa; (d) el usuario cumplirá con todas las leyes y reglamentos de cualquier jurisdicción aplicable en relación con el Usuario; (e) El Usuario deberá cumplir con todos los términos y condiciones de este Acuerdo, incluyendo, sin limitación, las disposiciones establecidas en la Sección 4; y (f) El Usuario ha proporcionado y proporcionará información precisa y completa según se requiera para el acceso, uso o instalación del Software.
-
-## 4. Usos prohibidos
-
-El Usuario es el único responsable de todos y cada uno de los actos y omisiones que se produzcan en virtud de la cuenta del Usuario, la información de seguridad, claves o contraseña, y el Usuario se compromete a no participar en el uso inaceptable del Software, lo que incluye, sin limitación, el uso del Software para: (a) diseminar, almacenar o transmitir mensajes no solicitados, cartas en cadena o correo electrónico comercial no solicitado; (b) diseminar o transmitir material que, para una persona razonable, pueda ser abusivo, obsceno, pornográfico, difamatorio, acosador, groseramente ofensivo, vulgar, amenazante o malicioso; (c) diseminar, almacenar o transmitir archivos, gráficos, software u otro material que infrinja o pueda infringir los derechos de autor, marcas comerciales, patentes, secretos comerciales u otros derechos de propiedad intelectual de cualquier persona; (d) crear una identidad falsa o intentar engañar a cualquier persona sobre la identidad u origen de cualquier comunicación; (e) exportar, reexportar o permitir la descarga de cualquier mensaje o contenido en violación de cualquier ley de exportación o importación, regulación o restricción de cualquier jurisdicción aplicable, o sin todas las aprobaciones, licencias o exenciones requeridas; (f) interferir, interrumpir o intentar obtener acceso no autorizado a otras cuentas en el Software o en cualquier otra red de ordenadores; o (g) diseminar, almacenar o transmitir virus, caballos de Troya o cualquier otro código o programa malicioso.
-
-## 5. Terminación
-
-Este Acuerdo es efectivo a partir de la aceptación del Usuario como se establece en el mismo y continuará en pleno vigor siempre y cuando el Usuario participe en cualquier acceso, uso o instalación del Software. La Compañía se reserva el derecho, a su sola discreción y sin previo aviso, en cualquier momento y por cualquier razón, a: (a) eliminar o desactivar el acceso a la totalidad o parte del Software; (b) suspender el acceso del Usuario a o el uso de la totalidad o parte del Software; y (c) rescindir el presente Acuerdo.
-
-## 6. Descargo de responsabilidad de las garantías
-
-EL SOFTWARE ES PROPORCIONADO "COMO ES", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA. EL USO DEL SOFTWARE ES A RIESGO DEL USUARIO. LA COMPAÑÍA NO GARANTIZA QUE EL SOFTWARE SEA ININTERRUMPIDO O ESTÉ LIBRE DE ERRORES, NI GARANTIZA LOS RESULTADOS QUE PUEDAN OBTENERSE POR EL USO DEL SOFTWARE. LA COMPAÑÍA NO OFRECE NINGUNA OTRA GARANTÍA, EXPRESA O IMPLÍCITA. LA COMPAÑÍA RENUNCIA EXPRESAMENTE A CUALQUIER GARANTÍA DE COMERCIABILIDAD, GARANTÍA DE IDONEIDAD PARA UN PROPÓSITO PARTICULAR, GARANTÍA DE TÍTULO O INTERÉS, O GARANTÍA DE NO INFRACCIÓN.
-
-## 7. Límites de Responsabilidad
-
-EN NINGÚN CASO LA COMPAÑÍA O SUS ACCIONISTAS, DIRECTORES, FUNCIONARIOS, EMPLEADOS, AFILIADOS O AGENTES, O CUALQUIERA DE SUS RESPECTIVOS PROVEEDORES DE SERVICIOS, SERÁN RESPONSABLES ANTE EL USUARIO O CUALQUIER TERCERO POR CUALQUIER USO, INTERRUPCIÓN, DEMORA O IMPOSIBILIDAD DE USAR EL SOFTWARE, PÉRDIDA DE INGRESOS O GANANCIAS, DEMORAS, INTERRUPCIÓN O PÉRDIDA DE SERVICIOS, NEGOCIO O BUENA VOLUNTAD, PÉRDIDA O CORRUPCIÓN DE DATOS, PÉRDIDA RESULTANTE DE FALLAS EN EL SISTEMA O EN LOS SERVICIOS DEL SISTEMA, MAL FUNCIONAMIENTO O CIERRE, O FALTA DE TRANSFERENCIA PRECISA, LEER O TRANSMITIR INFORMACIÓN, NO ACTUALIZAR O PROPORCIONAR INFORMACIÓN CORRECTA, INCOMPATIBILIDAD DEL SISTEMA O SUMINISTRO DE INFORMACIÓN DE COMPATIBILIDAD INCORRECTA O INFRACCIONES EN LA SEGURIDAD DEL SISTEMA, O POR CUALQUIER DAÑO CONSECUENTE, INCIDENTAL, INDIRECTO, EJEMPLAR, ESPECIAL O PUNITIVO, YA SEA QUE SURJA DE O EN RELACIÓN CON ESTE ACUERDO, INCUMPLIMIENTO DE CONTRATO, AGRAVIO (INCLUIDA LA NEGLIGENCIA) O DE OTRO TIPO, INDEPENDIENTEMENTE DE SI DICHOS DAÑOS ERAN PREVISIBLES Y DE SI SE NOS ADVIRTIÓ DE LA POSIBILIDAD DE QUE SE PRODUJERAN TALES DAÑOS O NO. EN NINGÚN CASO LA EMPRESA O SUS ACCIONISTAS, DIRECTORES, FUNCIONARIOS, EMPLEADOS, AFILIADOS O AGENTES, O CUALQUIERA DE SUS RESPECTIVOS PROVEEDORES DE SERVICIOS, SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRO TIPO, QUE SURJA DE O ESTÉ RELACIONADA DE ALGUNA MANERA CON EL ACCESO, USO O INSTALACIÓN DEL SOFTWARE POR PARTE DEL USUARIO. ALGUNAS JURISDICCIONES PROHÍBEN LA EXCLUSIÓN O LIMITACIÓN DE DAÑOS INCIDENTALES O CONSECUENTES, POR LO QUE ESTA LIMITACIÓN DE RESPONSABILIDAD PUEDE NO APLICARSE AL USUARIO. SI EL USUARIO NO ESTÁ SATISFECHO CON EL SOFTWARE, LA ÚNICA Y EXCLUSIVA SOLUCIÓN PARA EL USUARIO SERÁ DEJAR DE UTILIZAR EL SOFTWARE.
-
-## 8. Indemnización
-
-El usuario acepta indemnizar, eximir de responsabilidad y defender a la Compañía, sus accionistas, directores, funcionarios, empleados, afiliados y agentes ("Partes Indemnizadas") de y contra cualquier acción, causa, reclamación, daño, deuda, demanda o responsabilidad, incluidos los costos razonables y honorarios de abogados, alegados por cualquier persona, que surjan de o en relación con: (a) este Acuerdo; (b) el acceso del Usuario, el uso o la instalación del Software, incluyendo cualquier dato o trabajo transmitido o recibido por el usuario; y (c) cualquier uso inaceptable del Software por cualquier persona, incluyendo, sin limitación, cualquier declaración, datos o contenido hecho, transmitido o publicado de nuevo por el usuario o cualquier persona que está prohibido como inaceptable bajo la Sección 4. ESTA INDEMNIZACIÓN INCLUYE LA INDEMNIZACIÓN EXPRESA DE LA COMPAÑÍA Y DE TODAS LAS PARTES INDEMNIZADAS POR CUALQUIER SUPUESTA NEGLIGENCIA (INCLUYENDO CUALQUIER SUPUESTA NEGLIGENCIA GRAVE). U OTRA SUPUESTA MALA CONDUCTA DE LA COMPAÑÍA O DE CUALQUIER PARTE INDEMNIZADA.
-
-## 9. Propiedad Intelectual
-
-La Compañía retiene todos los derechos, títulos e intereses en y para todas las marcas, logotipos y marcas comerciales de la Compañía, incluyendo, pero no limitado a, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, y las variaciones de la redacción de las marcas, logotipos y marcas comerciales antes mencionadas.
-
-## 10. Advertencias
-
-El usuario reconoce que la Compañía no será responsable de la transferencia, la salvaguardia o el mantenimiento de las claves privadas y / o Usuario de ADA o cualquier otra criptomoneda. Si el usuario y / o cualquier autoridad co-firmante pierden, maltratan o han robado las claves privadas asociadas, o si los cosignatarios del Usuario se niegan a proporcionar la autoridad necesaria, el Usuario reconoce que el Usuario no puede ser capaz de recuperar los ADA de Usuario o cualquier otra criptomoneda, y que la empresa no será responsable de dicha pérdida.
-
-El Usuario reconoce y acepta que los ADA o cualquier otra transacción en criptomoneda facilitada por el Software y/o la Empresa puede retrasarse, y que la Empresa no será responsable de ninguna pérdida asociada. El Usuario reconoce y acepta que la Empresa no será responsable de ningún aspecto de la información, contenido o servicios contenidos en materiales de terceros o en sitios de terceros accesibles o vinculados al Software y/o a la Empresa.
-
-El Usuario acepta que el usuario nunca debe compartir el certificado de Usuario con cualquier persona física o jurídica, incluyendo la Compañía, Fundación Cardano, Input Output HK Limited, o cualquier otra entidad. Además, el Usuario reconoce que compartir el certificado del Usuario puede resultar en la pérdida de la ADA del Usuario o de cualquier otra divisa criptográfica, y el Usuario acepta que la Compañía no será responsable de dicha pérdida. El Usuario reconoce y acepta que al canjear ADA en la red de pruebas, el Usuario sólo canjea ADA de prueba, y que para canjear ADA real, el Usuario debe repetir el procedimiento en la red principal, una vez liberado.
-
-Al utilizar el Software, el Usuario reconoce y acepta: (i) que la Empresa no es responsable de la operación de los protocolos subyacentes y que la Empresa no garantiza su funcionalidad, seguridad o disponibilidad; y (ii) que los protocolos subyacentes están sujetos a cambios repentinos en las reglas de operación de la cadena principal ("bifurcación"), y que dichas bifurcaciones pueden afectar materialmente el valor y/o función de la ADA o de cualquier otra criptomoneda que el Usuario almacene en el Software. En el caso de una bifurcación, el Usuario acepta que la Empresa puede suspender temporalmente las operaciones del Software (con o sin previo aviso al Usuario) y que la Empresa puede, a su sola discreción, (a) configurar o reconfigurar sus sistemas o (b) decidir no apoyar (o dejar de apoyar) el protocolo bifurcado por completo, siempre y cuando, sin embargo, el Usuario tenga la oportunidad de retirar fondos del Software. El usuario reconoce y acepta que la Compañía no asume responsabilidad alguna con respecto a una rama no soportada de un protocolo bifurcado.
-
-## 11. Otras Disposiciones
-
-**a. Enmienda.** La Compañía tendrá el derecho, en cualquier momento y sin previo aviso, de añadir o modificar los términos de este Acuerdo, simplemente entregando dichos términos modificados al Usuario por mensaje electrónico a través de cualquier medio a cualquier dirección proporcionada a la Compañía por el Usuario. El acceso o uso del Software por parte del Usuario después de la fecha de entrega de las condiciones modificadas al Usuario se considerará que constituye la aceptación de dichas condiciones modificadas.
-
-**Cesantía**. Si alguna disposición o disposición parcial de este Acuerdo es, o se vuelve inválida, ilegal o inaplicable, se considerará modificada en la medida mínima necesaria para hacerla válida, legal y aplicable. Si tal modificación no fuera posible, se considerará suprimida la disposición correspondiente o la disposición parcial. Cualquier modificación o supresión de una disposición o de una parte de una disposición en virtud del presente artículo no afectará a la validez y aplicabilidad del resto del presente Acuerdo.
-
-**c. Acuerdo Completo - Descargo de responsabilidad **. Este Acuerdo constituye el acuerdo completo entre las Partes con respecto al asunto aquí tratado y reemplaza todos los acuerdos o entendimientos previos entre las Partes. El Usuario declara y garantiza expresamente que no se basa en declaraciones, entendimientos, representaciones, expectativas o acuerdos distintos a los expresamente establecidos en este Acuerdo.
-
-**d. ESTE CONTRATO ESTÁ SUJETO A UN ARBITRAJE VINCULANTE.** El Usuario acepta que todas y cada una de las disputas o reclamaciones contra cualquier persona que surjan de o estén relacionadas de alguna manera con este Contrato o con el acceso, uso o instalación del Software por parte del Usuario o de cualquier otra persona, estarán sujetas a un arbitraje vinculante de acuerdo con el Reglamento de Arbitraje de la Cámara de Comercio Internacional por parte de uno o más árbitros nombrados de acuerdo con dicho Reglamento. La sede del arbitraje será Japón. El idioma del arbitraje será el inglés.
-
-**e. IDIOMA.** Cualquier traducción de este Acuerdo se hace para propósitos de referencia local solamente y en el caso de cualquier inconsistencia entre la versión en inglés y cualquier otra versión que no sea en inglés, la versión en inglés de este Acuerdo prevalecerá y regirá en todos los aspectos.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/fr-FR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/fr-FR.md
deleted file mode 100644
index 8ed96150bf..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/fr-FR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Conditions générales de l'accord de service
-
-LES PRÉSENTES CONDITIONS GÉNÉRALES ("Contrat") sont conclues entre EMURGO S.A.R.L., Ltd ("Société") et toute personne ou entité ("L'Utilisateur") qui effectue le processus de téléchargement, d'utilisation ou d'exploitation du Logiciel connu sous le nom "Yoroi cryptocurrency Wallet", de service de traitement de données, d'application, de service de communication ou autre contenu offert ou fourni par le Logiciel de la Société ("Le Logiciel"). La Société et l'Utilisateur constituent "les Parties" de ce contrat. EN CLIQUANT SUR LE BOUTON D'ACCEPTATION OU EN ACCÉDANT À, EN UTILISANT OU EN INSTALLANT TOUTE PARTIE DU LOGICIEL, L'UTILISATEUR ACCEPTE EXPRESSÉMENT ET CONSENT À ÊTRE LÉGALEMENT RESPONSABLE DE TOUTES LES CONDITIONS DU PRÉSENT CONTRAT. SI L'UTILISATEUR N'ACCEPTE PAS TOUTES LES CONDITIONS DU PRÉSENT CONTRAT, IL N'EST PAS AUTORISÉ À ACCÉDER, UTILISER OU INSTALLER TOUTE PARTIE DU LOGICIEL.
-
-## 1. Droits et Obligations
-
-**a. Description.** Le Logiciel constitue un porte-monnaie numérique (wallet) gratuit et open source pour crypto-monnaies. Le Logiciel ne constitue pas un compte par lequel la Société ou tout autre tiers agit en tant qu'intermédiaire financier ou dépositaire des ADA de l'Utilisateur ou d'autres crypto-monnaies. Bien que le Logiciel ait passé les tests bêta et continue d'être amélioré grâce aux retours de ses développeurs, des contributeurs open source et des bêta-testeurs, la Société ne peut pas garantir l'absence de bugs dans le Logiciel. L'Utilisateur reconnaît et accepte que l'utilisation du Logiciel est à ses risques et périls, à sa discrétion et en conformité avec les lois applicables. L'Utilisateur est responsable de la conservation de ses mots de passes, codes PIN, clés privées, clés de remboursement, clés de distributeurs automatique protégées, phrases secrètes mnémonique de sauvegarde et de récupération, mots de passe ADA et de tous les autres codes que l'Utilisateur utilise pour accéder au Logiciel ou à d'autres informations, ADAs, bons et crypto-monnaies. SI L'UTILISATEUR PERD L'ACCÈS À SON WALLET OU À SES CLÉS PRIVÉES, ET N'A PAS SAUVEGARDÉ SÉPARÉMENT SON WALLET OU SES PHRASES SECRÈTES MNÉMONIQUES DE SAUVEGARDE ET DE RÉCUPÉRATION ET SES MOTS DE PASSE CORRESPONDANTS, L'UTILISATEUR RECONNAÎT ET ACCEPTE QUE TOUT ADA OU AUTRES CRYPTO-MONNAIES SAUVEGARDÉES DANS CE WALLET DEVIENDRA INACCESSIBLE. Toute demande de transaction est irrévocable. La Société et ses actionnaires, administrateurs, dirigeants, employés, sociétés affiliées, auxiliaires et agents ne peuvent garantir la confirmation des transactions ou récupérer les clés privées ou les mots de passe de l'Utilisateur si ce dernier les perd ou les oubli(e)s.
-
-**b. Accessibilité.** L'Utilisateur accepte que, de temps à autre, le Logiciel peut être inaccessible ou inutilisable pour toutes raisons, y compris, sans limitation: (i) les défaillances d'équipement; (ii) les procédures de maintenance que la Société doit ou peut effectuer de temps en temps; et (iii) tout événement qui survient indépendamment de la Société ou qui n'est pas raisonnablement prévisible par la Société.
-
-**c. Équipement.** L'Utilisateur est seul responsable de fournir, de maintenir et d'en assurer la compatibilité avec le Logiciel, le matériel informatique, les logiciels et les autres exigences électroniques ou physiques nécessaires pour utiliser le Logiciel, y compris, et sans limitation, les télécommunications, l'accès à internet ainsi que toute autre équipement, programmes et services nécessaires pour accéder et utiliser le Logiciel.
-
-**d. Sécurité.** L'Utilisateur est seul responsable de la sécurité, la confidentialité et l'intégrité de toute information et contenu que l'Utilisateur reçoit, transmet ou stocke sur le Logiciel. L'Utilisateur est seul responsable de tout accès autorisé ou non autorisé à ses comptes par toute autre personne. L'Utilisateur accepte qu'il est seul responsable de la confidentialité de son équipement de sécurité, de ses informations, clés et mots de passe.
-
-**e. Confidentialité.** La Société s'efforcera de respecter la confidentialité de l'Utilisateur dans la mesure du possible et où cela est raisonnablement faisable. La Société ne surveillera, ne modifiera et ne révèlera aucune information personnelle de l'Utilisateur ou de son compte d'Utilisateur, y compris son contenu et l'utilisation par l'Utilisateur du Logiciel, à moins que l'Utilisateur y ait consenti préalablement, avec exception dans les cas où la Société pense de bonne foi que ceci est nécessaire pour (i) se conformer à la loi ou à d'autres exigences légales de toute autorité gouvernementale; (ii) protéger et défendre les droits ou la propriété de la Société; (iii) appliquer ou faire respecter ce contrat; (iv) protéger les intérêts d'Utilisateurs du Logiciel autre que l'Utilisateur ou toute autre personne; (v) exploiter ou effectuer, en conformité avec la loi et les autorisations légales, des travaux de maintenance et la réparation de l'équipement de la Société, y compris le Logiciel. L'Utilisateur n'a aucune attente de confidentialité par rapport à Internet en général. L'adresse IP de l'Utilisateur est transmise et enregistrée avec chaque message ou autre information que l'Utilisateur envoie depuis le Logiciel.
-
-## 2. Taxes et frais
-
-Tous les frais de conversion de monnaie, frais de tiers, frais de vente, d'utilisation, de valeur ajoutée, de propriété personnelle et toutes autres taxes, obligations et prélèvements de toute sorte, y compris les intérêts et les pénalités y afférents, imposés maintenant ou par la suite par toute entité gouvernementale, et tous frais encourus par l'Utilisateur de par son accès, son utilisation ou par l'installation du Logiciel relèvent de la seule responsabilité de l'Utilisateur.
-
-## 3. Déclarations de l'Utilisateur
-
-L'Utilisateur confirme et garantit à la Société que: (a) si l'Utilisateur est une personne physique, qu'il est âgé de 18 (dix-huit) ans révolus; (b) l'Utilisateur a la capacité et la permission d'être partie à ce contrat et d'accomplir les obligations prévues dans ce contrat; (c) toute information fournie à la Société par l'Utilisateur est conforme à la vérité, exacte et complète; (d) l'Utilisateur se conformera à toute loi et réglementation de toute juridiction applicable concernant l'accès, l'utilisation et l'installation du Logiciel par l'Utilisateur; (e) l'Utilisateur se conformera aux conditions de ce contrat, y compris, mais sans se limiter aux dispositions prévus par l'article 4; et (f) l'Utilisateur a fourni et fournira les informations exactes et complètes requises pour l'accès, l'utilisation ou l'installation du Logiciel.
-
-## 4. Utilisation non autorisée
-
-L'Utilisateur est seul responsable de toute action ou actes d'omissions qui sont fait sous son compte d'utilisation, ses informations de sécurité, ses clés ou mots de passe, et accepte de ne pas utiliser le Logiciel pour, y compris, et sans limitation: (a) diffuser, sauvegarder ou transmettre des messages non-sollicités, des chaînes de lettres ou d'emails commerciaux non-sollicités; (b) diffuser ou transférer du contenu qui, pour une personne raisonnable, pourrait être abusif, obscène, pornographique, diffamatoire, harcelant, gravement injurieux, vulgaire, menaçant ou malveillant; (c) diffuser, sauvegarder ou transférer des fichiers, images, Logiciels ou autres matériels qui violent ou qui pourraient violer le droit d'auteur, une marque, un brevet, le secret des affaires/industriel ou un autre droit de la propriété intellectuelle de toute autre personne; (d) créer une fausse identité ou tenter de tromper toute autre personne sur l'identité ou l'origine de toute communication; (e) exporter, réexporter ou permettre le téléchargement de tout message ou contenu en violation de toute loi, règlementation ou restriction d'exportation et d'importation de toute juridiction applicable, ou sans les autorisations, licences et dérogations requises; (f) interférer, troubler ou tenter d'avoir un accès non-autorisé sur d'autres comptes d'utilisation du Logiciel ou de tout autre réseau informatique; ou (g) diffuser, sauvegarder ou transmettre des virus, Chevaux de Troie ou tout autre code ou programme malveillant.
-
-## 5. Résiliation
-
-Ce contrat prend effet dès son acceptation par l'Utilisateur et sera valable aussi longtemps que l'Utilisateur accède, utilise ou installe le Logiciel. La Société se réserve le droit, à sa seule discrétion, sans avis préalable, en tout temps et pour toute raison, de: (a) supprimer ou désactiver l'accès à toute ou une partie du Logiciel; (b) suspendre l'accès par l'Utilisateur ou l'utilisation à toute ou une partie du Logiciel; et (c) résilier ce contrat.
-
-## 6. Exclusion de garanties
-
-LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE DE TOUTE SORTE, EXPRESSE OU IMPLICITE. L'UTILISATION DU LOGICIEL SE FAIT AUX RISQUES ET PÉRILS DE L'UTILISATEUR. LA SOCIÉTÉ NE GARANTIE PAS QUE LE LOGICIEL SERA DISPONIBLE TOUT LE TEMPS OU SANS ERREURS, ET LA SOCIÉTÉ NE GARANTIE PAS L'OBTENTION DE RÉSULTATS PAR L'UTILISATION DE CE LOGICIEL. LA SOCIÉTÉ NE DONNE AUCUNE AUTRE GARANTIE, EXPRESSEMENT OU IMPLICITEMENT. LA SOCIÉTÉ EXCLUT EXPRESSEMENT TOUTE GARANTIE DE LA QUALITÉ MARCHANDE, TOUTE GARANTIE D'ADÉQUATION À UN USAGE DÉTERMINÉ, TOUTE GARANTIE DE TITRE OU D'INTÉRÊT ET TOUTE GARANTIE DE NON-CONTREFACON.
-
-## 7. Limitation de responsabilité
-
-EN AUCUN CAS LA SOCIÉTÉ OU SES ACTIONNAIRES, ADMINISTRATEURS, DIRIGEANTS, EMPLOYÉS, SOCIÉTÉS AFFILIÉES, AUXILIAIRES ET AGENTS, OU TOUTES AUTRES PERSONNES LUI OU LEUR FOURNISSANT DES SERVICES, NE PEUVENT ÊTRE TENUS RESPONSABLE ENVERS L'UTILISATEUR OU UN TIERS DE TOUTE UTILISATION, INTERRUPTION, RETARD OU IMPOSSIBILITÉ D'UTILISATION DU LOGICIEL, DES REVENUS OU GAINS PERDUS, DES RETARDS, DES INTERRUPTIONS ET PERTES DE SERVICES, D'AFFAIRES OU CLIENTÈLE, DES PERTES OU CORRUPTION DE DONNÉES, DES PERTES RÉSULTANT DU SYSTÈME OU DE DÉFAILLANCES DU SYSTÈME, DU MAUVAIS FONCTIONNEMENT OU DU BLOCAGE DU LOGICIEL, DES ÉCHECS DE TRANSFERTS, DE LECTURE OU DE TRANSMISSION D'INFORMATIONS, DES ÉCHECS DE MISES À JOUR OU DE PRÉSENTATIONS D'INFORMATIONS CORRECTES, DE L'INCOMPATIBILITÉ DU SYSTÈME OU DE LA FOURNITURE D'INFORMATIONS COMPTABLES ERRONÉES OU DES FAILLES DE SÉCURITÉ DU SYSTÈME, OU POUR TOUT AUTRE DOMMAGE CONSÉCUTIF, ACCIDENTEL, INDIRECT, EXEMPLAIRE, SPÉCIAL OU PUNITIF, DÉCOULANT DE OU LIEU À CE CONTRAT, LA VIOLATION DE CE CONTRAT, LE DÉLIT (Y COMPRIS LA NÉGLIGENCE) OU AUTRE, PEU IMPORTE QUE LE DOMMAGE AIT ÉTÉ PRÉVISIBLE OU QUE NOUS ÉTIONS OU NON INFORMÉS DE LA POSSIBILITÉ D'UN TEL DOMMAGE. EN AUCUN CAS LA SOCIÉTÉ OU SES ACTIONNAIRES, ADMINISTRATEURS, DIRIGEANTS, EMPLOYÉS, SOCIÉTÉS AFFILIÉES, AUXILIAIRES ET AGENTS, OU TOUTE AUTRE PERSONNE LUI FOURNISSANT DES SERVICES, NE PEUVENT ÊTRE TENUS RESPONSABLES POUR TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION EN RESPONSABILITÉ CONTRACTUELLE, DÉLICTUELLE, DÉCOULANT DE L'ACCÈS AU COMPTE D'UTILISATEUR, DE L'UTILISATION OU DE L'INSTALLATION DU LOGICIEL. CERTAINES JURIDICTIONS INTERDISENT L'EXCLUSION OU LA LIMITATION DE LA RESPONSABILITÉ POUR DOMMAGES ACCIDENTELS OU INDIRECTS, DE SORTE QUE CETTE LIMITATION DE RESPONSABILITÉ PEUT DONC NE PAS ÊTRE APPLICABLE À L'UTILISATEUR. SI L'UTILISATEUR N'EST PAS SATISFAIT DU LOGICIEL, IL EST DE SA SEULE RESPONSABILITÉ DE NE PLUS CONTINUER D'UTILISER LE LOGICIEL.
-
-## 8. Indemnisation
-
-L'Utilisateur s'engage à indemniser, de dégager de toute responsabilité et de défendre la Société, ses actionnaires, administrateurs, dirigeants, employés, Sociétés affiliées, auxiliaires et agents ("les Parties indemnisées") contre toute action, cause, réclamation, dommage, dette, demande ou responsabilité, y compris les frais liés et les honoraires d'avocats, qui sont introduits ou invoqués par toute personne, découlant de ou relatifs à: (a) ce contrat; (b) l'accès, l'utilisation et l'installation du Logiciel par l'Utilisateur, y compris toute donnée ou travail transmis ou reçu par l'Utilisateur, et (c) toute utilisation inacceptable du Logiciel par toute personne, y compris, sans limitation, toute déclaration, toute donnée et tout contenu créé, transmis ou republié, interdite en vertu de l'article 4, par l'Utilisateur ou toute personne. CET INDEMNISATION COMPREND EXPRESSEMENT L'INDEMNISATION DE LA SOCIÉTÉ ET DES PARTIES INDEMNISÉES POUR TOUTE NÉGLIGENCE (Y COMPRIS TOUTE NÉGLIGENCE GRAVE PRÉSUMÉE) ET TOUT MANQUEMENT PRÉSUMÉ DE LA SOCIÉTÉ OU DE TOUTE PARTIE INDEMNISÉE.
-
-## 9. Propriété intellectuelle
-
-La Société conserve tous les droits, titres et intérêts relatifs à toutes les marques, logos, marques déposées de la Société, y compris, mais sans s'y limiter, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi APP, et toute variation de ces marques, logos et marques déposées mentionnées ci-dessus.
-
-## 10. Avertissements
-
-L'Utilisateur reconnaît que la Société n'est pas responsable du transfert, de la sauvegarde et de la conservation des clés privées et/ou des ADAs et autres crypto-monnaies de l'Utilisateur. Si l'Utilisateur ou/et les autorités co-signataires perdent, gèrent mal ou se font voler des clés privées, ou si les co-signataires refusent de fournir l'autorisation requise, l'Utilisateur reconnaît qu'il ne sera pas en mesure de récupérer ses ADAs ou autres crypto-monnaies, et que la Société n'est pas responsable de ces pertes.
-
-L'Utilisateur reconnaît et accepte que les transactions d'ADA ou d'autres crypto-monnaies faites par le Logiciel et/ou la compagnie risquent d'être retardées, et que la Société n'est pas responsable pour les pertes relatives à ces retards. L'Utilisateur reconnaît et accepte que la Société n'est pas responsable de toute information, contenu ou service proposé par des Logiciels tiers et sur les sites de tiers accessibles par ou liés au Logiciel et/ou à la Société.
-
-L'Utilisateur s'engage à ne jamais partager son certificat d'Utilisateur avec quelconque personne physique ou morale, y compris la Société, la fondation Cardano, Input Output HK Limited, ou toute autre entité. De plus, l'Utilisateur reconnaît que partager son certificat d'Utilisateur peut résulter en la perte d'ADAs ou autres crypto-monnaies de l'Utilisateur, et l'Utilisateur accepte que la Société n'est pas responsable de ces pertes. L'Utilisateur reconnaît et accepte qu'en utilisant de l'ADA sur le testnet, l'Utilisateur échange uniquement de l'ADA-test, et que pour échanger de l'ADA véritable, l'Utilisateur doit répéter la procédure sur le réseau principal (mainnet), une fois ce dernier disponible.
-
-En utilisant le Logiciel, l'Utilisateur reconnaît et accepte: (i) que la Société n'est pas responsable du fonctionnement et des opérations des protocoles sous-jacents et que la Société ne donne aucune garantie quant à leurs fonctionnalités, sécurité ou disponibilité; et (ii) que les protocoles sous-jacents sont soumis à des changements soudains dans leurs règles d'exploitation ("Forks"), et qu'un Fork peut affecter sensiblement la valeur ou/et la fonction de l'ADA et des autres crypto-monnaies que l'Utilisateur sauvegarde dans le Logiciel. En cas de Fork, l'Utilisateur accepte que la Société puisse temporairement suspendre les opérations du Logiciel (avec ou sans avis à l'Utilisateur) et que la Société puisse, à sa seule discrétion, (a) configurer ou reconfigurer son système ou (b) décider de ne pas supporter (ou cesser de supporter) le protocole de la Fork, à condition que l'Utilisateur ait la possibilité de retirer ses fonds du Logiciel. L'Utilisateur reconnaît et accepte que la Société n'assume absolument aucune responsabilité de quelconque nature, que ce soit à l'égard d'une branche non supportée suite à un Fork du protocole.
-
-## 11. Divers
-
-**a. Modifications.** La Société a le droit, à tout temps et sans préavis, d'ajouter ou de modifier les dispositions de ce contrat, en transmettant simplement les dispositions modifiées à l'Utilisateur par message électronique à toute adresse fournie à la Société par l'Utilisateur. L'accès et l'utilisation du Logiciel par l'Utilisateur après la notification d'un changement de conditions est considéré comme une acceptation des conditions modifiées.
-
-**b. Indemnité de départ.** Si une disposition ou une disposition partielle de la présente convention est ou devient invalide, illégale ou inexécutable, elle sera considérée comme modifiée dans la mesure minimale nécessaire pour la rendre valide, légale et exécutoire. Si une telle modification n'est pas possible, la disposition ou la partie de la disposition concernée est considérée supprimée. Toute modification ou suppression d'une disposition ou d'une disposition partielle en vertu du présent article n'affecte pas la validité et le caractère exécutoire du reste de ce contrat.
-
-**c. Intégralité de l'entente - Avis de non-responsabilité.**. La présente entente constitue l'entente intégrale entre les parties à l'égard de l'objet mentionné et remplace tous les accords ou ententes antérieures entre les parties. L'Utilisateur déclare et garantit expressément qu'il ne se fie pas à des déclarations, ententes, représentations, attentes ou ententes autres que celles expressément énoncées dans ce contrat.
-
-**d. LE PRÉSENT CONTRAT EST ASSUJETTI À L'ARBITRAGE EXÉCUTOIRE.** L'Utilisateur accepte que tout litige ou réclamation contre toute personne découlant du présent Contrat, de quelque manière, que ce soit en relation avec celui-ci ou avec l'accès, l'utilisation ou l'installation du Logiciel par l'Utilisateur ou toute autre personne sera soumis à l'arbitrage obligatoire en vertu du Règlement d'arbitrage de la Chambre de commerce internationale par un ou plusieurs arbitres nommés conformément aux dites règles. Le lieu de l'arbitrage sera le Japon. La langue de l'arbitrage sera l'anglais.
-
-**e. LANGUE.** Toute traduction du présent Contrat est faite à des fins de référence locale uniquement, et en cas d'incohérence entre les versions anglaise et non anglaise, la version anglaise du présent Contrat prévaudra à tous égards.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/hr-HR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/hr-HR.md
deleted file mode 100644
index e7a3391e12..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/hr-HR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Terms of Service Agreement
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/hu-HU.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/hu-HU.md
deleted file mode 100644
index 892f0c60cb..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/hu-HU.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Szolgáltatás Feltételei és Megállapodás
-
-A SZOLGÁLTATÁS FELTÉTELEI és MEGÁLLAPODÁSA ("Megállapodási Egyezmény") az EMURGO Co., Ltd. ("Vállalat") és bármely olyan személy vagy szervezet ("Felhasználó") között jönnek létre, akik befejezik a folyamatot a szoftver néven ismert szoftver letöltésére, felhasználására vagy működtetésére. Yoroi kriptovaluta Pénztárca alkalmazás, valamint adatfeldolgozási szolgáltatás, alkalmazás, kommunikációs szolgáltatás vagy más tartalom, vagy a Vállalat által kínált vagy a szoftver által biztosított ("Szoftver"). A Vállalatot és a Felhasználót együttesen "Feleknek" nevezzük. A FELHASZNÁLÓ GOMBRA KATTINTÁSÁVAL, VAGY A SZOFTVER BÁRMELYÉNEK HOZZÁFÉRÉSÉVEL, HASZNÁLATÁVAL VAGY TELEPÍTÉSÉVEL A FELHASZNÁLÓ JOGI KÖTELEZETTSÉGET VÁLLAL A MEGÁLLAPODÁS MINDEN FELTÉTELE ÁLTAL. HA A FELHASZNÁLÓ NEM EGYEZIK MEG A MEGÁLLAPODÁS MINDEN FELTÉTELÉVEL, A FELHASZNÁLÓ NEM JOGOSULT A SZOFTVER SEMMILYEN RÉSZÉNEK HOZZÁFÉRÉSÉRE, HASZNÁLATÁRA ÉS TELEPÍTÉSÉRE.
-
-## Jogok és Kötelezettségek
-
-** a. Leírás. ** A szoftver ingyenes, nyitott kódú, digitális kriptovaluta pénztárcaként működik. A Szoftver nem minősül olyan számlának, amelyen keresztül a Társaság vagy bármely más harmadik fél pénzügyi közvetítőként vagy a Felhasználó ADA vagy bármely más kriptovaluta letétkezelőjeként szolgál. A Szoftvert béta teszten vetették át, és a fejlesztői közösség, a nyílt forráskódú közreműködők és a béta-tesztelők visszajelzései tovább javítják, a Társaság nem tudja garantálni, hogy a Szoftverben nem lesznek hibák. A Felhasználó tudomásul veszi, hogy a Szoftver Felhasználó általi használata a Felhasználó felelősségére, belátása szerint és az összes alkalmazandó törvénynek megfelelően történik. A felhasználó felelős a felhasználói jelszavak, PIN-kódok, magánkulcsok, visszaváltási kulcsok, árnyékolt árusító kulcsok, biztonsági mentési helyreállító memóriajelek, ADA-kódok és minden más kód felhasználásáért, amelyet a Felhasználó használ a Szoftverhez vagy bármilyen információhoz, ADA-hoz, utalványhoz vagy más kriptovaluta egységhez való hozzáféréshez. HA A FELHASZNÁLÓ ELVESZTI A FELHASZNÁLÓI KRIPTOVALUTA TÁRCÁT VAGY PRIVÁT KULCSAIT. NEM TÁROLTA BIZTONSÁGBAN A FELHASZNÁLÓI KRIPTOVALUTA TÁRCÁJA TÁMOGATÁSÁNAK MINTÁJÁT, VAGY BIZTONSÁGI MENTÉSEIT MNEMONIKUS PHRASE (S) ÉS HASZNÁLHATÓ JELSZÓ (S). A FELHASZNÁLÓ ELISMERI, ÉS KÖTELEZETTSÉGET VÁLLAL, HOGY BÁRMENNYI ADA, VAGY BÁRMELY MÁS KRIPTOVALUTA FELHASZNÁLÓJAKÉNT A PÉNZTÁRCA HOZZÁFÉRHETETLEN LESZ. Minden tranzakciós kérelem visszavonhatatlan. A Társaság és részvényesei, igazgatói, tisztségviselői, alkalmazottai, leányvállalatai és ügynökei nem garantálhatják a tranzakció megerősítését, és nem nyerhetik le a Felhasználó magánkulcsát vagy jelszavát, ha a felhasználó elveszíti vagy elfelejti azokat.
-
-** b. Hozzáférhetőség. ** A felhasználó egyetért azzal, hogy időről időre a Szoftver bármilyen okból elérhetetlen vagy működésképtelen lehet, beleértve, korlátozás nélkül: (i) a berendezés hibás működését; (ii) időszakos karbantartási eljárások vagy javítások, amelyeket a Vállalat időről időre elvégezhet; vagy (iii) a Vállalat befolyásán kívül eső okokat okoz, vagy amelyeket a Vállalat észszerűen nem lát előre.
-
-** c. Üzemeltetés. ** A Felhasználó felelőssége a Szoftverrel való kompatibilitás, az összes hardver, szoftver, elektromos és egyéb fizikai követelmény biztosítása, fenntartása és biztosítása a Szoftver Felhasználó általi használatához, ideértve korlátozás nélkül a távközlési és az internet-hozzáférést és a szoftver eléréséhez és használatához szükséges linkek, webböngészők vagy egyéb berendezések, programok és szolgáltatások.
-
-** d. Biztonság. ** Kizárólag a Felhasználó felelős minden olyan információ és tartalom biztonságáért, titkosságáért és integritásáért, amelyet a Felhasználó kap, továbbít vagy tárol a Szoftveren. A Felhasználó kizárólagos felelősséggel tartozik a Felhasználó bármely fiókjához való bármilyen engedélyezett vagy illetéktelen hozzáférésért. A Felhasználó vállalja, hogy minden felelősséget vállal a Felhasználó biztonsági eszközeinek, információinak, kulcsainak és jelszavainak titkosságáért.
-
-** e. Adatvédelem. ** A felhasználó elfogadja, hogy a Vállalat megpróbálja tiszteletben tartani a Felhasználó adatait. A Vállalat nem fog figyelni, szerkeszteni vagy nyilvánosságra hozni a Felhasználó semmilyen személyes információját. A Felhasználó vagy Felhasználó fiókjával kapcsolatos személyes adatokról, beleértve annak tartalmát vagy a Szoftver használatát a Felhasználó előzetes beleegyezése nélkül. Kivéve, ha a Vállalat jóhiszeműen úgy véli, hogy ilyen lépésekre van szükség: betartani bármely kormányzati jogi eljárást vagy más jogi követelményeket; (ii) véd és megvédi a Vállalat jogait vagy tulajdonát; (iii) érvényesíti ezt a megállapodást; (iv) megvédi a Szoftver felhasználói, nem Felhasználó vagy más személyek érdekeit; vagy (v) a Vállalat szolgáltatásainak vagy felszerelésének üzemeltetése vagy karbantartása és javítása, ideértve a Szoftvert is, a törvény által engedélyezett módon. A felhasználónak általában nincs elvárása a magánélet védelméről az Internet vonatkozásában. A felhasználó IP-címét minden egyes üzenet vagy más információ elküldi és rögzíti, amelyet a felhasználó a szoftverből küld.
-
-## 2. Adók és Díjak
-
-Minden valutaváltási költség, a harmadik fél díja, értékesítés, felhasználás, hozzáadottérték, érték, személyi tulajdon vagy bármilyen egyéb adó, illeték vagy beleértve az azokra vonatkozó kamatokat és büntetéseket, függetlenül attól, hogy azokat most vagy később bármely kormányzati szerv kiszabta. A Felhasználó hozzáférése, a Szoftver használata vagy telepítése miatt a Felhasználó kizárólagos felelőssége.
-
-## 3. Felhasználói Nyilatkozat
-
-A felhasználó kijelenti és megegyezik a Vállalattal, hogy: (a) ha a felhasználó természetes személy, akkor a felhasználó tizennyolc évesnél idősebb (18); (b) A felhasználó rendelkezik hatáskörrel és felhatalmazással a jelen Megállapodás szerinti Felhasználói kötelezettségek vállalására és teljesítésére; (c) a Felhasználó által a Vállalatnak átadott minden információ valósághű, pontos és teljes; (d) A Felhasználó betartja az alkalmazandó joghatóság minden törvényét és rendelkezését a Felhasználó hozzáférése, a Szoftver használata vagy telepítése tekintetében; (e) A felhasználónak be kell tartania a jelen Megállapodás összes feltételét, beleértve korlátozás nélkül a 4. szakaszban foglaltakat; és (f) A Felhasználó pontos és teljes körű információt adott és fog nyújtani, amire szükség van a Szoftver eléréséhez, használatához vagy telepítéséhez.
-
-## 4. Tiltott Felhasználások
-
-A Felhasználó kizárólagos felelősséggel tartozik minden olyan cselekményért és mulasztásért, amely a Felhasználó fiókjában, a biztonsági információkban, a kulcsokban vagy a jelszóban történik, és a Felhasználó vállalja, hogy nem folytatja a Szoftver elfogadhatatlan használatát, amely korlátozás nélkül magában foglalja a Szoftver használatát: a) kéretlen üzenetek, lánclevelek vagy kéretlen kereskedelmi e-mailek terjesztése, tárolása vagy továbbítása; b) olyan anyagokat terjeszthet vagy továbbíthat, amelyek megalapozott személyek számára erőszakosak, obszcének, pornográfiai, rágalmazóak, zaklatóak, durván sértőek, vulgárisak, fenyegetőek vagy rosszindulatúak lehetnek; (c) olyan fájlokat, grafikákat, szoftvereket vagy egyéb anyagokat terjeszt, tárol vagy továbbít, amelyek ténylegesen vagy potenciálisan sértik bármely személy szerzői jogát, védjegyét, szabadalmát, üzleti titkát vagy más szellemi tulajdonjogát; d) hamis személyazonosságot teremtsen, vagy más módon megkíséreljen félrevezetni senkit bármely kommunikáció személyazonosságát vagy eredetét illetően; e) bármely üzenet vagy tartalom exportálása, újrakivitelezése vagy letöltésének engedélyezése az export- vagy importtörvények, bármely vonatkozó joghatósági szabályozás vagy korlátozás megsértésével, vagy minden szükséges jóváhagyás, engedély vagy mentesség nélkül; (f) beavatkozni, megzavarni vagy megkísérelni illetéktelen hozzáférést szerezni a Szoftver vagy bármely más számítógépes hálózat más fiókjaihoz; vagy (g) vírusokat, trójai falovakat vagy bármilyen más rosszindulatú kódot vagy programot terjeszt, tárol vagy továbbít.
-
-## 5. Megszüntetés
-
-Ez a Megállapodás a Felhasználónak az itt meghatározottak szerint történő elfogadásakor lép hatályba, és teljes mértékben érvényben marad mindaddig, amíg a Felhasználó részt vesz a Szoftver bármilyen hozzáférésében, használatában vagy telepítésében. A Vállalat fenntartja a jogot, saját belátása szerint és előzetes értesítés nélkül, bármikor és bármilyen okból: (a) eltávolítja vagy letiltja a Szoftver egészéhez vagy annak bármely részéhez való hozzáférést; (b) felfüggeszti a Felhasználó hozzáférését a Szoftver egészéhez vagy annak bármely részéhez vagy annak használatát; és c) felmondja ezt a megállapodást.
-
-## 6. Jótállás Kizárása
-
-A SZOFTVER "TELJESEN" BIZTOSÍTVA VAN GARANCIA NÉLKÜL. A SZOFTVER HASZNÁLATA A FELHASZNÁLÓ KOCKÁZATÁRA VAN. A TÁRSASÁG NEM GARANTÁLJA, HOGY A SZOFTVER MEGSZAKÍTÁS VAGY HIBÁSMENTES. A VÁLLALAT SEMMILYEN SZAVATOSSÁGOT NEM VÁLLAL A SZOFTVER HASZNÁLATÁVAL ELÉRHETŐ EREDMÉNYEKRE. A VÁLLALAT KIFEJEZETTEN KIZÁRJA AZ ELADHATÓSÁG GARANCIÁJÁT, A KÜLÖNLEGES CÉLRA VONATKOZÓ ALKALMASSÁG GARANCIÁJÁT, A CÍM VAGY KAMAT GARANCIÁJÁT, VAGY A NEM TELJESÍTÉS GARANCIÁT.
-
-## 7. A Felelősség Korlátozása
-
-A VÁLLALAT ÉS RÉSZVÉNYEI NEM VONHATÓAK FELELŐSSÉGRE FELHASZNÁLÓKKAL, VAGY HARMADIK FELEKKEL, HIVATALI TISZTVISELŐKKEL, ALKALMAZOTTAKKAL, ÜGYNÖKÖKKEL, VAGY BÁRMILYEN SZOLGÁLTATÓVAL. A SZOFTVER HASZNÁLATA, KÉSLELTETÉS VAGY HASZNÁLATLAN, ELVESZTETT BEVÉTELEK, EREDMÉNYEK, KÉSLELTETÉSEK, SZOLGÁLTATÁSOK MEGSZAKÍTÁSA VAGY VESZTESÉG, ÜZLETI VAGY SZÁRMAZÁS, ADATOK VESZTÉSE VAGY KORBORZÁSA, RENDSZERBEN VAGY RENDSZERSZOLGÁLTATÁSI HIBÁBÓL, MŰKÖDÉSBŐL VAGY LEÁLLÍTÁSI HIBÁBÓL NEM TALÁLHATÓ HELYES INFORMÁCIÓKAT, A RENDSZER ÖSSZEEGYEZTETHETETLENSÉGÉT, VAGY HELYTELEN KOMPATIBILITÁSI INFORMÁCIÓK BIZTOSÍTÁSÁT, VAGY A RENDSZER BIZTONSÁGÁNAK MEGSÉRTÉSÉT, VAGY BÁRMILYEN KÖVETKEZMÉNYÉT, BŰNCSELEKMÉNYT OKOZHAT, HA NEM JÖN LÉTRE, VAGY NEM TÖRTÉNIK. VAGY EGYÉBBEN, FOGLALVA AZ, HOGY AZ ILYEN KÁROK ELŐRELÁTHATÓAK VOLTAK-E, ÉS HOGY FIGYELMEZTETÉST KAPTUNK-E VAGY SEM AZ ILYEN KÁROK LEHETŐSÉGEIRŐL. A VÁLLALAT ÉS RÉSZVÉNYEI SEMMILYEN MÓDON NEM VÁLLAL FELELŐSSÉGET, SEMMILYEN KÖVETELMÉNYEKNEK, KÁROKNAK, ÉS EGYÉB FELELŐSSÉGÉRT. SZERZŐDÉSBEN, VAGY SZERZŐDÉSEKKÉNT EGYÉBBEN, A FELHASZNÁLÓ FELHASZNÁLÓJÁHOZ KAPCSOLÓDÓ VAGY BÁRMILYEN FELTÉTELEKBEN, A SZOFTVER HASZNÁLATÁBAN VAGY TELEPÍTÉSÉBEN. NÉHÁNY JOGHATÁSOK MEGTAGADJÁK AZ ESETES VAGY KÖVETKEZŐ KÁROK KIZÁRÁSÁT VAGY KORLÁTOZÁSÁT, EZ A FELELŐSSÉG E KORLÁTOZÁSA NEM VONATKOZHATÓ A FELHASZNÁLÓRA. HA A FELHASZNÁLÓ ELFOGADTA A SZOFTVERRŐL, A FELHASZNÁLÓ EGYÉB ÉS KIZÁRÓLAGOS JOGORVOSLATÁT FELHASZNÁLÓ A FELHASZNÁLÓ SZÁMÁRA.
-
-## 8. Kártérítés
-
-A Felhasználó vállalja, hogy kártalanítja, ártalmatlannak tartja és megvédi a Vállalatot, részvényeseit, igazgatóit, tisztjeit, alkalmazottjait, leányvállalatait és ügynökeit ("Kártalanított Felek") minden cselekedettől, okból, követelésből, kárból, adósságból, követelésből vagy felelősségből, beleértve a megalapozott bármely személy által állított költségek és ügyvédi díjak, amelyek a következőkből származnak vagy azokhoz kapcsolódnak: (a) ez a megállapodás; (b) a felhasználó hozzáférése a szoftverhez, annak használata vagy telepítése, beleértve a felhasználó által továbbított vagy fogadott adatokat vagy műveket; és (c) a Szoftver bármilyen elfogadhatatlan használata bármely személy részéről, beleértve korlátozás nélkül a Felhasználó vagy bármely személy által készített, továbbított vagy újraközölt bármely nyilatkozatot, adatot vagy tartalmat, amelyet 4. EZ A KÖVETELÉS A TÁRSASÁG ÉS A TÁRSASÁG KIFEJEZETT KÁRTALANÍTÁSÁT TARTALMAZZA (BELEÉRTVE BÁRMI ÁLLÍTÓLAGOS GONDATLANSÁG )VAGY MÁS ÁLLÍTÓLAGOS FELHASZNÁLÁS A VÁLLALAT KÁRPÓTOL A FELEKNEK.
-
-## 9. Szellemi Tulajdon
-
-A Vállalat fenntartja a Vállalat összes márkájához, logójához és védjegyéhez fűződő minden jogot, tulajdonjogot és érdekeltséget, beleértve, de nem kizárólag, az EMURGO Co., Ltd., az EMURGO, a Yoroi, a Yoroi kriptovaluta pénztárca, a Yoroi pénztárca, a Yoroi Alkalmazás és a fent említett márkák, logók és védjegyek szövegének variációi.
-
-## 10. Figyelmeztetések
-
-A felhasználó tudomásul veszi, hogy a Vállalat nem felelős a magánkulcsok és / vagy a felhasználó ADA-jának vagy bármely más kriptovaluta átadásáért, megőrzéséért vagy fenntartásáért. Ha a felhasználó és / vagy bármelyik társaláíró hatóság elveszíti, rosszul kezeli vagy ellopják a társított magánkulcsokat, vagy ha a felhasználó társjegyzői nem hajlandók megadni a szükséges jogosultságot, akkor a felhasználó tudomásul veszi, hogy a felhasználó nem tudja helyreállítani a felhasználó ADA-ját vagy bármely más kriptovalutát, és hogy a Vállalat nem felelős az ilyen veszteségekért.
-
-A felhasználó tudomásul veszi és elfogadja, hogy az ADA vagy bármely más, a Szoftver és /vagy a Vállalat által elősegített kriptovaluta tranzakció késhet, és a Vállalat nem felelős semmilyen kapcsolódó veszteségért. A Felhasználó tudomásul veszi és egyetért azzal, hogy a Vállalat nem felelős semmilyen, a Szoftverhez és / vagy a Vállalathoz hozzáférhető vagy ahhoz kapcsolódó, harmadik fél által készített anyagban vagy bármely harmadik fél webhelyén található információ, tartalom vagy szolgáltatás bármely aspektusáért.
-
-A felhasználó egyetért azzal, hogy a Felhasználó soha ne ossza meg a Felhasználói tanúsítványt semmilyen természetes vagy jogi személlyel, beleértve a Vállalatot, a Cardano Alapítványt, az Input Output HK Limited-et vagy más szervezetet. A Felhasználó tudomásul veszi továbbá, hogy a Felhasználói tanúsítvány megosztása a felhasználó ADA-jának vagy bármely más kriptovaluta elveszítéséhez vezethet, és a Felhasználó beleegyezik, hogy a Vállalat nem felel az ilyen veszteségekért. A felhasználó tudomásul veszi és egyetért azzal, hogy az ADA tesztnetben történő beváltásával a Felhasználó csak a test-ADA-t váltja be, és hogy a tényleges ADA beváltásához a Felhasználónak meg kell ismételnie az eljárást a mainnet-ben, miután kiadta.
-
-A Szoftver használatával a Felhasználó tudomásul veszi és elfogadja: (i) hogy a Vállalat nem felelős az alapul szolgáló protokollok működéséért, és hogy a Vállalat nem vállal garanciát azok működésére, biztonságára vagy elérhetőségére; és (ii) hogy az alapul szolgáló protokollok hirtelen főlánc-változásoknak vannak kitéve az üzemeltetési szabályokban ("villák"), és hogy ezek a villák jelentősen befolyásolhatják az ADA vagy bármely más kriptovaluta értékét és / vagy funkcióját, amelyet a Felhasználó tárol a szoftver. Elágazás esetén a Felhasználó beleegyezik abba, hogy a Vállalat ideiglenesen felfüggesztheti a Szoftver működését (a Felhasználó értesítésével vagy anélkül), és hogy a Társaság saját belátása szerint (a) konfigurálhatja vagy újrakonfigurálhatja rendszereit, vagy (b) dönthet nem támogatja (vagy nem szünteti meg) a forked protokoll teljes támogatását, feltéve, hogy a Felhasználónak lehetősége nyílik pénzeszközök visszavonására a szoftverből. A felhasználó tudomásul veszi és egyetért azzal, hogy a Vállalat semmiféle felelősséget nem vállal az forked protokoll nem támogatott ágával szemben.
-
-## 11. Egyéb Szerződési Feltételek
-
-** a. Módosítás. ** A Vállalatnak bármikor előzetes értesítés nélkül joga van hozzá, hogy kiegészítse vagy módosítsa a jelen Szerződés feltételeit, egyszerűen azáltal, hogy az ilyen módosított feltételeket elektronikus úton, bármilyen adathordozón keresztül eljuttatja a Felhasználóhoz a megadott címre a Vállalat által. A Felhasználónak a Szoftverhez való hozzáférése vagy a Szoftver használata az ilyen módosított feltételek Felhasználónak történő átadásának időpontját követően a módosított feltételek elfogadásának minősül.
-
-** b. Szerződés Megszakítása.** Ha a jelen Megállapodás bármely rendelkezése vagy részbeni rendelkezése érvénytelenné, illegálissá vagy végrehajthatatlanná válik, vagy azt érvénytelenné, törvényessé és érvényesíthetővé tételéhez szükséges mértékben módosítottnak kell tekinteni. Ha ez a módosítás nem lehetséges, a vonatkozó rendelkezést vagy részintézkedést töröltnek kell tekinteni. Az e cikk szerinti rendelkezés vagy részintézkedés bármilyen módosítása vagy törlése nem érinti a megállapodás többi részének érvényességét és végrehajthatóságát.
-
-** c. Teljes megállapodás - Megbízhatósági Nyilatkozat. ** Ez a Megállapodás a Felek között létrejött teljes megállapodást képezi a jelen tárgyban, és a Felek között minden korábbi megállapodást vagy egyetértést felülír. A felhasználó kifejezetten kijelenti és felelősséget vállal, hogy nem támaszkodik semmilyen nyilatkozatra, megértésre, kijelentésre, elvárásra vagy megállapodásra, kivéve a jelen Megállapodásban kifejezetten meghatározottakat.
-
-**d. EZEN MEGÁLLAPODÁS A KÖTELEZETT BÍRÓI DÖNTÉS.** A Felhasználó egyetért azzal, hogy a jelen Szerződésből vagy a Szoftver Felhasználó általi hozzáféréséből, használatából vagy telepítéséből eredő vagy bármilyen módon felmerülő bármely vitát vagy követelést bármely személy ellen kötelező választott bírósági eljárás alá vonni a választott bírósági szabályok szerint a Nemzetközi Kereskedelmi Kamara egy vagy több, az említett szabályoknak megfelelően kinevezett választott bíró által. A választott bíráskodás helyszíne Japán. A választott bíróság nyelve angol.
-
-** e. NYELV. ** A jelen Megállapodás bármilyen fordítása kizárólag helyi hivatkozás céljából készül, és az angol és a nem angol nyelvű változatok közötti ellentmondás esetén a jelen megállapodás angol változata minden szempontból irányadó és szabályoz.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/id-ID.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/id-ID.md
deleted file mode 100644
index 836e8fe83a..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/id-ID.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Perjanjian Ketentuan Layanan
-
-PERJANJIAN KETENTUAN LAYANAN INI ("Perjanjian") dibuat antara EMURGO Co., Ltd. ("Perusahaan") dan setiap orang atau entitas ("Pengguna") yang menyelesaikan proses untuk mengunduh, menggunakan, atau mengoperasikan perangkat lunak yang dikenal sebagai Aplikasi Yoroi cryptocurrency Wallet, dan layanan pemrosesan data, aplikasi, layanan komunikasi atau konten lainnya atau ditawarkan atau disediakan dengan perangkat lunak oleh Perusahaan ("Perangkat Lunak"). Perusahaan dan Pengguna secara kolektif disebut sebagai "Para Pihak". DENGAN MENGKLIK TOMBOL PENERIMAAN ATAU MENGAKSES, MENGGUNAKAN ATAU MENGINSTAL BAGIAN DARI PERANGKAT LUNAK, PENGGUNA MENYETUJUI SECARA EKSPRESI KEPADA DAN PERSETUJUAN UNTUK DIADAKAN SECARA SECARA HUKUM DENGAN SEMUA PERSYARATAN PERJANJIAN INI. JIKA PENGGUNA TIDAK MENYETUJUI SEMUA PERSYARATAN PERJANJIAN INI, PENGGUNA TIDAK AKAN berwenang untuk MENGAKSES, MENGGUNAKAN ATAU MENGINSTAL BAGIAN DARI PERANGKAT LUNAK.
-
-## 1. Hak dan Kewajiban
-
-**a. Deskripsi.** Perangkat Lunak berfungsi sebagai dompet cryptocurrency digital gratis dan open source. Perangkat Lunak ini bukan merupakan akun di mana Perusahaan atau pihak ketiga lainnya yang berfungsi sebagai perantara keuangan atau penjaga para pengguna ADA atau mata uang kripto lain. Sementara Perangkat Lunak telah menjalani pengujian beta dan terus ditingkatkan dengan feedback dari komunitas developer, kontributor open-source dan beta-tester, Perusahaan tidak dapat menjamin bahwa tidak akan ada bug dalam Perangkat Lunak. Pengguna mengakui bahwa penggunaan Perangkat Lunak oleh Pengguna adalah risiko, kebijaksanaan dan kepatuhan Pengguna terhadap semua hukum yang berlaku. Pengguna bertanggung jawab atas penyimpanan kata sandi, PIN, private key, redemption key, shielded vending key, backup pemulihan frasa sandi mnemonik, passcode ADA dan kode lain apa pun yang digunakan Pengguna untuk mengakses Perangkat Lunak atau informasi, ADA, voucher, atau unit cryptocurrency lainnya. JIKA PENGGUNA KEHILANGAN AKSES KE WALLET CRYPTOCURRENCY ATAU PRIVATE KEY DAN TIDAK MENYIMPAN BACKUP WALLET CRYPTOCURRENCY ATAU BACKUP RECOVERY FRASA MNEMONIC DAN KATA SANDI YANG BERKAITAN, PENGGUNA MENGAKUI DAN MENYETUJUI BAHWA ADA ATAU CRYPTOCURRENCY LAIN NYA YANG BERKAITAN DENGAN WALLET CRYPTOCURRENCY AKAN MENJADI TIDAK DAPAT DIAKSES. Semua permintaan transaksi tidak dapat dibatalkan. Perusahaan dan pemegang saham, direktur, pejabat, karyawan, afiliasi, dan agennya tidak dapat menjamin konfirmasi transaksi atau mengembalikan private key atau kata sandi Pengguna jika Pengguna kehilangan atau melupakannya.
-
-**b. Aksesibilitas.** Pengguna setuju bahwa dari waktu ke waktu Perangkat Lunak mungkin tidak dapat diakses atau tidak dapat dioperasikan karena alasan apa pun, termasuk, tanpa batasan: (i) kerusakan peralatan; (ii) prosedur pemeliharaan berkala atau perbaikan yang dapat dilakukan Perusahaan dari waktu ke waktu; atau (iii) dikarenakan hal yang ada di luar kendali Perusahaan atau yang tidak dapat diperkirakan secara wajar oleh Perusahaan.
-
-**c. Peralatan.** Pengguna bertanggung jawab penuh untuk menyediakan, memelihara, dan memastikan kompatibilitas dengan Perangkat Lunak, semua perangkat keras, perangkat lunak, listrik, dan persyaratan fisik lainnya untuk penggunaan Perangkat Lunak oleh Pengguna, tanpa batasan, telekomunikasi dan koneksi akses internet dan link, browser web atau peralatan lainnya, program, dan layanan yang diperlukan untuk mengakses dan menggunakan Perangkat Lunak.
-
-**d. Keamanan.** Pengguna sepenuhnya bertanggung jawab atas keamanan, kerahasiaan, dan integritas semua informasi dan konten yang diterima Pengguna, ditransmisikan, atau disimpan di Perangkat Lunak. Pengguna bertanggung jawab penuh atas akses yang diizinkan atau tidak ke akun Pengguna apa pun oleh siapa pun. Pengguna setuju untuk memegang semua tanggung jawab atas kerahasiaan perangkat keamanan, informasi, kunci, dan kata sandi Pengguna.
-
-**e. Privasi.** Ketika dapat dipraktikkan secara wajar, Perusahaan akan berusaha untuk menghormati privasi Pengguna. Perusahaan tidak akan memantau, mengedit, atau mengungkapkan informasi pribadi apa pun tentang Pengguna atau akun Pengguna, termasuk kontennya atau penggunaan Perangkat Lunak oleh Pengguna, tanpa persetujuan Pengguna sebelumnya kecuali jika Perusahaan yakin dengan itikad baik bahwa tindakan tersebut diperlukan untuk: (i) mematuhi proses hukum atau persyaratan hukum lainnya dari otoritas pemerintah mana pun; (ii) melindungi dan membela hak atau properti Perusahaan; (iii) menegakkan Perjanjian ini; (iv) melindungi kepentingan pengguna Perangkat Lunak selain Pengguna atau orang lain; atau (v) mengoperasikan atau melakukan pemeliharaan dan perbaikan layanan atau peralatan Perusahaan, termasuk Perangkat Lunak sebagaimana diizinkan oleh hukum. Pengguna tidak memiliki ekspektasi privasi sehubungan dengan Internet secara umum. Alamat IP pengguna dikirimkan dan dicatat dengan setiap pesan atau informasi lain yang dikirimkan Pengguna dari Perangkat Lunak.
-
-## 2. Pajak dan Biaya
-
-Semua biaya konversi mata uang, biaya pihak ketiga, penjualan, penggunaan, nilai tambah, properti pribadi atau pajak lainnya, bea atau pungutan dalam bentuk apa pun, termasuk bunga dan denda atasnya, baik yang dikenakan sekarang atau selanjutnya oleh entitas pemerintah, dan biaya yang dikeluarkan oleh Pengguna dengan alasan akses, penggunaan, atau instalasi Perangkat Lunak oleh Pengguna menjadi tanggung jawab Pengguna.
-
-## 3. Representasi Pengguna
-
-Pengguna menyatakan dan menjamin kepada Perusahaan bahwa: (a) jika Pengguna adalah orang yang secara alami berusia di atas delapan belas (18); (B) Pengguna memiliki kekuatan dan otoritas untuk masuk dan melakukan kewajiban Pengguna berdasarkan Perjanjian ini; (c) semua informasi yang diberikan oleh Pengguna kepada Perusahaan adalah benar, akurat dan lengkap; (D) Pengguna akan mematuhi semua hukum dan peraturan dari yurisdiksi yang berlaku sehubungan dengan akses, penggunaan, atau instalasi Perangkat Lunak oleh Pengguna; (e) Pengguna harus mematuhi semua syarat dan ketentuan Perjanjian ini, termasuk, tanpa batasan, ketentuan yang ditetapkan pada Bagian 4; dan (f) Pengguna telah menyediakan dan akan memberikan informasi yang akurat dan lengkap sebagaimana diperlukan untuk mengakses, menggunakan, atau menginstal Perangkat Lunak.
-
-## 4. Penggunaan Dilarang
-
-Pengguna bertanggung jawab penuh atas setiap dan semua tindakan dan kelalaian yang terjadi di bawah akun Pengguna, informasi keamanan, kunci atau kata sandi, dan Pengguna setuju untuk tidak terlibat dalam penggunaan Perangkat Lunak yang tidak dapat diterima, yang meliputi, tanpa batasan, penggunaan Perangkat Lunak untuk: ( a) menyebarkan, menyimpan atau mengirimkan pesan yang tidak diminta, surat berantai atau email komersial yang tidak diminta; (B) menyebarluaskan atau mengirimkan materi kepada orang yang kejam, cabul, pornografi, memfitnah, melecehkan, sangat ofensif, vulgar, mengancam atau jahat; (c) menyebarluaskan, menyimpan atau mengirimkan file, grafik, perangkat lunak, atau materi lain yang benar-benar atau berpotensi melanggar hak cipta, merek dagang, paten, rahasia dagang, atau hak kekayaan intelektual lainnya dari siapa pun; (d) membuat identitas palsu atau untuk mencoba menyesatkan orang lain mengenai identitas atau asal komunikasi apa pun; (e) mengekspor, mengekspor kembali atau mengizinkan pengunduhan pesan atau konten apa pun yang melanggar undang-undang ekspor atau impor, peraturan, atau pembatasan yurisdiksi apa pun yang berlaku, atau tanpa semua persetujuan, lisensi, atau pengecualian yang diperlukan; (f) mengganggu, mengganggu atau berupaya mendapatkan akses tidak sah ke akun lain pada Perangkat Lunak atau jaringan komputer lainnya; atau (g) menyebarkan, menyimpan atau mengirimkan virus, Trojan horse atau kode atau program jahat lainnya.
-
-## 5. Penghentian
-
-Perjanjian ini berlaku setelah penerimaan Pengguna sebagaimana ditentukan di sini dan akan terus berlaku penuh selama Pengguna masih mengakses, penggunaan atau instalasi Perangkat Lunak. Perusahaan berhak, atas kebijakannya sendiri dan tanpa pemberitahuan, kapan saja dan dengan alasan apa pun, untuk: (a) menghapus atau menonaktifkan akses ke semua atau sebagian dari Perangkat Lunak; (B) menangguhkan akses Pengguna ke atau menggunakan semua atau sebagian dari Perangkat Lunak; dan (c) mengakhiri Perjanjian ini.
-
-## 6. Penolakan Jaminan
-
-PERANGKAT LUNAK INI DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK TERSURAT MAUPUN TERSIRAT. PENGGUNAAN PERANGKAT LUNAK INI ADALAH RISIKO PENGGUNA SENDIRI. PERUSAHAAN TIDAK MENJAMIN BAHWA PERANGKAT LUNAK TERSEBUT TIDAK AKAN TERGANGGU ATAU BEBAS DARI KESALAHAN, JUGA TIDAK ADA PERUSAHAAN YANG MEMBERIKAN JAMINAN ATAS HASIL APA PUN YANG MUNGKIN DIPEROLEH DENGAN MENGGUNAKAN PERANGKAT LUNAK TERSEBUT. PERUSAHAAN SECARA TEGAS MENYANGKAL SEGALA JAMINAN YANG DAPAT DIPERJUALBELIKAN, JAMMINAN KESESUAIAN UNTUK TUJUAN TERTENTU, JAMINAN HAK ATAU KEPENTINGAN, ATAU JAMINAN TIDAK ADA PELANGGARAN.
-
-## 7. Batasan Tanggung Jawab
-
-DALAM HAL APA PUN PERUSAHAAN ATAU PEMEGANG SAHAM, DIREKTUR, PEJABAT, KARYAWAN, AFILIASI ATAU AGENNYA, ATAU SALAH SATU DARI PENYEDIA LAYANANNYA TIDAK BERTANGGUNG JAWAB KEPADA PENGGUNA ATAU PIHAK KETIGA MANA PUN ATAS SEGALA PENGGUNAAN, GANGGUAN, KETERLAMBATAN ATAU KETIDAKMAMPUAN UNTUK MENGGUNAKAN PERANGKAT LUNAK, PENDAPATAN ATAU LABA YANG HILANG, KETERLAMBATAN, GANGGUAN ATAU KEHILANGAN LAYANAN, BISNIS ATAU ITIKAD BAIK, KEHILANGAN ATAU KERUSAKAN DATA, KEHILANGAN YANG DISEBABKAN OLEH KEGAGALAN SISTEM ATAU LAYANAN SISTEM, KEGAGALAN FUNGSI ATAU SHUTDOWN, KEGAGALAN UNTUK MENTRANSFER SECARA AKURAT, MEMBACA ATAU MENGIRIMKAN INFORMASI, KEGAGALAN UNTUK MEMPERBARUI ATAU MEMBERIKAN INFORMASI YANG BENAR, KETIDAKSESUAIAN SISTEM ATAU PENYEDIAAN INFORMASI KOMPATIBILITAS YANG SALAH ATAU PELANGGARAN DALAM KEAMANAN SISTEM, ATAU UNTUK SEGALA KONSEKUENSI, INSIDENTAL, TIDAK LANGSUNG, KERUSAKAN KHUSUS, BAIK YANG TIMBUL DARI ATAU SEHUBUNGAN DENGAN PERJANJIAN INI, PELANGGARAN KONTRAK, TORT (TERMASUK KELALAIAN) ATAU SEBALIKNYA, TERLEPAS DARI APAKAH KERUSAKAN TERSEBUT DAPAT DIPERKIRAKAN DAN APAKAH KAMI DIBERITAHU ATAU TIDAK KEMUNGKINAN KERUSAKAN TERSEBUT. DALAM HAL APA PUN PERUSAHAAN ATAU PEMEGANG SAHAM, DIREKTUR, PEJABAT, KARYAWAN, AFILIASI ATAU AGENNYA, ATAU PENYEDIA LAYANANNYA MASING-MASING, TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAIN, BAIK DALAM TINDAKAN KONTRAK, KESALAHAN ATAU JIKA TIDAK, YANG TIMBUL DARI ATAU DENGAN CARA APA PUN TERKAIT DENGAN AKSES, PENGGUNAAN, ATAU PEMASANGAN PERANGKAT LUNAK PENGGUNA. BEBERAPA YURISDIKSI MELARANG PENGECUALIAN ATAU PEMBATASAN KERUSAKAN INSIDENTAL ATAU KONSEKUENSIAL, SEHINGGA PEMBATASAN TANGGUNG JAWAB INI MUNGKIN TIDAK BERLAKU BAGI PENGGUNA. JIKA PENGGUNA TIDAK PUAS DENGAN PERANGKAT LUNAK, SOLUSI SATU-SATUNYA DAN EKSKLUSIF PENGGUNA ADALAH BAGI PENGGUNA UNTUK MENGHENTIKAN PENGGUNAAN PERANGKAT LUNAK.
-
-## 8. Ganti rugi
-
-Pengguna setuju untuk mengganti rugi, tidak membahayakan, dan membela Perusahaan, pemegang saham, direktur, pejabat, karyawan, afiliasi, dan agennya ("Pihak Ganti Rugi") dari dan terhadap tindakan apa pun, menyebabkan, mengklaim, merusak, utang, permintaan atau kewajiban, termasuk biaya dan biaya pengacara, ditegaskan oleh siapa saja, yang timbul dari atau berkaitan dengan: (a) Perjanjian ini; (b) Akses, penggunaan, atau instalasi Perangkat Lunak oleh Pengguna, termasuk data atau pekerjaan apa pun yang dikirimkan atau diterima oleh Pengguna; dan (c) setiap penggunaan Perangkat Lunak yang tidak dapat diterima oleh siapa pun, termasuk, namun tidak terbatas pada, pernyataan, data atau konten apa pun yang dibuat, ditransmisikan atau diterbitkan ulang oleh Pengguna atau siapa pun yang dilarang sebagai tidak dapat diterima berdasarkan Bagian 4. GANTI RUGI INI MENCAKUP GANTI RUGI TEGAS DARI PERUSAHAAN DAN SEMUA PIHAK YANG DIBERI GANTI RUGI UNTUK SETIAP KELALAIAN YANG DITUDUHKAN (TERMASUK SEGALA KELALAIAN YANG DITUDUHKAN). ATAU DUGAAN PELANGGARAN PERUSAHAAN ATAU PIHAK YANG MENDAPAT GANTI RUGI APA PUN.
-
-## 9. Properti Intelektual
-
-Perusahaan memiliki semua hak, kepemilikan, dan kepentingan dalam dan untuk semua merek, logo, dan merek dagang Perusahaan, termasuk, tetapi tidak terbatas pada, EMURGO Co., Ltd., EMURGO, Yoroi, Wallet Cryptocurrency Yoroi, Wallet Yoroi, Aplikasi Yoroi, dan variasi kata-kata dari merek, logo, dan merek dagang yang disebutkan di atas.
-
-## 10. Peringatan
-
-Pengguna mengakui bahwa Perusahaan tidak akan bertanggung jawab untuk mentransfer, menjaga, atau memelihara private key dan / atau ADA Pengguna atau mata uang kripto lain. Jika Pengguna dan / atau otoritas penandatanganan bersama kehilangan, salah penanganan, atau telah kecurian private key terkait, atau jika pengguna menolak untuk memberikan otoritas yang diperlukan, Pengguna mengakui bahwa Pengguna mungkin tidak dapat memulihkan ADA Pengguna atau cryptocurrency lainnya, dan bahwa Perusahaan tidak akan bertanggung jawab atas kerugian tersebut.
-
-Pengguna mengakui dan menyetujui bahwa ADA atau transaksi cryptocurrency lainnya yang difasilitasi oleh Perangkat Lunak dan / atau Perusahaan dapat ditunda, dan bahwa Perusahaan tidak akan bertanggung jawab atas kerugian terkait. Pengguna mengakui dan menyetujui bahwa Perusahaan tidak akan bertanggung jawab atas segala aspek informasi, konten, atau layanan yang terkandung dalam materi pihak ketiga atau pada situs pihak ketiga mana pun yang dapat diakses atau ditautkan dengan Perangkat Lunak dan / atau Perusahaan.
-
-Pengguna setuju bahwa Pengguna tidak boleh membagikan sertifikat Pengguna dengan orang atau badan hukum, termasuk Perusahaan, Cardano Foundation, Output Input HK Limited, atau entitas lainnya. Lebih lanjut, Pengguna mengakui bahwa berbagi sertifikat Pengguna dapat mengakibatkan hilangnya ADA Pengguna atau mata uang kripto lainnya, dan Pengguna setuju bahwa Perusahaan tidak akan bertanggung jawab atas kehilangan tersebut. Pengguna mengakui dan menyetujui bahwa dengan menebus ADA di testnet, Pengguna hanya menebus ADA-test, dan bahwa untuk menebus ADA yang sebenarnya, Pengguna harus mengulangi prosedur di mainnet, setelah dirilis.
-
-Dengan menggunakan Perangkat Lunak, Pengguna mengakui dan menyetujui: (i) bahwa Perusahaan tidak bertanggung jawab atas pengoperasian protokol yang mendasarinya dan bahwa Perusahaan tidak memberikan jaminan fungsionalitas, keamanan, atau ketersediaannya; dan (ii) bahwa protokol yang mendasarinya mengikuti perubahan main-chain dalam aturan operasi ("fork"), dan bahwa fork tersebut secara material dapat mempengaruhi nilai, dan / atau fungsi ADA atau cryptocurrency lain yang disimpan oleh Pengguna. Perangkat Lunak. Jika terjadi fork, Pengguna setuju bahwa Perusahaan dapat untuk sementara menangguhkan operasi Perangkat Lunak (dengan atau tanpa pemberitahuan kepada Pengguna) dan bahwa Perusahaan dapat melakukan, atas kebijakannya sendiri, (a) mengkonfigurasi atau mengkonfigurasi ulang sistemnya atau (b) memutuskan tidak untuk mendukung (atau menghentikan dukungan) protokol fork sepenuhnya, asalkan, bahwa Pengguna akan memiliki kesempatan untuk menarik dana dari Perangkat Lunak. Pengguna mengakui dan menyetujui bahwa Perusahaan sama sekali tidak bertanggung jawab sehubungan dengan cabang dari protokol fork yang tidak didukung.
-
-## 11. Lain-lain
-
-**a. Amandemen.** Perusahaan berhak, kapan saja dan tanpa pemberitahuan, untuk menambah atau memodifikasi ketentuan Perjanjian ini, hanya dengan memberikan ketentuan yang diubah tersebut kepada Pengguna melalui pesan elektronik melalui media apa pun ke alamat apa pun yang diberikan kepada Perusahaan oleh Pengguna. Akses Pengguna ke atau penggunaan Perangkat Lunak setelah tanggal ketentuan yang diubah tersebut dikirimkan kepada Pengguna akan dianggap sebagai penerimaan terhadap ketentuan yang diubah tersebut.
-
-**b. Pemutusan.** Jika ada ketentuan atau bagian-ketentuan dari Perjanjian ini adalah, atau menjadi tidak valid, ilegal atau tidak dapat dilaksanakan, itu akan dianggap dimodifikasi sampai batas minimum yang diperlukan untuk membuatnya valid, sah dan dapat ditegakkan. Jika modifikasi semacam itu tidak dimungkinkan, ketentuan yang relevan atau ketentuan bagian akan dianggap dihapus. Setiap modifikasi atau penghapusan ketentuan atau bagian-ketentuan dalam Pasal ini tidak akan mempengaruhi validitas dan keberlakuan dari sisa Perjanjian ini.
-
-**c. Seluruh Perjanjian - Penyangkalan Kepercayaan**. Perjanjian ini merupakan seluruh perjanjian antara Para Pihak berkenaan dengan masalah pokok perjanjian ini dan menggantikan semua perjanjian atau pemahaman sebelumnya antara Para Pihak. Pengguna secara tegas menyatakan dan menjamin bahwa itu tidak bergantung pada pernyataan, pemahaman, representasi, harapan atau perjanjian selain dari yang secara tegas diatur dalam Perjanjian ini.
-
-**d. PERJANJIAN INI BERGANTUNG PADA ARBITRASI YANG MENGIKAT.** Pengguna setuju bahwa setiap dan semua perselisihan atau klaim terhadap siapa pun yang timbul dari atau dengan cara apa pun terkait dengan Perjanjian ini atau akses, penggunaan atau instalasi Perangkat Lunak oleh Pengguna atau orang lain harus bergantung pada arbitrase yang mengikat berdasarkan Peraturan Arbitrase Ruang Dagang Internasional oleh satu atau lebih arbiter yang ditunjuk sesuai dengan Aturan tersebut. Lokasi arbitrase adalah Jepang. Bahasa arbitrase adalah bahasa Inggris.
-
-**e. BAHASA.** Semua Terjemahan dalam Perjanjian ini dibuat untuk tujuan rujukan lokal dan jika terjadi ketidakkonsistenan antara versi bahasa Inggris dan non-Inggris, versi bahasa Inggris dari Perjanjian ini yang akan berlaku dan mengatur dalam segala hal.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/it-IT.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/it-IT.md
deleted file mode 100644
index a2ee758c84..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/it-IT.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Condizioni del contratto di servizio
-
-Le presenti condizioni dell'accordo di servizio ("accordo") è stipulato tra EMURGO Co. ("Società") e qualsiasi persona o entità ("Utente") che completa il processo per scaricare, utilizzare o utilizzare il software noto come applicazione Yoroi cryptocurrency portafoglio ("Wallet"), e il servizio di elaborazione dati, applicazione, servizio di comunicazione o altri contenuti o offerti o forniti con il software dalla Società ("Software"). La Società e l'Utente sono denominati collettivamente "Parti". FACENDO CLIC SUL PULSANTE DI ACCETTAZIONE O ACCEDENDO, UTILIZZANDO O INSTALLANDO QUALSIASI PARTE DEL SOFTWARE, L'UTENTE ACCETTA ESPRESSAMENTE E ACCETTA DI ESSERE VINCOLATO LEGALMENTE DA TUTTE LE CONDIZIONI DEL PRESENTE ACCORDO. SE L'UTENTE NON ACCETTA TUTTI I TERMINI DEL PRESENTE ACCORDO, L'UTENTE NON SARÀ AUTORIZZATO AD ACCEDERE, UTILIZZARE O INSTALLARE QUALSIASI PARTE DEL SOFTWARE.
-
-## 1. Diritti e obbligazioni
-
-**a. Descrizione.** Il software funziona come un portafoglio di valuta digitale, libero, open source e criptato. Il Software non costituisce un conto tramite il quale la Società o altre terze parti servono come intermediari finanziari o depositari dell'ADA dell'Utente o di qualsiasi altra valuta criptata. Mentre il Software è stato sottoposto a beta testing e continua ad essere migliorato dal feedback della comunità degli sviluppatori, dei collaboratori open-source e dei beta-tester, la Società non può garantire che non ci saranno bug nel Software. L'Utente riconosce che l'uso del Software da parte dell'Utente è a rischio, discrezione e in conformità con tutte le leggi applicabili. L'Utente è responsabile della custodia delle password, dei PIN, delle chiavi private, delle chiavi di riscatto, delle chiavi di distribuzione schermate, delle chiavi di backup, delle passphrase mnemoniche, dei codici ADA e di qualsiasi altro codice utilizzato dall'Utente per accedere al Software o a qualsiasi informazione, ADA, voucher o altra unità di crittografia valutaria. SE L'UTENTE PERDE L'ACCESSO AL PORTAFOGLIO DI VALUTA CRIPTATA O ALLE CHIAVI PRIVATE DELL'UTENTE E NON HA MEMORIZZATO SEPARATAMENTE UN BACKUP DEL PORTAFOGLIO DI VALUTA CRIPTATA DELL'UTENTE O RECUPERO DI BACKUP MNEMONICO FRASE(I) E PASSWORD CORRISPONDENTE(I), L'UTENTE RICONOSCE E ACCETTA CHE QUALSIASI ADA O QUALSIASI ALTRA VALUTA CRIPTATA CHE L'UTENTE HA ASSOCIATO A QUEL PORTAFOGLIO DI VALUTA CRIPTATA DIVENTERÀ INACCESSIBILE. Tutte le richieste di transazione sono irreversibili. La Società e i suoi azionisti, direttori, funzionari, impiegati, dipendenti, affiliati e agenti non possono garantire la conferma della transazione o recuperare le chiavi private o le password dell'Utente se l'Utente le perde o le dimentica.
-
-**b. Accessibilità.** L'utente accetta che di tanto in tanto il Software può essere inaccessibile o inutilizzabile per qualsiasi ragione, incluso, senza limitazioni: (i) malfunzionamenti delle apparecchiature; (ii) procedure di manutenzione periodica o riparazioni che la Società può di volta in volta intraprendere; o (iii) cause che sfuggono al controllo della Società o che non sono ragionevolmente prevedibili dalla Società.
-
-**c. Equipaggiamento ** L'Utente è l'unico responsabile per la fornitura, il mantenimento e la compatibilità con il Software, tutti i requisiti hardware, software, elettrici e altri requisiti fisici per l'utilizzo del Software da parte dell'Utente, inclusi, senza limitazione, le telecomunicazioni e le connessioni e i link di accesso a Internet, i browser web o altre apparecchiature, programmi e servizi necessari per accedere e utilizzare il Software.
-
-**d. Sicurezza.** L'Utente è l'unico responsabile per la sicurezza, la riservatezza e l'integrità di tutte le informazioni e contenuti che l'Utente riceve, trasmette o memorizza sul Software. L'Utente è l'unico responsabile per qualsiasi accesso autorizzato o non autorizzato a qualsiasi account dell'Utente da parte di qualsiasi persona. L'Utente accetta di assumersi la responsabilità per la riservatezza dei dispositivi di sicurezza, informazioni, chiavi e password dell'Utente.
-
-**e. Privacy.** Quando ragionevolmente possibile, la Società cercherà di rispettare la privacy dell'Utente. La Società non monitorerà, modificherà o divulgherà alcuna informazione personale sull'account dell'Utente o dell'Utente, inclusi i suoi contenuti o l'uso del Software da parte dell'Utente, senza il previo consenso dell'Utente, a meno che la Società non ritenga in buona fede che tale azione sia necessaria: (i) rispettare le procedure legali o altri requisiti legali di qualsiasi autorità governativa; (ii) proteggere e difendere i diritti o la proprietà della Società; (iii) applicare il presente Contratto; (iv) proteggere gli interessi degli utenti del Software diversi dall'Utente o da qualsiasi altra persona; o (v) gestire o eseguire la manutenzione e la riparazione dei servizi o delle attrezzature della Società, compreso il Software come autorizzato dalla legge. L'utente non ha alcuna aspettativa di privacy rispetto a Internet in generale. L'indirizzo IP dell'Utente viene trasmesso e registrato con ogni messaggio o altra informazione che l'Utente invia dal Software.
-
-## 2. Imposte e tasse
-
-Tutte le spese per la conversione di valuta, le spese di terzi, le vendite, l'uso, l'uso, il valore aggiunto, la proprietà personale o altre tasse, dazi o imposte di qualsiasi tipo, compresi gli interessi e le relative sanzioni, imposte ora o in seguito da qualsiasi ente governativo, e le spese sostenute dall'Utente in ragione dell'accesso, uso o installazione del Software da parte dell'Utente sono di esclusiva responsabilità dell'Utente.
-
-## 3. Rappresentazioni degli utenti
-
-L'utente dichiara e garantisce alla Società che: (a) se l'Utente è una persona fisica, l'Utente ha più di diciotto (18) anni; (b) l'Utente ha il potere e l'autorità di stipulare ed eseguire gli obblighi dell'Utente ai sensi del presente Contratto; (c) tutte le informazioni fornite dall'Utente alla Società sono veritiere, accurate e complete; (d) l'Utente rispetterà tutte le leggi e i regolamenti di qualsiasi giurisdizione applicabile in materia di accesso, uso o installazione del Software da parte dell'Utente; (e) L'Utente dovrà rispettare tutti i termini e le condizioni del presente Contratto, incluse, senza limitazioni, le disposizioni di cui alla Sezione 4; e (f) L'Utente ha fornito e fornirà informazioni accurate e complete come richiesto per l'accesso, l'uso o l'installazione del Software.
-
-## 4. Usi proibiti
-
-L'Utente è l'unico responsabile per tutti gli atti e le omissioni che si verificano sotto l'account dell'Utente, informazioni di sicurezza, chiavi o password, e l'Utente si impegna a non impegnarsi in un uso inaccettabile del Software, che include, senza limitazione, l'uso del Software a: (a) diffondere, memorizzare o trasmettere messaggi non richiesti, lettere a catena o e-mail commerciali non richiesti; (b) diffondere o trasmettere materiale che, ad una persona ragionevole può essere abusivo, osceno, pornografico, diffamatorio, diffamatorio, molesto, grossolanamente offensivo, volgare, minaccioso o maligno; (c) diffondere, memorizzare o trasmettere file, grafica, software o altro materiale che effettivamente o potenzialmente viola il copyright, marchio, brevetto, segreto commerciale o altro diritto di proprietà intellettuale di qualsiasi persona; (d) creare una falsa identità o tentare in altro modo di ingannare qualsiasi persona circa l'identità o l'origine di qualsiasi comunicazione; (e) esportare, riesportare o consentire il download di qualsiasi messaggio o contenuto in violazione di qualsiasi legge, regolamento o restrizione di qualsiasi giurisdizione applicabile, o senza tutte le necessarie approvazioni, licenze o esenzioni; (f) interferire, interrompere o tentare di ottenere l'accesso non autorizzato ad altri account sul Software o qualsiasi altra rete informatica; o (g) diffondere, memorizzare o trasmettere virus, cavalli di Troia o qualsiasi altro codice o programma maligno.
-
-## 5. Cessazione
-
-Il presente Contratto è efficace a seguito dell'accettazione da parte dell'Utente come qui indicato e rimarrà in vigore fino a quando l'Utente si impegna in qualsiasi accesso, utilizzo o installazione del Software. La Società si riserva il diritto, a sua esclusiva discrezione e senza preavviso, in qualsiasi momento e per qualsiasi motivo, di: (a) rimuovere o disabilitare l'accesso a tutto o parte del Software; (b) sospendere l'accesso o l'uso di tutto o parte del Software; e (c) risolvere il presente Contratto.
-
-## 6. Esclusione di garanzia
-
-IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA. L'USO DEL SOFTWARE È AD ESCLUSIVO RISCHIO DELL'UTENTE. L'AZIENDA NON GARANTISCE CHE IL SOFTWARE SARÀ ININTERROTTO O PRIVO DI ERRORI, NÉ FORNISCE ALCUNA GARANZIA IN MERITO AI RISULTATI CHE POSSONO ESSERE OTTENUTI CON L'USO DEL SOFTWARE. L'AZIENDA NON FORNISCE ALTRE GARANZIE, ESPLICITE O IMPLICITE. L'AZIENDA DECLINA ESPRESSAMENTE QUALSIASI GARANZIA DI COMMERCIABILITÀ, GARANZIA DI IDONEITÀ PER UN PARTICOLARE SCOPO, GARANZIA DI TITOLO O INTERESSE, O GARANZIA DI NON VIOLAZIONE.
-
-## 7. Limitazione di responsabilità
-
-IN NESSUN CASO LA SOCIETÀ O I SUOI AZIONISTI, AMMINISTRATORI, DIRIGENTI, FUNZIONARI, DIPENDENTI, AFFILIATI O AGENTI, O UNO QUALSIASI DEI SUOI O DEI LORO RISPETTIVI FORNITORI DI SERVIZI, SARÀ RESPONSABILE NEI CONFRONTI DELL'UTENTE O DI TERZI PER QUALSIASI USO, INTERRUZIONE, RITARDO O INCAPACITÀ DI UTILIZZARE IL SOFTWARE, PERDITA DI RICAVI O PROFITTI, RITARDI, INTERRUZIONE O PERDITA DI SERVIZI, ATTIVITÀ O AVVIAMENTO, PERDITA O CORRUZIONE DI DATI, PERDITA DERIVANTE DA UN GUASTO DEL SISTEMA O DEL SERVIZIO DI SISTEMA, MALFUNZIONAMENTO O ARRESTO, MANCATO TRASFERIMENTO ACCURATO, LEGGERE O TRASMETTERE INFORMAZIONI, NON AGGIORNARE O FORNIRE INFORMAZIONI CORRETTE, INCOMPATIBILITÀ DEL SISTEMA, INCOMPATIBILITÀ DEL SISTEMA O FORNITURA DI INFORMAZIONI DI COMPATIBILITÀ ERRATE O VIOLAZIONI DELLA SICUREZZA DEL SISTEMA, O PER DANNI CONSEGUENTI, INCIDENTALI, INDIRETTI, INDIRETTI, ESEMPLARI, SPECIALI O PUNITIVI, DERIVANTI DA O IN RELAZIONE AL PRESENTE ACCORDO, VIOLAZIONE DEL CONTRATTO, ILLECITO CIVILE (INCLUSA LA NEGLIGENZA) O ALTRO, INDIPENDENTEMENTE DAL FATTO CHE TALI DANNI FOSSERO PREVEDIBILI E SE SIAMO STATI AVVISATI O MENO DELLA POSSIBILITÀ DI TALI DANNI. IN NESSUN CASO L'AZIENDA O I SUOI AZIONISTI, DIRETTORI, DIRIGENTI, FUNZIONARI, DIPENDENTI, AFFILIATI O AGENTI, O UNO QUALSIASI DEI SUOI O DEI LORO RISPETTIVI FORNITORI DI SERVIZI, SARÀ RESPONSABILE PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, EXTRACONTRATTUALE O ALTRO, DERIVANTE DA O IN QUALSIASI MODO CONNESSO ALL'ACCESSO, ALL'USO O ALL'INSTALLAZIONE DEL SOFTWARE DA PARTE DELL'UTENTE. ALCUNE GIURISDIZIONI VIETANO L'ESCLUSIONE O LA LIMITAZIONE DI DANNI INCIDENTALI O CONSEQUENZIALI, PERTANTO QUESTA LIMITAZIONE DI RESPONSABILITÀ POTREBBE NON ESSERE APPLICABILE ALL'UTENTE. SE L'UTENTE NON È SODDISFATTO DEL SOFTWARE, L'UNICO ED ESCLUSIVO RIMEDIO DELL'UTENTE SARÀ LA SOSPENSIONE DELL'USO DEL SOFTWARE.
-
-## 8. Indennizzo
-
-L'utente accetta di indennizzare, tenere indenne e difendere la Società, i suoi azionisti, amministratori, dirigenti, funzionari, dipendenti, affiliati e agenti ("Parti indennizzate") da e contro qualsiasi azione, causa, reclamo, danno, debito, richiesta o responsabilità, compresi i costi ragionevoli e le spese legali, rivendicati da qualsiasi persona, derivanti da o relativi a: (a) il presente Contratto; (b) l'accesso, l'uso o l'installazione del Software da parte dell'Utente, inclusi dati o lavori trasmessi o ricevuti dall'Utente; e (c) qualsiasi uso inaccettabile del Software da parte di qualsiasi persona, incluso, senza limitazioni, qualsiasi dichiarazione, dato o contenuto fatto, trasmesso o ripubblicato dall'Utente o da qualsiasi persona che sia vietato in quanto inaccettabile ai sensi della Sezione 4. TALE INDENNIZZO INCLUDE L'INDENNIZZO ESPRESSO DELL'AZIENDA E DI TUTTE LE PARTI INDENNIZZATE PER QUALSIASI PRESUNTA NEGLIGENZA (INCLUSA QUALSIASI PRESUNTA NEGLIGENZA GRAVE). O ALTRA PRESUNTA CATTIVA CONDOTTA DELLA SOCIETÀ O DI QUALSIASI PARTE INDENNIZZATA.
-
-## 9. Proprietà Intellettuale
-
-La Società si riserva tutti i diritti, titoli e interessi in e a tutti i marchi, loghi e marchi della Società, inclusi, ma non solo, EMURGO Co., Ltd., EMURGO, EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, e le variazioni del testo dei suddetti marchi, loghi e marchi.
-
-## 10. Avvertenze
-
-L'utente riconosce che la Società non sarà responsabile per il trasferimento, la salvaguardia o la manutenzione delle chiavi private e/o dell'ADA dell'utente o di qualsiasi altra valuta criptata. Se l'Utente e/o le autorità co-firmatarie perdono, maneggiano male o hanno rubato le chiavi private associate, o se i cofirmatari dell'Utente rifiutano di fornire l'autorità richiesta, l'Utente riconosce che l'Utente potrebbe non essere in grado di recuperare l'ADA dell'Utente o qualsiasi altra valuta criptata e che la Società non sarà responsabile di tale perdita.
-
-L'utente riconosce e concorda che ADA o qualsiasi altra transazione in valuta criptata facilitata dal Software e/o dalla Società può essere ritardata e che la Società non sarà responsabile di eventuali perdite associate. L'utente riconosce e concorda che la Società non sarà responsabile per qualsiasi aspetto delle informazioni, contenuto o servizi contenuti in materiali di terzi o su siti di terzi accessibili o collegati al Software e/o alla Società.
-
-L'utente accetta che l'utente non deve mai condividere il certificato dell'utente con persone fisiche o giuridiche, compresa la Società, la Fondazione Cardano, Input Output HK Limited, o qualsiasi altra entità. Inoltre, l'utente riconosce che la condivisione del certificato dell'utente può comportare la perdita dell'ADA dell'utente o di qualsiasi altra valuta criptata, e l'utente accetta che la Società non sarà responsabile di tale perdita. L'utente riconosce e concorda che riscattando ADA nel testnet, l'utente riscatta solo test-ADA, e che, al fine di riscattare ADA effettivo, l'utente deve ripetere la procedura nella rete principale, una volta rilasciato.
-
-Utilizzando il Software, l'Utente riconosce e accetta: (i) che la Società non è responsabile del funzionamento dei protocolli sottostanti e che la Società non garantisce la loro funzionalità, sicurezza o disponibilità; e (ii) che i protocolli sottostanti sono soggetti a improvvisi cambiamenti nella catena principale delle regole operative ("forchette"), e che tali forchette possono influire materialmente sul valore e/o sul funzionamento di ADA o di qualsiasi altra valuta criptata che l'Utente memorizza sul Software. In caso di fork, l'Utente accetta che la Società può sospendere temporaneamente le operazioni del Software (con o senza preavviso all'Utente) e che la Società può, a sua esclusiva discrezione, (a) configurare o riconfigurare i propri sistemi o (b) decidere di non supportare (o cessare di supportare completamente il protocollo biforcato, a condizione, tuttavia, che l'Utente abbia la possibilità di prelevare fondi dal Software. L'Utente riconosce e concorda che la Società non si assume alcuna responsabilità di alcun tipo in relazione a una filiale non supportata di un protocollo biforcato.
-
-## 11. Varie
-
-**a. Emendamento.** La Società ha il diritto, in qualsiasi momento e senza preavviso, di aggiungere o modificare i termini del presente Contratto, semplicemente consegnando tali termini modificati all'Utente tramite messaggio elettronico attraverso qualsiasi mezzo a qualsiasi indirizzo fornito all'Azienda dall'Utente. L'accesso o l'uso del Software da parte dell'Utente dopo la data in cui tali termini modificati sono stati consegnati all'Utente sarà considerato come accettazione di tali termini modificati.
-
-**b. Separazione.** Se una qualsiasi disposizione o disposizione parziale di questo accordo è, o diventa non valida, illegale o inapplicabile, essa sarà considerata modificata nella misura minima necessaria per renderla valida, legale e applicabile. Se tale modifica non è possibile, la relativa disposizione o parte di essa sarà considerata cancellata. Qualsiasi modifica o cancellazione di una disposizione o parte di una fornitura ai sensi del presente articolo non pregiudica la validità e l'applicabilità del resto del presente accordo.
-
-**c. Intero accordo - Esclusione di fiducia**. Il presente accordo costituisce l'intero accordo tra le Parti in relazione all'oggetto del presente accordo e sostituisce tutti i precedenti accordi o intese tra le Parti. L'utente dichiara e garantisce espressamente di non fare affidamento su dichiarazioni, intese, dichiarazioni, dichiarazioni, aspettative o accordi diversi da quelli espressamente indicati nel presente accordo.
-
-**d. QUESTO ACCORDO È SOGGETTO AD ARBITRATO VINCOLANTE.** L'Utente conviene che qualsiasi controversia o reclamo contro qualsiasi persona derivante da o in qualsiasi modo collegato al presente Contratto o all'accesso, uso o installazione del Software da parte dell'Utente o di qualsiasi altra persona sarà soggetto ad arbitrato vincolante ai sensi del Regolamento Arbitrale della Camera di Commercio Internazionale da parte di uno o più arbitri nominati in conformità a detto Regolamento. La sede dell'arbitrato sarà il Giappone. La lingua dell'arbitrato sarà l'inglese.
-
-**e. LINGUA.** Qualsiasi traduzione del presente accordo è fatta solo a scopo di riferimento locale e in caso di incongruenza tra la versione inglese e qualsiasi versione non inglese, la versione inglese del presente accordo prevarrà e governerà in tutti gli aspetti.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ja-JP.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/ja-JP.md
deleted file mode 100644
index a5eb7ee6c3..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ja-JP.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# サービス規約
-
-このサービス規約(以下「本規約」といいます。)は、株式会社 EMURGO(以下「当社」といいます。)と、ヨロイクリプトカレンシーウォレットと称するアプリケーションとしてのソフトウェアおよび上記ソフトウェアとともに当社により提供または作成されるデータプロセシングサービス、アプリケーション、通信サービスその他コンテンツ(以下「本ソフトウェア」といいます。)をダウンロードし、利用し、または操作するための手続を完了した者(個人又は法人)(以下「ユーザー」といいます。)との間で締結されるものです。当社およびユーザーを「両当事者」と総称します。 承認ボタンをクリックする、あるいは本ソフトウェアのいずれかの部分にアクセスし、本ソフトウェアのいずれかの部分を利用し、または本ソフトウェアのいずれかの部分をインストールすることにより、ユーザーは、本規約のすべての条項に法的に拘束されることについて明示的に同意したこととなります。本規約のすべての条項に同意しない場合には、ユーザーは、本ソフトウェアのいずれの部分もアクセスし、利用し、またはインストールすることができないものとします。
-
-## 1. 権利および義務
-
-**a. 種類** 本ソフトウェアは、無償のオープンソースの仮想通貨ウォレットとして機能します。本ソフトウェアは、当社またはその他の第三者がユーザーの ADA その他の仮想通貨に関する金融仲介業者または管理業者となるアカウントを構成するものではありません。 本ソフトウェアはベータ・テストを受けており、デベロッパーコミュニティ、オープンソースコントリビューターおよびベータテスターからのフィードバックにより引き続き改良されますが、当社は、本ソフトウェアにバグがないことを保証するものではありません。ユーザーは、ユーザーによる本ソフトウェアの利用はユーザーの責任、裁量によるものであり、かつ、適用されるすべての法律に従うことを承知しています。ユーザーは、本ソフトウェアまたは何らかの情報、ADA、バウチャーその他の仮想通貨ユニットにアクセスするためにユーザーが利用するユーザーのパスワード、個人識別番号(PIN)、プライベートキー、還元キー、保護されたベンディングキー(shielded Vending Key)、バックアップリカバリー・ニーモニックパスフレーズ(backup recovery mnemonic passphrases)、ADA パスコードおよびその他のコードを保管する責任を負います。 ユーザーがユーザーの仮想通貨ウォレットまたはプライベートキーへのアクセスを失ったものの、ユーザーの仮想通貨ウォレットまたはバックアップリカバリー・ニーモニックフレーズおよび対応するパスワードのバックアップを別途保存していなかった場合には、ユーザーは、ユーザーが当該仮想通貨ウォレットに関連づけていた ADA その他の仮想通貨にアクセスできなくなることを承知しており、これに同意します。なお、いずれの取引要求も撤回できません。当社ならびにその株主、取締役、役員、従業員、関連会社および代理人は、取引確認を保証することができず、ユーザーがユーザーのプライベートキーまたはパスワードを紛失または失念した場合であってもそれらを取り戻すことができません。
-
-**b. アクセシビリティ** ユーザーは、本ソフトウェアが何らかの理由((i)機器の故障、(ii)当社が随時実施することのある定期メンテナンス手続または定期修理、または(iii)当社が制御できないまたは当社が合理的に予見できない原因を含みますが、これらに限られません。)により随時アクセス不能または操作不能となる可能性があることに同意します。
-
-**c. 機器** ユーザーは、ユーザーが本ソフトウェアを利用するためのすべてのハードウェア、ソフトウェア、電気に関する要件その他の物理的要件(本ソフトウェアにアクセスし、本ソフトウェアを利用するために必要な電気通信ならびにインターネットアクセス接続およびリンク、ウェブブラウザその他の機器、プログラムおよびサービスを含みますが、これらに限られません。)を提供し、維持し、本ソフトウェアとの互換性を確保することについて単独で責任を負うものとします。
-
-**d. セキュリティ** ユーザーは、ユーザーが本ソフトウェアを通じて送受信し、または本ソフトウェア上で保存するすべての情報およびコンテンツのセキュリティ、機密性および完全性について単独で責任を負うものとします。ユーザーは、いずれかの者によるユーザーのアカウントへの正規のアクセスまたは不正なアクセスについて単独で責任を負うものとします。ユーザーは、ユーザーのセキュリティデバイス、情報、キーおよびパスワードの機密性について一切の責任を負うことに同意します。
-
-**e. プライバシー** 合理的に実施可能な場合には、当社は、ユーザーのプライバシーを尊重するよう努めます。当社は、ユーザーの事前の同意なくユーザーまたはユーザーのアカウント(その内容またはユーザーによる本ソフトウェアの利用を含みます。)に関する個人情報を監視し、編集し、または開示しません(但し、(i)政府当局の法的手続またはその他の法的要件に従うために、(ii)当社の権利または財産を守るために、(iii)本規約を履行するために、(iv)ユーザー以外の本ソフトウェアの利用者またはその他の者の権利を保護するために、または(v)当社のサービスまたは機器(法律により認められる場合には本ソフトウェアを含みます。)を運用し、またはそれらのメンテナンスおよび修理を行うためにかかる行為が必要であると当社が誠実に判断した場合については、この限りでありません。)。ユーザーは、インターネット全般についてプライバシーを期待できません。ユーザーの IP アドレスは、ユーザーが本ソフトウェアから送信する各メッセージまたはその他の情報とともに送信され、記録されます。
-
-## 2. 税金および手数料
-
-通貨両替手数料、第三者の手数料、売上税、使用税、付加価値税、動産税その他のあらゆる種類の税金、関税および賦課金(これらに係る利息および罰金を含みます。)(政府機関により現在課せられているものか、または将来課せられるものかを問いません。)、ならびにユーザーによる本ソフトウェアへのアクセス、本ソフトウェアの利用または本ソフトウェアのインストールによりユーザーに生じる手数料は、すべてユーザーが単独で負担するものとします。
-
-## 3. ユーザーの表明
-
-ユーザーは、当社に対し、(a)ユーザーが自然人である場合には、ユーザーが 18 歳を超えていること、(b)ユーザーは本規約を締結し、本規約に基づくユーザーの義務を履行する権限および権能を有していること、(c)ユーザーが当社に提供する情報はすべて真実、正確かつ完全であること、(d)ユーザーはユーザーによる本ソフトウェアへのアクセス、本ソフトウェアの利用または本ソフトウェアのインストールに関して関係法域のすべての法令を遵守すること、(e)ユーザーは本規約のすべての条項(第4条に定める規定を含みますが、これに限られません。)を遵守すること、ならびに(f)ユーザーは本ソフトウェアへのアクセス、本ソフトウェアの利用または本ソフトウェアのインストールに必要な正確かつ完全な情報を提供しており、今後も提供することを表明し、保証します。
-
-## 4. 禁止される利用
-
-ユーザーは、ユーザーのアカウント、セキュリティ情報、キーまたはパスワードにより生じるすべての作為および不作為について単独で責任を負います。また、ユーザーは、容認できない本ソフトウェアの利用((a)一方的なメッセージ、チェーンレターまたは一方的な商業電子メールを拡散し、保存し、または送信すること、(b)一般に侮辱的である、卑猥である、猥褻である、中傷的である、嫌がらせである、著しく不快である、淫らである、脅迫的であるまたは悪意のある可能性のある資料等を拡散し、または送信すること、(c)いずれかの者の著作権、商標、特許、営業秘密またはその他の知的財産権を実際に侵害しているかまたは侵害する可能性のあるファイル、画像、ソフトウェアまたはその他の資料等を拡散し、保存し、または送信すること、(d)通信の同一性もしくは出所について、別人になりすます、またはその他の形でいずれかの者を誤解させようと試みること、(e)関係法域の輸出入関係法令もしくは規則に違反して、または必要なすべての許認可もしくは免除を受けずにメッセージまたはコンテンツを輸出し、再輸出し、またはそれらのダウンロードを許可すること、(f)本ソフトウェアまたはその他のコンピュータネットワーク上のその他のアカウントを妨害し、中断し、またはかかるアカウントに不正にアクセスしようと試みること、または(g)ウイルス、トロイの木馬その他の悪意のあるコードまたはプログラムを拡散し、保存し、または送信することを目的とした本ソフトウェアの利用を含みますが、これらに限られません。)を行わないことに同意します。
-
-## 5. 解除
-
-本規約は、本規約に規定するユーザーによる承認をもって発効し、ユーザーが本ソフトウェアへのアクセス、本ソフトウェアの利用または本ソフトウェアのインストールを行う間有効に存続するものとします。当社は、自己の裁量で、通知なく、いつでも理由の如何を問わず(a)本ソフトウェアの全部または一部へのアクセスを除外し、または無効とし、(b)ユーザーによる本ソフトウェアの全部または一部へのアクセスまたはその利用を停止し、(c)本規約を解除する権利を有します。
-
-## 6. 保証の放棄
-
-本ソフトウェアは、明示または黙示を問わずいかなる種類の保証もない「現状有姿」で提供されます。本ソフトウェアの利用は、ユーザーの単独の責任によります。当社は、本ソフトウェアが中断されずエラーフリーであることを保証せず、本ソフトウェアを利用することにより得られる可能性のある結果についても何ら保証しません。当社は、明示または黙示を問わずその他の保証を行いません。当社は、商品性の保証、特定目的適合性の保証、所有権または権利の保証および不侵害の保証を明確に放棄します。
-
-## 7. 責任の限定
-
-いかなる場合であっても、当社ならびにその株主、取締役、役員、従業員、関連会社および代理人ならびに当社およびこれらのサービスプロバイダは、利用、中断、遅延または本ソフトウェアの利用不能、収益減または逸失利益、サービス、事業または信用の遅延、中断または喪失、データの喪失または破損、システムまたはシステムサービスの障害に起因する損失、誤作動またはシャットダウン、情報の正確な転送、読み取りまたは送信ができないこと、正確な情報を更新しまたは提供できないこと、システムの非互換性、不正確な互換性情報の提供またはシステムセキュリティの侵害について、また、間接損害賠償金、付随的損害賠償金、懲罰的損害賠償金または特別損害賠償金(本規約、契約違反、不法行為(過失を含みます。)またはその他に起因または関連するか否かを問いません。)(かかる損害賠償金が予見可能であったか否か、また、当社らがかかる損害賠償金の可能性について通知を受けていたか否かを問いません。)について、ユーザーまたは第三者に対し責任を負わないものとします。 いかなる場合であっても、当社ならびにその株主、取締役、役員、従業員、関連会社または代理人ならびに当社およびこれらのサービスプロバイダは、ユーザーによる本ソフトウェアへのアクセス、本ソフトウェアの利用または本ソフトウェアのインストールに起因し、または何らかの形で関連するいかなる請求、損害その他の債務(訴訟上、契約上、不法行為上またはその他の別を問いません。)についても責任を負わないものとします。 一部の法域では付随的損害賠償金または間接損害賠償金の除外または制限を禁止しているため、この責任の限定がユーザーに適用されない可能性があります。ユーザーが本ソフトウェアに満足していない場合におけるユーザーの唯一かつ排他的な救済手段は、ユーザーによる本ソフトウェアの利用の中止とします。
-
-## 8. 補償
-
-ユーザーは、(a)本規約、(b)ユーザーによる本ソフトウェア(ユーザーが送受信するデータまたは著作物を含みます。)へのアクセス、本ソフトウェア(ユーザーが送受信するデータまたは著作物を含みます。)の利用または本ソフトウェア(ユーザーが送送受信するデータまたは著作物を含みます。)のインストール、および(c)いずれかの者による本ソフトウェアの容認されない利用(第4条により容認されないものとして禁止されている、ユーザーまたはいずれかの者により行われ、送信され、または再公表される陳述、データまたはコンテンツを含みますが、これらに限られません。)に起因または関連していずれかの者が主張するいかなる訴え、訴訟、請求、損害、負債、要求または債務(合理的な費用および弁護士報酬を含みます。)についても当社、その株主、取締役、役員、従業員、関連会社および代理人(以下「被補償当事者」といいます。)を補償し、被補償当事者を免責し、被補償当事者を防御することに同意します。この補償には、当社または被補償当事者の過失とされるもの(重過失とされるものを含みます。)またはその他の違法行為とされるものに対する当社およびすべての被補償当事者の明示の補償を含みます。
-
-## 9. 知的財産
-
-当社は、当社のすべてのブランド、ロゴおよび商標(株式会社 EMURGO、EMURGO、ヨロイ、ヨロイクリプトカレンシーウォレット、ヨロイウォレット、ヨロイアプリならびに上記のブランド、ロゴおよび商標の表現が変化したものを含みますが、これらに限られません。)に関するすべての権利、権限および利益を有します。
-
-## 10. 警告
-
-ユーザーは、当社がプライベートキーおよび/またはユーザーの ADA その他の仮想通貨を移動させ、保管し、または維持する責任を負わないものとすることを承知しています。ユーザーおよび/または共同署名権者が関連するプライベートキーを紛失し、その取扱いを誤り、もしくは窃取された場合またはユーザーの共同署名者が必要な権限を提供することを拒否した場合には、ユーザーは、ユーザーがユーザーの ADA その他の仮想通貨を回収できなくなる可能性があること、また、かかる損失について当社は責任を負わないものとすることを承知しています。 ユーザーは、本ソフトウェアおよび/または当社により促進される ADA その他の仮想通貨の取引が遅延する可能性があること、また、遅延に伴ういかなる損失についても当社は責任を負わないものとすることを承知しており、これに同意します。 ユーザーは、本ソフトウェアおよび/または当社にアクセス可能なまたはリンクする第三者の資料等または第三者のサイトに含まれる情報、コンテンツまたはサービスのいずれの側面についても当社は責任を負わないものとすることを承知しており、これに同意します。 ユーザーは、ユーザーがユーザーの証明書をいかなる自然人または法人(当社、カルダノ財団、インプット・アウトプット・エイチケイ・リミテッドまたはその他の組織を含みます。)とも共有しないことに同意します。また、ユーザーは、ユーザーの証明書を共有することによりユーザーの ADA その他の仮想通貨が失われる可能性があることを承知しており、かかる損失について当社は責任を負わないものとすることに同意します。 ユーザーは、テストネット上で ADA を還元することによりユーザーはテスト ADA のみを還元すること、また、実際の ADA を還元するためには、ユーザーはリリース後にメインネット上で手続を繰り返さなければならないことを承知しており、これに同意します。
-本ソフトウェアを利用することにより、ユーザーは、(i)当社が下層プロトコルの運用について責任を負わないこと、また、当社がその機能性、セキュリティおよび可用性について何ら保証しないこと、(ii)規則の運用上、下層プロトコルはメインチェーンの突然の変更(以下「フォーク」といいます。)による影響を受ける可能性があること、また、かかるフォークはユーザーが本ソフトウェア上で保管する ADA その他の仮想通貨の価値および/または機能に重大な影響を及ぼす可能性があることを承知しており、これらに同意します。フォークした場合、ユーザーは、当社が(ユーザーに通知した上で、またはユーザーに通知することなく)本ソフトウェアの運用を一時的に停止することができること、また、当社が自己の裁量で(a)自社システムの設定または再設定を行うことができること、または(b)フォークしたプロトコルを一切サポートしない(またはサポートを停止する)旨決定することができることに同意します(但し、ユーザーは、本ソフトウェアから資金を引き出す機会を有するものとします。)。ユーザーは、フォークしたプロトコルのうちサポート対象外のブランチについて当社は一切責任を負わないことを承知しており、これに同意します。
-
-**a. 変更** 当社は、ユーザーから当社に届け出のあったアドレス宛てのいずれかの媒体を通じた電子メッセージにより、変更後の条項をユーザーに提示することにより、いつでも通知なく本規約の条項を追加し、または変更することができるものとします。かかる変更後の条項がユーザーに提示された日の後にユーザーが本ソフトウェアにアクセスし、または本ソフトウェアを利用した場合には、かかる変更後の条項が承諾されたものとみなします。
-
-**b. 分離解釈** 本規約のいずれかの規定またはいずれかの規定の一部が無効、違法または強制執行不能であるか、無効、違法または強制執行不能となる場合には、当該規定または当該規定の一部は、有効、適法かつ強制執行可能とするために必要な最小限度で変更されたものとみなします。かかる変更を行えない場合には、当該規定または当該規定の一部は削除されたものとみなします。本条に基づくいずれかの規定またはいずれかの規定の一部の変更または削除は、本規約の残りの規定の有効性および強制執行可能性に影響を及ぼさないものとします。
-
-**c. 完全合意 – 依拠の放棄** 本規約は、本規約の内容に関する両当事者間の完全な合意を構成し、両当事者間における従前のすべての合意事項および了解事項に優先します。ユーザーは、本規約に明記されるもの以外の陳述、了解事項、表明事項、期待事項または合意事項に依拠していないことを明示的に表明し、保証します。
-
-## 11. その他
-
-**d. 本規約は、拘束力のある仲裁に服します** ユーザーは、本規約またはユーザーもしくはその他の者による本ソフトウェアへのアクセス、本ソフトウェアの利用もしくは本ソフトウェアのインストールに起因し、または何らかの点で関連する紛争またはいずれかの者に対する請求はすべて国際商業会議所の仲裁規則に基づき選任される1名ないし複数名の仲裁人による同規則に基づく拘束力のある仲裁に服するものとすることに同意します。また、仲裁地は日本とし、仲裁言語は英語とします。
-
-**e. 言語** 本規約の翻訳は、現地における参照の便宜のためにのみ作成されるものであり、英語版と英語以外の言語版との間に齟齬がある場合には本規約の英語版がすべての点において優先するものとします。
-
-**c. 完全合意 – 依拠の放棄** 本規約は、本規約の内容に関する両当事者間の完全な合意を構成し、両当事者間における従前のすべての合意事項および了解事項に優先します。ユーザーは、本規約に明記されるもの以外の陳述、了解事項、表明事項、期待事項または合意事項に依拠していないことを明示的に表明し、保証します。
-
-**d. 本規約は、拘束力のある仲裁に服します** ユーザーは、本規約またはユーザーもしくはその他の者による本ソフトウェアへのアクセス、本ソフトウェアの利用もしくは本ソフトウェアのインストールに起因し、または何らかの点で関連する紛争またはいずれかの者に対する請求はすべて国際商業会議所の仲裁規則に基づき選任される1名ないし複数名の仲裁人による同規則に基づく拘束力のある仲裁に服するものとすることに同意します。また、仲裁地は日本とし、仲裁言語は英語とします。
-
-**e. 言語** 本規約の翻訳は、現地における参照の便宜のためにのみ作成されるものであり、英語版と英語以外の言語版との間に齟齬がある場合には本規約の英語版がすべての点において優先するものとします。
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ko-KR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/ko-KR.md
deleted file mode 100644
index eba409f39a..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ko-KR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 서비스 규약
-
-이 서비스 규약(이하 ‘본 규약’이라 합니다)은 주식회사 EMURGO(이하 ‘당사’라 합니다)와 요로이 크립토커런시 월렛이라 칭하는 어플리케이션 소프트웨어 및 상기 소프트웨어와 함께 당사가 제공 또는 작성하는 데이터프로세싱 서비스, 어플리케이션, 통신 서비스 기타 컨텐츠(이하 ‘본 소프트웨어’라 합니다)를 다운로드, 이용, 또는 조작하기 위한 절차를 완료한 자(개인 또는 법인)(이하 ‘유저’라 합니다) 간에 체결되는 것입니다. 당사 및 유저를 ‘양 당사자’라 총칭합니다. 승인 버튼을 클릭하거나, 본 소프트웨어 어느 부분에 액세스하여 본 소프트웨어의 어느 부분을 이용하거나, 또는 본 소프트웨어의 어느 부분을 설치함으로써 유저는 본 규약의 모든 조항에 법적으로 구속된다는 점에 대해 명시적으로 동의한 것이 됩니다. 본 규약의 모든 조항에 동의하지 않는 경우에는, 유저는 본 소프트웨어의 어느 부분에 대해서도 액세스, 이용 또는 설치를 할 수 없습니다.
-
-## 1. 권리 및 의무
-
-**a. 종류:** 본 소프트웨어는 무상 오픈소스 가상 통화 월렛으로 기능합니다. 본 소프트웨어는 당사 또는 기타 제3자가 유저의 ADA 기타 가상통화에 관한 금융중개업자 또는 관리업자가 되는 계정을 구성하는 것은 아닙니다. 본 소프트웨어는 베타테스트를 거쳤으며, 디벨로퍼 커뮤니티, 오픈소스 컨트리뷰터 및 베타테스터로부터의 피드백을 통해 계속해서 개량되지만, 당사는 본 소프트웨어에 버그가 없다는 것을 보증하지 않습니다. 유저는 유저에 의한 본 소프트웨어 이용은 유저의 책임, 재량에 의한 것이자, 적용되는 모든 법률에 따른다는 점을 인지하고 있습니다. 유저는 본 소프트웨어 또는 어떠한 정보, ADA, 바우처 기타 가상 통화 유닛에 액세스하기 위해 유저가 이용하는 유저 패스워드, 개인식별번호(PIN), 프라이빗 키, 환원 키, 보호된 벤딩 키(shielded Vending Key), 백업 리커버리•니모닉 패스프레이즈(backup recovery mnemonic passphrases), ADA패스코드 및 기타 코드를 보관할 책임을 집니다. 유저가 유저의 가상 통화 월렛 또는 프라이빗 키에 대한 액세스를 상실하였으나, 유저의 가상 통화 월렛 또는 백업 리커버리•니모닉 패스프레이즈 및 대응하는 패스워드의 백업을 별도로 저장하지 않은 경우에는, 유저는, 유저가 해당 가상 통화 월렛과 연동한 ADA 기타 가상 통화에 액세스하지 못하게 된다는 것을 인지하고 있으며, 이에 동의합니다. 또한 모든 거래 요구도 철회할 수 없습니다. 당사 및 그 주주, 이사, 임원, 종업원, 관련회사 및 대리인은 거래 확인을 보증할 수 없으며, 유저가 유저의 프라이빗 키 또는 패스워드를 분실 또는 잊어버린 경우라 하더라도 이를 되찾을 수 없습니다.
-
-**b. 접근성(Accessibility):** 유저는 본 소프트웨어가 어떠한 이유((i)기기 고장, (ii)당사가 수시로 실시할 수 있는 정기 유지보수 절차 또는 정기 수리, 또는 (iii)당사가 제어할 수 없거나 당사가 합리적으로 예견할 수 없는 원인을 포함하나, 이에 한하지 않습니다)로 인해 수시로 액세스 불능 또는 조작 불능이 될 가능성이 있다는 점에 동의합니다.
-
-**c. 기기:** 유저는, 유저가 본 소프트웨어를 이용하기 위한 모든 하드웨어, 소프트웨어, 전기에 관한 요건. 기타 물리적 요건(본 소프트웨어에 액세스하여, 본 소프트웨어를 이용하기 위해 필요한 전기 통신 및 인터넷 액세스 접속과 링크, 웹브라우저, 기타 기기, 프로그램 및 서비스를 포함하나 이에 한하지 않습니다)을 제공, 유지하고, 본 소프트웨어와의 호환성을 확보하는 것에 대해 단독으로 책임을 집니다.
-
-**d. 보안:** 유저는, 유저가 본 소프트웨어를 통해 송수신하거나, 본 소프트웨어상 보관하는 모든 정보 및 컨텐츠 보안, 기밀성 및 완전성에 대해 단독으로 책임을 집니다. 유저는 여하한 자에 의한 유저 계정에 대한 정규 액세스 또는 부정 액세스에 대해 단독으로 책임을 집니다. 유저는 유저의 보안 디바이스, 정보, 키 및 패스워드의 기밀성에 대해 일체의 책임을 진다는 점에 대해 동의합니다.
-
-**e. 프라이버시:** 합리적으로 실시 가능한 경우에는, 당사는 유저의 프라이버시를 존중하도록 노력합니다. 당사는 유저의 사전 동의 없이 유저 또는 유저 계정(그 내용 또는 유저에 의한 본 소프트웨어 이용을 포함합니다)에 관한 개인 정보를 감시, 편집 또는 공개하지 않습니다. (단, (i)정부 당국의 법적 절차 또는 기타 법적 요건에 따르기 위해, (ii)당사의 권리 또는 재산을 보호하기 위해, (iii)본 규약을 이행하기 위해, (iv)유저 이외의 본 소프트웨어 이용자 또는 기타의 자의 권리를 보호하기 위해, 또는 (v)당사 서비스 또는 기기(법률에 의해 인정되는 경우에는 본 소프트웨어를 포함합니다)를 운용하거나, 이들의 유지보수 및 수리를 하기 위해 이러한 행위가 필요하다고 당사가 성실하게 판단한 경우에는 그렇지 않습니다) 유저는 인터넷 전반에 대해 프라이버시를 기대할 수 없습니다. 유저의 IP 주소는 유저가 본 소프트웨어에서 송신하는 각 메시지 또는 기타 정보와 함께 송신되고, 기록됩니다.
-
-## 2. 세금 및 수수료
-
-통화 환전 수수료, 제3자 수수료, 매출세, 사용세, 부가가치세, 동산세 기타 모든 종류의 세금, 관세와 부과금(이들에 관한 이자 및 벌금을 포함합니다)(정부기관에 의해 현재 부과된 것인지, 또는 장래에 부과되는 것인지를 불문합니다) 및 유저에 의한 본 소프트웨어에 대한 액세스, 본 소프트웨어의 이용이나 본 소프트웨어의 설치에 의해 유저에게 발생하는 수수료는 모두 유저가 단독으로 부담합니다.
-
-## 3. 유저의 진술
-
-유저는 당사에 대해 (a)유저가 자연인인 경우에는 유저가 18세를 넘었다는 점, (b)유저는 본 규약을 체결하여, 본 규약에 근거한 유저의 의무를 이행할 권한 및 권능을 보유한다는 점, (c)유저가 당사에 제공하는 정보는 모두 진실, 정확하고도 완전하다는 점, (d)유저는 유저에 의한 본 소프트웨어에 대한 액세스, 본 소프트웨어의 이용 또는 본 소프트웨어의 설치에 관해 관련 법역의 모든 법령을 준수한다는 점, (e)유저는 본 규약의 모든 조항(제4항에 정한 규정을 포함하나, 이에 한하지 않습니다)을 준수한다는 점 및 (f)유저는 본 소프트웨어에 대한 액세스, 본 소프트웨어의 이용 또는 본 소프트웨어의 설치에 필요한 정확하고도 완전한 정보를 제공했으며, 앞으로도 제공할 것을 진술, 보장합니다.
-
-## 4. 금지된 이용
-
-유저는 유저 계정, 보안 정보, 키 또는 패스워드에 의해 생성되는 모든 작위 또는 부작위에 대해 단독으로 책임을 집니다. 또한, 유저는 용인할 수 없는 본 소프트웨어의 이용((a)일방적인 메시지, 연쇄 편지 또는 일방적인 상업 전제 메일을 확산, 보존하거나, 송신하는 것, (b)일반에 모욕적, 외설적, 포르노, 중상적, 괴롭힘, 현저히 불쾌한, 음란한, 협박적, 또는 악의가 있을 가능성이 있는 자료 등을 확산하거나, 송신하는 것, (c)여하한 자의 저작권, 상표, 특허, 영업비밀 또는 기타 지적재산권을 실제로 침해했거나, 침해할 가능성이 있는 파일, 그래픽, 소프트웨어 또는 기타 자료 등을 확산, 보존, 또는 송신하는 것, (d)통신의 동일성이나 출처에 대해 다른 사람을 가장하거나 기타의 형태로 여하한 자를 오해하게 하려고 시도하는 것, (e)관련 법역의 수출입 관련 법령 또는 규칙을 위반하거나, 필요한 모든 인허가나 면제를 받지 않고 메시지 또는 컨텐츠를 수출, 재수출하거나, 이들의 다운로드를 허가하는 것, (f)본 소프트웨어 또는 기타 컴퓨터 네트워크상의 기타 계정을 방해, 중단하거나, 이러한 계정에 부정 액세스하고자 시도하는 것, 또는 (g)바이러스, 트로이 목마 기타 악성 코드 또는 프로그램을 확산, 저장하거나 송신하는 것을 목적으로 한 본 소프트웨어 이용을 포함하나, 이에 한하지 않습니다)을 하지 않는 것에 동의합니다.
-
-## 5. 해제
-
-본 규약은 본 규약에 규정한 유저에 의한 승인으로 발효되며, 유저가 본 소프트웨어에 대한 액세스, 본 소프트웨어의 이용 또는 본 소프트웨어의 설치를 하는 동안 유효하게 존속합니다. 당사는 자기 재량으로 통지 없이 언제든지 이유 여하를 불문하고 (a)본 소프트웨어의 전부 또는 일부에 대한 액세스를 제외하거나, 무효로 하고, (b)유저에 의한 본 소프트웨어의 전부 또는 일부에 대한 액세스 또는 그 이용을 정지시키며, (c)본 규약을 해제할 권리를 보유합니다.
-
-## 6. 보증 포기
-
-본 소프트웨어는 명시적 또는 묵시적인지를 불문하고 어떠한 종류의 보증도 없이 ‘있는 그대로’제공됩니다. 본 소프트웨어의 이용은 유저의 단독 책임에 따릅니다. 당사는 본 소프트웨어가 중단되지 않고 오류가 없다고 보증하지 않으며, 본 소프트웨어를 이용함으로써 얻을 가능성이 있는 결과에 대해서 어떠한 보증도 하지 않습니다. 당사는 명시적 또는 묵시적인지를 불문하고 그밖에 다른 어떠한 보증도 하지 않습니다. 당사는 상품성에 대한 보증, 특정 목적 적합성에 대한 보증, 소유권 또는 권리에 대한 보증 및 비침해에 대한 보증을 명확하게 포기합니다.
-
-## 7. 책임 제한
-
-어떠한 경우에도 당사 및 그 주주, 이사, 임원, 종업원, 관련 회사와 대리인 및 당사와 이들 서비스 제공자는 이용, 중단, 지연 또는 본 소프트웨어의 이용 불능, 수익감소 또는 일실이익, 서비스, 사업 또는 신용 지연, 중단 또는 상실, 데이터 상실 또는 파손, 시스템 또는 시스템 서비스 장애에 기인한 손실, 오작동 또는 셧다운, 정보의 정확한 전송, 판독 또는 송신이 불가능한 것, 정확한 정보를 갱신하거나 제공하지 못하는 것, 시스템 비호환성, 부정확한 호환성 정보 제공 또는 시스템 보안 침해에 대해, 또한 간접 손해 배상금, 부수적 손해 배상금, 징벌적 손해 배상금 또는 특별 손해 배상금(본 규약, 계약 위반, 불법행위(과실을 포함합니다) 또는 기타에 기인하거나 관련되었는지 여부를 불문합니다)(이러한 손해배상금이 예견 가능했는지 여부 또한 당사가 이러한 손해배상금 가능성에 대해 통지를 받았는지 여부를 불문합니다)에 대해 유저 또는 제3자에게 책임을 지지 않습니다. 어떠한 경우에도 당사 및 그 주주, 이사, 임원, 종업원, 관련 회사와 대리인 및 당사와 이들 서비스 제공자는 유저에 의한 본 소프트웨어의 액세스, 본 소프트웨어의 이용 또는 본 소프트웨어의 설치에 기인하거나, 어떠한 형태로든 관련된 모든 청구, 손해, 기타 채무(소송상, 계약상, 불법행위 또는 기타 별도의 것을 불문합니다)에 대해서도 책임을 지지 않습니다. 일부 법역에서는 부수적 손해 배상금 또는 간접 손해 배상금 제외 또는 제한을 금지하고 있으므로, 이 책임 제한이 유저에게 적용되지 않을 가능성이 있습니다. 유저가 본 소프트웨어에 만족하지 않은 경우의 유저의 유일하고도 배타적인 구제 수단은 유저에 의한 본 소프트웨어의 이용 중지로 합니다.
-
-## 8. 보상
-
-유저는 (a)본 규약, (b)유저에 의한 본 소프트웨어(유저가 송수신하는 데이터 또는 저작물을 포함합니다)에 대한 액세스, 본 소프트웨어(유저가 송수신하는 데이터 또는 저작물을 포함합니다)의 이용 또는 본 소프트웨어(유저가 송수신하는 데이터 또는 저작물을 포함합니다)의 설치, 및 (c)여하한 자에 의한 본 소프트웨어의 용인되지 않는 이용(제4조에 의해 용인되지 않는 것으로 금지된 유저 또는 여하한 자에 의하여 이루어지거나, 송신되거나, 재공표된 진술, 데이터 또는 컨텐츠를 포함하나, 이에 한하지 않습니다)에 기인 또는 관련하여 여하한 자가 주장하는 여하한 소 제기, 소송, 청구, 손해, 부채, 요구 또는 채무(합리적 비용 및 변호사보수를 포함합니다)에 대해서도 당사, 그 주주, 이사, 임원, 종업원, 관련 회사 및 대리인(이하 ‘피보상 당사자’라 합니다)을 보상하고, 피보상 당사자를 면책하며, 피보상 당사자를 방어하는 데 동의합니다. 이 보상에는 당사 또는 피보상 당사자의 과실이라 여겨지는 것(중과실이라 여겨지는 것을 포함합니다) 또는 기타 위법행위라 여겨지는 것에 대한 당사 및 모든 피보상 당사자의 명시적 보상을 포함합니다.
-
-## 9. 지적 재산
-
-당사는 당사의 모든 브랜드, 로고 및 상표(주식회사 EMURGO, EMURGO, 요로이, 요로이 크립토커런시 월렛, 요로이 월렛, 요로이 어플리케이션 및 상기 브랜드, 로고 및 상표의 표현이 변화한 것을 포함하나, 이에 한하지 않습니다)에 관한 모든 권리, 권한 및 이익을 보유합니다.
-
-## 10. 경고
-
-유저는 당사가 프라이빗 키 및/또는 유저의 ADA 기타 가상통화를 이동, 보관 또는 유지할 책임을 지지 않는다는 것을 인지하고 있습니다. 유저 및/또는 공동서명권자가 관련된 프라이빗 키를 분실하거나, 잘못 취급하거나, 절도 당한 경우 또는 유저의 공동서명자가 필요한 권한을 제공하는 것을 거부한 경우에는, 유저는, 유저가 자신의 ADA 기타 가상통화를 회수하지 못할 가능가능 있다는 점, 이러한 손실에 대해 당사는 책임지지 않는다는 점을 인지하고 있습니다. 유저는 본 소프트웨어 및/또는 당사에 의해 촉진되는 ADA 기타 가상 통화 거래가 지연될 가능성이 있다는 점, 지연에 따르는 어떠한 손실에 대해서도 당사는 책임지지 않는다는 점을 인지하고 있으며, 이에 동의합니다. 유저는 본 소프트웨어 및/또는 당사에 액세스 가능한 또는 연결된 제3자 자료 등 또는 제3자 사이트에 포함된 정보, 콘텐츠 또는 서비스 중 어느 하나에 대해서도 당사는 책임지지 않는다는 점을 인지하고 있으며, 이에 동의합니다. 유저는 유저가 유저 증명서를 어떠한 자연인 또는 법인(당사, 카르다노 재단, 인풋•아웃풋•에이치케이•리미티드 또는 기타 조직을 포함합니다)과도 공유하지 않음에 동의합니다. 또한 유저는 유저 증명서를 공유함으로써 유저의 ADA 기타 가상 통화를 잃을 가능성이 있다는 점을 인지하고 있으며, 이러한 손실에 대해 당사는 책임지지 않는다는 점에 동의합니다. 유저는 테스트넷 상에서 ADA를 환원함으로써, 유저는 테스트 ADA만을 환원한다는 점, 실제 ADA를 환원하기 위해서는 유저는 출시 후 메인넷 상에서 절차를 반복해야 함을 인지하고 있으며, 이에 동의합니다. 본 소프트웨어를 이용함으로써, 유저는 (i)당사가 하층 프로토콜 운용에 대해 책임을 지지 않는다는 점, 당사가 그 기능성, 보안 및 가용성에 대해 아무런 보증을 하지 않는다는 점, (ii)규칙 운용 상, 하층 프로토콜은 메인 체인의 갑작스런 변경(이하 ‘포크’라 합니다)에 의한 영향을 받을 가능성이 있다는 점, 이러한 포크는 유저가 본 소프트웨어 상에서 보관하는 ADA 기타 가상통화의 가치 및/또는 기능에 중대한 영향을 미칠 가능성이 있다는 점을 인지하고 있으며, 이에 동의합니다. 포크한 경우 유저는 당사가(유저에게 통지한 후, 또는 유저에게 통지하지 않고) 본 소프트웨어 운용을 일시적으로 정지할 수 있다는 점, 당사가 자기 재량으로 (a)자사 시스템 설정 또는 재설정을 할 수 있다는 점, 또는 (b)포크한 프로토콜을 일체 지원하지 않겠다는(또는 지원을 정지하는) 취지의 결정을 할 수 있다는 점에 동의합니다 (단, 유저에게는 본 소프트웨어에서 자금을 인출할 기회가 있습니다). 유저는 포크한 프로토콜 중 지원 대상 외 브랜치에 대해 당사는 일체 책임지지 않는다는 점을 인지하고 있으며, 이에 동의합니다.
-
-**a. 변경:** 당사는 유저가 당사에 신고한 주소로 어느 하나의 매체를 통해 보내는 전자 메시지로 변경 후의 조항을 유저에게 제시함으로써, 언제든지 통지 없이 본 규약의 조항을 추가하거나 변경할 수 있습니다. 이러한 변경 후 조항이 유저에게 제시된 날 이후에 유저가 본 소프트웨어에 액세스하거나, 본 소프트웨어를 이용한 경우에는 이러한 변경 후 조항이 승낙된 것으로 간주합니다.
-
-**b. 분리해석:** 본 규약 중 어느 규정 또는 어느 규정의 일부가 무효, 위법 또는 강제집행 불능이거나, 무효, 위법 또는 강제집행 불능이 되는 경우에는, 해당 규정 또는 해당 규정의 일부는 유효, 적법하고도 강제집행 가능이 되기 위해 필요한 최소한도에서 변경된 것으로 간주합니다. 이러한 변경을 할 수 없는 경우에는 해당 규정 또는 해당 규정의 일부는 삭제된 것으로 간주합니다. 본 조에 근거한 어느 규정 또는 어느 규정 일부의 변경 또는 삭제는 본 규약의 나머지 규정의 유효성 및 강제집행 가능성에 영향을 미치지 않습니다.
-
-**c. 완전합의-의거 포기:** 본 규약은, 본 규약의 내용에 관한 양 당사자 간의 완전한 합의를 구성하며, 양 당사자 간의 기존의 모든 합의 사항 및 양해 사항에 우선합니다. 유저는 본 규약에 명기된 것 외의 진술, 양해 사항, 표명 사항, 기대 사항 또는 합의 사항에 의거하지 않았음을 명시적으로 진술, 보장합니다.
-
-## 11. 기타
-
-**d. 본 규약은 구속력 있는 중재에 따릅니다:** 유저는 본 규약 또는 유저나 기타의 자에 의한 본 소프트웨어에 대한 액세스, 본 소프트웨어의 이용 또는 본 소프트웨어의 설치에 기인하거나, 어떠한 형태로든 관련된 분쟁 또는 여하한 자에 대한 청구는, 모두 국제상업회의소의 중재규칙에 근거하여 선임된 1명 내지 여러 명의 중재인에 의한 동 규칙에 근거한 구속력 있는 중재에 따른다는 점에 동의합니다. 중재지는 일본으로 하며, 중재 언어는 영어로 합니다.
-
-**e. 언어:** 본 규약의 번역은 현지에서의 참조 편의를 위해 작성되는 것이며, 영어판과 영어 외 언어판과의 사이에 불일치가 있는 경우에는, 본 규약의 영어판이 모든 점에서 우선합니다.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/nl-NL.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/nl-NL.md
deleted file mode 100644
index 420db27496..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/nl-NL.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# DEZE SERVICE OVEREENKOMST ("Overeenkomst") wordt gesloten tussen EMURGO Co., Ltd. ("Bedrijf") en elke persoon of entiteit ("Gebruiker") die het proces voltooit om de software die bekend staat als de Yoroi cryptovaluta "Wallet application" of Portefeuille-applicatie en gegevensverwerkingsdienst, applicatie, communicatiedienst of andere inhoud of aangeboden of geleverd met de software door het Bedrijf ("Software"). Het bedrijf en de gebruiker worden gezamenlijk de 'partijen' genoemd. DOOR OP DE TOETS ACCEPTATIE TE KLIKKEN OF TOEGANG TE KRIJGEN TOT, GEBRUIKEN OF INSTALLEREN VAN EEN ONDERDEEL VAN DE SOFTWARE, GAAT DE GEBRUIKER ERMEE AKKOORD MET EN STEMT IN MET ALLE VOORWAARDEN VAN DEZE OVEREENKOMST. ALS DE GEBRUIKER NIET AKKOORD GAAT MET ALLE VOORWAARDEN VAN DEZE OVEREENKOMST, ZAL DE GEBRUIKER GEEN BEVOEGDHEID WORDEN VERLEEND TOT GEBRUIK OF INSTALLATIE VAN ENIG ONDERDEEL VAN DE SOFTWARE.
-
-DEZE SERVICE OVEREENKOMST ("Overeenkomst") wordt gesloten tussen EMURGO Co., Ltd. ("Bedrijf") en elke persoon of entiteit ("Gebruiker") die het proces voltooit om de software die bekend staat als de Yoroi cryptovaluta "Wallet application", in het Nederlands "Portefeuille applicatie" en gegevensverwerkingsdienst, applicatie, communicatiedienst of andere inhoud of aangeboden of geleverd met de software door het Bedrijf ("Software"). Het bedrijf en de gebruiker worden gezamenlijk de 'partijen' genoemd. DOOR OP DE TOETS ACCEPTATIE TE KLIKKEN OF TOEGANG TE KRIJGEN TOT, GEBRUIKEN OF INSTALLEREN VAN EEN ONDERDEEL VAN DE SOFTWARE, GAAT DE GEBRUIKER ERMEE AKKOORD MET EN STEMT IN MET ALLE VOORWAARDEN VAN DEZE OVEREENKOMST. ALS DE GEBRUIKER NIET AKKOORD GAAT MET ALLE VOORWAARDEN VAN DEZE OVEREENKOMST, ZAL DE GEBRUIKER GEEN BEVOEGDHEID WORDEN VERLEEND TOT GEBRUIK OF INSTALLATIE VAN ENIG ONDERDEEL VAN DE SOFTWARE.
-
-## 1.Rechten en verplichtingen.
-
-**a. Omschrijving.** De software functioneert als een gratis, open source, digitale cryptovaluta-portemonnee. De software vormt geen account waarmee het bedrijf of enige andere derde partij optreedt als financiële tussenpersoon of bewaarder van de ADA van de gebruiker of enige andere crypto valuta. Hoewel de software bètatests heeft ondergaan en nog steeds wordt verbeterd door feedback van de ontwikkelaarsgemeenschap, open source-bijdragers en bètatesters, kan het bedrijf niet garanderen dat er geen bugs in de software zitten. De gebruiker erkent dat het gebruik van de software door de gebruiker voor risico en discretie van de gebruiker is en in overeenstemming met alle toepasselijke wetten. De gebruiker is verantwoordelijk voor het veilig houden van de wachtwoorden, pincodes, privésleutels, inwisselsleutels, afgeschermde verkoopsleutels, back-upherstel-geheugensteuntjes, ADA-toegangscodes en andere codes die de gebruiker gebruikt om toegang te krijgen tot de software of enige informatie, ADA, voucher of andere cryptovaluta-eenheid. ALS DE GEBRUIKER DE TOEGANG TOT DE CRYPTOVALUTA PORTEFEUILLE OF DE PRIVÉ SLEUTELS VERLIEST EN NIET APART EEN BACK-UP VAN DE CRYPTOVALUTA PORTEFEUILLE OF DE HERSTEL WOORDEN TEKST EN BIJBEHOREND WACHTWOORD HEEFT OPGESLAGEN DE CRYPTOVALUTA PORTEFEUILLE ONBEREIKBAAR ZAL ZIJN GEWORDEN. Alle transactieverzoeken zijn onomkeerbaar. Het bedrijf en zijn aandeelhouders, directeuren, functionarissen, werknemers, gelieerde ondernemingen en agenten kunnen de bevestiging van transacties niet garanderen of de privésleutels of wachtwoorden van de gebruiker niet ophalen als de gebruiker ze verliest of vergeet.
-
-**b. Toegang tot de applicatie.** De gebruiker gaat ermee akkoord dat de software van tijd tot tijd om welke reden dan ook ontoegankelijk of onbruikbaar kan zijn, inclusief maar niet beperkt tot: (i) defecten aan de apparatuur; (ii) periodieke onderhoudsprocedures of reparaties die de onderneming van tijd tot tijd kan uitvoeren; of (iii) oorzaken buiten de controle van het bedrijf of die redelijkerwijs niet te voorzien zijn door het bedrijf.
-
-**c. Apparatuur.** De gebruiker is als enige verantwoordelijk voor het leveren, onderhouden en verzekeren van compatibiliteit met de software, alle hardware, software, elektrische en andere fysieke vereisten voor het gebruik van de software door de gebruiker, inclusief maar niet beperkt tot telecommunicatie- en internettoegangsverbindingen en -links, webbrowsers of andere apparatuur, programma's en services die nodig zijn voor toegang tot en gebruik van de Software.
-
-**d. Beveiliging.** Gebruiker is als enige verantwoordelijk voor de beveiliging, vertrouwelijkheid en integriteit van alle informatie en inhoud die de gebruiker ontvangt, verzendt of opslaat op de software. De gebruiker is als enige verantwoordelijk voor elke geautoriseerde of ongeoorloofde toegang tot een account van de gebruiker door een persoon. Gebruiker stemt ermee in alle verantwoordelijkheid te dragen voor de vertrouwelijkheid van de beveiligingsapparaten, informatie, sleutels en wachtwoorden van de gebruiker.
-
-**e. Privacy.** Indien redelijkerwijs mogelijk, zal het bedrijf proberen de privacy van de gebruiker te respecteren. Het bedrijf zal geen persoonlijke informatie over de gebruiker of het account van de gebruiker controleren, bewerken of openbaar maken, inclusief de inhoud of het gebruik van de software door de gebruiker, zonder voorafgaande toestemming van de gebruiker, tenzij het bedrijf te goeder trouw van mening is dat een dergelijke actie nodig is om: (i) voldoen aan de juridische procedure of andere wettelijke vereisten van een overheidsinstantie; (ii) om de rechten of eigendom van de onderneming te beschermen en verdedigen; (iii) deze overeenkomst afdwingen; (iv) de belangen van gebruikers van de Software anders dan Gebruiker of enige andere persoon beschermen; of (v) onderhoud of reparatie van de diensten of apparatuur van het Bedrijf, inclusief de Software, zoals wettelijk toegestaan. De gebruiker verwacht geen privacy met betrekking tot internet in het algemeen. Het IP-adres van de gebruiker wordt verzonden en vastgelegd bij elk bericht of andere informatie die de gebruiker vanuit de software verzendt.
-
-## 2. Belastingen en vergoedingen
-
-Alle kosten voor het omrekenen van valuta, vergoedingen voor derden, verkoop, gebruik, toegevoegde waarde, persoonlijke eigendommen of andere belastingen, heffingen of heffingen van welke aard dan ook, inclusief rente en boetes daarop, nu opgelegd of hierna door een overheidsinstantie, en vergoedingen gemaakt door Gebruiker is vanwege de toegang, het gebruik of de installatie van de software door de gebruiker de exclusieve verantwoordelijkheid van de gebruiker.
-
-## 3. Gebruikersvertegenwoordigingen
-
-De gebruiker verklaart en garandeert aan het bedrijf dat: (a) als de gebruiker een natuurlijke persoon is, de gebruiker ouder dan achttien (18) jaar is; (b) Gebruiker de bevoegdheid en autoriteit heeft om de verplichtingen van Gebruiker uit hoofde van deze Overeenkomst aan te gaan en uit te voeren; (c) alle door de gebruiker aan het bedrijf verstrekte informatie waarheidsgetrouw, nauwkeurig en volledig is; (d) de gebruiker zal voldoen aan alle wetten en voorschriften van elk toepasselijk rechtsgebied met betrekking tot de toegang, het gebruik of de installatie van de software door de gebruiker; (e) De gebruiker moet voldoen aan alle voorwaarden van deze overeenkomst, inclusief maar niet beperkt tot de bepalingen uiteengezet in sectie 4; en (f) de gebruiker heeft en zal nauwkeurige en volledige informatie verstrekken zoals vereist voor toegang, gebruik of installatie van de software.
-
-## 4. Verboden gebruik
-
-De gebruiker is als enige verantwoordelijk voor alle handelingen en weglatingen die zich voordoen onder het account, de beveiligingsinformatie, de sleutels of het wachtwoord van de gebruiker, en de gebruiker stemt ermee in zich niet in te laten met onaanvaardbaar gebruik van de software, waaronder, zonder beperking, gebruik van de software om: ( a) ongevraagde berichten, kettingbrieven of ongevraagde commerciële e-mail verspreiden, opslaan of verzenden; (b) materiaal te verspreiden of door te geven dat, voor een redelijk persoon, beledigend, obsceen, pornografisch, lasterlijk, intimiderend, grof beledigend, vulgair, bedreigend of kwaadaardig kan zijn; (c) bestanden, afbeeldingen, software of ander materiaal dat daadwerkelijk of mogelijk inbreuk maakt op het auteursrecht, handelsmerk, octrooi, handelsgeheim of ander intellectueel eigendomsrecht van een persoon verspreiden, opslaan of verzenden; (d) een valse identiteit te creëren of anderszins te proberen iemand te misleiden met betrekking tot de identiteit of oorsprong van enige communicatie; (e) exporteren, opnieuw exporteren of downloaden van berichten of inhoud toestaan in strijd met export- of importwetgeving, regulering of beperking van enige toepasselijke jurisdictie, of zonder alle vereiste goedkeuringen, licenties of uitzonderingen; (f) interfereren, verstoren of proberen ongeautoriseerde toegang te verkrijgen tot andere accounts op de Software of een ander computernetwerk; of (g) virussen, Trojaanse paarden of enige andere kwaadaardige code of programma verspreiden, opslaan of verzenden.
-
-## 5. Beëindiging
-
-Deze overeenkomst is van kracht na aanvaarding door de gebruiker zoals hierin uiteengezet en zal volledig van kracht blijven zolang de gebruiker zich bezighoudt met toegang, gebruik of installatie van de software. Het bedrijf behoudt zich het recht voor om, naar eigen goeddunken en zonder kennisgeving, op elk moment en om welke reden dan ook: (a) de toegang tot alle of een deel van de software te verwijderen of uit te schakelen; (b) de toegang tot of het gebruik van alle of een deel van de Software door de Gebruiker op te schorten; en (c) deze overeenkomst beëindigen.
-
-## 6. Afwijzing van garanties
-
-DE SOFTWARE WORDT GELEVERD "ZOALS GELEVERD", ZONDER ENIGE GARANTIE, EXPLICIET OF IMPLICIET. GEBRUIK VAN DE SOFTWARE IS OP EIGEN RISICO VAN DE GEBRUIKER. HET BEDRIJF GARANDEERT NIET DAT DE SOFTWARE ONONDERBROKEN OF FOUTLOOS ZAL ZIJN, EN GEEFT HET BEDRIJF GEEN ENKELE GARANTIE MET BETREKKING TOT RESULTATEN DIE KUNNEN WORDEN VERKREGEN DOOR GEBRUIK VAN DE SOFTWARE. HET BEDRIJF GEEFT GEEN ANDERE GARANTIES, EXPLICIET OF IMPLICIET. HET BEDRIJF WIJST UITDRUKKELIJK ELKE GARANTIE VAN VERKOOPBAARHEID, GARANTIE VAN GESCHIKTHEID VOOR EEN BEPAALD DOEL, GARANTIE VAN TITEL OF BELANG, OF GARANTIE VAN NIET-INBREUK AF.
-
-## 7. Beperking van aansprakelijkheid
-
-IN GEEN GEVAL ZAL DE ONDERNEMING OF HAAR AANDEELHOUDERS, DIRECTEUREN, OFFICIEREN, WERKNEMERS, AANGESLOTEN OF AGENTEN, OF HUN OF HUN RESPECTIEVE DIENSTVERLENERS, AANSPRAKELIJK ZIJN VOOR GEBRUIKER OF ENIGE DERDE PARTIJ VOOR ENIG GEBRUIK, ONDERBREKING, VERTRAGING VAN DE SOFTWARE, VERLOREN INKOMSTEN OF WINST, VERTRAGING, ONDERBREKING OF VERLIES VAN DIENSTEN, ZAKEN OF GOODWILL, VERLIES OF CORRUPTIE VAN GEGEVENS, VERLIES ALS GEVAL VAN SYSTEEM- OF SYSTEEMDIENSTSTORING, STORING OF COMPUTERUITVAL, HET NIET NAUWKEURIG OVERZETTEN VAN INFORMATIE,LEZEN OF VERZENDEN VAN DE JUISTE INFORMATIE, SYSTEEMVERSCHILLEN OF VERSTREKKING VAN ONJUISTE COMPATIBILITEITSINFORMATIE OF FOUTEN IN SYSTEEMBEVEILIGING, OF VOOR ELKE SCHADE ALS GEVOLG VAN INCIDENTELE, INDIRECTE, ALS VOORBEELD, SPECIALE OF OPZETTELIJKE SCHADE, OF HET ONTSTAAT IN HET KADER VAN DEZE OVEREENKOMST OF HIER BUITEN, SCHENDING VAN HET CONTRACT , ONRECHTMATIGE DAAD (INCLUSIEF NALATIGHEID) OF ANDERSZINS, ONGEACHT OF DERGELIJKE SCHADE TE VOORKOMEN ZIJN EN OF WIJ OF MOGELIJK WERDEN GESTELD VAN DE MOGELIJKHEID VAN ZULKE SCHADE. IN GEEN GEVAL ZAL DE ONDERNEMING OF HAAR AANDEELHOUDERS, DIRECTEUREN, OFFICIEREN, WERKNEMERS, AANGESLOTEN OF AGENTEN, OF HUN OF HUN RESPECTIEVE DIENSTVERLENERS, AANSPRAKELIJK ZIJN VOOR ENIGE CLAIM, SCHADE OF ANDERE AANSPRAKELIJKHEID, WELKE ACTIE OF CONTRACT OP ANDERE WIJZE VOORTVLOEIEND UIT OF OP EEN MANIER IN VERBAND MET DE TOEGANG VAN GEBRUIKER, GEBRUIK OF INSTALLATIE VAN DE SOFTWARE. SOMMIGE RECHTSGEBIEDEN VERBODEN DE UITSLUITING OF BEPERKING VAN INCIDENTELE OF GEVOLGSCHADE, DUS IS DEZE BEPERKING VAN AANSPRAKELIJKHEID MOGELIJK NIET VAN TOEPASSING OP DE GEBRUIKER. ALS DE GEBRUIKER NIET TEVREDEN IS MET DE SOFTWARE, ZAL DE ENIGE EN EXCLUSIEVE MOGELIJKHEID VAN DE GEBRUIKER ZIJN HET GEBRUIK VAN DE SOFTWARE TE STOPPEN.
-
-## 8. Vrijwaring
-
-De gebruiker stemt ermee in het bedrijf, zijn aandeelhouders, directeuren, functionarissen, werknemers, gelieerde ondernemingen en agenten ("gevrijwaarde partijen") te vrijwaren van en te verdedigen tegen en voor elke actie, oorzaak, claim, schade, schuld, eis of aansprakelijkheid, inclusief redelijke kosten en advocatenhonoraria, opgesteld door een persoon, die voortvloeit uit of verband houdt met: (a) deze overeenkomst; (b) Toegang, gebruik of installatie van de software door de gebruiker, inclusief gegevens of werk dat door de gebruiker is verzonden of ontvangen; en (c) elk onaanvaardbaar gebruik van de Software door een persoon, met inbegrip van, maar niet beperkt tot, een verklaring, gegevens of inhoud die is gemaakt, verzonden of opnieuw gepubliceerd door de Gebruiker of een persoon die volgens sectie 4 verboden is als onaanvaardbaar. DEZE VRIJWARING BEVAT DE UITDRUKKELIJKE VRIJWARING VAN DE ONDERNEMING EN ALLE VRIJWARENDE PARTIJEN VOOR ELKE BEVOEGDE NALATIGHEID (INCLUSIEF ELKE GEGEVEN GROTE NALATIGHEID). OF ANDERE VERMELDE WANGEDRAG VAN DE ONDERNEMING OF ELKE GEVRIJWAARDE PARTIJ.
-
-## 9. Intellectueel eigendom
-
-Het bedrijf behoudt alle rechten, titels en belangen in en voor alle merken, logo's en handelsmerken van het bedrijf, inclusief, maar niet beperkt tot, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptovaluta Portemonnee, Yoroi Portemonnee, Yoroi App en variaties op de bewoordingen van de bovengenoemde merken, logo's en handelsmerken.
-
-## 10. Waarschuwingen
-
-Gebruiker erkent dat het bedrijf niet verantwoordelijk is voor het overdragen, beschermen of onderhouden van privésleutels en / of ADA van de gebruiker of enige andere cryptovaluta. Als de gebruiker en / of enige medeondertekenende autoriteit de bijbehorende privésleutels verliest, verkeerd behandelt of heeft gestolen, of als de mede-ondertekenaars van de gebruiker weigeren de vereiste autoriteit te verlenen, erkent de gebruiker dat de gebruiker de ADA van de gebruiker of enige andere cryptovaluta mogelijk niet kan herstellen, en dat het bedrijf is niet verantwoordelijk voor dergelijk verlies.
-
-De gebruiker erkent en gaat ermee akkoord dat ADA of andere cryptovaluta-transacties die door de software en / of het bedrijf worden gefaciliteerd, vertraagd kunnen zijn en dat het bedrijf niet verantwoordelijk is voor enig bijbehorend verlies. De gebruiker erkent en gaat ermee akkoord dat het bedrijf niet verantwoordelijk is voor enig aspect van de informatie, inhoud of diensten in materiaal van derden of op sites van derden die toegankelijk zijn voor of gelinkt zijn aan de software en / of het bedrijf.
-
-De gebruiker stemt ermee in dat de gebruiker nooit het certificaat van de gebruiker mag delen met een natuurlijke of rechtspersoon, inclusief het bedrijf, Cardano Foundation, Input Output HK Limited of een andere entiteit. Verder erkent de gebruiker dat het delen van het gebruikerscertificaat kan leiden tot verlies van de ADA van de gebruiker of enige andere cryptovaluta, en de gebruiker gaat ermee akkoord dat het bedrijf niet verantwoordelijk is voor dergelijk verlies. De gebruiker erkent en gaat ermee akkoord dat de gebruiker, door ADA in het “Testnet” in te wisselen, alleen test-ADA inwisselt en dat de gebruiker, om de daadwerkelijke ADA in te wisselen, de procedure in het “Openbare net” moet herhalen, zodra deze is vrijgegeven.
-
-Door de Software te gebruiken, erkent en gaat Gebruiker ermee akkoord: (i) dat het Bedrijf niet verantwoordelijk is voor de werking van de onderliggende protocollen en dat het Bedrijf geen garantie biedt voor hun functionaliteit, veiligheid of beschikbaarheid; en (ii) dat de onderliggende protocollen onderhevig zijn aan plotselinge veranderingen in de operationele regels van de hoofdketen ("vorken"), en dat dergelijke vorken de waarde en / of functie van de ADA of enige andere cryptovaluta die de gebruiker opslaat wezenlijk kunnen beïnvloeden op de software. In het geval van een splitsing stemt de gebruiker ermee in dat het bedrijf de softwareactiviteiten tijdelijk kan opschorten (met of zonder kennisgeving aan de gebruiker) en dat het bedrijf, naar eigen goeddunken, (a) zijn systemen kan configureren of opnieuw configureren of (b) kan beslissen het gesplitste protocol niet volledig te ondersteunen (of niet meer te ondersteunen), op voorwaarde echter dat de Gebruiker de mogelijkheid krijgt om geld op te nemen van de Software. De gebruiker erkent en gaat ermee akkoord dat het bedrijf absoluut geen enkele verantwoordelijkheid aanvaardt met betrekking tot een niet-ondersteunde vertakking van een uitgesplitst protocol.
-
-## 11. Diversen
-
-**a. Amendement.** Het bedrijf heeft het recht om op elk moment en zonder voorafgaande kennisgeving de voorwaarden van deze overeenkomst toe te voegen of te wijzigen, simpelweg door dergelijke gewijzigde voorwaarden aan de gebruiker te bezorgen via een elektronisch bericht via elk medium naar elk adres dat door de gebruiker aan het bedrijf is verstrekt. De toegang tot of het gebruik van de software door de gebruiker na de datum waarop dergelijke gewijzigde voorwaarden aan de gebruiker worden geleverd, wordt beschouwd als acceptatie van dergelijke gewijzigde voorwaarden.
-
-**b. Opzegging.** Als enige bepaling of deelbepaling van deze overeenkomst ongeldig of niet-afdwingbaar is of wordt, wordt deze geacht te zijn gewijzigd tot het minimum dat nodig is om deze geldig, legaal en afdwingbaar te maken. Indien een dergelijke wijziging niet mogelijk is, wordt de desbetreffende bepaling of deelbepaling geacht te zijn geschrapt. Elke wijziging of schrapping van een bepaling of deelbepaling krachtens dit artikel heeft geen invloed op de geldigheid en afdwingbaarheid van de rest van deze overeenkomst.
-
-**c. c. Gehele overeenkomst - Disclaimer van vertrouwen**. Deze overeenkomst vormt de volledige overeenkomst tussen de partijen met betrekking tot het onderwerp hiervan en vervangt alle eerdere overeenkomsten of afspraken tussen de partijen. De gebruiker verklaart en garandeert uitdrukkelijk dat hij niet vertrouwt op andere verklaringen, afspraken, verklaringen, verwachtingen of overeenkomsten dan die welke uitdrukkelijk in deze overeenkomst zijn uiteengezet.
-
-**d. DEZE OVEREENKOMST IS ONDERWORPEN AAN BINDENDE ARBITRAGE.** De gebruiker stemt ermee in dat alle geschillen of claims tegen een persoon die voortvloeit uit of op enigerlei wijze verband houdt met deze overeenkomst of de toegang, het gebruik of de installatie van de software door de gebruiker of een andere persoon, onderworpen zullen zijn aan bindende arbitrage onder de arbitrageregels van de Internationale Kamer van Koophandel door een of meer arbiters die zijn aangewezen in overeenstemming met de genoemde regels. De plaats van arbitrage is Japan. De taal van de arbitrage is Engels.
-
-**e. TAAL.** Elke vertaling van deze overeenkomst is uitsluitend gemaakt voor lokale referentie en in het geval van enige tegenstrijdigheid tussen de Engelse en niet-Engelse versies, zal de Engelse versie van deze overeenkomst prevaleren en in alle opzichten gelden.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/pt-BR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/pt-BR.md
deleted file mode 100644
index 2aab64f866..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/pt-BR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Acordo de Termos e Condições
-
-Este contrato de Termos de Serviço ("Acordo") é realizado entre EMURGO Co., Ltd ("Companhia") e qualquer pessoa ou entidade ("Usuário") que complete o processo de download, utilize, ou opere o software conhecido como aplicativo Yoroi Wallet de criptomoedas, e o serviço de processamento de dados, aplicação, comunicação ou qualquer outro conteúdo oferecido ou provido pelo software da companhia ("Software"). A Companhia e o Usuário são coletivamente referidos como "Partes". AO PRESSIONAR O BOTÃO ACEITAR OU ACESSAR, USAR OU INSTALAR QUALQUER PARTE DO SOFTWARE, É ENTENDIDO QUE O USUÁRIO EXPRESSAMENTE CONCORDA E CONSENTE EM SER LEGALMENTE RESPONSABILIZADO POR TODOS OS TERMOS DESTE ACORDO. SE O USUÁRIO NÃO CONCORDA COM TODOS OS TERMOS DESTE ACORDO, O USUÁRIO NÃO ESTÁ AUTORIZADO A ACESSAR, USAR OU INSTALAR QUALQUER PARTE DESSE SOFTWARE.
-
-## 1. Direitos e Obrigações
-
-O Software funciona como uma carteira de criptomoeda digital gratuita e de código aberto. O Software não constitui uma conta pela qual a Empresa ou quaisquer terceiros atuem como intermediários financeiros ou custodiantes da ADA do Usuário ou qualquer outra criptomoeda. Embora o Software tenha sido submetido a testes beta e continue sendo aprimorado pelos comentários da comunidade de desenvolvedores, colaboradores de código aberto e testadores beta, a Empresa não pode garantir que não haverá bugs no Software. O Usuário reconhece que o uso do Software pelo usuário corre risco, discrição e conformidade com todas as leis aplicáveis. O Usuário é responsável por proteger as senhas, PINs, chaves privadas, chaves de resgate, chaves de venda protegidas, senhas mnemônicas de recuperação de backup, códigos de acesso ADA e quaisquer outros códigos que o usuário usa para acessar o Software ou qualquer informação, ADA, voucher ou outra unidade de criptomoeda. SE O USUÁRIO PERDER ACESSO À CARTEIRA DE CRIPTOMOEDAS OU ÀS CHAVES PRIVADAS E NÃO ARMAZENAR SEPARADAMENTE UM BACKUP DE CARTEIRA OU BACKUP DE RECUPERAÇÃO DA FRASE MNEMÔNICA E A CORRESPONDENTE SENHA, RECONHECE E CONCORDA QUE A CARTEIRA FICARÁ INACESSÍVEL. Todas as solicitações de transação são irreversíveis. A Empresa e seus acionistas, diretores, executivos, funcionários, afiliados e agentes não podem garantir a confirmação da transação ou recuperar as chaves ou senhas privadas do Usuário se o Usuário as perder ou esquecer.
-
-** b. Acessibilidade. ** O usuário concorda que, de tempos em tempos, o Software poderá ficar inacessível ou inoperável por qualquer motivo, incluindo, sem limitação: (i) mau funcionamento do equipamento; (ii) procedimentos ou reparos periódicos de manutenção que a Companhia possa realizar periodicamente; ou (iii) causas fora do controle da Companhia ou que não sejam razoavelmente previsíveis pela Companhia.
-
-** c. Equipamento. ** O Usuário será o único responsável por fornecer, manter e garantir a compatibilidade com o Software, todos os requisitos de hardware, software, elétrica e outros requisitos físicos para o uso do Software pelo Usuário, incluindo, sem limitação, conexões de telecomunicações e acesso à Internet e links, navegadores da web ou outros equipamentos, programas e serviços necessários para acessar e usar o Software.
-
-** d. Segurança. ** O Usuário será o único responsável pela segurança, confidencialidade e integridade de todas as informações e conteúdos que o Usuário recebe, transmite ou armazena no Software. O Usuário será o único responsável por qualquer acesso autorizado ou não autorizado a qualquer conta do Usuário por qualquer pessoa. O Usuário concorda em assumir toda a responsabilidade pela confidencialidade dos dispositivos, informações, chaves e senhas de segurança do Usuário.
-
-** e. Privacidade. ** Quando razoavelmente praticável, a Empresa tentará respeitar a privacidade do Usuário. A Empresa não monitora, edita ou divulga nenhuma informação pessoal sobre a conta do Usuário, incluindo seu conteúdo ou o uso do Software pelo Usuário, sem o consentimento prévio do, a menos que a Empresa acredite de boa fé que tal ação é necessária para: (i) cumprir o processo legal ou outros requisitos legais de qualquer autoridade governamental; (ii) proteger e defender os direitos ou propriedades da Companhia; (iii) fazer cumprir este Contrato; (iv) proteger os interesses dos usuários do Software que não sejam o Usuário ou qualquer outra pessoa; ou (v) operar ou realizar manutenção e reparo dos serviços ou equipamentos da Companhia, incluindo o Software conforme autorizado por lei. O usuário não tem expectativa de privacidade em relação à Internet em geral. O endereço IP do usuário é transmitido e gravado com cada mensagem ou outra informação que o usuário envia do software.
-
-## 2. Impostos e Taxas
-
-Todas as cobranças de conversão de moeda, taxas de terceiros, vendas, uso, valor agregado, bens pessoais ou outros impostos, taxas ou impostos de qualquer espécie, incluindo juros e multas, sobre impostos agora ou a seguir por qualquer entidade governamental e taxas incorridas ao Usuário em razão do acesso, uso ou instalação do Software será de exclusiva responsabilidade do Usuário.
-
-## 3. Representações do usuário
-
-O Usuário declara e garante à Empresa que: (a) se o Usuário for uma pessoa natural, o Usuário tenha mais de dezoito (18) anos; (b) O Usuário tem o poder e a autoridade para celebrar e executar as obrigações do Usuário sob este Contrato; (c) todas as informações fornecidas pelo Usuário à Empresa são verdadeiras, precisas e completas; (d) O Usuário cumprirá todas as leis e regulamentos de qualquer jurisdição aplicável em relação ao acesso, uso ou instalação do Software; (e) O Usuário deve cumprir todos os termos e condições deste Contrato, incluindo, sem limitação, as disposições estabelecidas na Seção 4; e (f) O Usuário forneceu e fornecerá informações precisas e completas, conforme necessário para acesso, uso ou instalação do Software.
-
-## 4. Usos Proibidos
-
-O Usuário é o único responsável por todos e quaisquer atos e omissões que ocorram na conta, informações de segurança, chaves ou senha do Usuário, e concorda em não se envolver em uso inaceitável do Software, que inclui, sem limitação, uso do Software para: ( a) disseminar, armazenar ou transmitir mensagens não solicitadas, correntes ou e-mail comercial não solicitado; (b) disseminar ou transmitir material que, para uma pessoa razoável, possa ser abusivo, obsceno, pornográfico, difamatório, hostil, ofensivo, vulgar, ameaçador ou malicioso; (c) disseminar, armazenar ou transmitir arquivos, gráficos, software ou outro material que viole de fato ou potencialmente os direitos autorais, marca registrada, patente, segredo comercial ou outro direito de propriedade intelectual de qualquer pessoa; (d) criar uma identidade falsa ou tentar enganar qualquer pessoa quanto à identidade ou origem de qualquer comunicação; (e) exportar, reexportar ou permitir o download de qualquer mensagem ou conteúdo que viole qualquer lei de exportação ou importação, regulamento ou restrição de qualquer jurisdição aplicável ou sem todas as aprovações, licenças ou isenções necessárias; (f) interferir, interromper ou tentar obter acesso não autorizado a outras contas no Software ou em qualquer outra rede de computadores; ou (g) disseminar, armazenar ou transmitir vírus, cavalos de Troia ou qualquer outro código ou programa malicioso.
-
-## 5. Rescisão
-
-Este Contrato entra em vigor com a aceitação do Usuário, conforme estabelecido neste documento, e continuará em vigor, desde que o Usuário se envolva em qualquer acesso, uso ou instalação do Software. A Empresa reserva-se o direito, a seu exclusivo critério e sem aviso prévio, a qualquer momento e por qualquer motivo, de: (a) remover ou desativar o acesso a todo ou parte do Software; (b) suspender o acesso do Usuário ou o uso de todo ou parte do Software; e (c) rescindir este Contrato.
-
-## 6. Isenção de Garantias
-
-O SOFTWARE É FORNECIDO "TAL COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA. O USO DO SOFTWARE É DE RISCO ÚNICO DO USUÁRIO. A EMPRESA NÃO GARANTE QUE O SOFTWARE SERÁ ININTERRUPTO OU LIVRE DE ERROS, NEM A EMPRESA GARANTIA QUALQUER RESULTADO QUE PODE SER OBTIDO PELO USO DO SOFTWARE. A EMPRESA NÃO OFERECE OUTRAS GARANTIAS, EXPRESSAS OU IMPLÍCITAS. A EMPRESA EXPRESSAMENTE EXCLUSIVAMENTE QUALQUER GARANTIA DE COMERCIALIZAÇÃO, GARANTIA DE ADEQUAÇÃO A UM PROPÓSITO PARTICULAR, GARANTIA DE TÍTULO OU INTERESSE OU GARANTIA DE NÃO INFRAÇÃO.
-
-## Limitação de responsabilidade
-
-EM NENHUM CASO A EMPRESA OU SEUS ACIONISTAS, DIRETORES, OFICIAIS, FUNCIONÁRIOS, AFILIADOS OU AGENTES, OU QUALQUER DELES OU SEUS PRESTADORES DE SERVIÇOS, SERÃO RESPONSÁVEIS PELO USUÁRIO OU QUALQUER TERCEIRA PARTE PARA QUALQUER USO, INTERRUPÇÃO, ATRASO OU INABILIDADE DE USO DO SISTEMA, RECEITAS OU LUCROS PERDIDOS, ATRASOS, INTERRUPÇÕES OU PERDA DE SERVIÇOS, NEGÓCIOS OU PROSPECTOS DE NEGÓCIOS, PERDA OU CORRUPÇÃO DE DADOS, PERDA RESULTANTE DE FALHA DO SERVIÇO OU DO SISTEMA, FUNCIONAMENTO OU DESLIGAMENTO, FALHA EM TRANSFERIR, LER OU TRANSMITIR INFORMAÇÃO PRECISAMENTE, ATUALIZAR OU FORNECER INFORMAÇÕES CORRETAS, INCOMPATIBILIDADE DO SISTEMA OU FORNECIMENTO DE INFORMAÇÕES DE COMPATIBILIDADE INCORRETA OU QUEBRA NA SEGURANÇA DO SISTEMA, OU QUAISQUER DANOS CONSEQÜENTES, INCIDENTAIS, INDIRETOS, EXEMPLARES, ESPECIAIS OU DANOS PUNITIVOS, SEJA CONCEBIDO NESTE CONTRATO, TORT (INCLUINDO NEGLIGÊNCIA) OU DE OUTRO MODO, INDEPENDENTE DE O QUANTO OS DANOS ERAM PREVISÍVEIS E SE NÓS SABIAMOS OU NÃO DA POSSIBILIDADE DESSE DANOS OCORREREM. EM NENHUM CASO A EMPRESA OU SEUS ACIONISTAS, DIRETORES, OFICIAIS, FUNCIONÁRIOS, AFILIADOS OU AGENTES, OU QUALQUER DE LES OU SEUS RESPECTIVOS PRESTADORES DE SERVIÇOS, SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANO OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, AÇÃO DE OUTRA FORMA, DECORRENTE OU DE QUALQUER FORMA RELACIONADA AO ACESSO, USO OU INSTALAÇÃO DO SISTEMA PELO USUÁRIO. ALGUMAS JURISDIÇÕES PROIBEM A EXCLUSÃO OU LIMITAÇÃO DE DANOS INCIDENTAIS OU CONSEQÜENCIAIS, POR ISSO, ESTA LIMITAÇÃO DE RESPONSABILIDADE PODE NÃO SE APLICAR AO USUÁRIO. SE O USUÁRIO NÃO ESTIVER SATISFEITO COM OS SISTEMA, É DE SUA E APENAS SUA RESPONSABILIDADE O CESSAMENTO DO USO.
-
-## Indenização
-
-O Usuário concorda em indenizar, isentar e defender a Empresa, seus acionistas, diretores, executivos, funcionários, afiliados e agentes ("Partes Indenizadas") de e contra qualquer ação, causa, reclamação, dano, dívida, demanda ou responsabilidade, incluindo razoáveis custos e honorários advocatícios, declarados por qualquer pessoa, decorrentes ou relacionados (a) este Contrato; (b) Acesso do usuário, uso ou instalação do Sistema pelo Usuário, incluindo quaisquer dados ou trabalhos transmitidos ou recebidos pelo Usuário; (c) qualquer uso inaceitável do Software por qualquer pessoa, incluindo, sem limitação, qualquer declaração, dado ou conteúdo criado, transmitido ou republicado pelo Usuário ou qualquer pessoa que seja proibida como inaceitável na Seção 4. ESTA INDENIZAÇÃO INCLUI A INDENIZAÇÃO EXPRESSA DA EMPRESA E DE TODAS AS PARTES INDENIZADAS POR QUALQUER ALEGADA NEGLIGÊNCIA (INCLUINDO QUALQUER NEGLIGÊNCIA ALEGADA COMO GROSSEIRA). OU OUTRAS ALEGADAS DESVIOS DE CONDUTA DA EMPRESA OU DE QUALQUER PARTE INDENIZADA.
-
-## Propriedade Intellectual
-
-A Empresa mantém todos os direitos, títulos e interesses de e para todas as marcas, logotipos e marcas comerciais da Empresa, incluindo, entre outros, EMURGO Co., Ltd., EMURGO, Yoroi, Carteira de criptomoedas Yoroi, Carteira Yoroi, Yoroi App e variações da redação das marcas, logotipos e marcas comerciais acima mencionados.
-
-## Advertências
-
-O Usuário reconhece que a Empresa não será responsável por transferir, proteger ou manter chaves privadas e/ou ADA do Usuário ou qualquer outra criptomoeda. Se o Usuário e/ou qualquer autoridade de assinatura conjunta perder, manipular incorretamente ou tiver roubado chaves privadas associadas, ou se os assinantes do usuário se recusarem a fornecer a autoridade necessária, o Usuário reconhece que o Usuário pode não ser capaz de recuperar sua(s) ADA ou qualquer outra criptomoeda e que a empresa não será responsável por tal perda.
-
-O Usuário reconhece e concorda que a trasferência de ADA ou qualquer outra transação de criptomoeda facilitada pelo Software e / ou pela Empresa pode se atrasar e que a Empresa não será responsável por nenhuma perda associada. O Usuário reconhece e concorda que a Empresa não se responsabiliza por nenhum aspecto das informações, conteúdos ou serviços contidos em materiais de terceiros ou em sites de terceiros acessíveis ou vinculados ao Sistema e / ou à Empresa.
-
-O Usuário concorda que nunca deve compartilhar o certificado do Usuário com nenhuma pessoa física ou jurídica, incluindo a Empresa, a Fundação Cardano, a Input Output HK Limited ou qualquer outra entidade. Além disso, o Usuário reconhece que o compartilhamento do certificado do Usuário pode resultar na perda de sua(s) ADA ou em qualquer outra criptomoeda, e o Usuário concorda que a Empresa não será responsável por tal perda. O Usuário reconhece e concorda que, ao resgatar ADA na rede de teste, o Usuário resgata apenas ADA de teste e que, para resgatar ADA real, o Usuário deve repetir o procedimento na rede principal, uma vez liberado.
-
-Ao usar o Software, o Usuário reconhece e concorda: (i) que a Empresa não é responsável pela operação dos protocolos subjacentes e que a Empresa não garante sua funcionalidade, segurança ou disponibilidade; e (ii) que os protocolos subjacentes estão sujeitos a alterações repentinas da rede principal nas regras operacionais ("forks") e que esses fork podem afetar materialmente o valor e / ou a função da ADA ou qualquer outra criptomoeda que o Usuário armazena em no sistema. No caso de uma fork, o Usuário concorda que a Empresa pode suspender temporariamente as operações do Sistema (com ou sem aviso prévio ao Usuário) e que a Empresa pode, a seu exclusivo critério, (a) configurar ou reconfigurar seus sistemas ou (b) decidir não apoiar totalmente (ou deixar de apoiar) o protocolo bifurcado, desde que, no entanto, o Usuário tenha a oportunidade de retirar fundos do Sistema. O Usuário reconhece e concorda que a Empresa não assume absolutamente nenhuma responsabilidade em relação a uma ramificação não suportada de um protocolo bifurcado.
-
-## Diversos
-
-** a. Alteração. ** A Empresa terá o direito, a qualquer momento e sem aviso prévio, de adicionar ou modificar os termos deste Contrato, simplesmente entregando esses termos alterados ao Usuário por mensagem eletrônica, por qualquer meio, para qualquer endereço fornecido pelo usuário para a empresa. O acesso ou uso do Software pelo Usuário após a data em que esses termos alterados forem entregues ao Usuário será considerado como aceitação desses termos alterados.
-
-** b. Indenização. ** Se qualquer disposição ou parte deste Contrato for, ou se tornar inválido, ilegal ou inexequível, ele será considerado modificado na extensão mínima necessária para torná-lo válido, legal e aplicável. Se tal modificação não for possível, a disposição ou parte da disposição relevante será considerada excluída. Qualquer modificação ou exclusão de uma provisão ou provisão parcial nos termos deste artigo não afetará a validade e aplicabilidade do restante deste Contrato.
-
-** c. Contrato completo - Isenção de responsabilidade **. Este Contrato constitui o contrato completo entre as Partes com relação ao assunto deste documento e substitui todos os acordos ou entendimentos anteriores entre as Partes. O Usuário expressa e garante expressamente que não está confiando em quaisquer declarações, entendimentos, representações, expectativas ou acordos que não sejam expressamente estabelecidos neste Contrato.
-
-** d. ESTE CONTRATO ESTÁ SUJEITO A ARBITRAGEM OBRIGATÓRIA. ** O Usuário concorda que toda e qualquer disputa ou reclamação contra qualquer pessoa decorrente de ou de alguma forma relacionada a este Contrato ou ao acesso, uso ou instalação do Software pelo Usuário ou qualquer outro uma pessoa estará sujeita a arbitragem vinculativa sob as Regras de Arbitragem da Câmara de Comércio Internacional por um ou mais árbitros nomeados de acordo com as referidas Regras. O local da arbitragem será o Japão. O idioma da arbitragem deve ser o inglês.
-
-** e. IDIOMA. ** Qualquer tradução deste Contrato é feita apenas para fins de referência local e, no caso de qualquer inconsistência entre as versões em inglês e outras que não sejam em inglês, a versão em inglês deste Contrato prevalecerá e prevalecerá em todos os aspectos.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ru-RU.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/ru-RU.md
deleted file mode 100644
index 179a6589e8..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/ru-RU.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Соглашение о предоставлении услуг
-
-Настоящие положения о предоставлении услуг (далее - "Соглашение") заключаются между EMURGO Co., Ltd. (далее "Компания") и любым физическим или юридическим лицом ( далее - "Пользователь"), который завершает процесс загрузки, утилизации или эксплуатации программного обеспечения, известного как приложение криптовалютного кошелька Yoroi, а также услуги по обработке данных, приложение, коммуникационные услуги и другой контент, предлагаемый или предоставляемый программным обеспечением Компании (далее "Программа"). Компания и Пользователь, совместно далее именуются "Сторонами". ПОДТВЕРДИВ СОГЛАСИЕ, НАЖАТИЕМ КНОПКИ ИЛИ ПОЛУЧЕНИЕМ ДОСТУПА, ИСПОЛЬЗУЯ ИЛИ УСТАНАВЛИВАЯ КАКУЮ-ЛИБО ЧАСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ПОЛЬЗОВАТЕЛЬ НЕПОСРЕДСТВЕННО ПРИНИМАЕТ УСЛОВИЯ СОГЛАШЕНИЯ И ДАЕТ СОГЛАСИЕ БЫТЬ ЮРИДИЧЕСКИ СВЯЗАННЫМ СО ВСЕМИ СОГЛАШЕНИЯМИ ДАННОГО ДОГОВОРА. ЕСЛИ ПОЛЬЗОВАТЕЛЬ НЕ ДАЕТ СВОЕ СОГЛАСИЕ НА ВСЕ УСЛОВИЯ ЭТОГО ДОГОВОРА, ПОЛЬЗОВАТЕЛЮ НЕ БУДЕТ РАЗРЕШЕН ДОСТУП, ИСПОЛЬЗОВАНИЕ ИЛИ УСТАНОВКА КАКОЙ-ЛИБО ЧАСТИ ПРОГРАММЫ.
-
-## 1. ПРАВА И ОБЯЗАННОСТИ
-
-**a. Описание.** Программа функционирует как бесплатный, открытый исходный код, электронный криптовалютный кошелек. Программа не является аккаунтом, с помощью которого Компания или другие третьи стороны выступают в качестве финансовых посредников или хранителей ADA пользователя или любой другой криптовалюты. Пока Программа подвергается бета-тестированию и продолжает совершенствоваться путем обратной связи с разработчиками общества, вкладчиками и бета-тестировщиками, Компания не может гарантировать, что не возникнет никаких ошибок в Программе. Пользователь осознает, что использование Программы на его риске, осмотрительности и соблюдении всех применимых законов. Пользователь несет ответственность за сохранность его паролей, PIN-кодов, личных ключей, ключей выкупа, ICO-ключей (shielded vending keys), синхронизации восстановительной мнемонической фразы. Пароли ADA и любые другие коды Пользователь использует для доступа к Программе или любой другой информации, к ADA, ваучеру или другого раздела криптовалюты. ЕСЛИ ПОЛЬЗОВАТЕЛЬ ТЕРЯЕТ ДОСТУП К СВОЕМУ КОШЕЛЬКУ ИЛИ ЛИЧНЫМ КЛЮЧАМ И НЕ ИМЕЕТ ОТДЕЛЬНО СОХРАНЕННОЙ РЕЗЕРВНОЙ КОПИИ СВОЕГО КРИПТОКОШЕЛЬКА ИЛИ РЕЗЕРВНОЙ КОПИИ ВОССТАНОВИТЕЛЬНОЙ МНЕМОНИЧЕСКОЙ ФРАЗЫ И СООТВЕТСТВУЮЩЕГО ПАРОЛЯ(ЛЕЙ), ПОЛЬЗОВАТЕЛЬ ПРИЗНАЕТ И СОГЛАШАЕТСЯ С ТЕМ, ЧТО ЛЮБАЯ ADA ИЛИ ЛЮБЫЕ ДРУГИЕ КРИПТОВАЛЮТЫ ПОЛЬЗОВАТЕЛЯ, СВЯЗАННЫЕ С ТЕМ КРИПТОКОШЕЛЬКОМ СТАНУТ НЕДОСТУПНЫ. Все запросы о проведении транзакций являются необратимыми. Компания и ее акционеры, директора, должностные лица, сотрудники, партнеры и агенты не могут гарантировать подтверждение транзакции или восстановление личных ключей Пользователя или паролей, если он их потеряет или забудет.
-
-**b. Доступность.** Пользователь согласен с тем, что время от времени Программа может быть недоступной или не функционировать по какой-либо причине, включая, без ограничений: (i) неисправность оборудования; (ii) периодические процедуры технического обслуживания или ремонтные работы, которые Компания может проводить время от времени; или (iii) случаи, которые не зависят от Компании или которые не в состоянии быть предвидены Компанией.
-
-**c. Оборудование.** Пользователь несет полную ответственность за предоставление, поддержание и обеспечение совместимости с Программой, всем оборудованием, программным обеспечением, электрическими и другими физическими требованиями для использования Пользователем Программы, включая, без ограничений, телекоммуникации и соединения с доступом в Интернет, веб браузеры или другое оборудование, программы и сервисы, необходимые для доступа и использования Программы.
-
-**d. Безопасность.** Пользователь несет полную ответственность за безопасность, конфиденциальность и целостность всей информации и содержания, которые Пользователь получает, передает или сохраняет в Программе. Пользователь несет полную ответственность за любой разрешенный или несанкционированный доступ к любому аккаунту Пользователя любым лицом. Пользователь подтверждает свое согласие нести полную ответственность за конфиденциальность устройств безопасности, информации, ключей и паролей Пользователя.
-
-**e. Конфиденциальность.** Когда это практически осуществимо, Компания будет стремится соблюдать конфиденциальность Пользователя. Компания не будет отслеживать, редактировать или разглашать какую-либо личную информацию о Пользователе и его аккаунте, включая его содержимое или использование Пользователем Программы без предварительного согласия Пользователя за исключением случаев, когда Компания искренне полагает, что данные действия необходимы для: (i) соблюдения юридического (судебного) процесса или другого правового требования любого правительственного органа; (ii) охраны и защиты прав и имущества Компании (iii) обеспечения соблюдения данного Соглашения (iv) защиты интересов пользователей Программы помимо Пользователя или любого другого лица; или (v) для функционирования или проведения технического обслуживания и ремонта услуг Компании или оборудования, включая Программу в соответствии с законодательством. Пользователь не рассчитывает на конфиденциальность в отношении Интернета в целом. Пользовательский IP адрес передается и записывается с каждым сообщением или другой информацией, которую Пользователь отправляет из Программы.
-
-## 2. Налоги и сборы
-
-Все комиссии за конвертацию валюты, сборы третьих сторон, продажи, использование, добавленная стоимость, личную собственность или другие налоги, пошлины или сборы какого-либо вида, включая проценты и штрафы по ним, будь то введенные в настоящее время или в дальнейшем любым правительственным органом,а также сборы, понесенные Пользователем по причине доступа Пользователя, использования или установки Программы является исключительно ответственностью Пользователя.
-
-## 3. Пользовательские заявления
-
-Пользователь заявляет и гарантирует Компании, что: (a) Пользователь является физическим лицом и что Пользователь в возрасте от восемнадцати лет(18); (b) Пользователь имеет права и полномочия для заключения и выполнения обязательств Пользователя в соответствии с данным Соглашением; (с) вся информация, предоставленная для Компании Пользователем, является достоверной, точной и полной; (d) Пользователь обязуется соблюдать все законы и правила любой применимой юрисдикцией в отношении доступа Пользователя, использования или установки Программы; (e) Пользователь должен соблюдать все условия и правила настоящего Соглашения, включая, без ограничений, положения, изложенные в Разделе 4 и (f) Пользователь предоставил и будет предоставлять точную и полную информацию, необходимую для доступа, использования или установки Программы.
-
-## 4. Запрещенные виды использования
-
-Пользователь несет всю ответственность за любые действия и упущения, происходящие в аккаунте Пользователя,информации в области безопасности, ключей или паролей, а также, Пользователь соглашается не участвовать в неприемлемом использовании Программы, которое включает, без ограничений, использование Программы для: (a) распространения, хранения и передачи незапрашиваемых сообщений, цепочки писем или незапрашиваемых коммерческих имейлов; (b) распространения или передачи материалов, которые разумному человеку могут быть оскорбительными, непристойными, порнографическими, порочащими, притесняющими, глубоко оскорбительными, вульгарными, угрожающими или злонамеренными; (c) распостранения, хранения или передачи файлов, графических объектов, программного обеспечения или других материалов, которые фактически или потенциально нарушают авторское право, товарный знак, патент, коммерческую тайну или другое право интеллектуальной собственности любого лица; (d) создания ложной личности или иной попытки введения в заблуждение любого лица в отношении личности или происхождении какого-либо сообщения; (e) экспорта, реэкспорта или разрешения загрузки любых сообщений или содержания, нарушающих любой закон об экспорте и импорте, регулировании или ограничении любой применимой юрисдикции или без всех необходимых разрешений, лицензий или изъятий; (f) вмешательства, нарушения или попытки получения несанкционированного доступа к другим аккаунтам в Программе или любой другой компьютерной сети; или (g) распостранения, хранения или передачи вирусов, "Троянских коней" или любых других вредоносных кодов или программ.
-
-## 5. Расторжение
-
-Настоящее Соглашение вступает в силу с момента его принятия Пользователем как указано в настоящем документе, и будет продолжать действовать в полную силу до тех пор, пока Пользователь осуществляет доступ, использование или установку Программы. Компания оставляет за собой право, по собственному усмотрению и без предварительного уведомления в любое время и по любой причине: (a) удалить или отключить доступ ко всем или любой части Программы; (b) приостановить доступ Пользователя или использование ко всем или любой части Программы; и (с) расторгнуть (аннулировать) данное Соглашение.
-
-## 6. Освобождение от гарантий
-
-ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ ИСКЛЮЧИТЕЛЬНО НА РИСКЕ ПОЛЬЗОВАТЕЛЯ. КОМПАНИЯ НЕ ГАРАНТИРУЕТ, ЧТО ПРОГРАММА БУДЕТ РАБОТАТЬ БЕСПЕРЕБОЙНО И БЕЗ ОШИБОК, ТАКЖЕ КОМПАНИЯ НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ ЛЮБЫХ РЕЗУЛЬТАТОВ, КОТОРЫЕ МОГУТ БЫТЬ ПОЛУЧЕНЫ ПРИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ. КОМПАНИЯ НЕ ДАЕТ НИКАКИХ ДРУГИХ ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. КОМПАНИЯ ОТКРЫТО ОТКАЗЫВАЕТСЯ ОТ КАКОЙ-ЛИБО ГАРАНТИИ ПРИГОДНОСТИ ТОВАРА, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, ГАРАНТИИ ПРАВА СОБСТВЕННОСТИ ИЛИ ИНТЕРЕСА, ИЛИ ГАРАНТИИ НЕНАРУШЕНИЯ (НЕВМЕШАТЕЛЬСТВА).
-
-## 7. Ограничение ответственности
-
-НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ МОГУТ КОМПАНИЯ ИЛИ ЕЕ АКЦИОНЕРЫ, ДИРЕКТОРА, ДОЛЖНОСТНЫЕ ЛИЦА, СОТРУДНИКИ, ПАРТНЕРЫ ЛИБО АГЕНТЫ, КТО-ТО ИЗ ЕЕ ИЛИ ИХ СООТВЕТСТВУЮЩИХ ПОСТАВЩИКОВ УСЛУГ НЕСТИ ОТВЕТСТВЕННОСТЬ ПЕРЕД ПОЛЬЗОВАТЕЛЕМ ИЛИ ЛЮБОЙ ТРЕТЬЕЙ СТОРОНОЙ ЗА ИСПОЛЬЗОВАНИЕ, ПРЕРЫВАНИЕ, ЗАДЕРЖКУ ИЛИ НЕВОЗМОЖНОСТЬ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ, ПОТЕРИ ДОХОДОВ ИЛИ ПРИБЫЛИ, ЗАДЕРЖКУ, ПРЕРЫВАНИЕ ИЛИ ПОТЕРЮ ПРЕДОСТАВЛЯЕМЫХ УСЛУГ, БИЗНЕС ИЛИ ГУДВИЛЛ (GOODWILL), ПОТЕРЮ ИЛИ ПОВРЕЖДЕНИЕ ДАННЫХ, ПОТЕРЮ В РЕЗУЛЬТАТЕ РАБОТЫ СИСТЕМЫ ИЛИ СБОЙ ПРИ ОБСЛУЖИВАНИИ СИСТЕМЫ, НЕИСПРАВНОСТЬ ИЛИ ВЫКЛЮЧЕНИЕ, СБОЙ ТОЧНОЙ ПЕРЕДАЧИ, ЧТЕНИЯ ИЛИ ОТПРАВКУ ИНФОРМАЦИИ, СБОЙ ПРИ ОБНОВЛЕНИИ ИЛИ ПРЕДОСТАВЛЕНИИ КОРРЕКТНОЙ ИНФОРМАЦИИ, НЕСОВМЕСТИМОСТЬ СИСТЕМЫ ИЛИ ПРЕДОСТАВЛЕНИЕ НЕПРАВИЛЬНОЙ ИНФОРМАЦИИ СОВМЕСТИМОСТИ ИЛИ НАРУШЕНИЯ В СИСТЕМЕ БЕЗОПАСНОСТИ, ИЛИ ЗА ЛЮБЫЕ КОСВЕННЫЕ, СЛУЧАЙНЫЕ, НЕПРЯМЫЕ, ТИПИЧНЫЕ, ОСОБЫЕ ИЛИ ШТРАФНЫЕ УБЫТКИ, ВОЗНИКАЮЩИЕ ИЛИ СВЯЗАННЫЕ С НАСТОЯЩИМ СОГЛАШЕНИЕМ, НАРУШЕНИЕ СОГЛАШЕНИЯ, ПРАВОНАРУШЕНИЕ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ) ИЛИ ИНОЕ, НЕЗАВИСИМО ОТ ТАКИХ УБЫТКОВ, КОТОРЫЕ БЫЛИ ПРЕДСКАЗУЕМЫ И БЫЛИ ЛИ МЫ УВЕДОМЛЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ МОГУТ КОМПАНИЯ ИЛИ ЕЕ АКЦИОНЕРЫ, ДИРЕКТОРА, ДОЛЖНОСТНЫЕ ЛИЦА, СОТРУДНИКИ, ПАРТНЕРЫ ЛИБО АГЕНТЫ, КТО-ТО ИЗ ЕЕ ИЛИ ИХ СООТВЕТСТВУЮЩИХ ПОСТАВЩИКОВ УСЛУГ НЕСТИ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЕ ТРЕБОВАНИЕ, ПОВРЕЖДЕНИЯ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В ДЕЙСТВИИ СОГЛАШЕНИЯ, ПРАВОНАРУШЕНИИ ИЛИ ИНОМ, ОБРАЗОВАННЫМ ИЛИ КАКИМ-ЛИБО ОБРАЗОМ СВЯЗАННЫМ С ДОСТУПОМ ПОЛЬЗОВАТЕЛЯ, ИСПОЛЬЗОВАНИЯ ИЛИ УСТАНОВКИ ПРОГРАММЫ. НЕКОТОРЫЕ ЮРИСДИКЦИИ ЗАПРЕЩАЮТ ИСКЛЮЧЕНИЕ ИЛИ ОГРАНИЧЕНИЕ СЛУЧАЙНЫХ ИЛИ ПОСЛЕДУЮЩИХ УБЫТКОВ, ТАКИМ ОБРАЗОМ ДАННОЕ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ МОЖЕТ БЫТЬ НЕ ПРИМЕНИМО К ПОЛЬЗОВАТЕЛЮ. ЕСЛИ ПОЛЬЗОВАТЕЛЬ НЕ УДОВЛЕТВОРЕН ПРОГРАММОЙ,ЕДИНСТВЕННЫМ И ИСКЛЮЧИТЕЛЬНЫМ СРЕДСТВОМ В РАСПОРЯЖЕНИИ ПОЛЬЗОВАТЕЛЯ ЯВЛЯЕТСЯ ОТКАЗ ОТ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ.
-
-## 8. Возмещение ущерба
-
-Пользователь согласен возместить ущерб, освободить и защитить Компанию, ее акционеров, директоров, должностных лиц, сотрудников, партнеров и агентов ("Стороны, которым возмещают ущерб") от и против любого действия, приводящего к претензиям, ущербу, задолженности, требованиям и ответственности, включая разумные расходы и расходы на услуги адвоката, заявленные любым лицом, возникающие из или связанные с: (a) настоящим Соглашением; (b) доступом Пользователя, использования или установки Программы, включая любые данные или работу, переданные или полученные Пользователем; и (c) любое неприемлемое использование Программы любым лицом, включая, без ограничения, любое заявление, данные или контент, сделанные, переданные или переизданные Пользователем или любым лицом, которые запрещены как неприемлемые в соответствии с разделом 4. ДАННОЕ ВОЗМЕЩЕНИЕ УЩЕРБА ВКЛЮЧАЕТ ЧЕТКО ВЫРАЖЕННУЮ КОМПЕНСАЦИЮ КОМПАНИИ И ВСЕХ СТОРОН, КОТОРЫМ ВОЗМЕЩАЮТ УЩЕРБ ЗА ЛЮБУЮ, ПРЕДПОЛАГАЕМУЮ НЕБРЕЖНОСТЬ (ВКЛЮЧАЯ ЛЮБУЮ, ПРЕДПОЛАГАЕМУЮ ГРУБУЮ ХАЛАТНОСТЬ). ИЛИ ДРУГИЕ ПРЕДПОЛАГАЕМЫЕ ПРОСТУПКИ КОМПАНИИ ИЛИ ЛЮБОЙ СТОРОНЫ, КОТОРОЙ ВОЗМЕЩАЮТ УЩЕРБ.
-
-## 9. Интеллектуальная собственность
-
-Компания сохраняет за собой все права, названия и интересы в и на всех брендах Компании, логотипах и товарных знаках, включая, но не ограничиваясь, EMURGO Co., Ltd., EMURGO, Yoroi, Криптовалютный кошелек Yoroi (Yoroi Cryptocurrency Wallet), кошелек Yoroi (Yoroi Wallet), Приложение Yoroi (Yoroi App) и все вариации формулировок вышеупомянутых брендов, логотипов и торговых знаков.
-
-## 10. Предупреждения
-
-Пользователь понимает, что Компания не несет ответственности за передачу, сохранность или хранение личных ключей и/или ADA Пользователя или любой другой криптовалюты. Если Пользователь и/или кто-либо, обладающий полномочиями, потеряет, допустит неправильное действие или украдет соответствующие частные ключи или если поручители Пользователя откажутся предоставить необходимые полномочия, Пользователь понимает, что не сможет восстановить ADA или любую другую криптовалюту и что Компания не несет ответственности за такой ущерб.
-
-Пользователь признает и соглашается с тем, что ADA или любые другие криптовалютные транзакции при содействии Программы и/или Компании могут быть отложены или задерживаться и что Компания не несет ответственности за любые, связанные с этим потери. Пользователь признает и соглашается с тем, что Компания не несет ответственности за любой аспект информации, контента или услуг, содержащиеся в любых материалах третьих сторон или на каких-либо сайтах третьих сторон, доступных или связанных с Программой и/или Компанией.
-
-Пользователь соглашается с тем, что Пользователь никогда не должен делиться своими сертификатами ни с одним физическим или юридическим лицом, включая Компанию, Cardano Foundation, Input Output HK Limited и любую другую организацию. Кроме того, Пользователь понимает, что общий доступ к сертификатам может привести к потере ADA Пользователя или любой другой криптовалюты, и Пользователь соглашается с тем, что Компания не несет ответственности за такие потери. Пользователь признает и соглашается с тем, что, выкупив ADA в тестнете, Пользователь выкупит только тестовую ADA и для того, чтобы выкупить реальную ADA, Пользователь должен повторить процедуру на мейннете после ее выпуска.
-
-При использовании Программы, Пользователь признает и соглашается: (i) что Компания не несет ответственности за функционирование базовых протоколов и что Компания не гарантирует их функциональность, безопасность или доступность; и (ii) что основные протоколы подвержены внезапным изменениям мейн-чейн в правилах эксплуатации ("форки"), и что эти форки могут существенно повлиять на стоимость и/или функционирование ADA или любой другой криптовалюты, которую Пользователь хранит в Программе. В случае форка (fork), Пользователь согласен с тем, что Компания может временно приостановить деятельность Программы (с или без уведомления об этом Пользователя) и что Компания может по своему усмотрению, (a) настроить или перенастроить (переконфигурировать) свои системы или (b) принять решение не поддерживать (или прекратить поддержку) форкового протокола полностью, однако, при условии, что Пользователь будет иметь возможность выводить средства с Программы. Пользователь признает и соглашается с тем, что Компания не несет абсолютно никакой ответственности в отношении неподдерживаемого бранча форкового протокола.
-
-## 11. Разное
-
-**a. Поправка.** Компания имеет право в любое время и без предупреждения, добавлять или изменять условия данного Соглашения, просто доставляя данные измененные условия Пользователю через электронное сообщение или через любое информационное средство на любой адрес, предоставленные Компании Пользователем. Доступ Пользователя к Программе или Ее использование после даты, когда измененные условия доставлены Пользователю, считаются принятием данных измененных условий.
-
-**b. Разрыв.** Если какое-либо положение из часть положений настоящего Соглашения есть или становится недействительным, нелегальным или неосуществимым, оно считается модифицированным в той мере,в которой это минимально необходимо, чтобы сделать его действительным, легальным и осуществимым. Если такая модификация невозможна, соответствующее положение или части положения считаются удаленными. Любая модификация или удаление положения или части положений согласно настоящей Статьи не затрагивает законность и правомочность остальных частей положений настоящего Соглашения.
-
-**c. Полное Соглашение – Отказ от доверия.** Настоящее Соглашение представляет собой полное соглашение между Сторонами в отношении предмета настоящего Соглашения и заменяет все предыдущие соглашения или договоренности между сторонами. Пользователь четко заявляет и подтверждает, что он не полагается ни на какие заявления, договоренности, представления, ожидания или соглашения, отличные от тех, которые четко указаны в настоящем Соглашении.
-
-**d. НАСТОЯЩЕЕ СОГЛАШЕНИЕ ПОДЛЕЖИТ ОБЯЗАТЕЛЬНОМУ АРБИТРАЖУ.** Пользователь согласен, что любые и все споры и претензии в отношении любого лица, возникшие или каким-либо образом связанные с настоящим Соглашением или доступом, использованием или установкой Программы Пользователем или любым другим лицом подлежат обязательному арбитражному разбирательству в соответствии с Правилами Арбитражного регламента Международной торговой палаты одним или несколькими судьями, назначенными в соответствии с этими правилами. Местом проведения арбитража является Япония. Язык арбитража - английский.
-
-**e. Язык.** Любой перевод настоящего Соглашения предназначен только в целях местных ссылок, и в случае возникновения каких-либо несоответствий между английской и любыми не английскими версиями, английская версия настоящего Соглашения имеет преимущественную силу и регулирует во всех отношениях.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sk-SK.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/sk-SK.md
deleted file mode 100644
index e7a3391e12..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sk-SK.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Terms of Service Agreement
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sw-KE.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/sw-KE.md
deleted file mode 100644
index e7a3391e12..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sw-KE.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Terms of Service Agreement
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/tr-TR.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/tr-TR.md
deleted file mode 100644
index e7a3391e12..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/tr-TR.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Terms of Service Agreement
-
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties". BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
-
-## 1. Rights and Obligations
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hans.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hans.md
deleted file mode 100644
index 13e57fab37..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hans.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 服务协议条款
-
-本服务协议条款(下称“本协议”)由 EMURGO Co., Ltd.(下称“本公司”)与完成下载、使用或操作名为“Yoroi 数字加密货币钱包”的应用软件以及本公司与该软件一并提供的数据处理服务、应用、通信服务或其他内容(下称“本软件”)的任何个人或实体(下称“用户”)订立。本公司与用户合称“双方当事人”。 通过点击“我接受”按钮或访问、使用或安装本软件的任何部分,用户明确同意且承诺受本协议中的所有条款合法约束。如果用户不同意接受本协议的所有条款,用户不得被授权访问、使用或安装本软件的任何部分。
-
-## 1. 权利与义务
-
-**a. 说明。** 本软件作为一个免费、开源的数字加密货币钱包运行。本软件不构成本公司或任何其他第三方借此为用户的 ADA 或任何其他加密货币担任金融中介机构或保管人的账户。 本软件已进行过 beta 测试,并将根据来自开发者社区、开源贡献者和 beta 测试人员的反馈持续改进,但本公司无法保证本软件中不存在漏洞。用户认可,用户对本软件的使用由用户自行决定,由用户自担风险,且遵守所有适用法律。用户负责妥善保管其密码、PIN、私有密钥、找回密钥、屏蔽自动密钥、备份恢复助记口令、ADA 密码及用户用于访问本软件或任何信息、ADA、凭证或其他加密货币单元的任何其他代码。 如果用户丢失对其加密数字货币钱包的访问权限或私有密钥,且未单独保存一份用户的加密数字货币钱包或备份恢复助记口令及相应密码的备份,则用户认可并同意,任何 ADA 或用户与该加密数字货币钱包关联的任何其他加密数字货币将变为无法访问。所有交易请求均不可撤销。如果用户丢失或遗忘其私有密钥或密码,本公司及其股东、董事、高管、员工、关联方和代理人均不能保证交易确认或恢复用户的私有密钥或密码。
-
-**b. 可访问性。** 用户同意,本软件可能不时出于任何原因无法访问或无法操作,原因包括但不限于:(i)设备故障;(ii)定期维护程序或本公司不定时进行的维修;或(iii)超出本公司控制范围或本公司无法合理预测的原因。
-
-**c. 设备。** 用户应自行负责提供、维护和确保用户为使用本软件所需的与本软件的兼容性、所有硬件、软件、电子的和其他物理上的要求,包括但不限于电信和互联网访问连接及链接、网页浏览器或其他访问和使用本软件所需的设备、程序和服务。
-
-**d. 安全性。** 用户应对用户通过本软件接收、传输或存储在本软件上的所有信息和内容的安全性、保密性和完整性负全部责任。用户应对任何人对用户的任何账户的任何被授权或未被授权的访问负全部责任。用户同意对用户的安全设备、信息、密钥和密码的保密性负全部责任。
-
-**e. 隐私权。** 在合理可行时,本公司将尝试尊重用户的隐私。未经用户事先同意,本公司将不会监控、编辑或披露任何有关用户或用户的账户的任何个人信息,包括其内容或用户对本软件的使用,但本公司真诚相信出于以下任一目的有必要实施该等行为的,则不受此限:(i)遵守法律程序或任何政府机关的其他合法要求;(ii)保护和捍卫本公司的权利或财产;(iii)执行本协议;(iv)保护除用户外的本软件的其他使用者或其他任何人的利益;或(v)在法律许可的范围内操作或进行对本公司的服务或设备(包括本软件)的维护和修理。用户对互联网相关隐私整体并无期待,用户的 IP 地址将与用户从本软件中发送的每条消息或其他信息一起被传输和记录。
-
-## 2. 税金和费用
-
-无论是任何政府机关现在或以后征收的所有货币汇兑费用、第三方费用、销售税、使用税、增值税、个人财产税或其他税金、任何形式的关税或征税,包括与之相关的利息和罚金,以及由于用户访问、使用或安装本软件而对用户造成的费用,均由用户独自承担。
-
-## 3. 用户声明
-
-用户向本公司声明与保证:(a)如果用户为自然人,则其年龄已超过十八(18)岁;(b)用户具有订立和履行用户在本协议项下义务的权利能力和授权;(c)用户向本公司提供的所有信息均真实、准确和完整;(d)用户将遵守有关用户对本软件的访问、使用或安装的任何可适用的司法管辖区的所有法律法规;(e)用户应遵守本协议的所有条款和条件,包括但不限于第 4 条中列明的条款;且(f)用户已提供并将提供访问、使用或安装本软件所需的准确且完整的信息。
-
-## 4. 禁止用途
-
-用户应对在用户的账户、安全信息、密钥或密码下发生的所有行为和疏忽负全部责任,且用户同意不对本软件进行任何不被接受的使用,包括但不限于将本软件用以:(a)散播、存储或传输未经请求的讯息、连锁信或未经请求的商业邮件;(b)散播或传输对于理性自然人而言可能为侮辱、淫秽、色情、诽谤、骚扰、严重冒犯、粗俗、威胁或恶意的资料;(c)散播、存储或传输实际或潜在侵犯任何人的版权、商标权、专利权、商业秘密或其他知识产权的文件、图形、软件或其他资料;(d)关于任何通讯的身份或来源,创建虚假身份或企图以其他方式误导任何人;(e)违反任何适用的司法管辖区的出口或进口法律、法规或限制、或在未取得所有必要的批准、许可或豁免的情况下出口、再出口或允许下载任何信息或内容;(f)妨碍、扰乱或企图未经授权访问本软件或任何其他计算机网络上的其他帐户;或(g)散播、存储或传输病毒、特洛伊木马程序或任何其他恶意代码或程序。
-
-## 5. 协议终止
-
-本协议自用户按照本协议的规定接受时生效,并将在用户进行本软件的任何访问、使用或安装期间持续具有完全效力。本公司保留权利,在任何时间以任何理由不经通知、自行决定:(a)移除或禁用对本软件的全部或任一部分的访问;(b)暂停用户对本软件的全部或任一部分的访问或使用;以及(c)终止本协议。
-
-## 6. 免责声明
-
-本软件按现状提供,不存在任何种类的明示或默示的保证。本软件的使用须由用户承担全部风险。本公司不保证本软件会不受干扰或没有错误,也不对通过使用本软件可能获取的结果做任何保证。本公司不做其他明示或默示的保证。本公司明确否认对适销性、针对特定目的的适用性、权利或利益、或无侵权情形做出任何保证。
-
-## 7. 责任限制
-
-在任何情形下,本公司或其股东、董事、高管、员工、关联方或代理人、或其各自的任何服务提供商对于本软件的任何使用、中断、延迟或无法使用,损失的收益或利润,服务的延迟、中断或丢失,商业或商誉,数据的丢失或损坏,因系统或系统服务故障而造成的损失,故障或关闭,未能准确转移、读取或传输信息,未能更新或提供正确信息,系统不兼容、或提供不正确的兼容性信息、或系统安全破坏,或任何结果的、偶发的、间接的、惩戒性、特殊的或惩罚性损害,无论是因本协议、违反合约、侵权行为(包括过失的侵权行为)或其他而引起的或与之有关,亦无论该等损害是否可预见以及本公司是否已被告知该等损害发生的可能性,均不向用户或任何第三方负责。 在任何情形下,本公司或其股东、董事、高管、员工、关联方或代理人、或其各自的任何服务提供商均不对因用户访问、使用或安装本软件而引起的或与之有任何关联的任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为当中。 某些司法管辖区禁止排除或限制偶发的或结果的损害赔偿,因此本责任限制可能不适用于用户。如果用户对本软件不满,用户的唯一且排他的救济是由用户停止对本软件的使用。
-
-## 8. 赔偿
-
-就任何人因(a)本协议;(b)用户对本软件的访问、使用或安装,包括用户传输或接收的任何数据或工作;及(c)任何人对本软件的任何不可接受的使用(包括但不限于作为第 4 条中规定的不可接受的内容而被禁止的由用户或任何人制作、传输或重新发布的任何声明、数据或内容)或与之相关而主张的任何诉讼、诉因、索赔、损害、债务、要求或责任,包括合理费用和律师费用,用户同意向本公司、其股东、董事、高管、员工、关联方和代理人(下称“受偿方”)赔偿、使其免受损害并维护其权益。本赔偿包括对本公司及所有受偿方因本公司或任何受偿方被主张任何过失(包括任何被主张的重大过失)或被主张的其他不当行为而做出的明示赔偿。
-
-## 9. 知识产权
-
-本公司保留对本公司的所有品牌、标识和商标的所有权利、所有权和利益,包括但不限于 EMURGO Co., Ltd.、EMURGO、Yoroi、Yoroi Cryptocurrency Wallet、Yoroi Wallet、Yoroi App 以及前述品牌、标识和商标的用语变化形式。
-
-## 10. 警告
-
-用户认可,本公司不负责转让、保护或维护私有密钥和/或用户的 ADA 或任何其他加密数字货币。如果用户和/或任何联署当局丢失、错误处理或使关联的私有密钥失窃,或用户的联署人拒绝提供必要的授权,用户认可,用户可能无法恢复用户的 ADA 或任何其他数字加密货币,且本公司不为该等损失负责。
-
-用户认可并同意,通过本软件和/或本公司促成的 ADA 或任何其他加密数字货币交易可能会被延迟,且本公司不为任何相关损失负责。 用户认可并同意,本公司不对包含在任何第三方资料中的、或在可访问或链接至本软件和/或本公司的任何第三方网站上的信息、内容或服务的任何方面负责。
-
-用户同意,用户不应与任何自然人或法人(包括本公司、Cardano Foundation、Input Output HK Limited 或任何其他实体)分享用户的证书。另外,用户认可,分享用户的证书可能导致用户的 ADA 或任何其他加密数字货币的损失,且用户同意,本公司不对该等损失负责。 用户认可并同意,通过在测试网络中赎回 ADA,用户仅赎回测试 ADA,且为了赎回真实的 ADA,用户必须在经发布后的主网中重复这一程序。
-
-通过使用本软件,用户认可并同意:(i)本公司不负责底层协议的运行,且本公司不对其功能性、安全性或可用性做任何担保;且(ii)底层协议受制于运行规则中的突发主链变化(下称“分叉”),且该等分叉可能对用户存储在本软件上的 ADA 或任何其他加密数字货币的价值和/或功能有重大影响。如发生分叉,用户同意,本公司可以(在通知或不通知用户的情况下)暂时中止本软件的运行,且本公司可以自行(a)配置或重新配置其系统或(b)决定完全不支援(或停止支援)分叉协议,但前提是用户有机会从本软件中取回资金。用户认可并同意,本公司绝不就有关分叉协议的不受支援的分支承担任何责任。
-
-## 11. 其他事项
-
-**a.修订。** 本公司有权随时不经通知地增加或修改本协议的条款,仅通过向用户提供给本公司的任何地址发送借由任何媒介的电子信息,向用户交付该等修订后的条款。在该等修订后条款被交付给用户后,用户对本软件的访问或使用视为构成对该等修订后条款的接受。
-
-**b.可分性。** 如果本协议的任何条款或条款部分为或变为无效、违法或不可执行,则应视为在使其有效、合法且可执行所必要的最低限度内被修改。如果该等修改是不可能的,则相关条款或条款部分应视为被删除。本条规定的任何对条款或条款部分的修改或删除均不影响本协议的剩余部分的有效性和可执行性。
-
-**c.完整协议——信赖免责。** 本协议构成双方当事人之间就本协议内容的完整协议,并取代双方当事人之间的所有在先协议或理解。用户明确声明与保证,其不会依赖本协议中明示规定的内容以外的任何表述、理解、声明、预期或协议。
-
-**d.本协议受限于有约束力的仲裁。** 用户同意,因本协议或用户或其他任何人对本软件的访问、使用或安装而引起的或与之有任何关联的针对任何人的任何争议或索赔,均应受限于由按照国际商会仲裁规则委派的一名或多名仲裁员根据该等仲裁规则做出的有约束力的仲裁。仲裁地应为日本。仲裁语言为英语。
-
-**e.语言。** 本协议的任何翻译均仅为本地参考之用,如果英文版本与非英文版本之间发生任何不一致,在任何情况下均应以本协议的英文版本为准并有约束力。
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hant.md b/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hant.md
deleted file mode 100644
index 310e2eb05f..0000000000
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-Hant.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# 服務條款協議
-
-本服務條款協議(以下簡稱“協議”)是由 EMURGO Co.,Ltd.(以下簡稱“公司”)與完成下載,使用或操作稱為“軟件”的軟件的任何個人或實體(以下簡稱“用戶”)簽訂的。 Yoroi cryptocurrency Wallet 應用程序以及數據處理服務,應用程序,通信服務或其他內容,或由公司提供或隨軟件一起提供(“軟件”)。公司和用戶統稱為“締約方”。單擊接受按鈕或訪問,使用或安裝軟件的任何部分,即表示用戶明確同意並同意受本協議所有條款的法律約束。如果用戶不同意本協議的所有條款,則不得授權用戶訪問,使用或安裝該軟件的任何部分
-
-## 1. 權利與義務
-
-**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency. While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit. IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
-
-**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
-
-**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
-
-**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
-
-**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
-
-## 2. Taxes and Fees
-
-All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
-
-## 3. User Representations
-
-User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
-
-## 4. Prohibited Uses
-
-User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
-
-## 5. Termination
-
-This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
-
-## 6. Disclaimer of Warranties
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
-
-## 7. Limitation of Liability
-
-IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE. SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
-
-## 8. Indemnification
-
-User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
-
-## 9. Intellectual Property
-
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
-
-## 10. Warnings
-
-User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
-
-User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss. User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
-
-User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss. User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
-
-By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
-
-## 11. Miscellaneous
-
-**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
-
-**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
-
-**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
-
-**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
-
-**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
diff --git a/apps/wallet-mobile/src/Legal/index.ts b/apps/wallet-mobile/src/Legal/index.ts
deleted file mode 100644
index 5a166ed183..0000000000
--- a/apps/wallet-mobile/src/Legal/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {PrivacyPolicy, usePrivacyPolicy} from './PrivacyPolicy'
-export {TermsOfService, useTos} from './TermsOfService'
diff --git a/apps/wallet-mobile/src/NftDetails/NftDetails.stories.tsx b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetails.stories.tsx
similarity index 83%
rename from apps/wallet-mobile/src/NftDetails/NftDetails.stories.tsx
rename to apps/wallet-mobile/src/Nfts/NftDetails/NftDetails.stories.tsx
index 7f107afc8d..7133872c97 100644
--- a/apps/wallet-mobile/src/NftDetails/NftDetails.stories.tsx
+++ b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetails.stories.tsx
@@ -1,10 +1,10 @@
import {storiesOf} from '@storybook/react-native'
import React from 'react'
-import {QueryProvider, RouteProvider} from '../../.storybook/decorators'
-import {MediaDetails} from '../features/Portfolio/common/MediaDetails/MediaDetails'
-import {SelectedWalletProvider} from '../features/WalletManager/context/SelectedWalletContext'
-import {mocks, nft} from '../yoroi-wallets/mocks'
+import {QueryProvider, RouteProvider} from '../../../.storybook/decorators'
+import {MediaDetails} from '../../features/Portfolio/common/MediaDetails/MediaDetails'
+import {SelectedWalletProvider} from '../../features/WalletManager/context/SelectedWalletContext'
+import {mocks, nft} from '../../yoroi-wallets/mocks'
storiesOf('NFT/Details', module)
.add('Default', () => {
diff --git a/apps/wallet-mobile/src/NftDetails/NftDetailsImage.stories.tsx b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.stories.tsx
similarity index 88%
rename from apps/wallet-mobile/src/NftDetails/NftDetailsImage.stories.tsx
rename to apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.stories.tsx
index 0fbfdf0711..397d5c009a 100644
--- a/apps/wallet-mobile/src/NftDetails/NftDetailsImage.stories.tsx
+++ b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.stories.tsx
@@ -1,9 +1,9 @@
import {storiesOf} from '@storybook/react-native'
import React from 'react'
-import {QueryProvider, RouteProvider} from '../../.storybook'
-import {SelectedWalletProvider} from '../features/WalletManager/context/SelectedWalletContext'
-import {mocks, nft} from '../yoroi-wallets/mocks'
+import {QueryProvider, RouteProvider} from '../../../.storybook'
+import {SelectedWalletProvider} from '../../features/WalletManager/context/SelectedWalletContext'
+import {mocks, nft} from '../../yoroi-wallets/mocks'
import {NftDetailsImage} from './NftDetailsImage'
storiesOf('NFT/Details Image', module)
diff --git a/apps/wallet-mobile/src/NftDetails/NftDetailsImage.tsx b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.tsx
similarity index 79%
rename from apps/wallet-mobile/src/NftDetails/NftDetailsImage.tsx
rename to apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.tsx
index 003a300509..f6f661a448 100644
--- a/apps/wallet-mobile/src/NftDetails/NftDetailsImage.tsx
+++ b/apps/wallet-mobile/src/Nfts/NftDetails/NftDetailsImage.tsx
@@ -4,12 +4,12 @@ import {StyleSheet, useWindowDimensions, View} from 'react-native'
// @ts-ignore
import ViewTransformer from 'react-native-easy-view-transformer'
-import {FadeIn} from '../components'
-import {MediaPreview} from '../features/Portfolio/common/MediaPreview/MediaPreview'
-import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {useMetrics} from '../metrics/metricsManager'
-import {NftRoutes, useParams} from '../navigation'
-import {isEmptyString} from '../utils/utils'
+import {FadeIn} from '../../components'
+import {MediaPreview} from '../../features/Portfolio/common/MediaPreview/MediaPreview'
+import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
+import {NftRoutes, useParams} from '../../kernel/navigation'
+import {isEmptyString} from '../../utils/utils'
type Params = NftRoutes['nft-details']
diff --git a/apps/wallet-mobile/src/Nfts/Nfts.tsx b/apps/wallet-mobile/src/Nfts/Nfts.tsx
index 6d2818e1d9..9a89700896 100644
--- a/apps/wallet-mobile/src/Nfts/Nfts.tsx
+++ b/apps/wallet-mobile/src/Nfts/Nfts.tsx
@@ -11,7 +11,7 @@ import {Spacer} from '../components'
import {usePortfolioBalances} from '../features/Portfolio/common/hooks/usePortfolioBalances'
import {MediaGallery} from '../features/Portfolio/common/MediaGallery/MediaGallery'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {useMetrics} from '../metrics/metricsManager'
+import {useMetrics} from '../kernel/metrics/metricsManager'
import {useSearch, useSearchOnNavBar} from '../Search/SearchContext'
import {useTrackNftGallerySearchActivated} from './filterNfts'
import {useNavigateTo} from './navigation'
diff --git a/apps/wallet-mobile/src/Nfts/NftsNavigator.tsx b/apps/wallet-mobile/src/Nfts/NftsNavigator.tsx
index d433f0312f..d90df1b89c 100644
--- a/apps/wallet-mobile/src/Nfts/NftsNavigator.tsx
+++ b/apps/wallet-mobile/src/Nfts/NftsNavigator.tsx
@@ -4,9 +4,9 @@ import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {MediaDetails} from '../features/Portfolio/common/MediaDetails/MediaDetails'
-import {useMetrics} from '../metrics/metricsManager'
-import {defaultStackNavigationOptions, NftRoutes} from '../navigation'
-import {NftDetailsImage} from '../NftDetails/NftDetailsImage'
+import {useMetrics} from '../kernel/metrics/metricsManager'
+import {defaultStackNavigationOptions, NftRoutes} from '../kernel/navigation'
+import {NftDetailsImage} from './NftDetails/NftDetailsImage'
import {Nfts} from './Nfts'
const Stack = createStackNavigator()
diff --git a/apps/wallet-mobile/src/Nfts/filterNfts.ts b/apps/wallet-mobile/src/Nfts/filterNfts.ts
index 20d36f9878..18fcdb7bec 100644
--- a/apps/wallet-mobile/src/Nfts/filterNfts.ts
+++ b/apps/wallet-mobile/src/Nfts/filterNfts.ts
@@ -1,7 +1,7 @@
import {Balance} from '@yoroi/types'
import React from 'react'
-import {useMetrics} from '../metrics/metricsManager'
+import {useMetrics} from '../kernel/metrics/metricsManager'
export const filterNfts = (searchTerm: string, nfts: Balance.TokenInfo[]): Balance.TokenInfo[] => {
const searchTermLowerCase = searchTerm.toLowerCase()
diff --git a/apps/wallet-mobile/src/Nfts/navigation.ts b/apps/wallet-mobile/src/Nfts/navigation.ts
index e1ab2ae168..9fa6151e3a 100644
--- a/apps/wallet-mobile/src/Nfts/navigation.ts
+++ b/apps/wallet-mobile/src/Nfts/navigation.ts
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {Portfolio} from '@yoroi/types'
-import {NftRouteNavigation} from '../navigation'
+import {NftRouteNavigation} from '../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/Screen.tsx b/apps/wallet-mobile/src/Screen.tsx
deleted file mode 100644
index b67ff08577..0000000000
--- a/apps/wallet-mobile/src/Screen.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import {useTheme} from '@yoroi/theme'
-import React from 'react'
-import {ScrollView, StyleSheet, View, ViewProps} from 'react-native'
-
-export const screenPadding = 20
-
-type Props = ViewProps & {scroll?: boolean; bgColor?: string}
-export const Screen = ({children, scroll, bgColor, style = {}, ...restProps}: Props) => {
- const {styles, colors} = useStyles()
- const Container = scroll === true ? ScrollView : View
-
- return (
-
- {children}
-
- )
-}
-
-export default Screen
-
-const useStyles = () => {
- const {color} = useTheme()
- const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: color.gray_cmin,
- },
- })
- const colors = {
- white: color.gray_cmin,
- }
- return {styles, colors}
-}
diff --git a/apps/wallet-mobile/src/Search/SearchContext.tsx b/apps/wallet-mobile/src/Search/SearchContext.tsx
index 8ae1a17223..b9bdde7d78 100644
--- a/apps/wallet-mobile/src/Search/SearchContext.tsx
+++ b/apps/wallet-mobile/src/Search/SearchContext.tsx
@@ -6,7 +6,7 @@ import React, {createContext, ReactNode, useCallback, useContext, useReducer} fr
import {TextInput, TouchableOpacity, TouchableOpacityProps} from 'react-native'
import {Icon} from '../components/Icon'
-import {defaultStackNavigationOptions} from '../navigation'
+import {defaultStackNavigationOptions} from '../kernel/navigation'
type SearchState = {
search: string
diff --git a/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx b/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx
index d5c59c1cfc..6e0820762b 100644
--- a/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx
+++ b/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.stories.tsx
@@ -4,7 +4,7 @@ import {QueryClient, QueryClientProvider} from 'react-query'
import {RouteProvider} from '../../../.storybook/decorators'
import {SelectedWalletProvider} from '../../features/WalletManager/context/SelectedWalletContext'
-import {StakingCenterRoutes} from '../../navigation'
+import {StakingCenterRoutes} from '../../kernel/navigation'
import {mocks} from '../../yoroi-wallets/mocks'
import {DelegationConfirmation} from './DelegationConfirmation'
diff --git a/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.tsx b/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.tsx
index a989f07f9f..16052265f4 100644
--- a/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.tsx
+++ b/apps/wallet-mobile/src/Staking/DelegationConfirmation/DelegationConfirmation.tsx
@@ -10,9 +10,9 @@ import {useStakePoolInfoAndHistory} from '../../Dashboard/StakePoolInfo'
import {debugWalletInfo, features} from '../../features'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
import {Instructions as HWInstructions} from '../../HW'
-import globalMessages, {txLabels} from '../../i18n/global-messages'
+import globalMessages, {txLabels} from '../../kernel/i18n/global-messages'
+import {StakingCenterRoutes, useParams, useWalletNavigation} from '../../kernel/navigation'
import {formatTokenAmount, formatTokenWithText} from '../../legacy/format'
-import {StakingCenterRoutes, useParams, useWalletNavigation} from '../../navigation'
import {NETWORKS} from '../../yoroi-wallets/cardano/networks'
import {NUMBERS} from '../../yoroi-wallets/cardano/numbers'
import {Amounts, Entries, Quantities} from '../../yoroi-wallets/utils'
diff --git a/apps/wallet-mobile/src/Staking/PoolWarningModal/PoolWarningModal.tsx b/apps/wallet-mobile/src/Staking/PoolWarningModal/PoolWarningModal.tsx
index 642f77499b..8da1cf8ead 100644
--- a/apps/wallet-mobile/src/Staking/PoolWarningModal/PoolWarningModal.tsx
+++ b/apps/wallet-mobile/src/Staking/PoolWarningModal/PoolWarningModal.tsx
@@ -5,7 +5,7 @@ import {Image, ScrollView, StyleSheet, TextStyle, View} from 'react-native'
import image from '../../assets/img/mnemonic_explanation.png'
import {Button, Text} from '../../components'
-import {confirmationMessages} from '../../i18n/global-messages'
+import {confirmationMessages} from '../../kernel/i18n/global-messages'
import {Modal} from '../../legacy/Modal'
type Props = {
diff --git a/apps/wallet-mobile/src/Staking/StakingCenter/StakingCenter.tsx b/apps/wallet-mobile/src/Staking/StakingCenter/StakingCenter.tsx
index 645259f2a7..b796357d63 100644
--- a/apps/wallet-mobile/src/Staking/StakingCenter/StakingCenter.tsx
+++ b/apps/wallet-mobile/src/Staking/StakingCenter/StakingCenter.tsx
@@ -7,16 +7,16 @@ import {WebView, WebViewMessageEvent} from 'react-native-webview'
import {PleaseWaitModal, Spacer} from '../../components'
import {useStakingTx} from '../../Dashboard/StakePoolInfos'
-import {showErrorDialog} from '../../dialogs'
import {features} from '../../features'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import {useLanguage} from '../../i18n'
-import globalMessages from '../../i18n/global-messages'
-import {isNightly} from '../../legacy/config'
-import {Logger} from '../../legacy/logging'
-import {useMetrics} from '../../metrics/metricsManager'
-import {StakingCenterRouteNavigation} from '../../navigation'
-import {getNetworkConfigById, NETWORKS} from '../../yoroi-wallets/cardano/networks'
+import {showErrorDialog} from '../../kernel/dialogs'
+import {isDev, isNightly} from '../../kernel/env'
+import {useLanguage} from '../../kernel/i18n'
+import globalMessages from '../../kernel/i18n/global-messages'
+import {logger} from '../../kernel/logger/logger'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
+import {StakingCenterRouteNavigation} from '../../kernel/navigation'
+import {NETWORKS} from '../../yoroi-wallets/cardano/networks'
import {NotEnoughMoneyToSendError} from '../../yoroi-wallets/cardano/types'
import {PoolDetailScreen} from '../PoolDetails'
@@ -51,7 +51,7 @@ export const StakingCenter = () => {
if (error instanceof NotEnoughMoneyToSendError) {
navigation.navigate('delegation-failed-tx')
} else {
- Logger.error(error as any)
+ logger.error(error as Error)
navigation.navigate('delegation-failed-tx')
}
},
@@ -63,21 +63,19 @@ export const StakingCenter = () => {
if (!Array.isArray(selectedPoolHashes) || selectedPoolHashes.length < 1) {
await showErrorDialog(noPoolDataDialog, intl)
}
- Logger.debug('selected pools from explorer:', selectedPoolHashes)
+ logger.debug('selected pools from explorer:', selectedPoolHashes)
setSelectedPoolId(selectedPoolHashes[0])
}
- const config = getNetworkConfigById(wallet.networkId)
-
return (
<>
- {(__DEV__ || (isNightly() && !config.IS_MAINNET)) && (
+ {(isDev || (isNightly && !wallet.isMainnet)) && (
)}
- {(config.IS_MAINNET || features.showProdPoolsInDev) && (
+ {(wallet.isMainnet || features.showProdPoolsInDev) && (
diff --git a/apps/wallet-mobile/src/StorybookScreen.tsx b/apps/wallet-mobile/src/StorybookScreen.tsx
deleted file mode 100644
index d9f7c2a0e0..0000000000
--- a/apps/wallet-mobile/src/StorybookScreen.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import React from 'react'
-
-import StorybookUIRoot from '../.storybook'
-
-const StorybookScreen = () =>
-
-export default StorybookScreen
diff --git a/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx b/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
index da600886ed..01883101ba 100644
--- a/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
+++ b/apps/wallet-mobile/src/TxHistory/ActionsBanner.tsx
@@ -16,9 +16,9 @@ import {messages as receiveMessages} from '../features/Receive/common/useStrings
import {useSwapForm} from '../features/Swap/common/SwapFormProvider'
import {useAddressModeManager} from '../features/WalletManager/common/useAddressModeManager'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {actionMessages} from '../i18n/global-messages'
-import {useMetrics} from '../metrics/metricsManager'
-import {TxHistoryRouteNavigation} from '../navigation'
+import {actionMessages} from '../kernel/i18n/global-messages'
+import {useMetrics} from '../kernel/metrics/metricsManager'
+import {TxHistoryRouteNavigation} from '../kernel/navigation'
import {useTokenInfo} from '../yoroi-wallets/hooks'
export const ActionsBanner = ({disabled = false}: {disabled: boolean}) => {
diff --git a/apps/wallet-mobile/src/TxHistory/AssetList/AssetList.tsx b/apps/wallet-mobile/src/TxHistory/AssetList/AssetList.tsx
index 2f21fb21da..87a98e2037 100644
--- a/apps/wallet-mobile/src/TxHistory/AssetList/AssetList.tsx
+++ b/apps/wallet-mobile/src/TxHistory/AssetList/AssetList.tsx
@@ -10,7 +10,7 @@ import {AmountItem, AmountItemProps} from '../../components/AmountItem/AmountIte
import {Spacer} from '../../components/Spacer'
import {usePrivacyMode} from '../../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import {useMetrics} from '../../metrics/metricsManager'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
import {sortTokenInfos} from '../../utils'
import {useBalances, useTokenInfos} from '../../yoroi-wallets/hooks'
import {Amounts} from '../../yoroi-wallets/utils'
diff --git a/apps/wallet-mobile/src/TxHistory/AssetList/ListBalances.tsx b/apps/wallet-mobile/src/TxHistory/AssetList/ListBalances.tsx
index 0bec4c99e1..8fa331295e 100644
--- a/apps/wallet-mobile/src/TxHistory/AssetList/ListBalances.tsx
+++ b/apps/wallet-mobile/src/TxHistory/AssetList/ListBalances.tsx
@@ -11,8 +11,8 @@ import {Spacer} from '../../components/Spacer'
import {usePortfolioBalances} from '../../features/Portfolio/common/hooks/usePortfolioBalances'
import {TokenAmountItem, TokenAmountItemProps} from '../../features/Portfolio/common/TokenAmountItem/TokenAmountItem'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import globalMessages from '../../i18n/global-messages'
-import {useMetrics} from '../../metrics/metricsManager'
+import globalMessages from '../../kernel/i18n/global-messages'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
import {FilterBalancesByType} from './FilterBalancesByType'
type ListProps = FlashListProps
diff --git a/apps/wallet-mobile/src/TxHistory/LockedDeposit.tsx b/apps/wallet-mobile/src/TxHistory/LockedDeposit.tsx
index f4fae1a993..b0df84d89b 100644
--- a/apps/wallet-mobile/src/TxHistory/LockedDeposit.tsx
+++ b/apps/wallet-mobile/src/TxHistory/LockedDeposit.tsx
@@ -8,7 +8,7 @@ import {Spacer, Text} from '../components'
import {usePortfolioPrimaryBreakdown} from '../features/Portfolio/common/hooks/usePortfolioPrimaryBreakdown'
import {usePrivacyMode} from '../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import globalMessages from '../i18n/global-messages'
+import globalMessages from '../kernel/i18n/global-messages'
export const LockedDeposit = ({ignorePrivacy = false}: {ignorePrivacy?: boolean}) => {
const wallet = useSelectedWallet()
diff --git a/apps/wallet-mobile/src/TxHistory/SyncErrorBanner.tsx b/apps/wallet-mobile/src/TxHistory/SyncErrorBanner.tsx
index 2992b56f84..74c3c2f49f 100644
--- a/apps/wallet-mobile/src/TxHistory/SyncErrorBanner.tsx
+++ b/apps/wallet-mobile/src/TxHistory/SyncErrorBanner.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import {useIntl} from 'react-intl'
import {Banner} from '../components'
-import globalMessages from '../i18n/global-messages'
+import globalMessages from '../kernel/i18n/global-messages'
type Props = {
showRefresh: boolean
diff --git a/apps/wallet-mobile/src/TxHistory/TxDetails/AssetList.tsx b/apps/wallet-mobile/src/TxHistory/TxDetails/AssetList.tsx
index 1cdcd61e64..fe6e8de1a0 100644
--- a/apps/wallet-mobile/src/TxHistory/TxDetails/AssetList.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxDetails/AssetList.tsx
@@ -5,7 +5,7 @@ import {FlatList, Text, TouchableOpacity, View} from 'react-native'
import {Boundary} from '../../components'
import {usePrivacyMode} from '../../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import globalMessages, {txLabels} from '../../i18n/global-messages'
+import globalMessages, {txLabels} from '../../kernel/i18n/global-messages'
import {formatTokenAmount} from '../../legacy/format'
import {isEmptyString} from '../../utils'
import {CardanoTypes} from '../../yoroi-wallets/cardano/types'
diff --git a/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.stories.tsx b/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.stories.tsx
index 460c6f429b..78344fc9c9 100644
--- a/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.stories.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.stories.tsx
@@ -5,8 +5,8 @@ import React from 'react'
import {QueryProvider, RouteProvider} from '../../../.storybook/decorators'
import {SelectedWalletProvider} from '../../features/WalletManager/context/SelectedWalletContext'
+import {rootStorage} from '../../kernel/storage/rootStorage'
import {mocks} from '../../yoroi-wallets/mocks'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
import {TxDetails} from './TxDetails'
storiesOf('TxDetails', module)
diff --git a/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.tsx b/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.tsx
index b1fb374f35..5ba255803e 100644
--- a/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxDetails/TxDetails.tsx
@@ -14,7 +14,7 @@ import {Banner, Boundary, Button, CopyButton, FadeIn, Icon, Text} from '../../co
import AddressModal from '../../features/Receive/common/AddressModal/AddressModal'
import {usePrivacyMode} from '../../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import globalMessages from '../../i18n/global-messages'
+import globalMessages from '../../kernel/i18n/global-messages'
import {formatDateAndTime, formatTokenWithSymbol} from '../../legacy/format'
import {isEmptyString} from '../../utils/utils'
import {MultiToken} from '../../yoroi-wallets/cardano/MultiToken'
diff --git a/apps/wallet-mobile/src/TxHistory/TxHistory.tsx b/apps/wallet-mobile/src/TxHistory/TxHistory.tsx
index a61e7851fa..36ae13db48 100644
--- a/apps/wallet-mobile/src/TxHistory/TxHistory.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxHistory.tsx
@@ -7,7 +7,7 @@ import infoIcon from '../assets/img/icon/info-light-green.png'
import {Boundary, Spacer} from '../components'
import {Tab, TabPanel, TabPanels, Tabs} from '../components/Tabs'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {assetMessages, txLabels} from '../i18n/global-messages'
+import {assetMessages, txLabels} from '../kernel/i18n/global-messages'
import {usePoolTransitionModal} from '../Staking/PoolTransition/usePoolTransitionModal'
import {isByron} from '../yoroi-wallets/cardano/utils'
import {useSync} from '../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryList.tsx b/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryList.tsx
index 71807b5b55..f00c042bf0 100644
--- a/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryList.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryList.tsx
@@ -8,7 +8,7 @@ import {StyleSheet, View} from 'react-native'
import {Spacer} from '../../components'
import {ShowBuyBanner} from '../../features/Exchange/common/ShowBuyBanner/ShowBuyBanner'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import {useMetrics} from '../../metrics/metricsManager'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
import {useTransactionInfos} from '../../yoroi-wallets/hooks'
import {TransactionInfo} from '../../yoroi-wallets/types'
import {TxHistoryListItem} from './TxHistoryListItem'
diff --git a/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryListItem.tsx b/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryListItem.tsx
index 60fd1a867e..3171b014bc 100644
--- a/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryListItem.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxHistoryList/TxHistoryListItem.tsx
@@ -12,9 +12,9 @@ import {Spacer, Text} from '../../components'
import {Icon} from '../../components/Icon'
import {usePrivacyMode} from '../../features/Settings/PrivacyMode/PrivacyMode'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
+import {TxHistoryRouteNavigation} from '../../kernel/navigation'
import {formatDateRelative, formatTime, formatTokenFractional, formatTokenInteger} from '../../legacy/format'
import utfSymbols from '../../legacy/utfSymbols'
-import {TxHistoryRouteNavigation} from '../../navigation'
import {isEmptyString} from '../../utils/utils'
import {MultiToken} from '../../yoroi-wallets/cardano/MultiToken'
import {YoroiWallet} from '../../yoroi-wallets/cardano/types'
diff --git a/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx b/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
index de0b0b78a4..de32a489b8 100644
--- a/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
+++ b/apps/wallet-mobile/src/TxHistory/TxHistoryNavigator.tsx
@@ -51,15 +51,14 @@ import {
import {SelectBuyTokenFromListScreen} from '../features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen'
import {SelectSellTokenFromListScreen} from '../features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen'
import {useSelectedWallet} from '../features/WalletManager/context/SelectedWalletContext'
-import {CONFIG} from '../legacy/config'
+import {unstoppableApiKey} from '../kernel/env'
import {
BackButton,
defaultStackNavigationOptions,
TxHistoryRouteNavigation,
TxHistoryRoutes,
useWalletNavigation,
-} from '../navigation'
-import {COLORS} from '../theme'
+} from '../kernel/navigation'
import {useFrontendFees, useStakingKey, useWalletName} from '../yoroi-wallets/hooks'
import {ModalInfo} from './ModalInfo'
import {TxDetails} from './TxDetails'
@@ -101,7 +100,7 @@ export const TxHistoryNavigator = () => {
const resolverApi = resolverApiMaker({
apiConfig: {
[Resolver.NameServer.Unstoppable]: {
- apiKey: CONFIG.UNSTOPPABLE_API_KEY,
+ apiKey: unstoppableApiKey,
},
},
cslFactory: init,
@@ -397,8 +396,8 @@ export const TxHistoryNavigator = () => {
...sendOptions(atoms, color),
headerTransparent: true,
title: strings.scanTitle,
- headerTintColor: COLORS.WHITE,
- headerLeft: (props) => ,
+ headerTintColor: color.white_static,
+ headerLeft: (props) => ,
}}
/>
@@ -561,13 +560,16 @@ const HeaderRightHistory = React.memo(() => {
const wallet = useSelectedWallet()
const {navigateToSettings} = useWalletNavigation()
const navigation = useNavigation()
- const {styles, color} = useStyles()
+ const {styles, colors} = useStyles()
return (
{!wallet.isReadOnly && (
<>
- navigation.navigate('scan-start', {insideFeature: 'scan'})} color={color} />
+ navigation.navigate('scan-start', {insideFeature: 'scan'})}
+ color={colors.gray}
+ />
>
@@ -599,7 +601,11 @@ const useStyles = () => {
paddingStart: 8,
},
})
- return {styles, backgroundColor: color.primary_c100, color: color.gray_cmax}
+
+ return {
+ styles,
+ colors: {gray: color.gray_cmax},
+ } as const
}
const sendOptions = (atoms: Atoms, color: ThemedPalette) => ({
diff --git a/apps/wallet-mobile/src/TxHistory/WarningBanner.tsx b/apps/wallet-mobile/src/TxHistory/WarningBanner.tsx
index b164c692bd..ebc54676a1 100644
--- a/apps/wallet-mobile/src/TxHistory/WarningBanner.tsx
+++ b/apps/wallet-mobile/src/TxHistory/WarningBanner.tsx
@@ -3,7 +3,6 @@ import React from 'react'
import {Image, ImageSourcePropType, StyleSheet, TouchableOpacity, View, ViewStyle} from 'react-native'
import {Button, Icon, Text} from '../components'
-import {COLORS} from '../theme'
type Props = {
title: string
@@ -26,7 +25,7 @@ export const WarningBanner = ({
onRequestClose,
style,
}: Props) => {
- const styles = useStyles()
+ const {styles, colors} = useStyles()
return (
@@ -46,7 +45,7 @@ export const WarningBanner = ({
{showCloseIcon === true && (
-
+
)}
@@ -99,5 +98,5 @@ const useStyles = () => {
marginVertical: 16,
},
})
- return styles
+ return {styles, colors: {icon: color.gray_c600}} as const
}
diff --git a/apps/wallet-mobile/src/WalletNavigator.tsx b/apps/wallet-mobile/src/WalletNavigator.tsx
index 23ef8d50a3..2cc7d3acf8 100644
--- a/apps/wallet-mobile/src/WalletNavigator.tsx
+++ b/apps/wallet-mobile/src/WalletNavigator.tsx
@@ -19,9 +19,14 @@ import {SetupWalletNavigator} from './features/SetupWallet/SetupWalletNavigator'
import {GovernanceNavigator} from './features/Staking/Governance'
import {ToggleAnalyticsSettingsNavigator} from './features/ToggleAnalyticsSettings'
import {SelectWalletFromList} from './features/WalletManager/useCases/SelectWalletFromListScreen/SelectWalletFromListScreen'
-import {CONFIG} from './legacy/config'
-import {useMetrics} from './metrics/metricsManager'
-import {defaultStackNavigationOptions, hideTabBarForRoutes, WalletStackRoutes, WalletTabRoutes} from './navigation'
+import {dappExplorerEnabled} from './kernel/config'
+import {useMetrics} from './kernel/metrics/metricsManager'
+import {
+ defaultStackNavigationOptions,
+ hideTabBarForRoutes,
+ WalletStackRoutes,
+ WalletTabRoutes,
+} from './kernel/navigation'
import {NftsNavigator} from './Nfts/NftsNavigator'
import {SearchProvider} from './Search/SearchContext'
import {TxHistoryNavigator} from './TxHistory'
@@ -110,7 +115,7 @@ const WalletTabNavigator = () => {
)}
- {CONFIG.DAPP_EXPLORER_ENABLED ? (
+ {dappExplorerEnabled ? (
}) => ({
diff --git a/apps/wallet-mobile/src/YoroiApp.tsx b/apps/wallet-mobile/src/YoroiApp.tsx
index a3841503b5..1bc359cd7d 100644
--- a/apps/wallet-mobile/src/YoroiApp.tsx
+++ b/apps/wallet-mobile/src/YoroiApp.tsx
@@ -3,88 +3,86 @@ import {LinksProvider} from '@yoroi/links'
import {SetupWalletProvider} from '@yoroi/setup-wallet'
import {ThemeProvider} from '@yoroi/theme'
import React from 'react'
-import {LogBox, Platform, StyleSheet, UIManager} from 'react-native'
-import Config from 'react-native-config'
+import {LogBox, StyleSheet} from 'react-native'
import * as RNP from 'react-native-paper'
import {initialWindowMetrics, SafeAreaProvider} from 'react-native-safe-area-context'
import {enableFreeze, enableScreens} from 'react-native-screens'
import {QueryClient, QueryClientProvider} from 'react-query'
-import {AuthProvider} from './auth/AuthProvider'
import {LoadingBoundary} from './components'
import {ErrorBoundary} from './components/ErrorBoundary'
+import {AuthProvider} from './features/Auth/AuthProvider'
import {CurrencyProvider} from './features/Settings/Currency/CurrencyContext'
import {walletManager} from './features/WalletManager/common/walletManager'
import {SelectedWalletProvider} from './features/WalletManager/context/SelectedWalletContext'
import {SelectedWalletMetaProvider} from './features/WalletManager/context/SelectedWalletMetaContext'
import {WalletManagerProvider} from './features/WalletManager/context/WalletManagerContext'
-import {LanguageProvider} from './i18n'
import {InitApp} from './InitApp'
-import {CONFIG} from './legacy/config'
-import {setLogLevel} from './legacy/logging'
-import {makeMetricsManager, MetricsProvider} from './metrics/metricsManager'
-import {useMigrations} from './migrations/useMigrations'
+import {disableLogbox} from './kernel/env'
+import {LanguageProvider} from './kernel/i18n'
+import {useSetupLogger} from './kernel/logger/hooks/useSetupLogger'
+import {makeMetricsManager, MetricsProvider} from './kernel/metrics/metricsManager'
+import {useMigrations} from './kernel/storage/migrations/useMigrations'
+import {rootStorage} from './kernel/storage/rootStorage'
import {useThemeStorageMaker} from './yoroi-wallets/hooks'
-import {rootStorage} from './yoroi-wallets/storage/rootStorage'
enableScreens(true)
enableFreeze(true)
-if (Platform.OS === 'android') {
- if (UIManager.setLayoutAnimationEnabledExperimental != null) {
- UIManager.setLayoutAnimationEnabledExperimental(true)
- }
-}
-
-setLogLevel(CONFIG.LOG_LEVEL)
-
-// eslint-disable-next-line no-extra-boolean-cast
-if (Boolean(Config.DISABLE_LOGBOX)) LogBox.ignoreAllLogs()
+if (disableLogbox) LogBox.ignoreAllLogs()
const queryClient = new QueryClient()
-
const metricsManager = makeMetricsManager()
-export const YoroiApp = () => {
- const migrated = useMigrations(rootStorage)
-
+const Yoroi = () => {
+ const isMigrated = useMigrations(rootStorage)
const themeStorage = useThemeStorageMaker()
- if (!migrated) return null
+ if (!isMigrated) return null
return (
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
)
}
+
+export const YoroiApp = () => {
+ const isReady = useSetupLogger()
+
+ if (!isReady) return null
+
+ return (
+
+
+
+
+
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Analytics/Analytics.tsx b/apps/wallet-mobile/src/components/Analytics/Analytics.tsx
index 854a25c938..182857fea4 100644
--- a/apps/wallet-mobile/src/components/Analytics/Analytics.tsx
+++ b/apps/wallet-mobile/src/components/Analytics/Analytics.tsx
@@ -5,7 +5,7 @@ import {StyleSheet, Switch, TextStyle, TouchableOpacity, useWindowDimensions, Vi
import {ScrollView} from 'react-native-gesture-handler'
import {Button, Spacer, Text, YoroiLogo} from '../../components'
-import {useMetrics} from '../../metrics/metricsManager'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
import {AnalyticsImage} from './AnalyticsImage'
type Props = {
diff --git a/apps/wallet-mobile/src/components/Boundary/Boundary.stories.tsx b/apps/wallet-mobile/src/components/Boundary/Boundary.stories.tsx
index 1eac3aacd2..6cfe660e4c 100644
--- a/apps/wallet-mobile/src/components/Boundary/Boundary.stories.tsx
+++ b/apps/wallet-mobile/src/components/Boundary/Boundary.stories.tsx
@@ -4,8 +4,8 @@ import {ActivityIndicator, Button, StyleSheet, Text, View} from 'react-native'
import {useQuery} from 'react-query'
import {QueryProvider} from '../../../.storybook/decorators'
-import {errorMessages} from '../../i18n/global-messages'
-import LocalizableError from '../../i18n/LocalizableError'
+import {errorMessages} from '../../kernel/i18n/global-messages'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
import {Boundary} from './Boundary'
storiesOf('Boundary', module)
diff --git a/apps/wallet-mobile/src/components/Boundary/Boundary.tsx b/apps/wallet-mobile/src/components/Boundary/Boundary.tsx
index ad79b988b5..512120db14 100644
--- a/apps/wallet-mobile/src/components/Boundary/Boundary.tsx
+++ b/apps/wallet-mobile/src/components/Boundary/Boundary.tsx
@@ -9,7 +9,7 @@ import {ActivityIndicator, Image, LayoutAnimation, StyleSheet, TouchableOpacity,
import {useQueryErrorResetBoundary} from 'react-query'
import image from '../../assets/img/error.png'
-import LocalizableError from '../../i18n/LocalizableError'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
import {Button} from '../Button'
import {Spacer} from '../Spacer'
import {Text} from '../Text'
diff --git a/apps/wallet-mobile/src/components/ConfirmTx/ConfirmTx.tsx b/apps/wallet-mobile/src/components/ConfirmTx/ConfirmTx.tsx
index 742638d7a6..1f464cbcdb 100644
--- a/apps/wallet-mobile/src/components/ConfirmTx/ConfirmTx.tsx
+++ b/apps/wallet-mobile/src/components/ConfirmTx/ConfirmTx.tsx
@@ -6,12 +6,12 @@ import {useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
import {debugWalletInfo, features} from '../../features'
+import {useAuthOsWithEasyConfirmation} from '../../features/Auth/common/hooks'
import {walletManager} from '../../features/WalletManager/common/walletManager'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import {confirmationMessages, errorMessages, txLabels} from '../../i18n/global-messages'
-import LocalizableError from '../../i18n/LocalizableError'
+import {confirmationMessages, errorMessages, txLabels} from '../../kernel/i18n/global-messages'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
import {isEmptyString} from '../../utils/utils'
-import {useAuthOsWithEasyConfirmation} from '../../yoroi-wallets/auth'
import {WrongPassword} from '../../yoroi-wallets/cardano/errors'
import {useSubmitTx} from '../../yoroi-wallets/hooks'
import {DeviceId, DeviceObj, withBLE, withUSB} from '../../yoroi-wallets/hw'
diff --git a/apps/wallet-mobile/src/components/ConfirmTx/Dialog.tsx b/apps/wallet-mobile/src/components/ConfirmTx/Dialog.tsx
index 05cb7f4260..5b5ad9dc45 100644
--- a/apps/wallet-mobile/src/components/ConfirmTx/Dialog.tsx
+++ b/apps/wallet-mobile/src/components/ConfirmTx/Dialog.tsx
@@ -3,7 +3,7 @@ import {useIntl} from 'react-intl'
import {ErrorView, PleaseWaitView} from '../../components'
import {LedgerConnect, LedgerTransportSwitchView} from '../../HW'
-import globalMessages, {ledgerMessages, txLabels} from '../../i18n/global-messages'
+import globalMessages, {ledgerMessages, txLabels} from '../../kernel/i18n/global-messages'
import {Modal} from '../../legacy/Modal'
import {DeviceId, DeviceObj} from '../../yoroi-wallets/hw'
diff --git a/apps/wallet-mobile/src/components/ConfirmTxWithHwModal/strings.ts b/apps/wallet-mobile/src/components/ConfirmTxWithHwModal/strings.ts
index 22e98a926a..b14fe850ee 100644
--- a/apps/wallet-mobile/src/components/ConfirmTxWithHwModal/strings.ts
+++ b/apps/wallet-mobile/src/components/ConfirmTxWithHwModal/strings.ts
@@ -1,6 +1,6 @@
import {useIntl} from 'react-intl'
-import {ledgerMessages} from '../../i18n/global-messages'
+import {ledgerMessages} from '../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/components/ConfirmTxWithOsModal/ConfirmTxWithOsModal.tsx b/apps/wallet-mobile/src/components/ConfirmTxWithOsModal/ConfirmTxWithOsModal.tsx
index cd1c4732d2..cc65e85745 100644
--- a/apps/wallet-mobile/src/components/ConfirmTxWithOsModal/ConfirmTxWithOsModal.tsx
+++ b/apps/wallet-mobile/src/components/ConfirmTxWithOsModal/ConfirmTxWithOsModal.tsx
@@ -2,8 +2,8 @@ import {useTheme} from '@yoroi/theme'
import React, {useEffect} from 'react'
import {ActivityIndicator, StyleSheet, Text, View} from 'react-native'
+import {useAuthOsWithEasyConfirmation} from '../../features/Auth/common/hooks'
import {useSelectedWallet} from '../../features/WalletManager/context/SelectedWalletContext'
-import {useAuthOsWithEasyConfirmation} from '../../yoroi-wallets/auth'
import {useSignTx, useSubmitTx} from '../../yoroi-wallets/hooks'
import {YoroiSignedTx, YoroiUnsignedTx} from '../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/components/ConfirmTxWithSpendingPasswordModal/strings.ts b/apps/wallet-mobile/src/components/ConfirmTxWithSpendingPasswordModal/strings.ts
index 1f0d06f542..3ac808f427 100644
--- a/apps/wallet-mobile/src/components/ConfirmTxWithSpendingPasswordModal/strings.ts
+++ b/apps/wallet-mobile/src/components/ConfirmTxWithSpendingPasswordModal/strings.ts
@@ -1,6 +1,6 @@
import {useIntl} from 'react-intl'
-import globalMessages, {txLabels} from '../../i18n/global-messages'
+import globalMessages, {txLabels} from '../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/components/DangerousActionModal/DangerousActionModal.tsx b/apps/wallet-mobile/src/components/DangerousActionModal/DangerousActionModal.tsx
index 74ebe6eb58..f238c2a94f 100644
--- a/apps/wallet-mobile/src/components/DangerousActionModal/DangerousActionModal.tsx
+++ b/apps/wallet-mobile/src/components/DangerousActionModal/DangerousActionModal.tsx
@@ -4,7 +4,7 @@ import {useIntl} from 'react-intl'
import {ScrollView, StyleSheet, View} from 'react-native'
import {Icon} from '../../components/Icon'
-import globalMessages, {confirmationMessages} from '../../i18n/global-messages'
+import globalMessages, {confirmationMessages} from '../../kernel/i18n/global-messages'
import {Modal} from '../../legacy/Modal'
import {Button, Checkbox, Spacer, Text} from '..'
diff --git a/apps/wallet-mobile/src/components/ErrorBoundary/ErrorBoundary.tsx b/apps/wallet-mobile/src/components/ErrorBoundary/ErrorBoundary.tsx
index 7dcbe069a6..01d97b7cc0 100644
--- a/apps/wallet-mobile/src/components/ErrorBoundary/ErrorBoundary.tsx
+++ b/apps/wallet-mobile/src/components/ErrorBoundary/ErrorBoundary.tsx
@@ -2,7 +2,7 @@ import React, {Component, ErrorInfo, ReactNode} from 'react'
import {BackHandler, Image, Platform, ScrollView, StyleSheet, Text, View, ViewProps} from 'react-native'
import errorImage from '../../assets/img/error.png'
-import {Logger} from '../../legacy/logging'
+import {logger} from '../../kernel/logger/logger'
import {Button} from '../Button/Button'
import {CopyButton} from '../CopyButton'
import {Spacer} from '../Spacer'
@@ -26,8 +26,7 @@ export class ErrorBoundary extends Component {
}
public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
- Logger.error('ErrorBoundary::Error: ' + JSON.stringify(error))
- Logger.error('ErrorBoundary::ErrorInfo: ' + JSON.stringify(errorInfo))
+ logger.error(error, {errorInfo})
this.setState({
error: error.toString(),
errorInfo: JSON.stringify(errorInfo),
diff --git a/apps/wallet-mobile/src/components/ErrorBoundary/ExpandableItem/ExpandableItem.tsx b/apps/wallet-mobile/src/components/ErrorBoundary/ExpandableItem/ExpandableItem.tsx
index e59a3d6842..a65534884c 100644
--- a/apps/wallet-mobile/src/components/ErrorBoundary/ExpandableItem/ExpandableItem.tsx
+++ b/apps/wallet-mobile/src/components/ErrorBoundary/ExpandableItem/ExpandableItem.tsx
@@ -1,7 +1,7 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {LayoutAnimation, StyleSheet, TouchableOpacity, View} from 'react-native'
-import {COLORS} from '../../../theme'
import {Icon, Text} from '../..'
type Props = {
@@ -13,6 +13,7 @@ type Props = {
export const ExpandableItem = ({label, content, disabled, style}: Props) => {
const [expanded, setExpanded] = React.useState(false)
+ const {styles, colors} = useStyles()
return (
{
>
-
+
{label}
-
+
{expanded && (
@@ -41,17 +42,22 @@ export const ExpandableItem = ({label, content, disabled, style}: Props) => {
)
}
-const styles = StyleSheet.create({
- labelWrapper: {
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- padding: 12,
- },
- disabled: {
- color: COLORS.DISABLED,
- },
- contentWrapper: {
- padding: 16,
- },
-})
+const useStyles = () => {
+ const {color, atoms} = useTheme()
+ const styles = StyleSheet.create({
+ labelWrapper: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ ...atoms.p_md,
+ },
+ disabled: {
+ color: color.gray_c600,
+ },
+ contentWrapper: {
+ ...atoms.p_lg,
+ },
+ })
+
+ return {styles, colors: {icon: color.gray_cmax}} as const
+}
diff --git a/apps/wallet-mobile/src/components/ErrorModal/ErrorModal.tsx b/apps/wallet-mobile/src/components/ErrorModal/ErrorModal.tsx
index bf46b30c77..3b033d1c7a 100644
--- a/apps/wallet-mobile/src/components/ErrorModal/ErrorModal.tsx
+++ b/apps/wallet-mobile/src/components/ErrorModal/ErrorModal.tsx
@@ -4,7 +4,7 @@ import {defineMessages, useIntl} from 'react-intl'
import {Image, LayoutAnimation, ScrollView, StyleSheet, Text, TouchableOpacity, View} from 'react-native'
import image from '../../assets/img/error.png'
-import globalMessages, {errorMessages} from '../../i18n/global-messages'
+import globalMessages, {errorMessages} from '../../kernel/i18n/global-messages'
import {Modal} from '../../legacy/Modal'
import {isEmptyString} from '../../utils/utils'
import {Button} from '../Button'
diff --git a/apps/wallet-mobile/src/components/ErrorPanel/ErrorPanel.stories.tsx b/apps/wallet-mobile/src/components/ErrorPanel/ErrorPanel.stories.tsx
index 8a9c7d0b4e..c6f53a0b25 100644
--- a/apps/wallet-mobile/src/components/ErrorPanel/ErrorPanel.stories.tsx
+++ b/apps/wallet-mobile/src/components/ErrorPanel/ErrorPanel.stories.tsx
@@ -3,8 +3,8 @@ import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {Text} from 'react-native'
-import globalMessages from '../../i18n/global-messages'
-import {limitOfSecondaryAmountsPerTx} from '../../yoroi-wallets/contants'
+import {limitOfSecondaryAmountsPerTx} from '../../features/Send/common/constants'
+import globalMessages from '../../kernel/i18n/global-messages'
import {ScreenBackground} from '../ScreenBackground'
import {ErrorPanel} from './ErrorPanel'
diff --git a/apps/wallet-mobile/src/components/Hr/Hr.tsx b/apps/wallet-mobile/src/components/Hr/Hr.tsx
index 4a2ba097cf..6e25e6dbf3 100644
--- a/apps/wallet-mobile/src/components/Hr/Hr.tsx
+++ b/apps/wallet-mobile/src/components/Hr/Hr.tsx
@@ -1,14 +1,21 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {StyleSheet, View, ViewProps} from 'react-native'
-import {lightPalette} from '../../theme'
-
export const Hr = ({style, ...rest}: ViewProps) => {
- return
+ const {styles, colors} = useStyles()
+ return
}
-const styles = StyleSheet.create({
- hr: {
- height: StyleSheet.hairlineWidth,
- },
-})
+const useStyles = () => {
+ const {color} = useTheme()
+ const styles = StyleSheet.create({
+ hr: {
+ height: StyleSheet.hairlineWidth,
+ },
+ })
+ const colors = {
+ bgLine: color.gray_c200,
+ }
+ return {styles, colors} as const
+}
diff --git a/apps/wallet-mobile/src/components/Icon/Connection.tsx b/apps/wallet-mobile/src/components/Icon/Connection.tsx
new file mode 100644
index 0000000000..389cdee819
--- /dev/null
+++ b/apps/wallet-mobile/src/components/Icon/Connection.tsx
@@ -0,0 +1,18 @@
+import React from 'react'
+import Svg, {Path} from 'react-native-svg'
+
+type Props = {
+ size?: number
+ color?: string
+}
+
+export const Connection = ({size = 36, color = '#000000'}: Props) => {
+ return (
+
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Icon/Emurgo.tsx b/apps/wallet-mobile/src/components/Icon/Emurgo.tsx
index 2939432f76..ec9977c244 100644
--- a/apps/wallet-mobile/src/components/Icon/Emurgo.tsx
+++ b/apps/wallet-mobile/src/components/Icon/Emurgo.tsx
@@ -1,474 +1,477 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import Svg, {G, Path} from 'react-native-svg'
-import {COLORS} from '../../theme'
-
type Props = {width: number; height: number; color?: string}
-export const Emurgo = ({width, height, color = COLORS.BLACK}: Props) => (
-
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Icon/Icon.stories.tsx b/apps/wallet-mobile/src/components/Icon/Icon.stories.tsx
index 5092c39e1d..90023ecf54 100644
--- a/apps/wallet-mobile/src/components/Icon/Icon.stories.tsx
+++ b/apps/wallet-mobile/src/components/Icon/Icon.stories.tsx
@@ -272,6 +272,10 @@ storiesOf('Icon', module).add('Gallery', () => {
} title="Square" />
} title="Google" />
+
+ } title="Connection" />
+
+ } title="YoroiApp" />
)
diff --git a/apps/wallet-mobile/src/components/Icon/Switch.tsx b/apps/wallet-mobile/src/components/Icon/Switch.tsx
index a49d492fcf..13fad7a790 100644
--- a/apps/wallet-mobile/src/components/Icon/Switch.tsx
+++ b/apps/wallet-mobile/src/components/Icon/Switch.tsx
@@ -1,20 +1,23 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import Svg, {Path} from 'react-native-svg'
-import {COLORS} from '../../theme'
-
type Props = {size: number; color?: string}
-export const Switch = ({size, color}: Props) => (
-
-
+export const Switch = (props: Props) => {
+ const {color: colors} = useTheme()
+ const {size, color = colors.primary_c500} = props
+ return (
+
+
-
-
-)
+
+
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Icon/WalletAccount.tsx b/apps/wallet-mobile/src/components/Icon/WalletAccount.tsx
index 376fa53fc5..444391eab0 100644
--- a/apps/wallet-mobile/src/components/Icon/WalletAccount.tsx
+++ b/apps/wallet-mobile/src/components/Icon/WalletAccount.tsx
@@ -1,11 +1,11 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import Blockies from '@emurgo/react-native-blockies-svg'
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {StyleSheet, View, ViewStyle} from 'react-native'
import tinycolor from 'tinycolor2'
-import {COLORS as APP_COLORS} from '../../theme'
import {isEmptyString} from '../../utils/utils'
const mkcolor = (primary: string, secondary: string, spots: string) => ({primary, secondary, spots})
@@ -28,18 +28,6 @@ const saturation = (color: string, factor = 0) => {
return tcol.toHexString()
}
-const styles = StyleSheet.create({
- defaultStyle: {
- borderColor: APP_COLORS.LIGHT_GRAY,
- borderRadius: 6,
- borderWidth: 0.5,
- alignItems: 'center',
- justifyContent: 'center',
- aspectRatio: 1,
- overflow: 'hidden',
- },
-})
-
type Props = {
iconSeed: string
scalePx?: number
@@ -48,6 +36,7 @@ type Props = {
}
export const WalletAccount = ({iconSeed, scalePx = 5, saturationFactor = 0, style}: Props) => {
+ const styles = useStyles()
const colorIdx = isEmptyString(iconSeed) || iconSeed.length < 2 ? 0 : Buffer.from(iconSeed, 'hex')[0] % COLORS.length
const color = COLORS[colorIdx]
return (
@@ -63,3 +52,19 @@ export const WalletAccount = ({iconSeed, scalePx = 5, saturationFactor = 0, styl
)
}
+
+const useStyles = () => {
+ const {color} = useTheme()
+ const styles = StyleSheet.create({
+ defaultStyle: {
+ borderColor: color.gray_cmax,
+ borderRadius: 6,
+ borderWidth: 0.5,
+ alignItems: 'center',
+ justifyContent: 'center',
+ aspectRatio: 1,
+ overflow: 'hidden',
+ },
+ })
+ return styles
+}
diff --git a/apps/wallet-mobile/src/components/Icon/YoroiApp.tsx b/apps/wallet-mobile/src/components/Icon/YoroiApp.tsx
new file mode 100644
index 0000000000..4bcda88191
--- /dev/null
+++ b/apps/wallet-mobile/src/components/Icon/YoroiApp.tsx
@@ -0,0 +1,34 @@
+import React from 'react'
+import Svg, {Defs, LinearGradient, Path, Rect, Stop} from 'react-native-svg'
+
+type Props = {
+ size?: number
+}
+
+export const YoroiApp = ({size = 36}: Props) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Icon/YoroiWallet.tsx b/apps/wallet-mobile/src/components/Icon/YoroiWallet.tsx
index 936ca2dbba..e90c453dd9 100644
--- a/apps/wallet-mobile/src/components/Icon/YoroiWallet.tsx
+++ b/apps/wallet-mobile/src/components/Icon/YoroiWallet.tsx
@@ -1,76 +1,80 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import Svg, {G, Path, Polygon} from 'react-native-svg'
-import {COLORS} from '../../theme'
-
type Props = {width?: number; height?: number; color?: string}
-export const YoroiWallet = ({width = 210, height = 60, color = COLORS.WHITE}: Props) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+export const YoroiWallet = (props: Props) => {
+ const {color: colors} = useTheme()
+ const {width = 210, height = 60, color = colors.white_static} = props
-
-
+ return (
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-)
+
+ )
+}
diff --git a/apps/wallet-mobile/src/components/Icon/index.ts b/apps/wallet-mobile/src/components/Icon/index.ts
index b04759e0c7..25a590bc3b 100644
--- a/apps/wallet-mobile/src/components/Icon/index.ts
+++ b/apps/wallet-mobile/src/components/Icon/index.ts
@@ -20,6 +20,7 @@ import {Clock} from './Clock'
import {Close} from './Close'
import {Coins} from './Coins'
import {Collateral} from './Collateral'
+import {Connection} from './Connection'
import {Copy} from './Copy'
import {CopySuccess} from './CopySuccess'
import {Cross} from './Cross'
@@ -120,6 +121,7 @@ import {Wallets} from './Wallets'
import {WalletStack} from './WalletStack'
import {Warning} from './Warning'
import {WingRiders} from './WingRiders'
+import {YoroiApp} from './YoroiApp'
import {YoroiNightly} from './YoroiNightly'
import {YoroiWallet} from './YoroiWallet'
@@ -248,4 +250,6 @@ export const Icon = {
Reload,
Square,
Google,
+ Connection,
+ YoroiApp,
}
diff --git a/apps/wallet-mobile/src/components/LanguagePicker/LanguagePicker.tsx b/apps/wallet-mobile/src/components/LanguagePicker/LanguagePicker.tsx
index e25cdfd6a2..6178e9a06d 100644
--- a/apps/wallet-mobile/src/components/LanguagePicker/LanguagePicker.tsx
+++ b/apps/wallet-mobile/src/components/LanguagePicker/LanguagePicker.tsx
@@ -3,7 +3,7 @@ import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {FlatList, StyleSheet, TouchableOpacity, View, ViewProps} from 'react-native'
-import {useLanguage} from '../../i18n'
+import {useLanguage} from '../../kernel/i18n'
import {useSearch, useSearchOnNavBar} from '../../Search/SearchContext'
import {Icon} from '../Icon'
import {Text} from '../Text'
diff --git a/apps/wallet-mobile/src/components/Modal/ModalContext.tsx b/apps/wallet-mobile/src/components/Modal/ModalContext.tsx
index 7dd04387ab..7cf9316741 100644
--- a/apps/wallet-mobile/src/components/Modal/ModalContext.tsx
+++ b/apps/wallet-mobile/src/components/Modal/ModalContext.tsx
@@ -1,4 +1,4 @@
-import {useNavigation} from '@react-navigation/native'
+import {NavigationProp, useNavigation} from '@react-navigation/native'
import React from 'react'
import {Keyboard} from 'react-native'
@@ -10,7 +10,12 @@ type ModalState = {
isLoading: boolean
}
type ModalActions = {
- openModal: (title: ModalState['title'], content: ModalState['content'], height?: ModalState['height']) => void
+ openModal: (
+ title: ModalState['title'],
+ content: ModalState['content'],
+ height?: ModalState['height'],
+ onClose?: () => void,
+ ) => void
closeModal: () => void
startLoading: () => void
stopLoading: () => void
@@ -35,18 +40,25 @@ export const ModalProvider = ({
}) => {
const [state, dispatch] = React.useReducer(modalReducer, {...defaultState, ...initialState})
const navigation = useNavigation()
+ const onCloseRef = React.useRef<() => void>()
const actions = React.useRef({
closeModal: () => {
- const lastRouteName = navigation.getState().routes.slice(-1)[0].name
- if (lastRouteName === 'modal') {
+ if (getLastRouteName(navigation) === 'modal') {
dispatch({type: 'close'})
navigation.goBack()
+ onCloseRef.current?.()
}
},
- openModal: (title: ModalState['title'], content: ModalState['content'], height?: ModalState['height']) => {
+ openModal: (
+ title: ModalState['title'],
+ content: ModalState['content'],
+ height?: ModalState['height'],
+ onClose?: () => void,
+ ) => {
Keyboard.dismiss()
dispatch({type: 'open', title, content, height})
navigation.navigate('modal')
+ onCloseRef.current = onClose
},
startLoading: () => dispatch({type: 'startLoading'}),
stopLoading: () => dispatch({type: 'stopLoading'}),
@@ -96,3 +108,7 @@ const defaultState: ModalState = Object.freeze({
isOpen: false,
isLoading: false,
})
+
+const getLastRouteName = (navigation: NavigationProp) => {
+ return navigation.getState().routes.slice(-1)[0].name
+}
diff --git a/apps/wallet-mobile/src/components/ModalError/strings.ts b/apps/wallet-mobile/src/components/ModalError/strings.ts
index c0adef4c48..de5196cf75 100644
--- a/apps/wallet-mobile/src/components/ModalError/strings.ts
+++ b/apps/wallet-mobile/src/components/ModalError/strings.ts
@@ -1,6 +1,6 @@
import {useIntl} from 'react-intl'
-import globalMessages, {ledgerMessages} from '../../i18n/global-messages'
+import globalMessages, {ledgerMessages} from '../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/components/TwoActionView/TwoActionView.tsx b/apps/wallet-mobile/src/components/TwoActionView/TwoActionView.tsx
index 478f0f4d04..013346c1f7 100644
--- a/apps/wallet-mobile/src/components/TwoActionView/TwoActionView.tsx
+++ b/apps/wallet-mobile/src/components/TwoActionView/TwoActionView.tsx
@@ -2,8 +2,7 @@ import React from 'react'
import {useIntl} from 'react-intl'
import {ScrollView, StyleSheet, View} from 'react-native'
-import {confirmationMessages} from '../../i18n/global-messages'
-import {spacing} from '../../theme'
+import {confirmationMessages} from '../../kernel/i18n/global-messages'
import {Button} from '../Button'
import {Text} from '../Text'
@@ -75,7 +74,7 @@ const styles = StyleSheet.create({
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'row',
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
},
titleText: {
fontSize: 20,
diff --git a/apps/wallet-mobile/src/components/hooks/useStatusBar.ts b/apps/wallet-mobile/src/components/hooks/useStatusBar.ts
index 49856c7717..f6b02ba967 100644
--- a/apps/wallet-mobile/src/components/hooks/useStatusBar.ts
+++ b/apps/wallet-mobile/src/components/hooks/useStatusBar.ts
@@ -2,8 +2,6 @@ import {ThemedPalette, useTheme} from '@yoroi/theme'
import * as React from 'react'
import {Platform, StatusBar, StatusBarStyle} from 'react-native'
-import {HexColor} from '../../theme/types'
-
type StatusBarColor = {
bgColorAndroid: HexColor
statusBarStyle: StatusBarStyle
@@ -44,6 +42,7 @@ const getStatusBarStyleByRoute = ({
}
} else if (oldBlueRoutes.includes(currentRouteName)) {
return {
+ // old blue, not present in the current theming
bgColorAndroid: '#254BC9',
statusBarStyle: 'light-content',
}
@@ -111,3 +110,5 @@ const expandColor = (color: HexColor) => {
}
return color
}
+
+type HexColor = `#${string}`
diff --git a/apps/wallet-mobile/src/auth/AuthProvider.tsx b/apps/wallet-mobile/src/features/Auth/AuthProvider.tsx
similarity index 100%
rename from apps/wallet-mobile/src/auth/AuthProvider.tsx
rename to apps/wallet-mobile/src/features/Auth/AuthProvider.tsx
diff --git a/apps/wallet-mobile/src/auth/ChangePinScreen/ChangePinScreen.stories.tsx b/apps/wallet-mobile/src/features/Auth/ChangePinScreen/ChangePinScreen.stories.tsx
similarity index 93%
rename from apps/wallet-mobile/src/auth/ChangePinScreen/ChangePinScreen.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/ChangePinScreen/ChangePinScreen.stories.tsx
index 3232d495be..8d53498ca0 100644
--- a/apps/wallet-mobile/src/auth/ChangePinScreen/ChangePinScreen.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/ChangePinScreen/ChangePinScreen.stories.tsx
@@ -4,7 +4,7 @@ import {storiesOf} from '@storybook/react-native'
import {AsyncStorageProvider} from '@yoroi/common'
import React from 'react'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {ChangePinScreen} from './ChangePinScreen'
storiesOf('ChangePinScreen', module).add('Default', () => {
diff --git a/apps/wallet-mobile/src/auth/ChangePinScreen/ChangePinScreen.tsx b/apps/wallet-mobile/src/features/Auth/ChangePinScreen/ChangePinScreen.tsx
similarity index 100%
rename from apps/wallet-mobile/src/auth/ChangePinScreen/ChangePinScreen.tsx
rename to apps/wallet-mobile/src/features/Auth/ChangePinScreen/ChangePinScreen.tsx
diff --git a/apps/wallet-mobile/src/auth/ChangePinScreen/index.ts b/apps/wallet-mobile/src/features/Auth/ChangePinScreen/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/ChangePinScreen/index.ts
rename to apps/wallet-mobile/src/features/Auth/ChangePinScreen/index.ts
diff --git a/apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.stories.tsx b/apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.stories.tsx
similarity index 92%
rename from apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.stories.tsx
index 9c194e0518..707f140016 100644
--- a/apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.stories.tsx
@@ -4,7 +4,7 @@ import {storiesOf} from '@storybook/react-native'
import {AsyncStorageProvider} from '@yoroi/common'
import React from 'react'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {CheckPinInput} from './CheckPinInput'
storiesOf('CheckPinInput', module).add('Default', () => (
diff --git a/apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.tsx b/apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.tsx
similarity index 84%
rename from apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.tsx
rename to apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.tsx
index ba2f075eb3..213de49f59 100644
--- a/apps/wallet-mobile/src/auth/CheckPinInput/CheckPinInput.tsx
+++ b/apps/wallet-mobile/src/features/Auth/CheckPinInput/CheckPinInput.tsx
@@ -1,10 +1,10 @@
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {showErrorDialog} from '../../dialogs'
-import {errorMessages} from '../../i18n/global-messages'
-import {CONFIG} from '../../legacy/config'
-import {useCheckPin} from '../../yoroi-wallets/auth'
+import {showErrorDialog} from '../../../kernel/dialogs'
+import {errorMessages} from '../../../kernel/i18n/global-messages'
+import {PIN_LENGTH} from '../common/constants'
+import {useCheckPin} from '../common/hooks'
import {PinInput, PinInputRef} from '../PinInput'
export const CheckPinInput = ({onValid}: {onValid: () => void}) => {
@@ -33,7 +33,7 @@ export const CheckPinInput = ({onValid}: {onValid: () => void}) => {
subtitles={[strings.subtitle]}
enabled={!isLoading}
onDone={checkPin}
- pinMaxLength={CONFIG.PIN_LENGTH}
+ pinMaxLength={PIN_LENGTH}
/>
)
}
diff --git a/apps/wallet-mobile/src/auth/CheckPinInput/index.ts b/apps/wallet-mobile/src/features/Auth/CheckPinInput/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/CheckPinInput/index.ts
rename to apps/wallet-mobile/src/features/Auth/CheckPinInput/index.ts
diff --git a/apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.stories.tsx b/apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.stories.tsx
similarity index 89%
rename from apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.stories.tsx
index 6c07ace3f9..c3da166568 100644
--- a/apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.stories.tsx
@@ -3,7 +3,7 @@ import {storiesOf} from '@storybook/react-native'
import {AsyncStorageProvider} from '@yoroi/common'
import React from 'react'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {CreatePinInput} from './CreatePinInput'
storiesOf('CreatePinInput', module).add('Default', () => (
diff --git a/apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.tsx b/apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.tsx
similarity index 90%
rename from apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.tsx
rename to apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.tsx
index 67de628bba..782b56cfde 100644
--- a/apps/wallet-mobile/src/auth/CreatePinInput/CreatePinInput.tsx
+++ b/apps/wallet-mobile/src/features/Auth/CreatePinInput/CreatePinInput.tsx
@@ -1,10 +1,10 @@
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {showErrorDialog} from '../../dialogs'
-import {errorMessages} from '../../i18n/global-messages'
-import {CONFIG} from '../../legacy/config'
-import {useCreatePin} from '../../yoroi-wallets/auth'
+import {showErrorDialog} from '../../../kernel/dialogs'
+import {errorMessages} from '../../../kernel/i18n/global-messages'
+import {PIN_LENGTH} from '../common/constants'
+import {useCreatePin} from '../common/hooks'
import {PinInput, PinInputRef} from '../PinInput'
type Props = {onDone: (pin: string) => void}
@@ -46,7 +46,7 @@ export const CreatePinInput = ({onDone}: Props) => {
key="pinInput"
title={strings.pinInputTitle}
subtitles={[strings.pinInputSubtitle]}
- pinMaxLength={CONFIG.PIN_LENGTH}
+ pinMaxLength={PIN_LENGTH}
onDone={onPinInput}
/>
) : (
@@ -56,7 +56,7 @@ export const CreatePinInput = ({onDone}: Props) => {
enabled={!isLoading}
title={strings.pinInputConfirmationTitle}
subtitles={[strings.pinInputConfirmationSubTitle]}
- pinMaxLength={CONFIG.PIN_LENGTH}
+ pinMaxLength={PIN_LENGTH}
onDone={onPinConfirmation}
onGoBack={() => setStep('pin')}
/>
diff --git a/apps/wallet-mobile/src/auth/CreatePinInput/index.ts b/apps/wallet-mobile/src/features/Auth/CreatePinInput/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/CreatePinInput/index.ts
rename to apps/wallet-mobile/src/features/Auth/CreatePinInput/index.ts
diff --git a/apps/wallet-mobile/src/auth/CreatePinScreen/CreatePinScreen.stories.tsx b/apps/wallet-mobile/src/features/Auth/CreatePinScreen/CreatePinScreen.stories.tsx
similarity index 87%
rename from apps/wallet-mobile/src/auth/CreatePinScreen/CreatePinScreen.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/CreatePinScreen/CreatePinScreen.stories.tsx
index 36e0508294..10c1974779 100644
--- a/apps/wallet-mobile/src/auth/CreatePinScreen/CreatePinScreen.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/CreatePinScreen/CreatePinScreen.stories.tsx
@@ -3,7 +3,7 @@ import {storiesOf} from '@storybook/react-native'
import {AsyncStorageProvider} from '@yoroi/common'
import React from 'react'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {CreatePinScreen} from './CreatePinScreen'
storiesOf('CreatePinScreen', module).add('Default', () => {
diff --git a/apps/wallet-mobile/src/auth/CreatePinScreen/CreatePinScreen.tsx b/apps/wallet-mobile/src/features/Auth/CreatePinScreen/CreatePinScreen.tsx
similarity index 100%
rename from apps/wallet-mobile/src/auth/CreatePinScreen/CreatePinScreen.tsx
rename to apps/wallet-mobile/src/features/Auth/CreatePinScreen/CreatePinScreen.tsx
diff --git a/apps/wallet-mobile/src/auth/CreatePinScreen/index.ts b/apps/wallet-mobile/src/features/Auth/CreatePinScreen/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/CreatePinScreen/index.ts
rename to apps/wallet-mobile/src/features/Auth/CreatePinScreen/index.ts
diff --git a/apps/wallet-mobile/src/auth/EnableLoginWithPin.tsx b/apps/wallet-mobile/src/features/Auth/EnableLoginWithPin.tsx
similarity index 66%
rename from apps/wallet-mobile/src/auth/EnableLoginWithPin.tsx
rename to apps/wallet-mobile/src/features/Auth/EnableLoginWithPin.tsx
index 555c05a73f..026f86354c 100644
--- a/apps/wallet-mobile/src/auth/EnableLoginWithPin.tsx
+++ b/apps/wallet-mobile/src/features/Auth/EnableLoginWithPin.tsx
@@ -1,8 +1,8 @@
import React from 'react'
-import {LoadingOverlay} from '../components/LoadingOverlay'
-import {useSelectedWalletContext} from '../features/WalletManager/context/SelectedWalletContext'
-import {useDisableAllEasyConfirmation} from '../yoroi-wallets/auth'
+import {LoadingOverlay} from '../../components/LoadingOverlay'
+import {useSelectedWalletContext} from '../WalletManager/context/SelectedWalletContext'
+import {useDisableAllEasyConfirmation} from './common/hooks'
import {CreatePinScreen} from './CreatePinScreen'
export const EnableLoginWithPin = ({onDone}: {onDone: () => void}) => {
diff --git a/apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.stories.tsx b/apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.stories.tsx
similarity index 97%
rename from apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.stories.tsx
index ebf1cf0425..d52a30c7d0 100644
--- a/apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.stories.tsx
@@ -2,7 +2,7 @@ import {action} from '@storybook/addon-actions'
import {storiesOf} from '@storybook/react-native'
import React from 'react'
-import {Button} from '../../components'
+import {Button} from '../../../components'
import {OsAuthScreen} from './OsAuthScreen'
storiesOf('OsAuthScreen', module)
diff --git a/apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.tsx b/apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.tsx
similarity index 95%
rename from apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.tsx
rename to apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.tsx
index ec8d76b915..bd3040146c 100644
--- a/apps/wallet-mobile/src/auth/OsAuthScreen/OsAuthScreen.tsx
+++ b/apps/wallet-mobile/src/features/Auth/OsAuthScreen/OsAuthScreen.tsx
@@ -4,9 +4,9 @@ import {defineMessages, useIntl} from 'react-intl'
import {Image, Platform, StyleSheet, TouchableOpacity, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import fingerprintImage from '../../assets/img/fingerprint.png'
-import {Icon, ScreenBackground, Text} from '../../components'
-import {supportsAndroidFingerprintOverlay} from '../biometrics'
+import fingerprintImage from '../../../assets/img/fingerprint.png'
+import {Icon, ScreenBackground, Text} from '../../../components'
+import {supportsAndroidFingerprintOverlay} from '../common/biometrics'
type Props = {
headings: Array
diff --git a/apps/wallet-mobile/src/auth/OsAuthScreen/index.ts b/apps/wallet-mobile/src/features/Auth/OsAuthScreen/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/OsAuthScreen/index.ts
rename to apps/wallet-mobile/src/features/Auth/OsAuthScreen/index.ts
diff --git a/apps/wallet-mobile/src/auth/OsLoginScreen/Logo.tsx b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/Logo.tsx
similarity index 100%
rename from apps/wallet-mobile/src/auth/OsLoginScreen/Logo.tsx
rename to apps/wallet-mobile/src/features/Auth/OsLoginScreen/Logo.tsx
diff --git a/apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.stories.tsx b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.stories.tsx
similarity index 90%
rename from apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.stories.tsx
index 1c9f0011d8..30274fd97f 100644
--- a/apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.stories.tsx
@@ -2,7 +2,7 @@ import {action} from '@storybook/addon-actions'
import {storiesOf} from '@storybook/react-native'
import React from 'react'
-import {RouteProvider} from '../../../.storybook/decorators'
+import {RouteProvider} from '../../../../.storybook/decorators'
import {OsLoginScreen} from './OsLoginScreen'
storiesOf('OsLoginScreen', module)
diff --git a/apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.tsx b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.tsx
similarity index 85%
rename from apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.tsx
rename to apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.tsx
index 94520162b4..5012c3aa83 100644
--- a/apps/wallet-mobile/src/auth/OsLoginScreen/OsLoginScreen.tsx
+++ b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/OsLoginScreen.tsx
@@ -5,16 +5,23 @@ import {View} from 'react-native'
import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {Button} from '../../components'
-import {useAuthWithOs} from '../../yoroi-wallets/auth'
+import {Button} from '../../../components'
+import {logger} from '../../../kernel/logger/logger'
import {useAuth} from '../AuthProvider'
+import {useAuthWithOs} from '../common/hooks'
import {Logo} from './Logo'
export const OsLoginScreen = () => {
const {styles} = useStyles()
const strings = useStrings()
const {login} = useAuth()
- const {authWithOs, isLoading} = useAuthWithOs({onSuccess: login})
+
+ const handleOnLogin = React.useCallback(() => {
+ logger.debug(`Auth: Logged in with OS`)
+ login()
+ }, [login])
+
+ const {authWithOs, isLoading} = useAuthWithOs({onSuccess: handleOnLogin})
return (
diff --git a/apps/wallet-mobile/src/auth/OsLoginScreen/index.ts b/apps/wallet-mobile/src/features/Auth/OsLoginScreen/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/OsLoginScreen/index.ts
rename to apps/wallet-mobile/src/features/Auth/OsLoginScreen/index.ts
diff --git a/apps/wallet-mobile/src/auth/PinInput/PinInput.stories.tsx b/apps/wallet-mobile/src/features/Auth/PinInput/PinInput.stories.tsx
similarity index 91%
rename from apps/wallet-mobile/src/auth/PinInput/PinInput.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/PinInput/PinInput.stories.tsx
index dc745f09a3..87ecc1028e 100644
--- a/apps/wallet-mobile/src/auth/PinInput/PinInput.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/PinInput/PinInput.stories.tsx
@@ -4,8 +4,8 @@ import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
-import {Button} from '../../components'
-import {CONFIG} from '../../legacy/config'
+import {Button} from '../../../components'
+import {PIN_LENGTH} from '../common/constants'
import {PinInput, PinInputRef} from './PinInput'
const PinInputWrapper = ({enabled = true}: {enabled?: boolean}) => {
@@ -21,7 +21,7 @@ const PinInputWrapper = ({enabled = true}: {enabled?: boolean}) => {
diff --git a/apps/wallet-mobile/src/auth/PinInput/PinInput.tsx b/apps/wallet-mobile/src/features/Auth/PinInput/PinInput.tsx
similarity index 94%
rename from apps/wallet-mobile/src/auth/PinInput/PinInput.tsx
rename to apps/wallet-mobile/src/features/Auth/PinInput/PinInput.tsx
index b5c68a8ab4..8abb390ac9 100644
--- a/apps/wallet-mobile/src/auth/PinInput/PinInput.tsx
+++ b/apps/wallet-mobile/src/features/Auth/PinInput/PinInput.tsx
@@ -3,9 +3,9 @@ import _ from 'lodash'
import React from 'react'
import {StyleSheet, View} from 'react-native'
-import {BACKSPACE, NumericKeyboard} from '../../components/NumericKeyboard'
-import {Spacer} from '../../components/Spacer'
-import {Text} from '../../components/Text'
+import {BACKSPACE, NumericKeyboard} from '../../../components/NumericKeyboard'
+import {Spacer} from '../../../components/Spacer'
+import {Text} from '../../../components/Text'
type Props = {
title?: string
diff --git a/apps/wallet-mobile/src/auth/PinInput/index.ts b/apps/wallet-mobile/src/features/Auth/PinInput/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/PinInput/index.ts
rename to apps/wallet-mobile/src/features/Auth/PinInput/index.ts
diff --git a/apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.stories.tsx b/apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.stories.tsx
similarity index 91%
rename from apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.stories.tsx
index ca2da70851..09552c4012 100644
--- a/apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.stories.tsx
+++ b/apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.stories.tsx
@@ -3,7 +3,7 @@ import {storiesOf} from '@storybook/react-native'
import {AsyncStorageProvider} from '@yoroi/common'
import React from 'react'
-import {rootStorage} from '../../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {PinLoginScreen} from './PinLoginScreen'
storiesOf('PinLoginScreen', module).add('Default', () => (
diff --git a/apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.tsx b/apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.tsx
similarity index 78%
rename from apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.tsx
rename to apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.tsx
index b84d4034a7..c0b467d4c1 100644
--- a/apps/wallet-mobile/src/auth/PinLoginScreen/PinLoginScreen.tsx
+++ b/apps/wallet-mobile/src/features/Auth/PinLoginScreen/PinLoginScreen.tsx
@@ -4,11 +4,12 @@ import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {showErrorDialog} from '../../dialogs'
-import {errorMessages} from '../../i18n/global-messages'
-import {CONFIG} from '../../legacy/config'
-import {useCheckPin} from '../../yoroi-wallets/auth'
+import {showErrorDialog} from '../../../kernel/dialogs'
+import {errorMessages} from '../../../kernel/i18n/global-messages'
+import {logger} from '../../../kernel/logger/logger'
import {useAuth} from '../AuthProvider'
+import {PIN_LENGTH} from '../common/constants'
+import {useCheckPin} from '../common/hooks'
import {PinInput, PinInputRef} from '../PinInput'
export const PinLoginScreen = () => {
@@ -21,8 +22,10 @@ export const PinLoginScreen = () => {
const {checkPin, isLoading} = useCheckPin({
onSuccess: (isValid) => {
if (isValid) {
+ logger.debug(`Auth: Logged in with PIN`)
login()
} else {
+ logger.error(`Auth: Incorrect PIN`)
showErrorDialog(errorMessages.incorrectPin, intl)
pinInputRef.current?.clear()
}
@@ -34,7 +37,7 @@ export const PinLoginScreen = () => {
diff --git a/apps/wallet-mobile/src/auth/PinLoginScreen/index.ts b/apps/wallet-mobile/src/features/Auth/PinLoginScreen/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/PinLoginScreen/index.ts
rename to apps/wallet-mobile/src/features/Auth/PinLoginScreen/index.ts
diff --git a/apps/wallet-mobile/src/auth/backgroundTimeout.stories.tsx b/apps/wallet-mobile/src/features/Auth/backgroundTimeout.stories.tsx
similarity index 100%
rename from apps/wallet-mobile/src/auth/backgroundTimeout.stories.tsx
rename to apps/wallet-mobile/src/features/Auth/backgroundTimeout.stories.tsx
diff --git a/apps/wallet-mobile/src/auth/backgroundTimeout.ts b/apps/wallet-mobile/src/features/Auth/backgroundTimeout.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/backgroundTimeout.ts
rename to apps/wallet-mobile/src/features/Auth/backgroundTimeout.ts
diff --git a/apps/wallet-mobile/src/auth/biometrics.ts b/apps/wallet-mobile/src/features/Auth/common/biometrics.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/biometrics.ts
rename to apps/wallet-mobile/src/features/Auth/common/biometrics.ts
diff --git a/apps/wallet-mobile/src/features/Auth/common/constants.ts b/apps/wallet-mobile/src/features/Auth/common/constants.ts
new file mode 100644
index 0000000000..4a0b3d6c21
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Auth/common/constants.ts
@@ -0,0 +1 @@
+export const PIN_LENGTH = 6
diff --git a/apps/wallet-mobile/src/yoroi-wallets/auth/auth.ts b/apps/wallet-mobile/src/features/Auth/common/hooks.ts
similarity index 92%
rename from apps/wallet-mobile/src/yoroi-wallets/auth/auth.ts
rename to apps/wallet-mobile/src/features/Auth/common/hooks.ts
index 29b4934109..8967b84246 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/auth/auth.ts
+++ b/apps/wallet-mobile/src/features/Auth/common/hooks.ts
@@ -6,13 +6,15 @@ import {Alert, AppState, Platform} from 'react-native'
import RNKeychain from 'react-native-keychain'
import {useMutation, UseMutationOptions, useQuery, useQueryClient, UseQueryOptions} from 'react-query'
-import {parseWalletMeta} from '../../features/WalletManager/common/validators'
-import {useWalletManager} from '../../features/WalletManager/context/WalletManagerContext'
-import globalMessages from '../../i18n/global-messages'
-import {WrongPassword} from '../cardano/errors'
-import {YoroiWallet} from '../cardano/types'
-import {decryptData, encryptData} from '../encryption'
-import {AuthenticationPrompt, Keychain} from '../storage'
+import globalMessages from '../../../kernel/i18n/global-messages'
+import {logger} from '../../../kernel/logger/logger'
+import {Keychain} from '../../../kernel/storage/Keychain'
+import {AuthenticationPrompt} from '../../../kernel/storage/KeychainStorage'
+import {WrongPassword} from '../../../yoroi-wallets/cardano/errors'
+import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
+import {decryptData, encryptData} from '../../../yoroi-wallets/encryption'
+import {parseWalletMeta} from '../../WalletManager/common/validators'
+import {useWalletManager} from '../../WalletManager/context/WalletManagerContext'
export const useIsAuthOsSupported = (options?: UseQueryOptions) => {
const queryClient = useQueryClient()
@@ -84,6 +86,7 @@ export const useAuthWithOs = (
...options,
mutationFn: () => Keychain.authenticate(authenticationPrompt ?? defaultAuthenticationPrompt),
onError: (error, variables, context) => {
+ logger.error('useAuthWithOs: Loging with OS has failed', {error})
alert(error)
options?.onError?.(error, variables, context)
},
@@ -116,6 +119,7 @@ export const useAuthOsWithEasyConfirmation = (
...options,
mutationFn: () => Keychain.getWalletKey(id, authenticationPrompt ?? defaultAuthenticationPrompt),
onError: (error, variables, context) => {
+ logger.error('useAuthWithOs: Signing Tx with OS has failed', {error})
alert(error)
options?.onError?.(error, variables, context)
},
@@ -201,6 +205,7 @@ export const useCheckPin = (options: UseMutationOptions
return decryptData(encryptedPinHash, pin)
.then(() => true)
.catch((error) => {
+ logger.error('useCheckPin: Checking pin has failed', {error})
if (error instanceof WrongPassword) return false
throw error
})
diff --git a/apps/wallet-mobile/src/auth/hooks.test.ts b/apps/wallet-mobile/src/features/Auth/common/storage.test.ts
similarity index 94%
rename from apps/wallet-mobile/src/auth/hooks.test.ts
rename to apps/wallet-mobile/src/features/Auth/common/storage.test.ts
index 3e67f89416..f29150da63 100644
--- a/apps/wallet-mobile/src/auth/hooks.test.ts
+++ b/apps/wallet-mobile/src/features/Auth/common/storage.test.ts
@@ -1,9 +1,9 @@
import AsyncStorage from '@react-native-async-storage/async-storage'
import {parseSafe} from '@yoroi/common'
-import {WalletMeta} from '../features/WalletManager/common/types'
-import {disableAllEasyConfirmation, enableAuthWithOs} from '../yoroi-wallets/auth'
-import {rootStorage} from '../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
+import {WalletMeta} from '../../WalletManager/common/types'
+import {disableAllEasyConfirmation, enableAuthWithOs} from './hooks'
describe('enableAuthWithOs', () => {
beforeEach(() => AsyncStorage.clear())
diff --git a/apps/wallet-mobile/src/auth/index.ts b/apps/wallet-mobile/src/features/Auth/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/auth/index.ts
rename to apps/wallet-mobile/src/features/Auth/index.ts
diff --git a/apps/wallet-mobile/src/features/Claim/common/useClaimErrorResolver.tsx b/apps/wallet-mobile/src/features/Claim/common/useClaimErrorResolver.tsx
index e73528c13d..9664a6c165 100644
--- a/apps/wallet-mobile/src/features/Claim/common/useClaimErrorResolver.tsx
+++ b/apps/wallet-mobile/src/features/Claim/common/useClaimErrorResolver.tsx
@@ -1,4 +1,4 @@
-import {useApiErrorResolver} from '../../../api/useApiErrorResolver'
+import {useApiErrorResolver} from '../../../kernel/api/useApiErrorResolver'
import {
ClaimApiErrorsAlreadyClaimed,
ClaimApiErrorsExpired,
diff --git a/apps/wallet-mobile/src/features/Claim/common/useNavigateTo.tsx b/apps/wallet-mobile/src/features/Claim/common/useNavigateTo.tsx
index ab77056f02..aaee99bdd4 100644
--- a/apps/wallet-mobile/src/features/Claim/common/useNavigateTo.tsx
+++ b/apps/wallet-mobile/src/features/Claim/common/useNavigateTo.tsx
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {TxHistoryRouteNavigation} from '../../../navigation'
+import {TxHistoryRouteNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Claim/common/useStrings.tsx b/apps/wallet-mobile/src/features/Claim/common/useStrings.tsx
index acfd6985d4..bcfe6497f9 100644
--- a/apps/wallet-mobile/src/features/Claim/common/useStrings.tsx
+++ b/apps/wallet-mobile/src/features/Claim/common/useStrings.tsx
@@ -1,7 +1,7 @@
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages, {txLabels} from '../../../i18n/global-messages'
+import globalMessages, {txLabels} from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/legacy/DeveloperScreen.tsx b/apps/wallet-mobile/src/features/Dev/DeveloperScreen.tsx
similarity index 92%
rename from apps/wallet-mobile/src/legacy/DeveloperScreen.tsx
rename to apps/wallet-mobile/src/features/Dev/DeveloperScreen.tsx
index 0f35207248..c8fbbcd9dd 100644
--- a/apps/wallet-mobile/src/legacy/DeveloperScreen.tsx
+++ b/apps/wallet-mobile/src/features/Dev/DeveloperScreen.tsx
@@ -10,20 +10,20 @@ import {useIntl} from 'react-intl'
import {Alert, InteractionManager, SafeAreaView, ScrollView, StyleSheet, TouchableOpacity} from 'react-native'
import config from 'react-native-config'
-import {useAuth} from '../auth/AuthProvider'
-import {Button, Text, TextInput} from '../components'
-import {showErrorDialog} from '../dialogs'
-import {useLegalAgreement, useResetLegalAgreement} from '../features/Initialization/common'
-import {useSelectedWalletContext} from '../features/WalletManager/context/SelectedWalletContext'
-import {errorMessages} from '../i18n/global-messages'
-import {storageVersionMaker} from '../migrations/storageVersion'
-import {AppRoutes, useWalletNavigation} from '../navigation'
-import {isEmptyString} from '../utils/utils'
-import {generateAdaMnemonic} from '../yoroi-wallets/cardano/mnemonic'
-import {useCreateWallet} from '../yoroi-wallets/hooks'
-import {rootStorage} from '../yoroi-wallets/storage/rootStorage'
-import {NetworkId} from '../yoroi-wallets/types'
-import {CONFIG} from './config'
+import {Button, Text, TextInput} from '../../components'
+import {agreementDate} from '../../kernel/config'
+import {showErrorDialog} from '../../kernel/dialogs'
+import {errorMessages} from '../../kernel/i18n/global-messages'
+import {AppRoutes, useWalletNavigation} from '../../kernel/navigation'
+import {storageVersionMaker} from '../../kernel/storage/migrations/storageVersion'
+import {rootStorage} from '../../kernel/storage/rootStorage'
+import {isEmptyString} from '../../utils/utils'
+import {generateAdaMnemonic} from '../../yoroi-wallets/cardano/mnemonic'
+import {useCreateWallet} from '../../yoroi-wallets/hooks'
+import {NetworkId} from '../../yoroi-wallets/types'
+import {useAuth} from '../Auth/AuthProvider'
+import {useLegalAgreement, useResetLegalAgreement} from '../Initialization/common'
+import {useSelectedWalletContext} from '../WalletManager/context/SelectedWalletContext'
const routes: Array<{label: string; path: keyof AppRoutes}> = [
{label: 'Storybook', path: 'storybook'},
@@ -54,7 +54,7 @@ export const DeveloperScreen = () => {
const [addresses, setAddresses] = React.useState('')
const agreement = useLegalAgreement()
const {reset: resetLegalAgreement} = useResetLegalAgreement()
- const agreedToLegal = agreement?.latestAcceptedAgreementsDate === CONFIG.AGREEMENT_DATE
+ const agreedToLegal = agreement?.latestAcceptedAgreementsDate === agreementDate
return (
diff --git a/apps/wallet-mobile/src/theme/Palettes.stories.tsx b/apps/wallet-mobile/src/features/Dev/Palettes.stories.tsx
similarity index 100%
rename from apps/wallet-mobile/src/theme/Palettes.stories.tsx
rename to apps/wallet-mobile/src/features/Dev/Palettes.stories.tsx
diff --git a/apps/wallet-mobile/src/features/Discover/BrowserNavigator.tsx b/apps/wallet-mobile/src/features/Discover/BrowserNavigator.tsx
index 5be2c92a9a..937bc1bb6c 100644
--- a/apps/wallet-mobile/src/features/Discover/BrowserNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Discover/BrowserNavigator.tsx
@@ -3,7 +3,7 @@ import {useTheme} from '@yoroi/theme'
import * as React from 'react'
import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {BrowserRoutes} from 'src/navigation'
+import {BrowserRoutes} from 'src/kernel/navigation'
import {BrowseDappScreen} from './useCases/BrowseDapp/BrowseDappScreen'
import {SearchDappInBrowserScreen} from './useCases/SearchDappInBrowser/SearchDappInBrowserScreen'
diff --git a/apps/wallet-mobile/src/features/Discover/DiscoverNavigator.tsx b/apps/wallet-mobile/src/features/Discover/DiscoverNavigator.tsx
index c07d40ef68..59a7d1f84a 100644
--- a/apps/wallet-mobile/src/features/Discover/DiscoverNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Discover/DiscoverNavigator.tsx
@@ -1,15 +1,17 @@
import {createStackNavigator} from '@react-navigation/stack'
import {useAsyncStorage} from '@yoroi/common'
-import {DappConnectorProvider} from '@yoroi/dapp-connector'
+import {DappConnector, DappConnectorProvider} from '@yoroi/dapp-connector'
import {useTheme} from '@yoroi/theme'
import * as React from 'react'
import {LoadingBoundary} from '../../components'
-import {defaultStackNavigationOptions, DiscoverRoutes} from '../../navigation'
+import {defaultStackNavigationOptions, DiscoverRoutes} from '../../kernel/navigation'
import {useSelectedWallet} from '../WalletManager/context/SelectedWalletContext'
import {BrowserNavigator} from './BrowserNavigator'
import {BrowserProvider} from './common/BrowserProvider'
+import {useOpenConfirmConnectionModal} from './common/ConfirmConnectionModal'
import {createDappConnector} from './common/helpers'
+import {useConfirmRawTx} from './common/hooks'
import {useStrings} from './common/useStrings'
import {ListSkeleton} from './useCases/SelectDappFromList/ListSkeleton'
import {SelectDappFromListScreen} from './useCases/SelectDappFromList/SelectDappFromListScreen'
@@ -20,9 +22,7 @@ export const DiscoverNavigator = () => {
const {atoms, color} = useTheme()
const strings = useStrings()
- const appStorage = useAsyncStorage()
- const wallet = useSelectedWallet()
- const manager = React.useMemo(() => createDappConnector(appStorage, wallet), [appStorage, wallet])
+ const manager = useDappConnectorManager()
return (
@@ -50,3 +50,56 @@ export const DiscoverNavigator = () => {
)
}
+
+const useDappConnectorManager = () => {
+ const appStorage = useAsyncStorage()
+ const wallet = useSelectedWallet()
+ const {openConfirmConnectionModal} = useOpenConfirmConnectionModal()
+ const confirmRawTx = useConfirmRawTx(wallet)
+
+ const confirmConnection = React.useCallback(
+ async (origin: string, manager: DappConnector) => {
+ const recommendedDApps = await manager.getDAppList()
+ const selectedDapp = recommendedDApps.dapps.find((dapp) => dapp.origins.includes(origin))
+ return new Promise((resolve) => {
+ openConfirmConnectionModal({
+ name: selectedDapp?.name ?? origin,
+ website: origin,
+ logo: selectedDapp?.logo ?? '',
+ onConfirm: () => resolve(true),
+ onClose: () => resolve(false),
+ })
+ })
+ },
+ [openConfirmConnectionModal],
+ )
+
+ const signTx = React.useCallback(() => {
+ return new Promise((resolve, reject) => {
+ confirmRawTx({
+ onConfirm: (rootKey) => {
+ resolve(rootKey)
+ return Promise.resolve()
+ },
+ onClose: () => reject(new Error('User rejected')),
+ })
+ })
+ }, [confirmRawTx])
+
+ const signData = React.useCallback(() => {
+ return new Promise((resolve, reject) => {
+ confirmRawTx({
+ onConfirm: (rootKey) => {
+ resolve(rootKey)
+ return Promise.resolve()
+ },
+ onClose: () => reject(new Error('User rejected')),
+ })
+ })
+ }, [confirmRawTx])
+
+ return React.useMemo(
+ () => createDappConnector({appStorage, wallet, confirmConnection, signTx, signData}),
+ [appStorage, wallet, confirmConnection, signTx, signData],
+ )
+}
diff --git a/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.stories.tsx b/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.stories.tsx
new file mode 100644
index 0000000000..840d9ce35e
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.stories.tsx
@@ -0,0 +1,39 @@
+import {action} from '@storybook/addon-actions'
+import {storiesOf} from '@storybook/react-native'
+import * as React from 'react'
+import {View} from 'react-native'
+
+import {Button} from '../../../components'
+import {ConfirmConnectionModal, useOpenConfirmConnectionModal} from './ConfirmConnectionModal'
+
+storiesOf('Discover ConfirmConnectionModal', module)
+ .addDecorator((story) => {story()})
+ .add('initial', () => )
+ .add('With Button', () => )
+
+const Initial = () => {
+ return (
+
+ )
+}
+
+const WithButton = () => {
+ const {openConfirmConnectionModal} = useOpenConfirmConnectionModal()
+
+ const handleOnPress = () => {
+ openConfirmConnectionModal({
+ onConfirm: action('onConfirm'),
+ website: 'example.com',
+ name: 'Example DApp',
+ logo: 'https://daehx1qv45z7c.cloudfront.net/cardano-spot.png',
+ onClose: action('onClose'),
+ })
+ }
+
+ return
+}
diff --git a/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.tsx b/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.tsx
new file mode 100644
index 0000000000..811161ca12
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Discover/common/ConfirmConnectionModal.tsx
@@ -0,0 +1,123 @@
+import {useTheme} from '@yoroi/theme'
+import * as React from 'react'
+import {Image, StyleSheet, Text, View} from 'react-native'
+
+import {Button, Icon, Spacer, useModal} from '../../../components'
+import {getDappFallbackLogo} from './helpers'
+import {useStrings} from './useStrings'
+
+type Props = {
+ name: string
+ website: string
+ logo: string
+ onConfirm: () => void
+}
+
+export const confirmConnectionModalHeight = 400
+
+export const useOpenConfirmConnectionModal = () => {
+ const {openModal, closeModal} = useModal()
+ const strings = useStrings()
+ const open = React.useCallback(
+ (props: Props & {onClose: () => void}) => {
+ openModal(
+ strings.confirmConnectionModalTitle,
+ {
+ props.onConfirm()
+ closeModal()
+ }}
+ />,
+ confirmConnectionModalHeight,
+ props.onClose,
+ )
+ },
+ [openModal, closeModal, strings.confirmConnectionModalTitle],
+ )
+ return {openConfirmConnectionModal: open, closeModal}
+}
+
+export const ConfirmConnectionModal = ({name, website, onConfirm, logo}: Props) => {
+ const {styles, colors} = useStyles()
+ const strings = useStrings()
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ {strings.confirmConnectionModalConnectTo}
+
+ {name}
+
+
+
+
+
+ {website}
+
+
+
+
+
+ {strings.confirmConnectionModalAllowThisDAppTo}
+
+ {`\u2022 ${strings.confirmConnectionModalPermission1}`}
+
+ {`\u2022 ${strings.confirmConnectionModalPermission2}`}
+
+
+
+
+
+
+ )
+}
+
+const useStyles = () => {
+ const theme = useTheme()
+ const colors = {connection: theme.color.black_static}
+ const styles = StyleSheet.create({
+ imagesLine: {
+ display: 'flex',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ gap: 24,
+ },
+ image: {
+ width: 48,
+ height: 48,
+ },
+ line: {
+ display: 'flex',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ gap: 4,
+ },
+ text: {
+ color: theme.color.gray_c900,
+ fontSize: 16,
+ lineHeight: 24,
+ },
+ bold: {
+ fontWeight: 'bold',
+ color: theme.color.gray_c900,
+ fontSize: 16,
+ lineHeight: 24,
+ },
+ })
+ return {styles, colors}
+}
diff --git a/apps/wallet-mobile/src/features/Discover/common/helpers.ts b/apps/wallet-mobile/src/features/Discover/common/helpers.ts
index 08046612b9..1888190952 100644
--- a/apps/wallet-mobile/src/features/Discover/common/helpers.ts
+++ b/apps/wallet-mobile/src/features/Discover/common/helpers.ts
@@ -1,8 +1,8 @@
-import {connectionStorageMaker, dappConnectorMaker} from '@yoroi/dapp-connector'
-import {dappConnectorApiMaker} from '@yoroi/dapp-connector'
+import {connectionStorageMaker, dappConnectorApiMaker, dappConnectorMaker, ResolverWallet} from '@yoroi/dapp-connector'
+import {DappConnector} from '@yoroi/dapp-connector'
import {App} from '@yoroi/types'
-import {Alert} from 'react-native'
+import {cip30ExtensionMaker} from '../../../yoroi-wallets/cardano/cip30'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
export const validUrl = (url: string) => {
@@ -57,21 +57,45 @@ export const getGoogleSearchItem = (searchQuery: string): DAppItem => ({
export const isGoogleSearchItem = (dApp: DAppItem) => dApp.id === googleDappId
-export const createDappConnector = (appStorage: App.Storage, wallet: YoroiWallet) => {
+type CreateDappConnectorOptions = {
+ appStorage: App.Storage
+ wallet: YoroiWallet
+ confirmConnection: (origin: string, manager: DappConnector) => Promise
+ signTx: (cbor: string) => Promise
+ signData: (address: string, payload: string) => Promise
+}
+
+export const createDappConnector = (options: CreateDappConnectorOptions) => {
+ const {wallet, appStorage, confirmConnection, signTx, signData} = options
const api = dappConnectorApiMaker()
- const handlerWallet = {
+ const cip30 = cip30ExtensionMaker(wallet)
+ const handlerWallet: ResolverWallet = {
id: wallet.id,
networkId: wallet.networkId,
- confirmConnection: async (origin: string) => {
- return new Promise((resolve) => {
- // TODO: Use modal with translations here instead of alert
- Alert.alert('Confirm connection', `Do you want to connect to ${origin}?`, [
- {text: 'Cancel', style: 'cancel', onPress: () => resolve(false)},
- {text: 'OK', onPress: () => resolve(true)},
- ])
- })
+ getUsedAddresses: (params) => cip30.getUsedAddresses(params),
+ getUnusedAddresses: () => cip30.getUnusedAddresses(),
+ getBalance: (tokenId) => cip30.getBalance(tokenId),
+ getChangeAddress: () => cip30.getChangeAddress(),
+ getRewardAddresses: () => cip30.getRewardAddresses(),
+ submitTx: (cbor) => cip30.submitTx(cbor),
+ getCollateral: (value) => cip30.getCollateral(value),
+ getUtxos: (value, pagination) => cip30.getUtxos(value, pagination),
+ confirmConnection: (origin: string) => confirmConnection(origin, manager),
+ signData: async (address, payload) => {
+ const rootKey = await signData(address, payload)
+ return cip30.signData(rootKey, address, payload)
+ },
+ signTx: async (cbor: string, partial?: boolean) => {
+ const rootKey = await signTx(cbor)
+ return cip30.signTx(rootKey, cbor, partial)
},
}
const storage = connectionStorageMaker({storage: appStorage.join('dapp-connections/')})
- return dappConnectorMaker(storage, handlerWallet, api)
+ const manager = dappConnectorMaker(storage, handlerWallet, api)
+ return manager
+}
+
+export const getDappFallbackLogo = (website: string) => {
+ const withoutProtocol = website.replace(/(^\w+:|^)\/\//, '')
+ return `https://api.faviconkit.com/${withoutProtocol}/144`
}
diff --git a/apps/wallet-mobile/src/features/Discover/common/hooks.ts b/apps/wallet-mobile/src/features/Discover/common/hooks.ts
deleted file mode 100644
index a599ce48a8..0000000000
--- a/apps/wallet-mobile/src/features/Discover/common/hooks.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import {useDappConnector} from '@yoroi/dapp-connector'
-import {DappConnectorManager} from '@yoroi/dapp-connector/src/dapp-connector'
-import * as React from 'react'
-import {WebView, WebViewMessageEvent} from 'react-native-webview'
-
-import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
-import {Logger} from '../../../yoroi-wallets/logging'
-import {walletConfig} from './wallet-config'
-
-export const useConnectWalletToWebView = (wallet: YoroiWallet, webViewRef: React.RefObject) => {
- const {manager, sessionId} = useDappConnector()
-
- const sendMessageToWebView = (event: string) => (id: string, result: unknown, error?: Error) => {
- if (error) {
- Logger.info('DappConnector', 'sending error to webview', error, 'as a response to', event)
- } else {
- Logger.info('DappConnector', 'sending result to webview', result, 'as a response to', event)
- }
-
- webViewRef.current?.injectJavaScript(getInjectableMessage({id, result, error: error?.message || null}))
- }
-
- const handleWebViewEvent = async (e: WebViewMessageEvent) => {
- const {data} = e.nativeEvent
- const webViewUrl = e.nativeEvent.url
-
- try {
- await manager.handleEvent(data, webViewUrl, sendMessageToWebView(data))
- } catch (e) {
- Logger.error('DappConnector', 'handleWebViewEvent::error', e)
- }
- }
-
- React.useEffect(() => {
- const initScript = getInitScript(sessionId, manager)
- webViewRef.current?.injectJavaScript(initScript)
- }, [wallet, webViewRef, sessionId, manager])
-
- return {handleEvent: handleWebViewEvent, initScript: getInitScript(sessionId, manager), sessionId}
-}
-
-const getInjectableMessage = (message: unknown) => {
- const event = JSON.stringify({data: message})
- return `(() => window.dispatchEvent(new MessageEvent('message', ${event})))()`
-}
-
-const getInitScript = (sessionId: string, dappConnector: DappConnectorManager) => {
- return dappConnector.getWalletConnectorScript({
- iconUrl: walletConfig.iconUrl,
- apiVersion: walletConfig.apiVersion,
- walletName: walletConfig.name,
- sessionId,
- })
-}
diff --git a/apps/wallet-mobile/src/features/Discover/common/hooks.tsx b/apps/wallet-mobile/src/features/Discover/common/hooks.tsx
new file mode 100644
index 0000000000..ceaf3bcbe5
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Discover/common/hooks.tsx
@@ -0,0 +1,85 @@
+import {DappConnectorManager, useDappConnector} from '@yoroi/dapp-connector'
+import * as React from 'react'
+import {WebView, WebViewMessageEvent} from 'react-native-webview'
+
+import {useModal} from '../../../components'
+import {logger} from '../../../kernel/logger/logger'
+import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
+import {ConfirmRawTxWithOs} from '../../Swap/common/ConfirmRawTx/ConfirmRawTxWithOs'
+import {ConfirmRawTxWithPassword} from '../../Swap/common/ConfirmRawTx/ConfirmRawTxWithPassword'
+import {useStrings} from './useStrings'
+import {walletConfig} from './wallet-config'
+
+export const useConnectWalletToWebView = (wallet: YoroiWallet, webViewRef: React.RefObject) => {
+ const {manager, sessionId} = useDappConnector()
+
+ const sendMessageToWebView = (event: string) => (id: string, result: unknown, error?: Error) => {
+ if (error) {
+ logger.debug('useConnectWalletToWebView: sending error to webview', {error, event})
+ } else {
+ logger.debug('useConnectWalletToWebView: sending result to webview', {result, event})
+ }
+
+ webViewRef.current?.injectJavaScript(getInjectableMessage({id, result, error: error?.message ?? null}))
+ }
+
+ const handleWebViewEvent = async (e: WebViewMessageEvent) => {
+ const {data} = e.nativeEvent
+ const webViewUrl = e.nativeEvent.url
+
+ try {
+ await manager.handleEvent(data, webViewUrl, sendMessageToWebView(data))
+ } catch (error) {
+ logger.error('useConnectWalletToWebView: error handling web event', {error, data})
+ }
+ }
+
+ React.useEffect(() => {
+ const initScript = getInitScript(sessionId, manager)
+ webViewRef.current?.injectJavaScript(initScript)
+ }, [wallet, webViewRef, sessionId, manager])
+
+ return {handleEvent: handleWebViewEvent, initScript: getInitScript(sessionId, manager), sessionId}
+}
+
+const getInjectableMessage = (message: unknown) => {
+ const event = JSON.stringify({data: message})
+ return `(() => window.dispatchEvent(new MessageEvent('message', ${event})))()`
+}
+
+const getInitScript = (sessionId: string, dappConnector: DappConnectorManager) => {
+ return dappConnector.getWalletConnectorScript({
+ iconUrl: walletConfig.iconUrl,
+ apiVersion: walletConfig.apiVersion,
+ walletName: walletConfig.name,
+ sessionId,
+ })
+}
+
+export const useConfirmRawTx = (wallet: YoroiWallet) => {
+ const {openModal, closeModal} = useModal()
+ const strings = useStrings()
+ const modalHeight = 350
+
+ return React.useCallback(
+ ({onConfirm, onClose}: {onConfirm: (rootKey: string) => Promise; onClose: () => void}) => {
+ const handleOnConfirm = async (rootKey: string) => {
+ const result = await onConfirm(rootKey)
+ closeModal()
+ return result
+ }
+
+ if (wallet.isHW) {
+ throw new Error('Not implemented yet')
+ }
+
+ if (wallet.isEasyConfirmationEnabled) {
+ openModal(strings.confirmTx, , modalHeight, onClose)
+ return
+ }
+
+ openModal(strings.confirmTx, , modalHeight, onClose)
+ },
+ [openModal, closeModal, strings, modalHeight, wallet],
+ )
+}
diff --git a/apps/wallet-mobile/src/features/Discover/common/useDAppsConnected.tsx b/apps/wallet-mobile/src/features/Discover/common/useDAppsConnected.tsx
index 0b462d576d..e52f9d2eff 100644
--- a/apps/wallet-mobile/src/features/Discover/common/useDAppsConnected.tsx
+++ b/apps/wallet-mobile/src/features/Discover/common/useDAppsConnected.tsx
@@ -1,5 +1,4 @@
-import {useDappConnector} from '@yoroi/dapp-connector'
-import {DappConnection} from '@yoroi/dapp-connector/src/adapters/async-storage'
+import {DappConnection, useDappConnector} from '@yoroi/dapp-connector'
import {useQuery, UseQueryOptions} from 'react-query'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Discover/common/useNavigateTo.tsx b/apps/wallet-mobile/src/features/Discover/common/useNavigateTo.tsx
index 44658d86e2..7d978861fb 100644
--- a/apps/wallet-mobile/src/features/Discover/common/useNavigateTo.tsx
+++ b/apps/wallet-mobile/src/features/Discover/common/useNavigateTo.tsx
@@ -1,7 +1,7 @@
import {NavigationProp, useNavigation} from '@react-navigation/native'
import * as React from 'react'
-import {DiscoverRoutes} from '../../../navigation'
+import {DiscoverRoutes} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation>()
diff --git a/apps/wallet-mobile/src/features/Discover/common/useStrings.tsx b/apps/wallet-mobile/src/features/Discover/common/useStrings.tsx
index 362b93dc87..de937a4799 100644
--- a/apps/wallet-mobile/src/features/Discover/common/useStrings.tsx
+++ b/apps/wallet-mobile/src/features/Discover/common/useStrings.tsx
@@ -17,11 +17,22 @@ export const useStrings = () => {
openDApp: intl.formatMessage(messages.openDApp),
disconnectWalletFromDApp: intl.formatMessage(messages.disconnectWalletFromDApp),
dAppActions: intl.formatMessage(messages.dAppActions),
+ confirmConnectionModalTitle: intl.formatMessage(messages.confirmConnectionModalTitle),
+ confirmConnectionModalConnectTo: intl.formatMessage(messages.confirmConnectionModalConnectTo),
+ confirmConnectionModalConnect: intl.formatMessage(messages.confirmConnectionModalConnect),
+ confirmConnectionModalAllowThisDAppTo: intl.formatMessage(messages.confirmConnectionModalAllowThisDAppTo),
+ confirmConnectionModalPermission1: intl.formatMessage(messages.confirmConnectionModalPermission1),
+ confirmConnectionModalPermission2: intl.formatMessage(messages.confirmConnectionModalPermission2),
+ confirmTx: intl.formatMessage(messages.confirmTx),
}).current
}
export const messages = Object.freeze(
defineMessages({
+ confirmTx: {
+ id: 'global.confirmationTransaction',
+ defaultMessage: '!!!Confirm transaction',
+ },
discoverTitle: {
id: 'discover.discoverList.discoverTitle',
defaultMessage: '!!!Discover Cardano',
@@ -71,5 +82,29 @@ export const messages = Object.freeze(
id: 'discover.discoverList.dAppActions',
defaultMessage: '!!!DApp actions',
},
+ confirmConnectionModalTitle: {
+ id: 'discover.confirmConnectionModal.title',
+ defaultMessage: '!!!Confirm connection',
+ },
+ confirmConnectionModalConnectTo: {
+ id: 'discover.confirmConnectionModal.connectTo',
+ defaultMessage: '!!!Connect to',
+ },
+ confirmConnectionModalConnect: {
+ id: 'discover.confirmConnectionModal.connect',
+ defaultMessage: '!!!Connect',
+ },
+ confirmConnectionModalAllowThisDAppTo: {
+ id: 'discover.confirmConnectionModal.allowThisDAppTo',
+ defaultMessage: '!!!Allow this DApp to:',
+ },
+ confirmConnectionModalPermission1: {
+ id: 'discover.confirmConnectionModal.permission1',
+ defaultMessage: '!!!View addresses, account balance, activity',
+ },
+ confirmConnectionModalPermission2: {
+ id: 'discover.confirmConnectionModal.permission2',
+ defaultMessage: '!!!Request approval for transactions',
+ },
}),
)
diff --git a/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/BrowserTabBar.tsx b/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/BrowserTabBar.tsx
index 486ee787f5..d1c8795e26 100644
--- a/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/BrowserTabBar.tsx
+++ b/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/BrowserTabBar.tsx
@@ -1,7 +1,6 @@
import {useTheme} from '@yoroi/theme'
import * as React from 'react'
import {StyleSheet, Text, TouchableOpacity, TouchableOpacityProps, View} from 'react-native'
-import {useSafeAreaInsets} from 'react-native-safe-area-context'
import Share from 'react-native-share'
import WebView from 'react-native-webview'
@@ -16,7 +15,6 @@ type Props = {
export const BrowserTabBar = ({webViewRef, webViewState}: Props) => {
const {styles, color, colors} = useStyles()
const {tabs, openTabs} = useBrowser()
- const insets = useSafeAreaInsets()
const totalTabs = Math.min(tabs.length, 99)
@@ -56,7 +54,7 @@ export const BrowserTabBar = ({webViewRef, webViewState}: Props) => {
}
return (
-
+
@@ -80,14 +78,10 @@ export const BrowserTabBar = ({webViewRef, webViewState}: Props) => {
)
}
-const Touch = ({children, ...props}: React.PropsWithChildren) => {
- const {styles} = useStyles()
+const tabBarHeight = 46
- return (
-
- {children}
-
- )
+const Touch = ({children, ...props}: React.PropsWithChildren) => {
+ return {children}
}
type TabItemProps = {
@@ -133,9 +127,6 @@ const useStyles = () => {
zIndex: 1,
},
- touchBox: {
- ...atoms.py_2xl,
- },
tabViewContainer: {
position: 'relative',
},
diff --git a/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/WebViewItem.tsx b/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/WebViewItem.tsx
index 3aef545615..f0a753cf34 100644
--- a/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/WebViewItem.tsx
+++ b/apps/wallet-mobile/src/features/Discover/useCases/BrowseDapp/WebViewItem.tsx
@@ -3,7 +3,7 @@ import * as React from 'react'
import {Dimensions, StyleSheet, Text, TouchableOpacity, TouchableWithoutFeedback} from 'react-native'
import LinearGradient from 'react-native-linear-gradient'
import Animated, {Easing, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'
-import {initialWindowMetrics, useSafeAreaInsets} from 'react-native-safe-area-context'
+import {useSafeAreaInsets} from 'react-native-safe-area-context'
import WebView from 'react-native-webview'
import {WebViewNavigation, WebViewNavigationEvent} from 'react-native-webview/lib/WebViewTypes'
@@ -41,8 +41,7 @@ export const WebViewItem = ({tab, index}: Props) => {
const {initScript, handleEvent} = useConnectWalletToWebView(wallet, webViewRef)
- const topInset = Math.max(insets.top, initialWindowMetrics?.insets.top ?? 0)
- const visibleAreaHeight = SCREEN_HEIGHT - topInset
+ const visibleAreaHeight = SCREEN_HEIGHT - insets.top - insets.bottom
const containerStyleAnimated = useAnimatedStyle(() => {
return {
diff --git a/apps/wallet-mobile/src/features/Discover/useCases/SearchDappInBrowser/SearchDappInBrowserScreen.tsx b/apps/wallet-mobile/src/features/Discover/useCases/SearchDappInBrowser/SearchDappInBrowserScreen.tsx
index d6e92ee453..a6576cb4e8 100644
--- a/apps/wallet-mobile/src/features/Discover/useCases/SearchDappInBrowser/SearchDappInBrowserScreen.tsx
+++ b/apps/wallet-mobile/src/features/Discover/useCases/SearchDappInBrowser/SearchDappInBrowserScreen.tsx
@@ -10,7 +10,10 @@ import {BrowserSearchToolbar} from '../BrowseDapp/BrowserSearchToolbar'
import {DAppListItem} from '../SelectDappFromList/DAppListItem/DAppListItem'
const getUrl = (searchValue: string, isEngineSearch: boolean) => {
- if (isEngineSearch || !validUrl(searchValue)) {
+ if (isEngineSearch) {
+ if (validUrl(searchValue)) {
+ return urlWithProtocol(searchValue)
+ }
return 'https://www.google.com/search?q=' + encodeURIComponent(searchValue)
}
diff --git a/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/DAppListItem/DAppListItem.tsx b/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/DAppListItem/DAppListItem.tsx
index 024b2e8f57..f412ae3fa1 100644
--- a/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/DAppListItem/DAppListItem.tsx
+++ b/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/DAppListItem/DAppListItem.tsx
@@ -7,7 +7,7 @@ import uuid from 'uuid'
import {Icon, Spacer, useModal} from '../../../../../components'
import {useBrowser} from '../../../common/BrowserProvider'
-import {type DAppItem, isGoogleSearchItem} from '../../../common/helpers'
+import {type DAppItem, getDappFallbackLogo, isGoogleSearchItem} from '../../../common/helpers'
import {LabelCategoryDApp} from '../../../common/LabelCategoryDApp'
import {LabelConnected} from '../../../common/LabelConnected'
import {useNavigateTo} from '../../../common/useNavigateTo'
@@ -33,6 +33,8 @@ export const DAppListItem = ({dApp, connected, onPress}: Props) => {
const [isPressed, setIsPressed] = React.useState(false)
+ const logo = dApp.logo.length === 0 ? getDappFallbackLogo(dApp.uri) : dApp.logo
+
const handlePressing = (isPressIn: boolean) => {
setIsPressed(isPressIn)
}
@@ -67,7 +69,7 @@ export const DAppListItem = ({dApp, connected, onPress}: Props) => {
strings.dAppActions,
-
+ {dApp.name}
@@ -88,8 +90,6 @@ export const DAppListItem = ({dApp, connected, onPress}: Props) => {
)
}
- const showIconPlaceholder = dApp.logo.length === 0
-
return (
handlePressing(true)}
@@ -97,15 +97,7 @@ export const DAppListItem = ({dApp, connected, onPress}: Props) => {
onPress={handlePress}
>
- {isGoogleSearchItem(dApp) ? (
-
- ) : showIconPlaceholder ? (
-
- ) : (
-
-
-
- )}
+ {isGoogleSearchItem(dApp) ? : }
@@ -129,16 +121,6 @@ export const DAppListItem = ({dApp, connected, onPress}: Props) => {
)
}
-const EmptyIcon = () => {
- const {colors, styles} = useStyles()
-
- return (
-
-
-
- )
-}
-
type DAppActionProps = {
icon: React.ReactNode
title: string
@@ -160,13 +142,6 @@ const useStyles = () => {
const {color, atoms} = useTheme()
const styles = StyleSheet.create({
- emptyIcon: {
- borderRadius: 8,
- backgroundColor: color.gray_c50,
- padding: 8,
- width: 40,
- height: 40,
- },
dAppItemContainer: {
flexDirection: 'row',
gap: 12,
diff --git a/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/SelectDappFromListScreen.tsx b/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/SelectDappFromListScreen.tsx
index beaaaa7235..b6eb05a629 100644
--- a/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/SelectDappFromListScreen.tsx
+++ b/apps/wallet-mobile/src/features/Discover/useCases/SelectDappFromList/SelectDappFromListScreen.tsx
@@ -5,7 +5,7 @@ import {FlatList, StyleSheet, View} from 'react-native'
import {Spacer} from '../../../../components'
import {useSearch, useSearchOnNavBar} from '../../../../Search/SearchContext'
-import {DAppItem, getGoogleSearchItem} from '../../common/helpers'
+import {getGoogleSearchItem} from '../../common/helpers'
import {useDAppsConnected} from '../../common/useDAppsConnected'
import {useStrings} from '../../common/useStrings'
import {CountDAppsAvailable} from './CountDAppsAvailable/CountDAppsAvailable'
@@ -23,32 +23,20 @@ type TDAppTabs = keyof typeof DAppTabs
export const SelectDappFromListScreen = () => {
const styles = useStyles()
const strings = useStrings()
- const {search, visible} = useSearch()
-
const [currentTab, setCurrentTab] = React.useState('connected')
const [categoriesSelected, setCategoriesSelected] = React.useState([])
- const isSearching = visible
-
useSearchOnNavBar({
title: strings.discoverTitle,
placeholder: strings.searchDApps,
noBack: true,
})
- const {data: list} = useDappList({suspense: true})
const {data: connectedOrigins = []} = useDAppsConnected({refetchOnMount: true, refetchInterval: 500})
- const hasConnectedDapps = connectedOrigins.length > 0
-
- const filters = Object.keys(list?.filters ?? {})
const isDappConnected = (dappOrigins: string[]) => {
return dappOrigins.some((dappOrigin) => connectedOrigins.includes(dappOrigin))
}
- const dAppOriginsThatAreConnectedButNotInList = connectedOrigins.filter((connectedOrigin) => {
- return !list?.dapps.some((dapp) => dapp.origins.includes(connectedOrigin))
- })
-
const handleToggleCategory = React.useCallback(
(category: string) => {
if (categoriesSelected.includes(category)) {
@@ -61,99 +49,31 @@ export const SelectDappFromListScreen = () => {
[categoriesSelected],
)
- const getDAppsConnectedButNotInList = () => {
- return dAppOriginsThatAreConnectedButNotInList.map((origin) => {
- return {
- id: origin,
- name: origin.replace(/^https?:\/\//, ''),
- description: origin,
- category: 'Other',
- logo: '',
- uri: origin,
- origins: [origin],
- }
- })
- }
-
- const getListDApps = (): DAppItem[] => {
- if (!list?.dapps) return []
- const allDapps = currentTab === 'connected' ? [...list.dapps, ...getDAppsConnectedButNotInList()] : list.dapps
-
- if (isSearching) {
- if (search?.length > 0) {
- return allDapps
- .filter((dApp) => dApp.name.toLowerCase().includes(search.toLowerCase()))
- .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
- .concat(getGoogleSearchItem(search))
- }
-
- return allDapps
- }
-
- if (hasConnectedDapps && currentTab === DAppTabs.connected) {
- return allDapps
- .filter((dApp) => isDappConnected(dApp.origins))
- .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
- }
-
- if (categoriesSelected.length > 0) {
- return allDapps
- .filter((dApp) => categoriesSelected.some((filter) => list.filters[filter].includes(dApp.category)))
- .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
- }
-
- return allDapps.sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
- }
+ const myDapps = useFilteredDappList(currentTab, categoriesSelected)
const handleChangeTab = (tab: TDAppTabs) => {
setCurrentTab(tab)
}
- const headerDAppControl = () => {
- if (isSearching) return
-
- return (
- <>
- {hasConnectedDapps && (
-
- handleChangeTab(DAppTabs.connected)}
- />
-
- handleChangeTab(DAppTabs.recommended)}
- />
-
- )}
-
- {(!hasConnectedDapps || currentTab === DAppTabs.recommended) && (
-
-
-
-
-
-
-
- )}
- >
- )
- }
-
return (
<>
item.id.toString()}
ListHeaderComponentStyle={styles.boxHeader}
- ListHeaderComponent={headerDAppControl}
+ ListHeaderComponent={
+
+ }
renderItem={({item: entry}) => (
@@ -191,3 +111,116 @@ const useStyles = () => {
return styles
}
+
+const HeaderControl = ({
+ currentTab,
+ onTabChange,
+ count,
+ selectedCategories,
+ onCategoryToggle,
+}: {
+ currentTab: TDAppTabs
+ onTabChange: (tab: TDAppTabs) => void
+ count: number
+ selectedCategories: string[]
+ onCategoryToggle: (category: string) => void
+}) => {
+ const {visible} = useSearch()
+ const styles = useStyles()
+ const strings = useStrings()
+ const {data: connectedOrigins = []} = useDAppsConnected({refetchOnMount: true, refetchInterval: 500})
+ const hasConnectedDapps = connectedOrigins.length > 0
+ const {data: list} = useDappList({suspense: true})
+ const filters = Object.keys(list?.filters ?? {})
+
+ if (visible) return
+
+ return (
+ <>
+ {hasConnectedDapps && (
+
+ onTabChange(DAppTabs.connected)}
+ />
+
+ onTabChange(DAppTabs.recommended)}
+ />
+
+ )}
+
+ {(!hasConnectedDapps || currentTab === DAppTabs.recommended) && (
+
+
+
+
+
+
+
+ )}
+ >
+ )
+}
+
+const useFilteredDappList = (tab: TDAppTabs, categoriesSelected: string[]) => {
+ const {search, visible} = useSearch()
+ const {data: list} = useDappList({suspense: true})
+ const {data: connectedOrigins = []} = useDAppsConnected({refetchOnMount: true, refetchInterval: 500})
+ const hasConnectedDapps = connectedOrigins.length > 0
+ const isSearching = visible
+
+ const isDappConnected = (dappOrigins: string[]) => {
+ return dappOrigins.some((dappOrigin) => connectedOrigins.includes(dappOrigin))
+ }
+
+ const dAppOriginsThatAreConnectedButNotInList = connectedOrigins.filter((connectedOrigin) => {
+ return !list?.dapps.some((dapp) => dapp.origins.includes(connectedOrigin))
+ })
+
+ const getDAppsConnectedButNotInList = () => {
+ return dAppOriginsThatAreConnectedButNotInList.map((origin) => {
+ return {
+ id: origin,
+ name: origin.replace(/^https?:\/\//, ''),
+ description: origin,
+ category: 'Other',
+ logo: '',
+ uri: origin,
+ origins: [origin],
+ }
+ })
+ }
+
+ if (!list?.dapps) return []
+
+ const allDapps = tab === 'connected' ? [...list.dapps, ...getDAppsConnectedButNotInList()] : list.dapps
+
+ if (isSearching) {
+ if (search?.length > 0) {
+ return allDapps
+ .filter((dApp) => dApp.name.toLowerCase().includes(search.toLowerCase()))
+ .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
+ .concat(getGoogleSearchItem(search))
+ }
+
+ return allDapps
+ }
+
+ if (hasConnectedDapps && tab === DAppTabs.connected) {
+ return allDapps
+ .filter((dApp) => isDappConnected(dApp.origins))
+ .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
+ }
+
+ if (categoriesSelected.length > 0) {
+ return allDapps
+ .filter((dApp) => categoriesSelected.some((filter) => list.filters[filter].includes(dApp.category)))
+ .sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
+ }
+
+ return allDapps.sort((dAppFirst, dAppSecond) => dAppFirst.name.localeCompare(dAppSecond.name))
+}
diff --git a/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerBig.tsx b/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerBig.tsx
index 6c2f859b4b..c7d218c561 100644
--- a/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerBig.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerBig.tsx
@@ -6,8 +6,8 @@ import LinearGradient from 'react-native-linear-gradient'
import {Button} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {TxHistoryRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {TxHistoryRouteNavigation} from '../../../../kernel/navigation'
import {BuyBannerIllustration} from '../../illustrations/BuyBannerIllustration'
import {useStrings} from '../useStrings'
diff --git a/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerSmall.tsx b/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerSmall.tsx
index 9fc5a67d92..a218c09add 100644
--- a/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerSmall.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/common/ShowBuyBanner/BuyBannerSmall.tsx
@@ -5,7 +5,7 @@ import {StyleSheet, Text, TouchableOpacity, View} from 'react-native'
import LinearGradient from 'react-native-linear-gradient'
import {Icon, Spacer} from '../../../../components'
-import {TxHistoryRouteNavigation} from '../../../../navigation'
+import {TxHistoryRouteNavigation} from '../../../../kernel/navigation'
import {useStrings} from '../useStrings'
type SmallBannerProps = {
diff --git a/apps/wallet-mobile/src/features/Exchange/common/useNavigateTo.tsx b/apps/wallet-mobile/src/features/Exchange/common/useNavigateTo.tsx
index f566619f32..d725d7c6ee 100644
--- a/apps/wallet-mobile/src/features/Exchange/common/useNavigateTo.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/common/useNavigateTo.tsx
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {ExchangeRoutesNavigation} from '../../../navigation'
+import {ExchangeRoutesNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Exchange/common/useStrings.tsx b/apps/wallet-mobile/src/features/Exchange/common/useStrings.tsx
index 0a0ac55fd5..f0d0b61558 100644
--- a/apps/wallet-mobile/src/features/Exchange/common/useStrings.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/common/useStrings.tsx
@@ -1,7 +1,7 @@
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages from '../../../i18n/global-messages'
+import globalMessages from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/CreateExchangeOrderScreen.tsx b/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/CreateExchangeOrderScreen.tsx
index 9422304b0c..762deb2c02 100644
--- a/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/CreateExchangeOrderScreen.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/CreateExchangeOrderScreen.tsx
@@ -10,8 +10,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Icon, KeyboardAvoidingView} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
import {Warning} from '../../../../components/Warning'
-import env from '../../../../legacy/env'
-import {useMetrics} from '../../../../metrics/metricsManager'
+import {banxaTestWallet} from '../../../../kernel/env'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useTokenInfo} from '../../../../yoroi-wallets/hooks'
import {Quantities} from '../../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../../WalletManager/context/SelectedWalletContext'
@@ -58,9 +58,7 @@ export const CreateExchangeOrderScreen = () => {
appId: providerSelected?.appId,
}),
)
- const sandboxWallet = env.getString('BANXA_TEST_WALLET')
- const isMainnet = wallet.networkId === 1
- const walletAddress = isMainnet ? wallet.externalAddresses[0] : sandboxWallet
+ const walletAddress = wallet.isMainnet ? wallet.externalAddresses[0] : banxaTestWallet
const urlOptions: Exchange.ReferralUrlQueryStringParams = {
orderType: orderType,
diff --git a/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/EditAmount/EditAmount.tsx b/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/EditAmount/EditAmount.tsx
index c008f51ee6..6720253b4c 100644
--- a/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/EditAmount/EditAmount.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/useCases/CreateExchangeOrderScreen/EditAmount/EditAmount.tsx
@@ -2,7 +2,7 @@ import {useExchange, useExchangeProvidersByOrderType} from '@yoroi/exchange'
import BigNumber from 'bignumber.js'
import * as React from 'react'
-import {useLanguage} from '../../../../../i18n'
+import {useLanguage} from '../../../../../kernel/i18n'
import {useBalance, useTokenInfo} from '../../../../../yoroi-wallets/hooks'
import {Quantities} from '../../../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Exchange/useCases/ShowExchangeResultOrderScreen/ShowExchangeResultOrderScreen.tsx b/apps/wallet-mobile/src/features/Exchange/useCases/ShowExchangeResultOrderScreen/ShowExchangeResultOrderScreen.tsx
index 4f2319abe4..457574f449 100644
--- a/apps/wallet-mobile/src/features/Exchange/useCases/ShowExchangeResultOrderScreen/ShowExchangeResultOrderScreen.tsx
+++ b/apps/wallet-mobile/src/features/Exchange/useCases/ShowExchangeResultOrderScreen/ShowExchangeResultOrderScreen.tsx
@@ -7,7 +7,7 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Icon, Spacer, Text, useModal} from '../../../../components'
-import {useWalletNavigation} from '../../../../navigation'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {DescribeAction} from '../../common/DescribeAction/DescribeAction'
import {useStrings} from '../../common/useStrings'
import {BanxaLogo} from '../../illustrations/BanxaLogo'
diff --git a/apps/wallet-mobile/src/features/Initialization/AgreementChangedNavigator.tsx b/apps/wallet-mobile/src/features/Initialization/AgreementChangedNavigator.tsx
index 1f3dead311..8763c0a2ff 100644
--- a/apps/wallet-mobile/src/features/Initialization/AgreementChangedNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Initialization/AgreementChangedNavigator.tsx
@@ -1,7 +1,7 @@
import {createStackNavigator} from '@react-navigation/stack'
import * as React from 'react'
-import {defaultStackNavigationOptions, InititalizationRoutes} from '../../navigation'
+import {defaultStackNavigationOptions, InititalizationRoutes} from '../../kernel/navigation'
import {AnalyticsChangedScreen} from './AnalyticsChangedScreen'
import {useStrings} from './common'
import {ReadPrivacyPolicyScreen} from './ReadPrivacyPolicyScreen'
diff --git a/apps/wallet-mobile/src/features/Initialization/InitialScreen/InitialScreen.tsx b/apps/wallet-mobile/src/features/Initialization/InitialScreen/InitialScreen.tsx
index 941bed1abe..fc69d9c83a 100644
--- a/apps/wallet-mobile/src/features/Initialization/InitialScreen/InitialScreen.tsx
+++ b/apps/wallet-mobile/src/features/Initialization/InitialScreen/InitialScreen.tsx
@@ -5,8 +5,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Icon, Spacer, YoroiLogo} from '../../../components'
import {BlueCheckbox} from '../../../components/BlueCheckbox'
-import {useLanguage} from '../../../i18n'
-import {defaultLanguage} from '../../../i18n/languages'
+import {useLanguage} from '../../../kernel/i18n'
+import {defaultLanguage} from '../../../kernel/i18n/languages'
import {useNavigateTo, useStrings} from '../common'
export const InitialScreen = () => {
diff --git a/apps/wallet-mobile/src/features/Initialization/InitializationNavigator.tsx b/apps/wallet-mobile/src/features/Initialization/InitializationNavigator.tsx
index d5476151ac..f89872e30e 100644
--- a/apps/wallet-mobile/src/features/Initialization/InitializationNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Initialization/InitializationNavigator.tsx
@@ -2,9 +2,9 @@ import {createStackNavigator} from '@react-navigation/stack'
import {useTheme} from '@yoroi/theme'
import React from 'react'
-import {useAuth} from '../../auth/AuthProvider'
-import {EnableLoginWithPin} from '../../auth/EnableLoginWithPin'
-import {defaultStackNavigationOptions, InititalizationRoutes} from '../../navigation'
+import {defaultStackNavigationOptions, InititalizationRoutes} from '../../kernel/navigation'
+import {useAuth} from '../Auth/AuthProvider'
+import {EnableLoginWithPin} from '../Auth/EnableLoginWithPin'
import {AnalyticsNoticeScreen} from './AnalyticsNoticeScreen'
import {useStrings} from './common'
import {InitialScreen} from './InitialScreen/InitialScreen'
diff --git a/apps/wallet-mobile/src/features/Initialization/ReadPrivacyPolicyScreen/ReadPrivacyPolicyScreen.tsx b/apps/wallet-mobile/src/features/Initialization/ReadPrivacyPolicyScreen/ReadPrivacyPolicyScreen.tsx
index 23f90a368b..ccd5089cbc 100644
--- a/apps/wallet-mobile/src/features/Initialization/ReadPrivacyPolicyScreen/ReadPrivacyPolicyScreen.tsx
+++ b/apps/wallet-mobile/src/features/Initialization/ReadPrivacyPolicyScreen/ReadPrivacyPolicyScreen.tsx
@@ -3,8 +3,8 @@ import React from 'react'
import {ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {useLanguage} from '../../../i18n'
-import {PrivacyPolicy} from '../../../Legal'
+import {useLanguage} from '../../../kernel/i18n'
+import {PrivacyPolicy} from '../../Legal/PrivacyPolicy/PrivacyPolicy'
export const ReadPrivacyPolicyScreen = () => {
const styles = useStyles()
diff --git a/apps/wallet-mobile/src/features/Initialization/ReadTermsOfServiceScreen/ReadTermsOfServiceScreen.tsx b/apps/wallet-mobile/src/features/Initialization/ReadTermsOfServiceScreen/ReadTermsOfServiceScreen.tsx
index be8efa3f1f..9f5b05f233 100644
--- a/apps/wallet-mobile/src/features/Initialization/ReadTermsOfServiceScreen/ReadTermsOfServiceScreen.tsx
+++ b/apps/wallet-mobile/src/features/Initialization/ReadTermsOfServiceScreen/ReadTermsOfServiceScreen.tsx
@@ -3,8 +3,8 @@ import React from 'react'
import {ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {useLanguage} from '../../../i18n'
-import {TermsOfService} from '../../../Legal'
+import {useLanguage} from '../../../kernel/i18n'
+import {TermsOfService} from '../../Legal/TermsOfService/TermsOfService'
export const ReadTermsOfServiceScreen = () => {
const styles = useStyles()
diff --git a/apps/wallet-mobile/src/features/Initialization/common/navigation.ts b/apps/wallet-mobile/src/features/Initialization/common/navigation.ts
index 515d85e808..ee2f3b0b63 100644
--- a/apps/wallet-mobile/src/features/Initialization/common/navigation.ts
+++ b/apps/wallet-mobile/src/features/Initialization/common/navigation.ts
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {InititalizationNavigation} from '../../../navigation'
+import {InititalizationNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Initialization/common/terms.ts b/apps/wallet-mobile/src/features/Initialization/common/terms.ts
index e33ad43268..8037c9cabd 100644
--- a/apps/wallet-mobile/src/features/Initialization/common/terms.ts
+++ b/apps/wallet-mobile/src/features/Initialization/common/terms.ts
@@ -2,7 +2,7 @@ import {useAsyncStorage} from '@yoroi/common'
import {useCallback} from 'react'
import {useMutation, useQuery, useQueryClient} from 'react-query'
-import {CONFIG} from '../../../legacy/config'
+import {agreementDate} from '../../../kernel/config'
export type LegalAgreement = {
latestAcceptedAgreementsDate: number
@@ -26,9 +26,7 @@ export const useAgreeWithLegal = () => {
const queryClient = useQueryClient()
const mutationFn = useCallback(async () => {
- await storage
- .join('appSettings/')
- .setItem(queryKey, {latestAcceptedAgreementsDate: CONFIG.AGREEMENT_DATE})
+ await storage.join('appSettings/').setItem(queryKey, {latestAcceptedAgreementsDate: agreementDate})
}, [storage])
const mutation = useMutation({
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx
similarity index 100%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/PrivacyPolicy.stories.tsx
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/PrivacyPolicy.tsx b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/PrivacyPolicy.tsx
similarity index 93%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/PrivacyPolicy.tsx
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/PrivacyPolicy.tsx
index e3bc09595e..33ebf984c5 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/PrivacyPolicy.tsx
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/PrivacyPolicy.tsx
@@ -4,8 +4,8 @@ import {ActivityIndicator, StyleSheet, View} from 'react-native'
import Markdown from 'react-native-markdown-display'
import {useQuery} from 'react-query'
-import {Spacer} from '../../components'
-import {LanguageCode} from '../../i18n/languages'
+import {Spacer} from '../../../components'
+import {LanguageCode} from '../../../kernel/i18n/languages'
import {loadPrivacyPolicy} from './loadPrivacyPolicy'
export const usePrivacyPolicy = ({languageCode}: {languageCode: LanguageCode}) => {
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/loadPrivacyPolicy.ts b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/loadPrivacyPolicy.ts
similarity index 97%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/loadPrivacyPolicy.ts
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/loadPrivacyPolicy.ts
index af5a7fe72b..38fc11e148 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/loadPrivacyPolicy.ts
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/loadPrivacyPolicy.ts
@@ -1,4 +1,4 @@
-import {LanguageCode} from '../../i18n/languages'
+import {LanguageCode} from '../../../kernel/i18n/languages'
import BN_BD_PRIVACY_POLICY from './privacyPolicy/bn-BD.md'
import CS_CZ_PRIVACY_POLICY from './privacyPolicy/cs-CZ.md'
import DE_DE_PRIVACY_POLICY from './privacyPolicy/de-DE.md'
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/bn-BD.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/cs-CZ.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/de-DE.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/de-DE.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/de-DE.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/de-DE.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/de-DE.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/de-DE.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/el-GR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/el-GR.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/el-GR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/el-GR.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/el-GR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/el-GR.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/en-US.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/en-US.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/en-US.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/en-US.md
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/es-ES.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/es-ES.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/es-ES.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/es-ES.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/es-ES.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/es-ES.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fil-PH.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/fr-FR.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hr-HR.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/hu-HU.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/id-ID.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/id-ID.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/id-ID.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/id-ID.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/id-ID.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/id-ID.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/it-IT.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/it-IT.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/it-IT.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/it-IT.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/it-IT.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/it-IT.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ja-JP.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ko-KR.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/nl-NL.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pl-PL.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md
similarity index 89%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md
index 03502ba39e..27c448aa33 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/pt-BR.md
@@ -4,13 +4,13 @@
This Privacy Policy ("Policy") governs the collection, use, and disclosure of personal data on Yoroi Wallet ("Software") in accordance with the General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA). By using or accessing the Software, you agree to the practices outlined in this Policy.
-## 2. Definitions
+## 2. Definições
-"Personal Data" refers to any information that identifies or can be used to identify an individual, directly or indirectly.
+“Dados Pessoais” referem-se a qualquer informação que identifique ou possa ser usada para identificar um indivíduo, direta ou indiretamente.
-## 3. Collection of Personal Data
+## 3. Coletagem de Dados Pessoais
-3.1 We collect Personal Data from you when you voluntarily provide it to us through forms, registration, surveys, or other interactions on the Software.
+3.1 Coletamos seus Dados Pessoais quando você os fornece voluntariamente por meio de formulários, registros, pesquisas ou outras interações no Software.
3.2 The types of Personal Data we may collect include, but are not limited to:
@@ -18,13 +18,13 @@ This Privacy Policy ("Policy") governs the collection, use, and disclosure of pe
* Name
- * IP address
+ * Endereço IP
- * Email
+ * Endereço eletrônico
- * Cookies and usage data
+ * ‘Cookies’ e dados de uso
- * Any other information you provide to us voluntarily
+ * Qualquer outra informação que você nos forneça voluntariamente
- 3.3 We may also collect Personal Data automatically when you interact with the Software. This includes usage data, such as pages visited, links clicked, and other interactions with the Software.
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/ru-RU.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sk-SK.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sl-SI.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sv-SE.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/sw-KE.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/tl-PH.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/tl-PH.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/tl-PH.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/tl-PH.md
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/tr-TR.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/uk-UA.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/vi-VN.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-CN.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-CN.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-CN.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-CN.md
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hans.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md
similarity index 99%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md
index 03502ba39e..95c5dffbde 100644
--- a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md
+++ b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-Hant.md
@@ -57,7 +57,7 @@ We may disclose Personal Data to third parties in the following circumstances:
2. To comply with legal obligations or enforceable governmental requests;
3. To protect our rights, privacy, safety, or property, as well as that of our users or the public;
-
+
4. In the event of a merger, acquisition, or sale of all or a portion of our assets, with appropriate notice and safeguards to protect your rights.
diff --git a/apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-TW.md b/apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-TW.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/PrivacyPolicy/privacyPolicy/zh-TW.md
rename to apps/wallet-mobile/src/features/Legal/PrivacyPolicy/privacyPolicy/zh-TW.md
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/TermsOfService.tsx b/apps/wallet-mobile/src/features/Legal/TermsOfService/TermsOfService.tsx
similarity index 92%
rename from apps/wallet-mobile/src/Legal/TermsOfService/TermsOfService.tsx
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/TermsOfService.tsx
index 453a60b80b..060fdace64 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/TermsOfService.tsx
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/TermsOfService.tsx
@@ -4,8 +4,8 @@ import {ActivityIndicator, StyleSheet, View} from 'react-native'
import Markdown from 'react-native-markdown-display'
import {useQuery} from 'react-query'
-import {Spacer} from '../../components'
-import {LanguageCode} from '../../i18n/languages'
+import {Spacer} from '../../../components'
+import {LanguageCode} from '../../../kernel/i18n/languages'
import {loadTOS} from './loadTos'
export const useTos = ({languageCode}: {languageCode: LanguageCode}) => {
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/loadTos.ts b/apps/wallet-mobile/src/features/Legal/TermsOfService/loadTos.ts
similarity index 100%
rename from apps/wallet-mobile/src/Legal/TermsOfService/loadTos.ts
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/loadTos.ts
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/en-US.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/bn-BD.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/en-US.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/bn-BD.md
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/cs-CZ.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/cs-CZ.md
new file mode 100644
index 0000000000..ab54efa212
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/cs-CZ.md
@@ -0,0 +1,112 @@
+# Podmínky užití
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/de-DE.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/de-DE.md
new file mode 100644
index 0000000000..66d41f5000
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/de-DE.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rechte und Pflichten
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Steuern und Gebühren
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. Benutzer-Zusicherungen
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Verbotene Nutzung
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Kündigung
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Gewährleistungsausschluss
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Haftungsbeschränkung
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Schadloshaltung
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Geistiges Eigentum
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnhinweise
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. Im Falle eines Forks stimmt der Benutzer zu, dass das Unternehmen den Betrieb der Software vorübergehend aussetzen kann (mit oder ohne Benachrichtigung des Benutzers), und dass das Unternehmen nach eigenem Ermessen (a) seine Systeme konfigurieren oder neu konfigurieren kann oder (b) beschliessen kann, das Fork-Protokoll nicht vollständig zu unterstützen (oder nicht mehr zu unterstützen) unter der Voraussetzung, dass der Benutzer die Möglichkeit hat, Gelder von der Software abzuheben. Der Benutzer anerkennt und stimmt zu, dass das Unternehmen keinerlei Verantwortung in Bezug auf einen nicht unterstützten Zweig eines Fork-Protokolls übernimmt.
+
+## 11. Sonstiges
+
+**a. Ergänzung.** Das Unternehmen ist jederzeit und ohne Vorankündigung berechtigt, die Bedingungen dieser Vereinbarung zu ergänzen oder zu ändern. Die elektronische Zustellung der geänderten Bedingungen an den Benutzer erfolgt über ein beliebiges Medium an eine Adresse, die der Benutzer dem Unternehmen zur Verfügung stellt. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Teilbarkeit.** Sollte eine Bestimmung oder Teilbestimmung dieser Vereinbarung ungültig, illegal oder nicht durchsetzbar sein oder werden, gilt sie als so weit geändert, wie es erforderlich ist, um es gültig, legal und durchsetzbar zu machen. Severance. If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. Ist eine solche Änderung nicht möglich, so gilt die betreffende Bestimmung oder Teilbestimmung als gestrichen. Eine Änderung oder Streichung einer Bestimmung oder Teilbestimmung nach diesem Artikel berührt nicht die Gültigkeit und Durchsetzbarkeit des übrigen Teils dieser Vereinbarung.
+
+**c. Entire Agreement – Disclaimer of Reliance**. **c. Gesamte Vereinbarung – Haftungsausschluss** Diese Vereinbarung stellt die gesamte Vereinbarung zwischen den Parteien in Bezug auf den Gegenstand dieser Vereinbarung dar und ersetzt alle früheren Vereinbarungen oder Absprachen zwischen den Parteien. Der Benutzer versichert ausdrücklich und garantiert, dass er sich nicht auf andere als die in dieser Vereinbarung ausdrücklich genannten Erklärungen, Vereinbarungen, Vorstellungen, Erwartungen oder Vereinbarungen verlässt.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. Schiedsort ist Japan. Sprache des Schiedsverfahrens ist English.
+
+**e. SPRACHE** Jede Übersetzung dieser Vereinbarung dient nur der lokalen Referenz. Im Falle von Unstimmigkeiten zwischen der englischen und einer nicht-englischen Version hat die englische Version dieser Vereinbarung Vorrang und gilt in jeder Hinsicht.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/bn-BD.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/el-GR.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/bn-BD.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/el-GR.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/bn-BD.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/el-GR.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/en-US.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/en-US.md
new file mode 100644
index 0000000000..498829c974
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/en-US.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/es-ES.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/es-ES.md
new file mode 100644
index 0000000000..2f85f48106
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/es-ES.md
@@ -0,0 +1,112 @@
+# Acuerdo de Términos de Servicio
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Derechos y Obligaciones
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Impuestos y tasas
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. Representaciones de los usuarios
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Usos prohibidos
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Terminación
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Descargo de responsabilidad de las garantías
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Límites de Responsabilidad
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnización
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Propiedad Intelectual
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Advertencias
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. En el caso de una bifurcación, el Usuario acepta que la Empresa puede suspender temporalmente las operaciones del Software (con o sin previo aviso al Usuario) y que la Empresa puede, a su sola discreción, (a) configurar o reconfigurar sus sistemas o (b) decidir no apoyar (o dejar de apoyar) el protocolo bifurcado por completo, siempre y cuando, sin embargo, el Usuario tenga la oportunidad de retirar fondos del Software. El usuario reconoce y acepta que la Compañía no asume responsabilidad alguna con respecto a una rama no soportada de un protocolo bifurcado.
+
+## 11. Otras Disposiciones
+
+**a. Enmienda.** La Compañía tendrá el derecho, en cualquier momento y sin previo aviso, de añadir o modificar los términos de este Acuerdo, simplemente entregando dichos términos modificados al Usuario por mensaje electrónico a través de cualquier medio a cualquier dirección proporcionada a la Compañía por el Usuario. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**Cesantía**. Si alguna disposición o disposición parcial de este Acuerdo es, o se vuelve inválida, ilegal o inaplicable, se considerará modificada en la medida mínima necesaria para hacerla válida, legal y aplicable. Si tal modificación no fuera posible, se considerará suprimida la disposición correspondiente o la disposición parcial. Cualquier modificación o supresión de una disposición o de una parte de una disposición en virtud del presente artículo no afectará a la validez y aplicabilidad del resto del presente Acuerdo.
+
+**c. Acuerdo Completo - Descargo de responsabilidad **. Este Acuerdo constituye el acuerdo completo entre las Partes con respecto al asunto aquí tratado y reemplaza todos los acuerdos o entendimientos previos entre las Partes. El Usuario declara y garantiza expresamente que no se basa en declaraciones, entendimientos, representaciones, expectativas o acuerdos distintos a los expresamente establecidos en este Acuerdo.
+
+**d. ESTE CONTRATO ESTÁ SUJETO A UN ARBITRAJE VINCULANTE.** El Usuario acepta que todas y cada una de las disputas o reclamaciones contra cualquier persona que surjan de o estén relacionadas de alguna manera con este Contrato o con el acceso, uso o instalación del Software por parte del Usuario o de cualquier otra persona, estarán sujetas a un arbitraje vinculante de acuerdo con el Reglamento de Arbitraje de la Cámara de Comercio Internacional por parte de uno o más árbitros nombrados de acuerdo con dicho Reglamento. La sede del arbitraje será Japón. El idioma del arbitraje será el inglés.
+
+**e. IDIOMA.** Cualquier traducción de este Acuerdo se hace para propósitos de referencia local solamente y en el caso de cualquier inconsistencia entre la versión en inglés y cualquier otra versión que no sea en inglés, la versión en inglés de este Acuerdo prevalecerá y regirá en todos los aspectos.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/fil-PH.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fil-PH.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/fil-PH.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fil-PH.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/fil-PH.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fil-PH.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fr-FR.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fr-FR.md
new file mode 100644
index 0000000000..30b2a89ccf
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/fr-FR.md
@@ -0,0 +1,112 @@
+# Conditions générales de l'accord de service
+
+LE PRÉSENT CONTRAT DE CONDITIONS D’UTILISATION (“Contrat”) est conclu entre EMURGO Fintech Inc (“Société”) et toute personne ou entité (“Utilisateur”) qui termine le processus de téléchargement, d’utilisation ou d’exploitation du logiciel connu sous le nom d’application Yoroi Cryptocurrency Wallet, ainsi que le service de traitement des données, l’application, le service de communication ou tout autre contenu offert ou fourni avec le logiciel par la Société (“Logiciel”). La Société et l'Utilisateur sont collectivement désignés sous le terme de "Parties".
+
+EN CLIQUANT SUR LE BOUTON D'ACCEPTATION OU EN ACCÉDANT, UTILISANT OU INSTALLANT UNE PARTIE DU LOGICIEL, L'UTILISATEUR ACCEPTE EXPRESSÉMENT ET CONSENT À ÊTRE LÉGALEMENT LIÉ PAR L'ENSEMBLE DES CLAUSES DE CE CONTRAT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Droits et Obligations
+
+**a. Description.** Le Logiciel fonctionne en tant que portefeuille numérique de cryptomonnaie gratuit et open source. Le Logiciel ne constitue pas un compte par lequel la Société ou tout autre tiers agit en tant qu'intermédiaire financier ou dépositaire des ADA de l'Utilisateur ou de toute autre cryptomonnaie.
+
+Bien que le Logiciel ait fait l'objet d'une phase de test bêta et continue d'être amélioré grâce aux retours de la communauté de développeurs, des contributeurs en open source et des testeurs bêta, la Société ne peut garantir l'absence de bugs dans le Logiciel. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes et frais
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. Déclarations de l'Utilisateur
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Utilisation non autorisée
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Résiliation
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Exclusion de garanties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation de responsabilité
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnisation
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Propriété intellectuelle
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Avertissements
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. En cas de Fork, l'Utilisateur accepte que la Société puisse temporairement suspendre les opérations du Logiciel (avec ou sans avis à l'Utilisateur) et que la Société puisse, à sa seule discrétion, (a) configurer ou reconfigurer son système ou (b) décider de ne pas supporter (ou cesser de supporter) le protocole de la Fork, à condition que l'Utilisateur ait la possibilité de retirer ses fonds du Logiciel. L'Utilisateur reconnaît et accepte que la Société n'assume absolument aucune responsabilité de quelconque nature, que ce soit à l'égard d'une branche non supportée suite à un Fork du protocole.
+
+## 11. Divers
+
+a. Modifications. La Société a le droit, à tout temps et sans préavis, d'ajouter ou de modifier les dispositions de ce contrat, en transmettant simplement les dispositions modifiées à l'Utilisateur par message électronique à toute adresse fournie à la Société par l'Utilisateur. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+b. Indemnité de départ. Si une disposition ou une disposition partielle de la présente convention est ou devient invalide, illégale ou inexécutable, elle sera considérée comme modifiée dans la mesure minimale nécessaire pour la rendre valide, légale et exécutoire. Si une telle modification n'est pas possible, la disposition ou la partie de la disposition concernée est considérée supprimée. Toute modification ou suppression d'une disposition ou d'une disposition partielle en vertu du présent article n'affecte pas la validité et le caractère exécutoire du reste de ce contrat.
+
+c. Intégralité de l'entente - Avis de non-responsabilité.. La présente entente constitue l'entente intégrale entre les parties à l'égard de l'objet mentionné et remplace tous les accords ou ententes antérieures entre les parties. L'Utilisateur déclare et garantit expressément qu'il ne se fie pas à des déclarations, ententes, représentations, attentes ou ententes autres que celles expressément énoncées dans ce contrat.
+
+d. LE PRÉSENT CONTRAT EST ASSUJETTI À L'ARBITRAGE EXÉCUTOIRE. L'Utilisateur accepte que tout litige ou réclamation contre toute personne découlant du présent Contrat, de quelque manière, que ce soit en relation avec celui-ci ou avec l'accès, l'utilisation ou l'installation du Logiciel par l'Utilisateur ou toute autre personne sera soumis à l'arbitrage obligatoire en vertu du Règlement d'arbitrage de la Chambre de commerce internationale par un ou plusieurs arbitres nommés conformément aux dites règles. Le lieu de l'arbitrage sera le Japon. La langue de l'arbitrage sera l'anglais.
+
+e. LANGUE. Toute traduction du présent Contrat est faite à des fins de référence locale uniquement, et en cas d'incohérence entre les versions anglaise et non anglaise, la version anglaise du présent Contrat prévaudra à tous égards.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hr-HR.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hr-HR.md
new file mode 100644
index 0000000000..498829c974
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hr-HR.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hu-HU.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hu-HU.md
new file mode 100644
index 0000000000..544e0b8781
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/hu-HU.md
@@ -0,0 +1,112 @@
+# Szolgáltatás Feltételei és Megállapodás
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/id-ID.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/id-ID.md
new file mode 100644
index 0000000000..46bdaef6d9
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/id-ID.md
@@ -0,0 +1,112 @@
+# Perjanjian Ketentuan Layanan
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/it-IT.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/it-IT.md
new file mode 100644
index 0000000000..a027d7818e
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/it-IT.md
@@ -0,0 +1,112 @@
+# Condizioni del contratto di servizio
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Diritti e obbligazioni
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Imposte e tasse
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. Rappresentazioni degli utenti
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Usi proibiti
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Cessazione
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Esclusione di garanzia
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitazione di responsabilità
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indennizzo
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Proprietà Intellettuale
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Avvertenze
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In caso di fork, l'Utente accetta che la Società può sospendere temporaneamente le operazioni del Software (con o senza preavviso all'Utente) e che la Società può, a sua esclusiva discrezione, (a) configurare o riconfigurare i propri sistemi o (b) decidere di non supportare (o cessare di supportare completamente il protocollo biforcato, a condizione, tuttavia, che l'Utente abbia la possibilità di prelevare fondi dal Software. L'Utente riconosce e concorda che la Società non si assume alcuna responsabilità di alcun tipo in relazione a una filiale non supportata di un protocollo biforcato.
+
+## 11. Varie
+
+**a. Emendamento.** La Società ha il diritto, in qualsiasi momento e senza preavviso, di aggiungere o modificare i termini del presente Contratto, semplicemente consegnando tali termini modificati all'Utente tramite messaggio elettronico attraverso qualsiasi mezzo a qualsiasi indirizzo fornito all'Azienda dall'Utente. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Separazione.** Se una qualsiasi disposizione o disposizione parziale di questo accordo è, o diventa non valida, illegale o inapplicabile, essa sarà considerata modificata nella misura minima necessaria per renderla valida, legale e applicabile. Se tale modifica non è possibile, la relativa disposizione o parte di essa sarà considerata cancellata. Qualsiasi modifica o cancellazione di una disposizione o parte di una fornitura ai sensi del presente articolo non pregiudica la validità e l'applicabilità del resto del presente accordo.
+
+**c. Intero accordo - Esclusione di fiducia**. Il presente accordo costituisce l'intero accordo tra le Parti in relazione all'oggetto del presente accordo e sostituisce tutti i precedenti accordi o intese tra le Parti. L'utente dichiara e garantisce espressamente di non fare affidamento su dichiarazioni, intese, dichiarazioni, dichiarazioni, aspettative o accordi diversi da quelli espressamente indicati nel presente accordo.
+
+**d. QUESTO ACCORDO È SOGGETTO AD ARBITRATO VINCOLANTE.** L'Utente conviene che qualsiasi controversia o reclamo contro qualsiasi persona derivante da o in qualsiasi modo collegato al presente Contratto o all'accesso, uso o installazione del Software da parte dell'Utente o di qualsiasi altra persona sarà soggetto ad arbitrato vincolante ai sensi del Regolamento Arbitrale della Camera di Commercio Internazionale da parte di uno o più arbitri nominati in conformità a detto Regolamento. La sede dell'arbitrato sarà il Giappone. La lingua dell'arbitrato sarà l'inglese.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ja-JP.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ja-JP.md
new file mode 100644
index 0000000000..b73d01b9d0
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ja-JP.md
@@ -0,0 +1,112 @@
+# サービス規約
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. 権利および義務
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. 税金および手数料
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. ユーザーの表明
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. 禁止される利用
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. 解除
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. 保証の放棄
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. 責任の限定
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. 補償
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. 知的財産
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. 警告
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. その他
+
+**a. 変更** 当社は、ユーザーから当社に届け出のあったアドレス宛てのいずれかの媒体を通じた電子メッセージにより、変更後の条項をユーザーに提示することにより、いつでも通知なく本規約の条項を追加し、または変更することができるものとします。 User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. 分離解釈** 本規約のいずれかの規定またはいずれかの規定の一部が無効、違法または強制執行不能であるか、無効、違法または強制執行不能となる場合には、当該規定または当該規定の一部は、有効、適法かつ強制執行可能とするために必要な最小限度で変更されたものとみなします。 かかる変更を行えない場合には、当該規定または当該規定の一部は削除されたものとみなします。 本条に基づくいずれかの規定またはいずれかの規定の一部の変更または削除は、本規約の残りの規定の有効性および強制執行可能性に影響を及ぼさないものとします。
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. ユーザーは、本規約に明記されるもの以外の陳述、了解事項、表明事項、期待事項または合意事項に依拠していないことを明示的に表明し、保証します。
+
+**d. 本規約は、拘束力のある仲裁に服します** ユーザーは、本規約またはユーザーもしくはその他の者による本ソフトウェアへのアクセス、本ソフトウェアの利用もしくは本ソフトウェアのインストールに起因し、または何らかの点で関連する紛争またはいずれかの者に対する請求はすべて国際商業会議所の仲裁規則に基づき選任される1名ないし複数名の仲裁人による同規則に基づく拘束力のある仲裁に服するものとすることに同意します。 The location of the arbitration shall be Japan. また、仲裁地は日本とし、仲裁言語は英語とします。
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ko-KR.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ko-KR.md
new file mode 100644
index 0000000000..ca352a2739
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ko-KR.md
@@ -0,0 +1,112 @@
+# 서비스 규약
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. 권리 및 의무
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. 세금 및 수수료
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. 유저의 진술
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. 금지된 이용
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. 해제
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. 보증 포기
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. 책임 제한
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. 보상
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. 지적 재산
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. 경고
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. 기타
+
+**a. 변경:** 당사는 유저가 당사에 신고한 주소로 어느 하나의 매체를 통해 보내는 전자 메시지로 변경 후의 조항을 유저에게 제시함으로써, 언제든지 통지 없이 본 규약의 조항을 추가하거나 변경할 수 있습니다. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. 분리해석:** 본 규약 중 어느 규정 또는 어느 규정의 일부가 무효, 위법 또는 강제집행 불능이거나, 무효, 위법 또는 강제집행 불능이 되는 경우에는, 해당 규정 또는 해당 규정의 일부는 유효, 적법하고도 강제집행 가능이 되기 위해 필요한 최소한도에서 변경된 것으로 간주합니다. 이러한 변경을 할 수 없는 경우에는 해당 규정 또는 해당 규정의 일부는 삭제된 것으로 간주합니다. 본 조에 근거한 어느 규정 또는 어느 규정 일부의 변경 또는 삭제는 본 규약의 나머지 규정의 유효성 및 강제집행 가능성에 영향을 미치지 않습니다.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. 언어:** 본 규약의 번역은 현지에서의 참조 편의를 위해 작성되는 것이며, 영어판과 영어 외 언어판과의 사이에 불일치가 있는 경우에는, 본 규약의 영어판이 모든 점에서 우선합니다.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/nl-NL.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/nl-NL.md
new file mode 100644
index 0000000000..3d0334de81
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/nl-NL.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 2. Belastingen en vergoedingen
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 3. Gebruikersvertegenwoordigingen
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 4. Verboden gebruik
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 5. Beëindiging
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 8. Vrijwaring
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Afwijzing van garanties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Beperking van aansprakelijkheid
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 10. Waarschuwingen
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectueel eigendom
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 11. Diversen
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In het geval van een splitsing stemt de gebruiker ermee in dat het bedrijf de softwareactiviteiten tijdelijk kan opschorten (met of zonder kennisgeving aan de gebruiker) en dat het bedrijf, naar eigen goeddunken, (a) zijn systemen kan configureren of opnieuw configureren of (b) kan beslissen het gesplitste protocol niet volledig te ondersteunen (of niet meer te ondersteunen), op voorwaarde echter dat de Gebruiker de mogelijkheid krijgt om geld op te nemen van de Software. De gebruiker erkent en gaat ermee akkoord dat het bedrijf absoluut geen enkele verantwoordelijkheid aanvaardt met betrekking tot een niet-ondersteunde vertakking van een uitgesplitst protocol.
+
+## 11. Miscellaneous
+
+**a. Amendement.** Het bedrijf heeft het recht om op elk moment en zonder voorafgaande kennisgeving de voorwaarden van deze overeenkomst toe te voegen of te wijzigen, simpelweg door dergelijke gewijzigde voorwaarden aan de gebruiker te bezorgen via een elektronisch bericht via elk medium naar elk adres dat door de gebruiker aan het bedrijf is verstrekt. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Opzegging.** Als enige bepaling of deelbepaling van deze overeenkomst ongeldig of niet-afdwingbaar is of wordt, wordt deze geacht te zijn gewijzigd tot het minimum dat nodig is om deze geldig, legaal en afdwingbaar te maken. Indien een dergelijke wijziging niet mogelijk is, wordt de desbetreffende bepaling of deelbepaling geacht te zijn geschrapt. Elke wijziging of schrapping van een bepaling of deelbepaling krachtens dit artikel heeft geen invloed op de geldigheid en afdwingbaarheid van de rest van deze overeenkomst.
+
+**c. c. Gehele overeenkomst - Disclaimer van vertrouwen**. Deze overeenkomst vormt de volledige overeenkomst tussen de partijen met betrekking tot het onderwerp hiervan en vervangt alle eerdere overeenkomsten of afspraken tussen de partijen. De gebruiker verklaart en garandeert uitdrukkelijk dat hij niet vertrouwt op andere verklaringen, afspraken, verklaringen, verwachtingen of overeenkomsten dan die welke uitdrukkelijk in deze overeenkomst zijn uiteengezet.
+
+**d. DEZE OVEREENKOMST IS ONDERWORPEN AAN BINDENDE ARBITRAGE.** De gebruiker stemt ermee in dat alle geschillen of claims tegen een persoon die voortvloeit uit of op enigerlei wijze verband houdt met deze overeenkomst of de toegang, het gebruik of de installatie van de software door de gebruiker of een andere persoon, onderworpen zullen zijn aan bindende arbitrage onder de arbitrageregels van de Internationale Kamer van Koophandel door een of meer arbiters die zijn aangewezen in overeenstemming met de genoemde regels. De plaats van arbitrage is Japan. De taal van de arbitrage is Engels.
+
+**e. TAAL.** Elke vertaling van deze overeenkomst is uitsluitend gemaakt voor lokale referentie en in het geval van enige tegenstrijdigheid tussen de Engelse en niet-Engelse versies, zal de Engelse versie van deze overeenkomst prevaleren en in alle opzichten gelden.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/pl-PL.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pl-PL.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/pl-PL.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pl-PL.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/pl-PL.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pl-PL.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pt-BR.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pt-BR.md
new file mode 100644
index 0000000000..ff1fa61ead
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/pt-BR.md
@@ -0,0 +1,112 @@
+# Acordo de Termos e Condições
+
+ESTE ACORDO DE TERMOS E SERVIÇOS ("Acordo") é realizado entre EMURGO Fintech Inc ("Company") e qualquer pessoa ou entidade ("User") que complete o processo de baixar, utilizar, ou operar o aplicativo denominado como Yoroi Cryptocurrency Wallet aplicativo, processamento de dados, aplicação, serviço de comunicação ou outro conteúdo ou oferecido ou provido com o programa de computar pela Company ora denominado ("Software"). A "Company" e o "User" são denominados quando em conjunto como "Parties".
+
+CLICANDO NO BOTÃO DE ACEITE OR ACESSANDO, USANDO OU INSTALANDO QUALQUER PARTE DO "SOFTWARE", O "USER" ACEITA EXPRESSAMENTE E CONCENTE ESTAR LEGALMENTE ACEITANDO TODOS OS TERMOS DESTE ACORDO. SE O "USER" NÃO CONCORDAR COM TODOS OS TERMOS DESTE CONTRATO, NÃO SERÁ AUTORIZADO A ACESSAR, USAR OU INSTALAR QUALQUER PARTE DO SOFTWARE.
+
+## 1. Direitos e Obrigações
+
+**a. Descrição.** O Software funciona como uma carteira de criptomoeda digital gratuita e de código aberto. O Software não constitui uma conta pela qual a "Company" ou quaisquer outros terceiros atuam como intermediários financeiros ou custodiantes das ADAs do Usuário ou qualquer outra criptomoeda.
+
+Embora o Software tenha sido submetido a testes beta e continue sendo aprimorado pelos comentários da comunidade de desenvolvedores, colaboradores de código aberto e testadores beta, a Empresa não pode garantir que não haverá bugs no Software. O Usuário reconhece que o uso do Software pelo usuário corre risco, discrição e conformidade com todas as leis aplicáveis. O Usuário é responsável por proteger as senhas, PINs, chaves privadas, chaves de resgate, chaves de venda protegidas, senhas mnemônicas de recuperação de backup, códigos de acesso ADA e quaisquer outros códigos que o usuário usa para acessar o Software ou qualquer informação, ADA, voucher ou outra unidade de criptomoeda.
+
+SE O USUÁRIO PERDER ACESSO À CARTEIRA DE CRIPTOMOEDAS OU ÀS CHAVES PRIVADAS E NÃO ARMAZENAR SEPARADAMENTE UM BACKUP DE CARTEIRA OU BACKUP DE RECUPERAÇÃO DA FRASE MNEMÔNICA E A CORRESPONDENTE SENHA, RECONHECE E CONCORDA QUE A CARTEIRA FICARÁ INACESSÍVEL. Todas as solicitações de transação são irreversíveis.
+
+Todas as transações são irreversíveis. A Empresa e seus acionistas, diretores, executivos, funcionários, afiliados e agentes não podem garantir a confirmação da transação ou recuperar as chaves privadas ou senhas do Usuário se o Usuário as perder ou esquecer.
+
+
+**b. ** b. Acessibilidade. ** O usuário concorda que, de tempos em tempos, o Software poderá ficar inacessível ou inoperável por qualquer motivo, incluindo, sem limitação: (i) mau funcionamento do equipamento; (ii) procedimentos ou reparos periódicos de manutenção que a Companhia possa realizar periodicamente; ou (iii) causas fora do controle da Companhia ou que não sejam razoavelmente previsíveis pela Companhia.
+
+**c. ** c. Equipamento. ** O Usuário será o único responsável por fornecer, manter e garantir a compatibilidade com o Software, todos os requisitos de hardware, software, elétrica e outros requisitos físicos para o uso do Software pelo Usuário, incluindo, sem limitação, conexões de telecomunicações e acesso à Internet e links, navegadores da web ou outros equipamentos, programas e serviços necessários para acessar e usar o Software.
+
+**d. Segurança. ** O Usuário será o único responsável pela segurança, confidencialidade e integridade de todas as informações e conteúdos que o Usuário recebe, transmite ou armazena no Software. O Usuário será o único responsável por qualquer acesso autorizado ou não autorizado a qualquer conta do Usuário por qualquer pessoa. O Usuário concorda em assumir toda a responsabilidade pela confidencialidade dos dispositivos, informações, chaves e senhas de segurança do Usuário.
+
+**e. Privacidade. ** Quando razoavelmente praticável, a Empresa tentará respeitar a privacidade do Usuário. A Empresa não monitora, edita ou divulga nenhuma informação pessoal sobre a conta do Usuário, incluindo seu conteúdo ou o uso do Software pelo Usuário, sem o consentimento prévio do, a menos que a Empresa acredite de boa fé que tal ação é necessária para: (i) cumprir o processo legal ou outros requisitos legais de qualquer autoridade governamental; (ii) proteger e defender os direitos ou propriedades da Companhia; (iii) fazer cumprir este Contrato; (iv) proteger os interesses dos usuários do Software que não sejam o Usuário ou qualquer outra pessoa; ou (v) operar ou realizar manutenção e reparo dos serviços ou equipamentos da Companhia, incluindo o Software conforme autorizado por lei. O usuário não tem expectativa de privacidade em relação à Internet em geral. O endereço IP do usuário é transmitido e gravado com cada mensagem ou outra informação que o usuário envia do software.
+
+## 2. Impostos e Taxas
+
+Todas as cobranças de conversão de moeda, taxas de terceiros, vendas, uso, valor agregado, bens pessoais ou outros impostos, taxas ou impostos de qualquer espécie, incluindo juros e multas, sobre impostos agora ou a seguir por qualquer entidade governamental e taxas incorridas ao Usuário em razão do acesso, uso ou instalação do Software será de exclusiva responsabilidade do Usuário.
+
+## 3. Representações do usuário
+
+O Usuário declara e garante à Empresa que: (a) se o Usuário for uma pessoa natural, o Usuário tenha mais de dezoito (18) anos; (b) O Usuário tem o poder e a autoridade para celebrar e executar as obrigações do Usuário sob este Contrato; (c) todas as informações fornecidas pelo Usuário à Empresa são verdadeiras, precisas e completas; (d) O Usuário cumprirá todas as leis e regulamentos de qualquer jurisdição aplicável em relação ao acesso, uso ou instalação do Software; (e) O Usuário deve cumprir todos os termos e condições deste Contrato, incluindo, sem limitação, as disposições estabelecidas na Seção 4; e (f) O Usuário forneceu e fornecerá informações precisas e completas, conforme necessário para acesso, uso ou instalação do Software.
+
+## 4. Usos Proibidos
+
+O Usuário é o único responsável por todos e quaisquer atos e omissões que ocorram na conta, informações de segurança, chaves ou senha do Usuário, e concorda em não se envolver em uso inaceitável do Software, que inclui, sem limitação, uso do Software para: ( a) disseminar, armazenar ou transmitir mensagens não solicitadas, correntes ou e-mail comercial não solicitado; (b) disseminar ou transmitir material que, para uma pessoa razoável, possa ser abusivo, obsceno, pornográfico, difamatório, hostil, ofensivo, vulgar, ameaçador ou malicioso; (c) disseminar, armazenar ou transmitir arquivos, gráficos, software ou outro material que viole de fato ou potencialmente os direitos autorais, marca registrada, patente, segredo comercial ou outro direito de propriedade intelectual de qualquer pessoa; (d) criar uma identidade falsa ou tentar enganar qualquer pessoa quanto à identidade ou origem de qualquer comunicação; (e) exportar, reexportar ou permitir o download de qualquer mensagem ou conteúdo que viole qualquer lei de exportação ou importação, regulamento ou restrição de qualquer jurisdição aplicável ou sem todas as aprovações, licenças ou isenções necessárias; (f) interferir, interromper ou tentar obter acesso não autorizado a outras contas no Software ou em qualquer outra rede de computadores; ou (g) disseminar, armazenar ou transmitir vírus, cavalos de Troia ou qualquer outro código ou programa malicioso.
+
+## 5. Rescisão
+
+Este Contrato entra em vigor com a aceitação do Usuário, conforme estabelecido neste documento, e continuará em vigor, desde que o Usuário se envolva em qualquer acesso, uso ou instalação do Software. A Empresa reserva-se o direito, a seu exclusivo critério e sem aviso prévio, a qualquer momento e por qualquer motivo, de: (a) remover ou desativar o acesso a todo ou parte do Software; (b) suspender o acesso do Usuário ou o uso de todo ou parte do Software; e (c) rescindir este Contrato.
+
+## 6. Isenção de Garantias
+
+O SOFTWARE É FORNECIDO "TAL COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA. O USO DO SOFTWARE É DE RISCO ÚNICO DO USUÁRIO. A EMPRESA NÃO GARANTE QUE O SOFTWARE SERÁ ININTERRUPTO OU LIVRE DE ERROS, NEM A EMPRESA GARANTIA QUALQUER RESULTADO QUE PODE SER OBTIDO PELO USO DO SOFTWARE. A EMPRESA NÃO OFERECE OUTRAS GARANTIAS, EXPRESSAS OU IMPLÍCITAS. A EMPRESA EXPRESSAMENTE EXCLUSIVAMENTE QUALQUER GARANTIA DE COMERCIALIZAÇÃO, GARANTIA DE ADEQUAÇÃO A UM PROPÓSITO PARTICULAR, GARANTIA DE TÍTULO OU INTERESSE OU GARANTIA DE NÃO INFRAÇÃO.
+
+## 7. Limitação de responsabilidade
+
+EM NENHUM CASO A EMPRESA OU SEUS ACIONISTAS, DIRETORES, OFICIAIS, FUNCIONÁRIOS, AFILIADOS OU AGENTES, OU QUALQUER DELES OU SEUS PRESTADORES DE SERVIÇOS, SERÃO RESPONSÁVEIS PELO USUÁRIO OU QUALQUER TERCEIRA PARTE PARA QUALQUER USO, INTERRUPÇÃO, ATRASO OU INABILIDADE DE USO DO SISTEMA, RECEITAS OU LUCROS PERDIDOS, ATRASOS, INTERRUPÇÕES OU PERDA DE SERVIÇOS, NEGÓCIOS OU PROSPECTOS DE NEGÓCIOS, PERDA OU CORRUPÇÃO DE DADOS, PERDA RESULTANTE DE FALHA DO SERVIÇO OU DO SISTEMA, FUNCIONAMENTO OU DESLIGAMENTO, FALHA EM TRANSFERIR, LER OU TRANSMITIR INFORMAÇÃO PRECISAMENTE, ATUALIZAR OU FORNECER INFORMAÇÕES CORRETAS, INCOMPATIBILIDADE DO SISTEMA OU FORNECIMENTO DE INFORMAÇÕES DE COMPATIBILIDADE INCORRETA OU QUEBRA NA SEGURANÇA DO SISTEMA, OU QUAISQUER DANOS CONSEQÜENTES, INCIDENTAIS, INDIRETOS, EXEMPLARES, ESPECIAIS OU DANOS PUNITIVOS, SEJA CONCEBIDO NESTE CONTRATO, TORT (INCLUINDO NEGLIGÊNCIA) OU DE OUTRO MODO, INDEPENDENTE DE O QUANTO OS DANOS ERAM PREVISÍVEIS E SE NÓS SABIAMOS OU NÃO DA POSSIBILIDADE DESSE DANOS OCORREREM.
+
+EM NENHUM CASO A EMPRESA OU SEUS ACIONISTAS, DIRETORES, OFICIAIS, FUNCIONÁRIOS, AFILIADOS OU AGENTES, OU QUALQUER DE LES OU SEUS RESPECTIVOS PRESTADORES DE SERVIÇOS, SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANO OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, AÇÃO DE OUTRA FORMA, DECORRENTE OU DE QUALQUER FORMA RELACIONADA AO ACESSO, USO OU INSTALAÇÃO DO SISTEMA PELO USUÁRIO.
+
+ALGUMAS JURISDIÇÕES PROIBEM A EXCLUSÃO OU LIMITAÇÃO DE DANOS INCIDENTAIS OU CONSEQÜENCIAIS, POR ISSO, ESTA LIMITAÇÃO DE RESPONSABILIDADE PODE NÃO SE APLICAR AO USUÁRIO. SE O USUÁRIO ESTIVER INSATISFEITO COM O SOFTWARE, O ÚNICO E EXCLUSIVO RECURSO DO USUÁRIO SERÁ INTERROMPER O USO DO SOFTWARE.
+
+## 8. Indenização
+
+O Usuário concorda em indenizar, isentar e defender a Empresa, seus acionistas, diretores, executivos, funcionários, afiliados e agentes ("Partes Indenizadas") de e contra qualquer ação, causa, reclamação, dano, dívida, demanda ou responsabilidade, incluindo razoáveis custos e honorários advocatícios, declarados por qualquer pessoa, decorrentes ou relacionados (a) este Contrato; (b) Acesso do usuário, uso ou instalação do Sistema pelo Usuário, incluindo quaisquer dados ou trabalhos transmitidos ou recebidos pelo Usuário; (c) qualquer uso inaceitável do Software por qualquer pessoa, incluindo, sem limitação, qualquer declaração, dado ou conteúdo criado, transmitido ou republicado pelo Usuário ou qualquer pessoa que seja proibida como inaceitável na Seção 4. ESTA INDENIZAÇÃO INCLUI A INDENIZAÇÃO EXPRESSA DA EMPRESA E DE TODAS AS PARTES INDENIZADAS POR QUALQUER ALEGADA NEGLIGÊNCIA (INCLUINDO QUALQUER NEGLIGÊNCIA ALEGADA COMO GROSSEIRA). OU OUTRAS ALEGADAS DESVIOS DE CONDUTA DA EMPRESA OU DE QUALQUER PARTE INDENIZADA.
+
+## 9. Propriedade Intellectual
+
+A Empresa mantém todos os direitos, títulos e interesses de e para todas as marcas, logotipos e marcas comerciais da Empresa, incluindo, entre outros, EMURGO Co., Ltd., EMURGO, Yoroi, Carteira de criptomoedas Yoroi, Carteira Yoroi, Yoroi App e variações da redação das marcas, logotipos e marcas comerciais acima mencionados.
+
+## 10. Advertências
+
+O Usuário reconhece que a Empresa não será responsável por transferir, proteger ou manter chaves privadas e/ou ADA do Usuário ou qualquer outra criptomoeda. Se o Usuário e/ou qualquer autoridade de assinatura conjunta perder, manipular incorretamente ou tiver roubado chaves privadas associadas, ou se os assinantes do usuário se recusarem a fornecer a autoridade necessária, o Usuário reconhece que o Usuário pode não ser capaz de recuperar sua(s) ADA ou qualquer outra criptomoeda e que a empresa não será responsável por tal perda.
+
+O Usuário reconhece e concorda que a trasferência de ADA ou qualquer outra transação de criptomoeda facilitada pelo Software e / ou pela Empresa pode se atrasar e que a Empresa não será responsável por nenhuma perda associada.
+
+O Usuário reconhece e concorda que a Empresa não se responsabiliza por nenhum aspecto das informações, conteúdos ou serviços contidos em materiais de terceiros ou em sites de terceiros acessíveis ou vinculados ao Sistema e / ou à Empresa.
+
+O Usuário concorda que nunca deve compartilhar o certificado do Usuário com nenhuma pessoa física ou jurídica, incluindo a Empresa, a Fundação Cardano, a Input Output HK Limited ou qualquer outra entidade. Além disso, o Usuário reconhece que o compartilhamento do certificado do Usuário pode resultar na perda de sua(s) ADA ou em qualquer outra criptomoeda, e o Usuário concorda que a Empresa não será responsável por tal perda.
+
+O Usuário reconhece e concorda que, ao resgatar ADA na rede de teste, o Usuário resgata apenas ADA de teste e que, para resgatar ADA real, o Usuário deve repetir o procedimento na rede principal, uma vez liberado.
+
+Ao usar o Software, o Usuário reconhece e concorda: (i) que a Empresa não é responsável pela operação dos protocolos subjacentes e que a Empresa não garante sua funcionalidade, segurança ou disponibilidade; e (ii) que os protocolos subjacentes estão sujeitos a alterações repentinas da rede principal nas regras operacionais ("forks") e que esses fork podem afetar materialmente o valor e / ou a função da ADA ou qualquer outra criptomoeda que o Usuário armazena em no sistema. No caso de uma fork, o Usuário concorda que a Empresa pode suspender temporariamente as operações do Sistema (com ou sem aviso prévio ao Usuário) e que a Empresa pode, a seu exclusivo critério, (a) configurar ou reconfigurar seus sistemas ou (b) decidir não apoiar totalmente (ou deixar de apoiar) o protocolo bifurcado, desde que, no entanto, o Usuário tenha a oportunidade de retirar fundos do Sistema. O Usuário reconhece e concorda que a Empresa não assume absolutamente nenhuma responsabilidade em relação a uma ramificação não suportada de um protocolo bifurcado.
+
+## 11. Diversos
+
+** a. Alteração. ** A Empresa terá o direito, a qualquer momento e sem aviso prévio, de adicionar ou modificar os termos deste Contrato, simplesmente entregando esses termos alterados ao Usuário por mensagem eletrônica, por qualquer meio, para qualquer endereço fornecido pelo usuário para a empresa. O acesso ou uso do Software pelo Usuário após a data em que esses termos alterados forem entregues ao Usuário será considerado como aceitação desses termos alterados.
+
+**b. Indenização. ** Se qualquer disposição ou parte deste Contrato for, ou se tornar inválido, ilegal ou inexequível, ele será considerado modificado na extensão mínima necessária para torná-lo válido, legal e aplicável. Se tal modificação não for possível, a disposição ou parte da disposição relevante será considerada excluída. Qualquer modificação ou exclusão de uma provisão ou provisão parcial nos termos deste artigo não afetará a validade e aplicabilidade do restante deste Contrato.
+
+** c. Contrato completo - Isenção de responsabilidade **. Este Contrato constitui o contrato completo entre as Partes com relação ao assunto deste documento e substitui todos os acordos ou entendimentos anteriores entre as Partes. O Usuário expressa e garante expressamente que não está confiando em quaisquer declarações, entendimentos, representações, expectativas ou acordos que não sejam expressamente estabelecidos neste Contrato.
+
+**d. ESTE CONTRATO ESTÁ SUJEITO A ARBITRAGEM OBRIGATÓRIA. ** O Usuário concorda que toda e qualquer disputa ou reclamação contra qualquer pessoa decorrente de ou de alguma forma relacionada a este Contrato ou ao acesso, uso ou instalação do Software pelo Usuário ou qualquer outro uma pessoa estará sujeita a arbitragem vinculativa sob as Regras de Arbitragem da Câmara de Comércio Internacional por um ou mais árbitros nomeados de acordo com as referidas Regras. O local da arbitragem será o Japão. O idioma da arbitragem deve ser o inglês.
+
+**e. IDIOMA. ** Qualquer tradução deste Contrato é feita apenas para fins de referência local e, no caso de qualquer inconsistência entre as versões em inglês e outras que não sejam em inglês, a versão em inglês deste Contrato prevalecerá e prevalecerá em todos os aspectos.
+
+**f. TRADUÇÕES.** A Empresa e sua equipe se esforçam para fornecer traduções precisas e confiáveis, podendo haver limitações e discrepâncias inerentes ao processo de tradução. No entanto, as traduções são fornecidas por um sistema automatizado ou por tradutores humanos, e pode haver casos em que o significado e as nuances do texto original não sejam totalmente capturados ou possam ser interpretados de forma diferente na versão traduzida.
+
+O conteúdo traduzido no Software é fornecido apenas para fins informativos e de conveniência. No caso de quaisquer discrepâncias ou conflitos entre a versão traduzida e o conteúdo original, a versão original no idioma de origem (inglês) prevalecerá e será considerada oficial.
+
+As versões traduzidas do Software não devem ser consideradas juridicamente vinculativas ou oficiais. Quaisquer obrigações, termos ou condições legais ou contratuais são regidos pela versão original no idioma de origem (inglês). Caso existam implicações ou requisitos legais específicos, é aconselhável consultar o conteúdo original ou procurar aconselhamento profissional.
+
+Podemos fornecer traduções do Software por meio de sistemas automatizados ou contratar tradutores por meio da comunidade YOROI. Nesses casos, não garantimos a exatidão, confiabilidade ou integridade das traduções de terceiros e não assumimos qualquer responsabilidade por quaisquer imprecisões, erros ou omissões no conteúdo traduzido.
+
+Os usuários que dependem de versões traduzidas da documentação do nosso Software o fazem por sua própria conta e risco. É responsabilidade do usuário avaliar a precisão, confiabilidade e adequação do conteúdo traduzido aos fins pretendidos. Encorajamos os usuários a consultar o conteúdo no idioma original ou a procurar assistência em caso de dúvida.
+
+As traduções nem sempre refletem as informações ou atualizações mais atuais do nosso Software. Reservamo-nos o direito de modificar, atualizar ou remover conteúdo traduzido sem aviso prévio. É aconselhável visitar periodicamente o conteúdo original ou entrar em contato conosco para obter as informações mais recentes.
+
+Ao utilizar as versões traduzidas do nosso Software, você reconhece e aceita as limitações e riscos associados às traduções. Nós nos isentamos de qualquer responsabilidade por quaisquer perdas, danos ou inconvenientes decorrentes do uso do conteúdo traduzido. Para informações críticas, veracidade e questões legais, recomendamos consultar o conteúdo original ou entrar em contato conosco diretamente.
+
+Se você tiver alguma dúvida ou preocupação em relação à precisão ou confiabilidade do conteúdo traduzido, entre em contato conosco para esclarecimentos.
+
+## 12. Delegação e Stake
+
+12.1 ** Recompensas. ** A quantidade de recompensas que um usuário pode receber da delegação depende de vários fatores, incluindo, entre outros, participação do usuário, margens de lucro do stake pool e o volume de ADA que está sendo delegada. É possível que a delegação não gere nenhuma recompensa para um usuário devido aos fatores acima mencionados. As recompensas são ganhas a partir do início da 3ª época na blockchain Cardano.
+
+12.2 **Delegação.** Os usuários podem delegar sua participação a um dos vários grupos de participação da Empresa ou a um grupo de participação de terceiros. O usuário terá o direito exclusivo de determinar o volume a ser delegado a um pool de apostas e poderá aumentar ou diminuir seu nível de participação a qualquer momento. Quaisquer informações compartilhadas pela Empresa sobre participações, incluindo métricas de desempenho e recompensas, serão apenas para fins indicativos e podem não ser precisas. Os usuários só podem delegar sua aposta a um pool de apostas se sua ada estiver em uma carteira Daedalus ou Yoroi atualizada no momento do processo de configuração. O usuário não adquire nenhum direito automático a recompensas como resultado da delegação de sua participação.
+
+12.3 **Stakepools da Empresa.** A Empresa operará vários pools de participação que serão visíveis em Yoroi. O custo e os requisitos de rede e servidor para operar de forma confiável tais pools de participação serão determinados pela Empresa a seu exclusivo critério. A Empresa comunicará o valor percentual da Recompensa a ser compartilhada com os Usuários por meio da carteira Yoroi do Usuário. As recompensas serão acumuladas no final de cada época e aparecerão automaticamente na carteira Yoroi do usuário.
+
+12.4 **Resgate de Prêmios.** O Usuário será responsável pelo pagamento de todos os impostos aplicáveis, se houver, aos quais os Prêmios possam estar sujeitos e todos e quaisquer outros impostos que possam ser aplicados ao Usuário assim que os Prêmios forem resgatados.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ru-RU.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ru-RU.md
new file mode 100644
index 0000000000..0d58523e24
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/ru-RU.md
@@ -0,0 +1,112 @@
+# Соглашение о предоставлении услуг
+
+Настоящие положения о предоставлении услуг (далее - "Соглашение") заключаются между EMURGO Fintech Inc. (далее "Компания") и любым физическим или юридическим лицом ( далее - "Пользователь"), который завершает процесс загрузки, утилизации или эксплуатации программного обеспечения, известного как приложение криптовалютного кошелька Yoroi, а также услуги по обработке данных, приложение, коммуникационные услуги и другой контент, предлагаемый или предоставляемый программным обеспечением Компании (далее "Программа"). Компания и Пользователь, совместно далее именуются "Сторонами".
+
+ПОДТВЕРДИВ СОГЛАСИЕ, НАЖАТИЕМ КНОПКИ ИЛИ ПОЛУЧЕНИЕМ ДОСТУПА, ИСПОЛЬЗУЯ ИЛИ УСТАНАВЛИВАЯ КАКУЮ-ЛИБО ЧАСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ПОЛЬЗОВАТЕЛЬ НЕПОСРЕДСТВЕННО ПРИНИМАЕТ УСЛОВИЯ СОГЛАШЕНИЯ И ДАЕТ СОГЛАСИЕ БЫТЬ ЮРИДИЧЕСКИ СВЯЗАННЫМ СО ВСЕМИ СОГЛАШЕНИЯМИ ДАННОГО ДОГОВОРА. ЕСЛИ ПОЛЬЗОВАТЕЛЬ НЕ ДАЕТ СВОЕ СОГЛАСИЕ НА ВСЕ УСЛОВИЯ ЭТОГО ДОГОВОРА, ПОЛЬЗОВАТЕЛЮ НЕ БУДЕТ РАЗРЕШЕН ДОСТУП, ИСПОЛЬЗОВАНИЕ ИЛИ УСТАНОВКА КАКОЙ-ЛИБО ЧАСТИ ПРОГРАММЫ.
+
+## 2. Налоги и сборы
+
+**a. Описание.** Программа функционирует как бесплатный, открытый исходный код, электронный криптовалютный кошелек. Программа не является аккаунтом, с помощью которого Компания или другие третьи стороны выступают в качестве финансовых посредников или хранителей ADA пользователя или любой другой криптовалюты.
+
+Пока Программа подвергается бета-тестированию и продолжает совершенствоваться путем обратной связи с разработчиками сообщества, участниками открытого кода и бета-тестировщиками, Компания не может гарантировать, что не возникнет никаких ошибок в Программе. Пользователь признает, что использует Программное обеспечение на свой страх и риск, по своему усмотрению и в соответствии со всеми применимыми законами. Пользователь несет ответственность за сохранность паролей пользователя, PIN-кодов, закрытых ключей, ключей погашения, защищенных торговых ключей, мнемонических парольных фраз для восстановления резервных копий, кодов доступа ADA и любых других кодов, которые пользователь использует для доступа к программному обеспечению или любой информации, ADA, ваучеру или другой единице криптовалюты.
+
+ЕСЛИ ПОЛЬЗОВАТЕЛЬ ТЕРЯЕТ ДОСТУП К СВОЕМУ КОШЕЛЬКУ ИЛИ ЛИЧНЫМ КЛЮЧАМ И НЕ ИМЕЕТ ОТДЕЛЬНО СОХРАНЕННОЙ РЕЗЕРВНОЙ КОПИИ СВОЕГО КРИПТОКОШЕЛЬКА ИЛИ РЕЗЕРВНОЙ КОПИИ ВОССТАНОВИТЕЛЬНОЙ МНЕМОНИЧЕСКОЙ ФРАЗЫ И СООТВЕТСТВУЮЩЕГО ПАРОЛЯ(ЛЕЙ), ПОЛЬЗОВАТЕЛЬ ПРИЗНАЕТ И СОГЛАШАЕТСЯ С ТЕМ, ЧТО ЛЮБАЯ ADA ИЛИ ЛЮБЫЕ ДРУГИЕ КРИПТОВАЛЮТЫ ПОЛЬЗОВАТЕЛЯ, СВЯЗАННЫЕ С ТЕМ КРИПТОКОШЕЛЬКОМ СТАНУТ НЕДОСТУПНЫ.
+
+Все запросы о проведении транзакций являются необратимыми. Компания и ее акционеры, директора, должностные лица, сотрудники, партнеры и агенты не могут гарантировать подтверждение транзакции или восстановление личных ключей Пользователя или паролей, если он их потеряет или забудет.
+
+
+**b. Доступность.** Пользователь согласен с тем, что время от времени Программа может быть недоступной или не функционировать по какой-либо причине, включая, без ограничений: (i) неисправность оборудования; (ii) периодические процедуры технического обслуживания или ремонтные работы, которые Компания может проводить время от времени; или (iii) случаи, которые не зависят от Компании или которые не в состоянии быть предвидены Компанией.
+
+**c. Оборудование.** Пользователь несет полную ответственность за предоставление, поддержание и обеспечение совместимости с Программой, всем оборудованием, программным обеспечением, электрическими и другими физическими требованиями для использования Пользователем Программы, включая, без ограничений, телекоммуникации и соединения с доступом в Интернет, веб браузеры или другое оборудование, программы и сервисы, необходимые для доступа и использования Программы.
+
+**d. Безопасность.** Пользователь несет полную ответственность за безопасность, конфиденциальность и целостность всей информации и содержания, которые Пользователь получает, передает или сохраняет в Программе. Пользователь несет полную ответственность за любой разрешенный или несанкционированный доступ к любому аккаунту Пользователя любым лицом. Пользователь подтверждает свое согласие нести полную ответственность за конфиденциальность устройств безопасности, информации, ключей и паролей Пользователя.
+
+**e. Конфиденциальность.** Когда это практически осуществимо, Компания будет стремится соблюдать конфиденциальность Пользователя. Компания не будет отслеживать, редактировать или разглашать какую-либо личную информацию о Пользователе и его аккаунте, включая его содержимое или использование Пользователем Программы без предварительного согласия Пользователя за исключением случаев, когда Компания искренне полагает, что данные действия необходимы для: (i) соблюдения юридического (судебного) процесса или другого правового требования любого правительственного органа; (ii) охраны и защиты прав и имущества Компании (iii) обеспечения соблюдения данного Соглашения (iv) защиты интересов пользователей Программы помимо Пользователя или любого другого лица; или (v) для функционирования или проведения технического обслуживания и ремонта услуг Компании или оборудования, включая Программу в соответствии с законодательством. Пользователь не рассчитывает на конфиденциальность в отношении Интернета в целом. Пользовательский IP адрес передается и записывается с каждым сообщением или другой информацией, которую Пользователь отправляет из Программы.
+
+## 2. Налоги и сборы
+
+Все комиссии за конвертацию валюты, сборы третьих сторон, продажи, использование, добавленная стоимость, личную собственность или другие налоги, пошлины или сборы какого-либо вида, включая проценты и штрафы по ним, будь то введенные в настоящее время или в дальнейшем любым правительственным органом,а также сборы, понесенные Пользователем по причине доступа Пользователя, использования или установки Программы является исключительно ответственностью Пользователя.
+
+## 3. Пользовательские заявления
+
+Пользователь заявляет и гарантирует Компании, что: (a) Пользователь является физическим лицом и что Пользователь в возрасте от восемнадцати лет(18); (b) Пользователь имеет права и полномочия для заключения и выполнения обязательств Пользователя в соответствии с данным Соглашением; (с) вся информация, предоставленная для Компании Пользователем, является достоверной, точной и полной; (d) Пользователь обязуется соблюдать все законы и правила любой применимой юрисдикцией в отношении доступа Пользователя, использования или установки Программы; (e) Пользователь должен соблюдать все условия и правила настоящего Соглашения, включая, без ограничений, положения, изложенные в Разделе 4 и (f) Пользователь предоставил и будет предоставлять точную и полную информацию, необходимую для доступа, использования или установки Программы.
+
+## 4. Запрещенные виды использования
+
+Пользователь несет всю ответственность за любые действия и упущения, происходящие в аккаунте Пользователя,информации в области безопасности, ключей или паролей, а также, Пользователь соглашается не участвовать в неприемлемом использовании Программы, которое включает, без ограничений, использование Программы для: (a) распространения, хранения и передачи незапрашиваемых сообщений, цепочки писем или незапрашиваемых коммерческих имейлов; (b) распространения или передачи материалов, которые разумному человеку могут быть оскорбительными, непристойными, порнографическими, порочащими, притесняющими, глубоко оскорбительными, вульгарными, угрожающими или злонамеренными; (c) распостранения, хранения или передачи файлов, графических объектов, программного обеспечения или других материалов, которые фактически или потенциально нарушают авторское право, товарный знак, патент, коммерческую тайну или другое право интеллектуальной собственности любого лица; (d) создания ложной личности или иной попытки введения в заблуждение любого лица в отношении личности или происхождении какого-либо сообщения; (e) экспорта, реэкспорта или разрешения загрузки любых сообщений или содержания, нарушающих любой закон об экспорте и импорте, регулировании или ограничении любой применимой юрисдикции или без всех необходимых разрешений, лицензий или изъятий; (f) вмешательства, нарушения или попытки получения несанкционированного доступа к другим аккаунтам в Программе или любой другой компьютерной сети; или (g) распостранения, хранения или передачи вирусов, "Троянских коней" или любых других вредоносных кодов или программ.
+
+## 5. Расторжение
+
+Настоящее Соглашение вступает в силу с момента его принятия Пользователем как указано в настоящем документе, и будет продолжать действовать в полную силу до тех пор, пока Пользователь осуществляет доступ, использование или установку Программы. Компания оставляет за собой право, по собственному усмотрению и без предварительного уведомления в любое время и по любой причине: (a) удалить или отключить доступ ко всем или любой части Программы; (b) приостановить доступ Пользователя или использование ко всем или любой части Программы; и (с) расторгнуть (аннулировать) данное Соглашение.
+
+## 6. Освобождение от гарантий
+
+ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. ПОЛЬЗОВАТЕЛЬ ИСПОЛЬЗУЕТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК. КОМПАНИЯ НЕ ГАРАНТИРУЕТ, ЧТО ПРОГРАММА БУДЕТ РАБОТАТЬ БЕСПЕРЕБОЙНО И БЕЗ ОШИБОК, ТАКЖЕ КОМПАНИЯ НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ ЛЮБЫХ РЕЗУЛЬТАТОВ, КОТОРЫЕ МОГУТ БЫТЬ ПОЛУЧЕНЫ ПРИ ИСПОЛЬЗОВАНИИ ПРОГРАММЫ. КОМПАНИЯ НЕ ДАЕТ НИКАКИХ ДРУГИХ ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. КОМПАНИЯ ПРЯМО ОТКАЗЫВАЕТСЯ ОТ КАКИХ-ЛИБО ГАРАНТИЙ ТОВАРНОЙ ПРИГОДНОСТИ, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ГАРАНТИИ ПРАВА СОБСТВЕННОСТИ ИЛИ ИНТЕРЕСА, А ТАКЖЕ ГАРАНТИИ НЕНАРУШЕНИЯ.
+
+## 7. Ограничение ответственности
+
+НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ МОГУТ КОМПАНИЯ ИЛИ ЕЕ АКЦИОНЕРЫ, ДИРЕКТОРА, ДОЛЖНОСТНЫЕ ЛИЦА, СОТРУДНИКИ, ПАРТНЕРЫ ЛИБО АГЕНТЫ, КТО-ТО ИЗ ЕЕ ИЛИ ИХ СООТВЕТСТВУЮЩИХ ПОСТАВЩИКОВ УСЛУГ НЕСТИ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЕ ТРЕБОВАНИЕ, ПОВРЕЖДЕНИЯ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В ДЕЙСТВИИ СОГЛАШЕНИЯ, ПРАВОНАРУШЕНИИ ИЛИ ИНОМ, ОБРАЗОВАННЫМ ИЛИ КАКИМ-ЛИБО ОБРАЗОМ СВЯЗАННЫМ С ДОСТУПОМ ПОЛЬЗОВАТЕЛЯ, ИСПОЛЬЗОВАНИЯ ИЛИ УСТАНОВКИ ПРОГРАММЫ. НЕКОТОРЫЕ ЮРИСДИКЦИИ ЗАПРЕЩАЮТ ИСКЛЮЧЕНИЕ ИЛИ ОГРАНИЧЕНИЕ СЛУЧАЙНЫХ ИЛИ ПОСЛЕДУЮЩИХ УБЫТКОВ, ТАКИМ ОБРАЗОМ ДАННОЕ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ МОЖЕТ БЫТЬ НЕ ПРИМЕНИМО К ПОЛЬЗОВАТЕЛЮ.
+
+НИ В КОЕМ СЛУЧАЕ КОМПАНИЯ ИЛИ ЕЕ АКЦИОНЕРЫ, ДИРЕКТОРА, ДОЛЖНОСТНЫЕ ЛИЦА, СЛУЖАЩИЕ, АФФИЛИРОВАННЫЕ ЛИЦА ИЛИ АГЕНТЫ, А ТАКЖЕ ЛЮБОЙ ИЗ ЕЕ ИЛИ ИХ СООТВЕТСТВУЮЩИХ ПОСТАВЩИКОВ УСЛУГ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ КОНТРАКТА, ПРАВОНАРУШЕНИЯ ИЛИ ИНЫМ ОБРАЗОМ, ВЫТЕКАЮЩИЕ ИЗ ИЛИ КАКИМ-ЛИБО ОБРАЗОМ СВЯЗАННЫЕ С ДОСТУП ПОЛЬЗОВАТЕЛЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ, ЕГО ИСПОЛЬЗОВАНИЕ ИЛИ УСТАНОВКА.
+
+НЕКОТОРЫЕ ЮРИСДИКЦИИ ЗАПРЕЩАЮТ ИСКЛЮЧЕНИЕ ИЛИ ОГРАНИЧЕНИЕ СЛУЧАЙНЫХ ИЛИ ПОСЛЕДУЮЩИХ УБЫТКОВ, ТАКИМ ОБРАЗОМ ДАННОЕ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ МОЖЕТ БЫТЬ НЕ ПРИМЕНИМО К ПОЛЬЗОВАТЕЛЮ. ЕСЛИ ПОЛЬЗОВАТЕЛЬ НЕ УДОВЛЕТВОРЕН ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ, ЕДИНСТВЕННЫМ И ИСКЛЮЧИТЕЛЬНЫМ СРЕДСТВОМ ПРАВОВОЙ ЗАЩИТЫ ПОЛЬЗОВАТЕЛЯ ЯВЛЯЕТСЯ ПРЕКРАЩЕНИЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
+
+## 8. Возмещение ущерба
+
+Пользователь соглашается возместить ущерб, обезопасить и защищать Компанию, ее акционеров, директоров, должностных лиц, служащих, аффилированных лиц и агентов ("Стороны, которым возмещается ущерб") от любых действий, причин, претензий, ущерба, долгов, требований или ответственности, включая разумные расходы и гонорары адвокатов, заявленные любым лицом, вытекающие из: (а) настоящего Соглашения или относящиеся к нему; (б) доступу Пользователя, использованию или установке Программного обеспечения, включая любые данные или работу, переданные или полученные Пользователем; и (c) любое неприемлемое использование Программного обеспечения любым лицом, включая, без ограничения, любое заявление, данные или контент, сделанные, переданные или переизданные Пользователем или любым лицом, которые запрещены как неприемлемые в соответствии с разделом 4. ЭТО ВОЗМЕЩЕНИЕ ВКЛЮЧАЕТ В СЕБЯ ЯВНОЕ ВОЗМЕЩЕНИЕ КОМПАНИИ И ВСЕМ ЗАСТРАХОВАННЫМ СТОРОНАМ ЗА ЛЮБУЮ ПРЕДПОЛАГАЕМУЮ ХАЛАТНОСТЬ (ВКЛЮЧАЯ ЛЮБУЮ ПРЕДПОЛАГАЕМУЮ ГРУБУЮ ХАЛАТНОСТЬ). ИЛИ ДРУГИЕ ПРЕДПОЛАГАЕМЫЕ НЕПРАВОМЕРНЫЕ ДЕЙСТВИЯ КОМПАНИИ ИЛИ ЛЮБЫХ СТОРОН, ПОЛУЧИВШИХ КОМПЕНСАЦИЮ.
+
+## 9. Интеллектуальная собственность
+
+Компания сохраняет за собой все права, титул и заинтересованность во всех брендах, логотипах и товарных знаках Компании, включая, но не ограничиваясь ими, EMURGO, Yoroi, криптовалютный кошелек Yoroi, кошелек Yoroi, Yoroi App и варианты формулировок вышеупомянутых брендов, логотипов и товарных знаков.
+
+## 10. Предупреждения
+
+Пользователь понимает, что Компания не несет ответственности за передачу, сохранность или хранение личных ключей и/или ADA Пользователя или любой другой криптовалюты. Если Пользователь и/или какие-либо органы, осуществляющие совместную подпись, теряют, неправильно обращаются или украли связанные с ними приватные ключи, или если соподписчики Пользователя отказываются предоставить необходимые полномочия, Пользователь признает, что Пользователь, возможно, не сможет восстановить ADA Пользователя или любую другую криптовалюту, и что Компания не несет ответственности за такое потеря.
+
+Пользователь признает и соглашается с тем, что ADA или любые другие криптовалютные транзакции при содействии Программы и/или Компании могут быть отложены или задерживаться и что Компания не несет ответственности за любые, связанные с этим потери.
+
+Пользователь признает и соглашается с тем, что Компания не несет ответственности за любой аспект информации, контента или услуг, содержащиеся в любых материалах третьих сторон или на каких-либо сайтах третьих сторон, доступных или связанных с Программой и/или Компанией.
+
+Пользователь соглашается с тем, что Пользователь никогда не должен делиться своими сертификатами ни с одним физическим или юридическим лицом, включая Компанию, Cardano Foundation, Input Output HK Limited и любую другую организацию. Кроме того, Пользователь признает, что совместное использование сертификата Пользователя может привести к потере ADA Пользователя или любой другой криптовалюты, и Пользователь соглашается с тем, что Компания не несет ответственности за такие потери.
+
+Пользователь признает и соглашается с тем, что, выкупив ADA в тестнете, Пользователь выкупит только тестовую ADA и для того, чтобы выкупить реальную ADA, Пользователь должен повторить процедуру на мейннете после ее выпуска.
+
+При использовании Программы, Пользователь признает и соглашается: (i) что Компания не несет ответственности за функционирование базовых протоколов и что Компания не гарантирует их функциональность, безопасность или доступность; и (ii) что основные протоколы подвержены внезапным изменениям мейн-чейн в правилах эксплуатации ("форки"), и что эти форки могут существенно повлиять на стоимость и/или функционирование ADA или любой другой криптовалюты, которую Пользователь хранит в Программе. В случае форка (fork), Пользователь согласен с тем, что Компания может временно приостановить деятельность Программы (с или без уведомления об этом Пользователя) и что Компания может по своему усмотрению, (a) настроить или перенастроить (переконфигурировать) свои системы или (b) принять решение не поддерживать (или прекратить поддержку) форкового протокола полностью, однако, при условии, что Пользователь будет иметь возможность выводить средства с Программы. Пользователь признает и соглашается с тем, что Компания не несет абсолютно никакой ответственности в отношении неподдерживаемого бранча форкового протокола.
+
+## 11. Разное
+
+**a. Поправка.** Компания имеет право в любое время и без предупреждения, добавлять или изменять условия данного Соглашения, просто доставляя данные измененные условия Пользователю через электронное сообщение или через любое информационное средство на любой адрес, предоставленные Компании Пользователем. Доступ Пользователя к Программе или Ее использование после даты, когда измененные условия доставлены Пользователю, считаются принятием данных измененных условий.
+
+**b. Разрыв.** Если какое-либо положение из часть положений настоящего Соглашения есть или становится недействительным, нелегальным или неосуществимым, оно считается модифицированным в той мере,в которой это минимально необходимо, чтобы сделать его действительным, легальным и осуществимым. Если такая модификация невозможна, соответствующее положение или части положения считаются удаленными. Любая модификация или удаление положения или части положений согласно настоящей Статьи не затрагивает законность и правомочность остальных частей положений настоящего Соглашения.
+
+**c. Полное соглашение – Отказ от ответственности.** Полное Соглашение – Отказ от доверия. Настоящее Соглашение представляет собой полное соглашение между Сторонами в отношении предмета настоящего Соглашения и заменяет все предыдущие соглашения или договоренности между сторонами. Пользователь четко заявляет и подтверждает, что он не полагается ни на какие заявления, договоренности, представления, ожидания или соглашения, отличные от тех, которые четко указаны в настоящем Соглашении.
+
+**d. НАСТОЯЩЕЕ СОГЛАШЕНИЕ ПОДЛЕЖИТ ОБЯЗАТЕЛЬНОМУ АРБИТРАЖУ.** Пользователь согласен, что любые и все споры и претензии в отношении любого лица, возникшие или каким-либо образом связанные с настоящим Соглашением или доступом, использованием или установкой Программы Пользователем или любым другим лицом подлежат обязательному арбитражному разбирательству в соответствии с Правилами Арбитражного регламента Международной торговой палаты одним или несколькими судьями, назначенными в соответствии с этими правилами. Местом проведения арбитража является Япония. Язык арбитража - английский.
+
+**e. Язык.** Любой перевод настоящего Соглашения предназначен только в целях местных ссылок, и в случае возникновения каких-либо несоответствий между английской и любыми не английскими версиями, английская версия настоящего Соглашения имеет преимущественную силу и регулирует во всех отношениях.
+
+**f. ПЕРЕВОДЫ.** Компания и ее команда стремятся предоставлять точные и надежные переводы, однако в процессе перевода могут быть ограничения и расхождения. Однако переводы выполняются автоматизированной системой или людьми-переводчиками, и могут быть случаи, когда значение и нюансы оригинального текста передаются не полностью или могут быть по-разному интерпретированы в переведенной версии.
+
+Переведенный контент программного обеспечения предоставляется исключительно для удобства и в информационных целях. В случае каких-либо расхождений или конфликтов между переведенной версией и оригинальным содержанием, оригинальная версия на языке оригинала (английском) имеет преимущественную силу и считается авторитетной.
+
+Переведенные версии программного обеспечения не должны рассматриваться как юридически обязательные или официальные. Любые юридические или договорные обязательства, положения или условия регулируются оригинальной версией на языке оригинала (английском). Если существуют особые юридические последствия или требования, рекомендуется ознакомиться с оригинальным содержанием или обратиться за профессиональной консультацией.
+
+Мы можем предоставлять переводы Программного обеспечения через автоматизированные системы или привлекать переводчиков через сообщество YOROI. В таких случаях мы не гарантируем точность, надежность или полноту переводов третьих лиц и не несем никакой ответственности за любые неточности, ошибки или пропуски в переведенном контенте.
+
+Пользователи, которые полагаются на переведенную версию документации нашего Программного обеспечения, делают это на свой страх и риск. Пользователь несет ответственность за оценку точности, надежности и пригодности переведенного контента для их предполагаемых целей. Мы рекомендуем пользователям обращаться к содержимому на языке оригинала или обращаться за помощью в случае сомнений.
+
+Переводы не всегда могут отражать самую актуальную информацию или обновления нашего программного обеспечения. Мы оставляем за собой право изменения, обновления или удаления переведенного контента без предварительного уведомления. Рекомендуется периодически просматривать исходный контент или связываться с нами для получения последней информации.
+
+Используя переведенные версии нашего программного обеспечения, вы признаете и принимаете ограничения и риски, связанные с переводами. Мы отказываемся от какой-либо ответственности за любые убытки, ущерб или неудобства, возникающие в результате использования переведенного контента. Для получения важной информации, точности и юридических вопросов мы рекомендуем ознакомиться с оригинальным контентом или связаться с нами напрямую.
+
+Если у вас есть какие-либо вопросы или опасения относительно точности или достоверности переведенного контента, пожалуйста, свяжитесь с нами для получения разъяснений.
+
+## 12. Делегирование и Стейкинг
+
+12.1 **Награды.** Сумма вознаграждений, которые пользователь может получить за делегирование, зависит от различных факторов, включая, но не ограничиваясь ими, участие пользователя, размер прибыли пула ставок и объем делегируемого ada. Возможно, что делегирование не приносит пользователю вознаграждения из-за вышеупомянутых факторов. Вознаграждения начисляются с начала 3-й эпохи в блокчейне Cardano.
+
+12.2 **Делегирование.** Пользователи могут делегировать свою долю в один из различных стейк пулов Компании или в стейк пул третьей стороны. Пользователь будет иметь исключительное право определять объем, который будет делегирован в стейк пул, и может увеличить или уменьшить свой уровень участия в любое время. Любая информация, которой делится компания относительно стейк пулов, включая показатели эффективности и вознаграждения, носит исключительно ориентировочный характер и может быть неточной. Пользователи могут делегировать свою долю в стейк пул только в том случае, если их ada находится в обновленном Daedalus или обновленном Yoroi кошельке на момент процесса настройки. Пользователь не приобретает никаких автоматических прав на получение вознаграждений в результате делегирования своей доли.
+
+12.3 **Стейк пулы Компании.** Компания будет управлять различными стейк пулами, которые будут видны в Yoroi. Стоимость, а также требования к сети и серверу для надежной работы таких стейк пулов определяются Компанией по ее собственному усмотрению. Компания сообщит процентную сумму вознаграждения, которая будет распределена между пользователями через пользовательский кошелек Yoroi. Вознаграждения будут начисляться в конце каждой эпохи и автоматически появятся в кошельке пользователя Yoroi.
+
+12.4 **Вывод Наград.** Пользователь несет ответственность за уплату всех применимых налогов, если таковые имеются, которыми могут облагаться Награды, а также любых других налогов, которые могут применяться к Пользователю после вывода Награды.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sk-SK.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sk-SK.md
new file mode 100644
index 0000000000..498829c974
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sk-SK.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sl-SI.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sl-SI.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/sl-SI.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sl-SI.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sl-SI.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sl-SI.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sv-SE.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sv-SE.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/sv-SE.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sv-SE.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/sv-SE.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sv-SE.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sw-KE.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sw-KE.md
new file mode 100644
index 0000000000..498829c974
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/sw-KE.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/tl-PH.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/tl-PH.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/tl-PH.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/tl-PH.md
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/tr-TR.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/tr-TR.md
new file mode 100644
index 0000000000..498829c974
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/tr-TR.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. Rights and Obligations
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/uk-UA.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/uk-UA.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/uk-UA.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/uk-UA.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/uk-UA.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/uk-UA.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/vi-VN.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/vi-VN.md
similarity index 74%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/vi-VN.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/vi-VN.md
index 73d9f28ce7..498829c974 100644
--- a/apps/wallet-mobile/src/Legal/TermsOfService/tos/vi-VN.md
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/vi-VN.md
@@ -1,13 +1,19 @@
# Terms of Service Agreement
-THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Co., Ltd. ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
## 1. Rights and Obligations
**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
-IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
@@ -40,7 +46,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 7. Limitation of Liability
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
## 8. Indemnification
@@ -49,16 +57,18 @@ User agrees to indemnify, hold harmless and defend the Company, its shareholders
## 9. Intellectual Property
-The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to, EMURGO Co., Ltd., EMURGO, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
## 10. Warnings
User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
@@ -74,3 +84,29 @@ By using the Software, User acknowledges and agrees: (i) that the Company is not
**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
**e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-CN.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-CN.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-CN.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-CN.md
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hans.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hans.md
new file mode 100644
index 0000000000..de07c1fe4f
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hans.md
@@ -0,0 +1,112 @@
+# 服务协议条款
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. 1. 权利与义务
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. 2. 税金和费用
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. 4. 禁止用途
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. 7. 责任限制
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. 10. 警告
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. 如发生分叉,用户同意,本公司可以(在通知或不通知用户的情况下)暂时中止本软件的运行,且本公司可以自行(a)配置或重新配置其系统或(b)决定完全不支援(或停止支援)分叉协议,但前提是用户有机会从本软件中取回资金。 用户认可并同意,本公司绝不就有关分叉协议的不受支援的分支承担任何责任。
+
+## 11. Miscellaneous
+
+**a.修订。 ** 本公司有权随时不经通知地增加或修改本协议的条款,仅通过向用户提供给本公司的任何地址发送借由任何媒介的电子信息,向用户交付该等修订后的条款。 User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b.可分性。 ** 如果本协议的任何条款或条款部分为或变为无效、违法或不可执行,则应视为在使其有效、合法且可执行所必要的最低限度内被修改。 如果该等修改是不可能的,则相关条款或条款部分应视为被删除。 本条规定的任何对条款或条款部分的修改或删除均不影响本协议的剩余部分的有效性和可执行性。
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. 用户明确声明与保证,其不会依赖本协议中明示规定的内容以外的任何表述、理解、声明、预期或协议。
+
+**d.本协议受限于有约束力的仲裁。 ** 用户同意,因本协议或用户或其他任何人对本软件的访问、使用或安装而引起的或与之有任何关联的针对任何人的任何争议或索赔,均应受限于由按照国际商会仲裁规则委派的一名或多名仲裁员根据该等仲裁规则做出的有约束力的仲裁。 仲裁地应为日本。 仲裁语言为英语。
+
+**e.语言。 ** 本协议的任何翻译均仅为本地参考之用,如果英文版本与非英文版本之间发生任何不一致,在任何情况下均应以本协议的英文版本为准并有约束力。
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hant.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hant.md
new file mode 100644
index 0000000000..326de4f871
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-Hant.md
@@ -0,0 +1,112 @@
+# Terms of Service Agreement
+
+THIS TERMS OF SERVICE AGREEMENT ("Agreement") is made between EMURGO Fintech Inc ("Company") and any person or entity ("User") who completes the process to download, utilize, or operate the software known as the Yoroi cryptocurrency Wallet application, and data processing service, application, communication service or other content or offered or provided with the software by the Company ("Software"). The Company and User are collectively referred to as the "Parties".
+
+BY CLICKING THE ACCEPTANCE BUTTON OR ACCESSING, USING OR INSTALLING ANY PART OF THE SOFTWARE, USER EXPRESSLY AGREES TO AND CONSENTS TO BE LEGALLY BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF USER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, THE USER SHALL NOT BE AUTHORIZED TO ACCESS, USE OR INSTALL ANY PART OF THE SOFTWARE.
+
+## 1. 1. 權利與義務
+
+**a. Description.** The Software functions as a free, open source, digital cryptocurrency wallet. The Software does not constitute an account by which the Company or any other third parties serve as financial intermediaries or custodians of User's ADA or any other cryptocurrency.
+
+While the Software has undergone beta testing and continues to be improved by feedback from the developers community, open-source contributors and beta-testers, the Company cannot guarantee that there will be no bugs in the Software. User acknowledges that User's use of the Software is at User's risk, discretion and in compliance with all applicable laws. User is responsible for safekeeping User's passwords, PINs, private keys, redemption keys, shielded vending keys, backup recovery mnemonic passphrases, ADA passcodes and any other codes User uses to access the Software or any information, ADA, voucher, or other cryptocurrency unit.
+
+IF USER LOSES ACCESS TO USER'S CRYPTOCURRENCY WALLET OR PRIVATE KEYS AND HAS NOT SEPARATELY STORED A BACKUP OF USER'S CRYPTOCURRENCY WALLET OR BACKUP RECOVERY MNEMONIC PHRASE(S) AND CORRESPONDING PASSWORD(S), USER ACKNOWLEDGES AND AGREES THAT ANY ADA OR ANY OTHER CRYPTOCURRENCIES USER HAS ASSOCIATED WITH THAT CRYPTOCURRENCY WALLET WILL BECOME INACCESSIBLE.
+
+All transaction requests are irreversible. The Company and its shareholders, directors, officers, employees, affiliates and agents cannot guarantee transaction confirmation or retrieve User's private keys or passwords if User loses or forgets them.
+
+
+**b. Accessibility.** User agrees that from time to time the Software may be inaccessible or inoperable for any reason, including, without limitation: (i) equipment malfunctions; (ii) periodic maintenance procedures or repairs which the Company may undertake from time to time; or (iii) causes beyond the control of the Company or which are not reasonably foreseeable by the Company.
+
+**c. Equipment.** User shall be solely responsible for providing, maintaining and ensuring compatibility with the Software, all hardware, software, electrical and other physical requirements for User's use of the Software, including, without limitation, telecommunications and internet access connections and links, web browsers or other equipment, programs and services required to access and use the Software.
+
+**d. Security.** User shall be solely responsible for the security, confidentiality and integrity of all information and content that User receives, transmits through or stores on the Software. User shall be solely responsible for any authorized or unauthorized access to any account of User by any person. User agrees to bear all responsibility for the confidentiality of User's security devices, information, keys, and passwords.
+
+**e. Privacy.** When reasonably practicable, the Company will attempt to respect User's privacy. The Company will not monitor, edit, or disclose any personal information about User or User's account, including its contents or User's use of the Software, without User's prior consent unless the Company believes in good faith that such action is necessary to: (i) comply with legal process or other legal requirements of any governmental authority; (ii) protect and defend the rights or property of the Company; (iii) enforce this Agreement; (iv) protect the interests of users of the Software other than User or any other person; or (v) operate or conduct maintenance and repair of the Company's services or equipment, including the Software as authorized by law. User has no expectation of privacy with respect to the Internet generally. User's IP address is transmitted and recorded with each message or other information User sends from the Software.
+
+## 2. 2. Taxes and Fees
+
+All currency conversion charges, third party fees, sales, use, value-added, personal property or other tax, duty or levy of any kind, including interest and penalties thereon, whether imposed now or hereinafter by any governmental entity, and fees incurred by User by reason of User's access, use or installation of the Software shall be the sole responsibility of User.
+
+## 3. 3. User Representations
+
+User represents and warrants to the Company that: (a) if User is a natural person, User is over the age of eighteen (18); (b) User has the power and authority to enter into and perform User's obligations under this Agreement; (c) all information provided by User to the Company is truthful, accurate and complete; (d) User will comply with all laws and regulations of any applicable jurisdiction with regard to User's access, use or installation of the Software; (e) User shall comply with all terms and conditions of this Agreement, including, without limitation, the provisions set forth at Section 4; and (f) User has provided and will provide accurate and complete information as required for access, use or installation of the Software.
+
+## 4. 4. Prohibited Uses
+
+User is solely responsible for any and all acts and omissions that occur under User's account, security information, keys or password, and User agrees not to engage in unacceptable use of the Software, which includes, without limitation, use of the Software to: (a) disseminate, store or transmit unsolicited messages, chain letters or unsolicited commercial email; (b) disseminate or transmit material that, to a reasonable person may be abusive, obscene, pornographic, defamatory, harassing, grossly offensive, vulgar, threatening or malicious; (c) disseminate, store or transmit files, graphics, software or other material that actually or potentially infringes the copyright, trademark, patent, trade secret or other intellectual property right of any person; (d) create a false identity or to otherwise attempt to mislead any person as to the identity or origin of any communication; (e) export, re-export or permit downloading of any message or content in violation of any export or import law, regulation or restriction of any applicable jurisdiction, or without all required approvals, licenses or exemptions; (f) interfere, disrupt or attempt to gain unauthorized access to other accounts on the Software or any other computer network; or (g) disseminate, store or transmit viruses, Trojan horses or any other malicious code or program.
+
+## 5. Termination Termination
+
+This Agreement is effective upon User's acceptance as set forth herein and shall continue in full force so long as User engages in any access, use or installation of the Software. The Company reserves the right, in its sole discretion and without notice, at any time and for any reason, to: (a) remove or disable access to all or any portion of the Software; (b) suspend User's access to or use of all or any portion of the Software; and (c) terminate this Agreement.
+
+## 6. 6. Disclaimer of Warranties
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE OF THE SOFTWARE IS AT USER'S SOLE RISK. THE COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE, NOR DOES THE COMPANY MAKE ANY WARRANTY AS TO ANY RESULTS THAT MAY BE OBTAINED BY USE OF THE SOFTWARE. THE COMPANY MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED. THE COMPANY EXPRESSLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, WARRANTY OF SUITABILITY FOR A PARTICULAR PURPOSE, WARRANTY OF TITLE OR INTEREST, OR WARRANTY OF NONINFRINGEMENT.
+
+## 7. 7. Limitation of Liability
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE TO USER OR ANY THIRD PARTY FOR ANY USE, INTERRUPTION, DELAY OR INABILITY TO USE THE SOFTWARE, LOST REVENUES OR PROFITS, DELAYS, INTERRUPTION OR LOSS OF SERVICES, BUSINESS OR GOODWILL, LOSS OR CORRUPTION OF DATA, LOSS RESULTING FROM SYSTEM OR SYSTEM SERVICE FAILURE, MALFUNCTION OR SHUTDOWN, FAILURE TO ACCURATELY TRANSFER, READ OR TRANSMIT INFORMATION, FAILURE TO UPDATE OR PROVIDE CORRECT INFORMATION, SYSTEM INCOMPATIBILITY OR PROVISION OF INCORRECT COMPATIBILITY INFORMATION OR BREACHES IN SYSTEM SECURITY, OR FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, EXEMPLARY, SPECIAL OR PUNITIVE DAMAGES, WHETHER ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE, REGARDLESS OF WHETHER SUCH DAMAGES WERE FORESEEABLE AND WHETHER OR NOT WE WERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+IN NO EVENT SHALL THE COMPANY OR ITS SHAREHOLDERS, DIRECTORS, OFFICERS, EMPLOYEES, AFFILIATES OR AGENTS, OR ANY OF ITS OR THEIR RESPECTIVE SERVICE PROVIDERS, BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR IN ANY WAY RELATED TO USER'S ACCESS, USE OR INSTALLATION OF THE SOFTWARE.
+
+SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, THUS THIS LIMITATION OF LIABILITY MAY NOT APPLY TO USER. IF USER IS DISSATISFIED WITH THE SOFTWARE, USER'S SOLE AND EXCLUSIVE REMEDY SHALL BE FOR USER TO DISCONTINUE USE OF THE SOFTWARE.
+
+## 8. 8. Indemnification
+
+User agrees to indemnify, hold harmless and defend the Company, its shareholders, directors, officers, employees, affiliates and agents ("Indemnified Parties") from and against any action, cause, claim, damage, debt, demand or liability, including reasonable costs and attorney's fees, asserted by any person, arising out of or relating to: (a) this Agreement; (b) User's access, use or installation of the Software, including any data or work transmitted or received by User; and (c) any unacceptable use of the Software by any person, including, without limitation, any statement, data or content made, transmitted or republished by User or any person which is prohibited as unacceptable under Section 4. THIS INDEMNIFICATION INCLUDES THE EXPRESS INDEMNIFICATION OF THE COMPANY AND ALL INDEMNIFIED PARTIES FOR ANY ALLEGED NEGLIGENCE (INCLUDING ANY ALLEGED GROSS NEGLIGENCE). OR OTHER ALLEGED MISCONDUCT OF THE COMPANY OR ANY INDEMNIFIED PARTIES.
+
+## 9. 9. Intellectual Property
+
+The Company retains all right, title, and interest in and to all of the Company's brands, logos, and trademarks, including, but not limited to EMURGO,, Yoroi, Yoroi Cryptocurrency Wallet, Yoroi Wallet, Yoroi App, and variations of the wording of the aforementioned brands, logos, and trademarks.
+
+## 10. 10. Warnings
+
+User acknowledges that the Company shall not be responsible for transferring, safeguarding, or maintaining private keys and/or User's ADA or any other cryptocurrency. If User and/or any co-signing authorities lose, mishandle, or have stolen associated private keys, or if User's cosigners refuse to provide requisite authority, User acknowledges that User may not be able to recover User's ADA or any other cryptocurrency, and that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that ADA or any other cryptocurrency transactions facilitated by the Software and/or the Company may be delayed, and that the Company shall not be responsible for any associated loss.
+
+User acknowledges and agrees that the Company shall not be responsible for any aspect of the information, content, or services contained in any third-party materials or on any third party sites accessible or linked to the Software and/or the Company.
+
+User agrees that User should never share User's certificate with any natural or legal person, including the Company, Cardano Foundation, Input Output HK Limited, or any other entity. Further, User acknowledges that sharing User's certificate may result in loss of User's ADA or any other cryptocurrency, and User agrees that the Company shall not be responsible for such loss.
+
+User acknowledges and agrees that by redeeming ADA in the testnet, User redeems test-ADA only, and that in order to redeem actual ADA, User must repeat the procedure in the mainnet, once released.
+
+By using the Software, User acknowledges and agrees: (i) that the Company is not responsible for the operation of the underlying protocols and that the Company makes no guarantee of their functionality, security, or availability; and (ii) that the underlying protocols are subject to sudden main-chain changes in operating rules ("forks"), and that such forks may materially affect the value, and/or function of the ADA or any other cryptocurrency that User stores on the Software. In the event of a fork, User agrees that the Company may temporarily suspend the Software operations (with or without notice to User) and that the Company may, in its sole discretion, (a) configure or reconfigure its systems or (b) decide not to support (or cease supporting) the forked protocol entirely, provided, however, that User will have an opportunity to withdraw funds from the Software. User acknowledges and agrees that the Company assumes absolutely no responsibility whatsoever in respect of an unsupported branch of a forked protocol.
+
+## 11. 11. Miscellaneous
+
+**a. Amendment.** The Company shall have the right, at any time and without notice, to add to or modify the terms of this Agreement, simply by delivering such amended terms to User by electronic message through any medium to any address provided to the Company by User. User's access to or use of the Software after the date such amended terms are delivered to User shall be deemed to constitute acceptance of such amended terms.
+
+**b. Severance.** If any provision or part-provision of this Agreement is, or becomes invalid, illegal or unenforceable, it shall be deemed modified to the minimum extent necessary to make it valid, legal and enforceable. If such modification is not possible, the relevant provision or part-provision shall be deemed deleted. Any modification to or deletion of a provision or part-provision under this Article shall not affect the validity and enforceability of the rest of this Agreement.
+
+**c. Entire Agreement – Disclaimer of Reliance**. This Agreement constitutes the entire agreement between the Parties with respect to the subject matter hereof and supersedes all prior agreements or understandings between the Parties. User expressly represents and warrants that it is not relying upon any statements, understandings, representations, expectations or agreements other than those expressly set forth in this Agreement.
+
+**d. THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION.** User agrees that any and all disputes or claims against any person arising out of or in any way related to this Agreement or the access, use or installation of the Software by User or any other person shall be subject to binding arbitration under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with the said Rules. The location of the arbitration shall be Japan. The language of the arbitration shall be English.
+
+**e. **e. LANGUAGE.** Any translation of this Agreement is made for purposes of local reference only and in the event of any inconsistency between the English and any non-English versions, the English version of this Agreement shall prevail and govern in all respects.
+
+**f. TRANSLATIONS.** The Company and its team strives to provide accurate and reliable translations, there may be limitations and discrepancies inherent to the translation process. However, translations are provided by an automated system or human translators, and there may be instances where the meaning and nuance of the original text are not fully captured or may be interpreted differently in the translated version.
+
+The translated content on the Software is provided for convenience and informational purposes only. In the event of any discrepancies or conflicts between the translated version and the original content, the original version in the source language (English) shall prevail and be considered authoritative.
+
+Translated versions of the Software should not be regarded as legally binding or official. Any legal or contractual obligations, terms, or conditions are governed by the original version in the source language (English). If there are specific legal implications or requirements, it is advisable to consult the original content or seek professional advice.
+
+We may provide translations on the Software through automated systems or engage translators through the YOROI community . In such cases, we do not guarantee the accuracy, reliability, or completeness of third-party translations, and we do not assume any responsibility for any inaccuracies, errors, or omissions in the translated content.
+
+Users who rely on translated versions of documentation on our Software do so at their own risk. It is the user's responsibility to assess the accuracy, reliability, and suitability of the translated content for their intended purposes. We encourage users to refer to the original source language content or seek assistance when in doubt.
+
+Translations may not always reflect the most current information or updates on our Software. We reserve the right to modify, update, or remove translated content without prior notice. It is advisable to periodically visit the original content or contact us for the latest information.
+
+By using the translated versions of our Software you acknowledge and accept the limitations and risks associated with translations. We disclaim any liability for any losses, damages, or inconveniences arising from the use of translated content. For critical information, accuracy, and legal matters, we recommend consulting the original content or contacting us directly.
+
+If you have any questions or concerns regarding the accuracy or reliability of the translated content, please contact us for clarification.
+
+## 12. Delegation and Staking
+
+12.1 **Rewards.** The amount of Rewards a User may earn from delegation depends on various factors including, but not limited to, user participation, stakepool profit margins and the volume of ada being delegated. It is possible that delegation generates no Reward for a User due to the above-mentioned factors. Rewards are earned as of the start of the 3rd epoch on the Cardano blockchain.
+
+12.2 **Delegation.** Users may delegate their stake to one of the various stake pools of the Company or to a third party stake pool. User will have the sole right to determine the volume to be delegated to a stake pool and may increase or decrease its level of participation at any time. Any information Company shares regarding stakepools, including performance metrics and Rewards, will be for indicative purposes only and may not be accurate. Users may only delegate their stake to a stake pool if their ada is in an updated Daedalus or an updated Yoroi wallet at the time of the setup process. User does not acquire any automatic right to Rewards as a result of delegating its stake.
+
+12.3 **Company Stake-Pools.** The Company will operate various stake pools which will be visible in Yoroi. The cost and network and server requirements to reliably operate such stake pools shall be determined by the Company in its sole discretion. Company will communicate the percentage amount of Reward to be shared with Users through the User’s Yoroi wallet. Rewards will accrue at the end of each epoch and will automatically appear in the User’s Yoroi wallet.
+
+12.4 **Redeeming Rewards.** User shall be responsible for payment of all applicable taxes, if any, to which the Rewards might be subject and any and all other taxes which may apply to User once Rewards are redeemed.
diff --git a/apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-TW.md b/apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-TW.md
similarity index 100%
rename from apps/wallet-mobile/src/Legal/TermsOfService/tos/zh-TW.md
rename to apps/wallet-mobile/src/features/Legal/TermsOfService/tos/zh-TW.md
diff --git a/apps/wallet-mobile/src/features/Links/common/useDeepLinkWatcher.tsx b/apps/wallet-mobile/src/features/Links/common/useDeepLinkWatcher.tsx
index 7ed597f6f7..bfa9e6688d 100644
--- a/apps/wallet-mobile/src/features/Links/common/useDeepLinkWatcher.tsx
+++ b/apps/wallet-mobile/src/features/Links/common/useDeepLinkWatcher.tsx
@@ -2,7 +2,7 @@ import {linksYoroiParser, useLinks} from '@yoroi/links'
import * as React from 'react'
import {Linking} from 'react-native'
-import {Logger} from '../../../yoroi-wallets/logging'
+import {logger} from '../../../kernel/logger/logger'
export const useDeepLinkWatcher = () => {
const {actionStarted} = useLinks()
@@ -11,15 +11,15 @@ export const useDeepLinkWatcher = () => {
(url: string) => {
const parsedAction = linksYoroiParser(url)
if (parsedAction == null) {
- Logger.debug('useDeepLinksWatcher :: link is malformated, ignoring...')
+ logger.debug('useDeepLinkWatcher: link is malformated, ignored')
return
}
if (parsedAction.params?.isSandbox === true && __DEV__ === false) {
- Logger.debug('useDeepLinksWatcher :: link is sandboxed, ignoring...')
+ logger.debug('useDeepLinkWatcher: link is sandboxed, ignored')
return
}
// TODO: implement isTrusted if signature was provided and doesn't match with authorization ignore it
- Logger.debug('parsedAction', JSON.stringify(parsedAction, null, 2))
+ logger.debug('useDeepLinkWatcher: parsedAction', {parsedAction})
actionStarted({info: parsedAction, isTrusted: false})
},
[actionStarted],
diff --git a/apps/wallet-mobile/src/features/Links/common/useLinksRequestAction.tsx b/apps/wallet-mobile/src/features/Links/common/useLinksRequestAction.tsx
index 8a4b955199..7f019a17d7 100644
--- a/apps/wallet-mobile/src/features/Links/common/useLinksRequestAction.tsx
+++ b/apps/wallet-mobile/src/features/Links/common/useLinksRequestAction.tsx
@@ -6,7 +6,7 @@ import * as React from 'react'
import {InteractionManager} from 'react-native'
import {useModal} from '../../../components/Modal/ModalContext'
-import {Logger} from '../../../yoroi-wallets/logging'
+import {logger} from '../../../kernel/logger/logger'
import {useSelectedWalletContext} from '../../WalletManager/context/SelectedWalletContext'
import {RequestedAdaPaymentWithLinkScreen} from '../useCases/RequestedAdaPaymentWithLinkScreen/RequestedAdaPaymentWithLinkScreen'
import {useNavigateTo} from './useNavigationTo'
@@ -23,7 +23,7 @@ export const useLinksRequestAction = () => {
const {memoChanged, receiverResolveChanged, amountChanged, reset, linkActionChanged} = useTransfer()
const startTransferWithLink = React.useCallback(
(action: Links.YoroiAction, decimals: number) => {
- Logger.debug('startTransferWithLink', action, decimals)
+ logger.debug('useLinksRequestAction: startTransferWithLink', {action, decimals})
if (action.info.useCase === 'request/ada-with-link') {
reset()
try {
@@ -51,7 +51,7 @@ export const useLinksRequestAction = () => {
// TODO: revisit it should display an alert
closeModal()
actionFinished()
- Logger.error('Error parsing Cardano link', error)
+ logger.error('Error parsing Cardano link', {error})
}
}
},
diff --git a/apps/wallet-mobile/src/features/Links/common/useNavigationTo.tsx b/apps/wallet-mobile/src/features/Links/common/useNavigationTo.tsx
index 7eeffa6c27..4355ff7e6a 100644
--- a/apps/wallet-mobile/src/features/Links/common/useNavigationTo.tsx
+++ b/apps/wallet-mobile/src/features/Links/common/useNavigationTo.tsx
@@ -1,6 +1,6 @@
import * as React from 'react'
-import {useWalletNavigation} from '../../../navigation'
+import {useWalletNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const walletNavigation = useWalletNavigation()
diff --git a/apps/wallet-mobile/src/features/Links/common/useStrings.ts b/apps/wallet-mobile/src/features/Links/common/useStrings.ts
index 82faa31d35..7a64d63af0 100644
--- a/apps/wallet-mobile/src/features/Links/common/useStrings.ts
+++ b/apps/wallet-mobile/src/features/Links/common/useStrings.ts
@@ -1,7 +1,7 @@
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages from '../../../i18n/global-messages'
+import globalMessages from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Menu/Menu.tsx b/apps/wallet-mobile/src/features/Menu/Menu.tsx
index 1c05b82bd2..7b6cd03fb4 100644
--- a/apps/wallet-mobile/src/features/Menu/Menu.tsx
+++ b/apps/wallet-mobile/src/features/Menu/Menu.tsx
@@ -11,9 +11,9 @@ import {useCanVote} from '../../Catalyst/hooks'
import {InsufficientFundsModal} from '../../Catalyst/InsufficientFundsModal'
import {Boundary, Icon, Spacer, Text} from '../../components'
import {usePrefetchStakingInfo} from '../../Dashboard/StakePoolInfos'
-import {CONFIG} from '../../legacy/config'
-import {useMetrics} from '../../metrics/metricsManager'
-import {defaultStackNavigationOptions, useWalletNavigation} from '../../navigation'
+import {dappExplorerEnabled} from '../../kernel/config'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
+import {defaultStackNavigationOptions, useWalletNavigation} from '../../kernel/navigation'
import {usePoolTransition} from '../../Staking/PoolTransition/usePoolTransition'
import {useIsGovernanceFeatureEnabled} from '../Staking/Governance'
import {useSelectedWallet} from '../WalletManager/context/SelectedWalletContext'
@@ -62,7 +62,7 @@ export const Menu = () => {
left={}
/>
- {CONFIG.DAPP_EXPLORER_ENABLED && (
+ {dappExplorerEnabled && (
{
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Receive/useCases/DescribeSelectedAddressScreen.tsx b/apps/wallet-mobile/src/features/Receive/useCases/DescribeSelectedAddressScreen.tsx
index 5e9ce0793f..0cff534ed7 100644
--- a/apps/wallet-mobile/src/features/Receive/useCases/DescribeSelectedAddressScreen.tsx
+++ b/apps/wallet-mobile/src/features/Receive/useCases/DescribeSelectedAddressScreen.tsx
@@ -6,8 +6,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import Icon from '../../../assets/img/copy.png'
import {Button, Spacer, useModal} from '../../../components'
+import {useMetrics} from '../../../kernel/metrics/metricsManager'
import {useCopy} from '../../../legacy/useCopy'
-import {useMetrics} from '../../../metrics/metricsManager'
import {isEmptyString} from '../../../utils'
import {AddressMode} from '../../WalletManager/common/types'
import {useAddressModeManager} from '../../WalletManager/common/useAddressModeManager'
diff --git a/apps/wallet-mobile/src/features/Receive/useCases/ListMultipleAddressesScreen.tsx b/apps/wallet-mobile/src/features/Receive/useCases/ListMultipleAddressesScreen.tsx
index d339b7b74e..26c31ee13c 100644
--- a/apps/wallet-mobile/src/features/Receive/useCases/ListMultipleAddressesScreen.tsx
+++ b/apps/wallet-mobile/src/features/Receive/useCases/ListMultipleAddressesScreen.tsx
@@ -15,7 +15,7 @@ import Animated, {Layout} from 'react-native-reanimated'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Spacer} from '../../../components'
-import {useMetrics} from '../../../metrics/metricsManager'
+import {useMetrics} from '../../../kernel/metrics/metricsManager'
import {useAddressModeManager} from '../../WalletManager/common/useAddressModeManager'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
import {BIP32_HD_GAP_LIMIT} from '../common/contants'
diff --git a/apps/wallet-mobile/src/features/Receive/useCases/RequestSpecificAmountScreen.tsx b/apps/wallet-mobile/src/features/Receive/useCases/RequestSpecificAmountScreen.tsx
index 005fc3c20c..43554962f3 100644
--- a/apps/wallet-mobile/src/features/Receive/useCases/RequestSpecificAmountScreen.tsx
+++ b/apps/wallet-mobile/src/features/Receive/useCases/RequestSpecificAmountScreen.tsx
@@ -15,8 +15,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, KeyboardAvoidingView, Spacer, TextInput, useModal} from '../../../components'
import {ScrollView, useScrollView} from '../../../components/ScrollView/ScrollView'
+import {useMetrics} from '../../../kernel/metrics/metricsManager'
import {useCopy} from '../../../legacy/useCopy'
-import {useMetrics} from '../../../metrics/metricsManager'
import {isEmptyString} from '../../../utils'
import {editedFormatter} from '../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Scan/common/useNavigateTo.tsx b/apps/wallet-mobile/src/features/Scan/common/useNavigateTo.tsx
index b1724ac96b..32ef90881e 100644
--- a/apps/wallet-mobile/src/features/Scan/common/useNavigateTo.tsx
+++ b/apps/wallet-mobile/src/features/Scan/common/useNavigateTo.tsx
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {TxHistoryRouteNavigation, useWalletNavigation} from '../../../navigation'
+import {TxHistoryRouteNavigation, useWalletNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Scan/common/useStrings.tsx b/apps/wallet-mobile/src/features/Scan/common/useStrings.tsx
index 77044d69c5..d7254ae0ba 100644
--- a/apps/wallet-mobile/src/features/Scan/common/useStrings.tsx
+++ b/apps/wallet-mobile/src/features/Scan/common/useStrings.tsx
@@ -1,7 +1,7 @@
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages from '../../../i18n/global-messages'
+import globalMessages from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Scan/useCases/ScanCodeScreen.tsx b/apps/wallet-mobile/src/features/Scan/useCases/ScanCodeScreen.tsx
index 35ee7ff514..4faf865ec5 100644
--- a/apps/wallet-mobile/src/features/Scan/useCases/ScanCodeScreen.tsx
+++ b/apps/wallet-mobile/src/features/Scan/useCases/ScanCodeScreen.tsx
@@ -5,7 +5,7 @@ import {Alert, AlertButton} from 'react-native'
import {z} from 'zod'
import {CameraCodeScanner, CameraCodeScannerMethods} from '../../../components/CameraCodeScanner/CameraCodeScanner'
-import {ScanRoutes, useParams} from '../../../navigation'
+import {ScanRoutes, useParams} from '../../../kernel/navigation'
import * as feedback from '../../../utils/feedback'
import {parseScanAction} from '../common/parsers'
import {useNavigateTo} from '../common/useNavigateTo'
diff --git a/apps/wallet-mobile/src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.tsx b/apps/wallet-mobile/src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.tsx
index af3235dc25..5917e7114b 100644
--- a/apps/wallet-mobile/src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.tsx
+++ b/apps/wallet-mobile/src/features/Scan/useCases/ShowCameraPermissionDeniedScreen/ShowCameraPermissionDeniedScreen.tsx
@@ -4,7 +4,7 @@ import {ScrollView, StyleSheet, View, ViewProps} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Spacer, Text} from '../../../../components'
-import {useBlockGoBack, useWalletNavigation} from '../../../../navigation'
+import {useBlockGoBack, useWalletNavigation} from '../../../../kernel/navigation'
import {useStrings} from '../../common/useStrings'
import {CameraPermissionDeniedIllustration} from '../../illustrations/CameraPermissionDeniedIlustration'
import {OpenDeviceAppSettingsButton} from './OpenDeviceAppSettingsButton'
diff --git a/apps/wallet-mobile/src/features/Send/common/constants.ts b/apps/wallet-mobile/src/features/Send/common/constants.ts
index 26052c2a1a..608356dd00 100644
--- a/apps/wallet-mobile/src/features/Send/common/constants.ts
+++ b/apps/wallet-mobile/src/features/Send/common/constants.ts
@@ -1 +1,2 @@
export const memoMaxLenght = 256
+export const limitOfSecondaryAmountsPerTx = 10
diff --git a/apps/wallet-mobile/src/features/Send/common/navigation.ts b/apps/wallet-mobile/src/features/Send/common/navigation.ts
index d1ed9ef72f..aaf733d819 100644
--- a/apps/wallet-mobile/src/features/Send/common/navigation.ts
+++ b/apps/wallet-mobile/src/features/Send/common/navigation.ts
@@ -1,8 +1,12 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {AppRouteNavigation, TxHistoryRouteNavigation, TxHistoryRoutes} from '../../../navigation'
-import {useOverridePreviousRoute} from '../../../utils/navigation'
+import {
+ AppRouteNavigation,
+ TxHistoryRouteNavigation,
+ TxHistoryRoutes,
+ useOverridePreviousRoute,
+} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Send/common/strings.tsx b/apps/wallet-mobile/src/features/Send/common/strings.tsx
index 1cc6123042..765c3fb790 100644
--- a/apps/wallet-mobile/src/features/Send/common/strings.tsx
+++ b/apps/wallet-mobile/src/features/Send/common/strings.tsx
@@ -1,7 +1,7 @@
import {ReactNode} from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages, {confirmationMessages, txLabels} from '../../../i18n/global-messages'
+import globalMessages, {confirmationMessages, txLabels} from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.tsx
index 5df3c53c84..40c243f773 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/ConfirmTxScreen.tsx
@@ -9,9 +9,9 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {KeyboardAvoidingView, Spacer, ValidatedTextInput} from '../../../../components'
import {ConfirmTx} from '../../../../components/ConfirmTx'
-import globalMessages, {confirmationMessages, errorMessages, txLabels} from '../../../../i18n/global-messages'
-import {assetsToSendProperties} from '../../../../metrics/helpers'
-import {useMetrics} from '../../../../metrics/metricsManager'
+import globalMessages, {confirmationMessages, errorMessages, txLabels} from '../../../../kernel/i18n/global-messages'
+import {assetsToSendProperties} from '../../../../kernel/metrics/helpers'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useSaveMemo} from '../../../../yoroi-wallets/hooks'
import {YoroiSignedTx} from '../../../../yoroi-wallets/types'
import {debugWalletInfo, features} from '../../..'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.tsx
index 9923de9f5e..503519d33b 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/FailedTx/FailedTxScreen.tsx
@@ -3,7 +3,7 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../../components'
-import {useBlockGoBack} from '../../../../../navigation'
+import {useBlockGoBack} from '../../../../../kernel/navigation'
import {useNavigateTo} from '../../../common/navigation'
import {useStrings} from '../../../common/strings'
import {FailedTxImage} from './FailedTxImage'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
index 74db55eb3d..13690fe254 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
@@ -4,7 +4,7 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../../components'
-import {useBlockGoBack, useWalletNavigation} from '../../../../../navigation'
+import {useBlockGoBack, useWalletNavigation} from '../../../../../kernel/navigation'
import {useLinksRequestRedirect} from '../../../../Links/common/useLinksRequestRedirect'
import {useStrings} from '../../../common/strings'
import {SubmittedTxImage} from './SubmittedTxImage'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/BalanceAfter.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/BalanceAfter.tsx
index 134a273551..8dc4f83f46 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/BalanceAfter.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/BalanceAfter.tsx
@@ -2,7 +2,7 @@ import * as React from 'react'
import {useIntl} from 'react-intl'
import {Text} from '../../../../../components/Text'
-import {txLabels} from '../../../../../i18n/global-messages'
+import {txLabels} from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {useBalances} from '../../../../../yoroi-wallets/hooks'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/Fees.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/Fees.tsx
index d0e354596d..ac3fca7a00 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/Fees.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/Fees.tsx
@@ -2,7 +2,7 @@ import * as React from 'react'
import {useIntl} from 'react-intl'
import {Text} from '../../../../../components/Text'
-import {txLabels} from '../../../../../i18n/global-messages'
+import {txLabels} from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
import {Amounts} from '../../../../../yoroi-wallets/utils/utils'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/PrimaryTotal.tsx b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/PrimaryTotal.tsx
index 138efbef10..3154c6568b 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/PrimaryTotal.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ConfirmTx/Summary/PrimaryTotal.tsx
@@ -4,7 +4,7 @@ import {useIntl} from 'react-intl'
import {StyleSheet} from 'react-native'
import {Text} from '../../../../../components/Text'
-import globalMessages from '../../../../../i18n/global-messages'
+import globalMessages from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
import {Amounts} from '../../../../../yoroi-wallets/utils/utils'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/SelectTokenFromListScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/SelectTokenFromListScreen.tsx
index e57e688003..3b474f30f1 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/SelectTokenFromListScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/SelectTokenFromListScreen.tsx
@@ -8,14 +8,14 @@ import React from 'react'
import {Alert, StyleSheet, TouchableOpacity, View} from 'react-native'
import {Spacer, Text} from '../../../../../components'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {TxHistoryRouteNavigation} from '../../../../../navigation'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {TxHistoryRouteNavigation} from '../../../../../kernel/navigation'
import {useSearch, useSearchOnNavBar} from '../../../../../Search/SearchContext'
-import {limitOfSecondaryAmountsPerTx} from '../../../../../yoroi-wallets/contants'
import {usePortfolioBalances} from '../../../../Portfolio/common/hooks/usePortfolioBalances'
import {MediaGallery} from '../../../../Portfolio/common/MediaGallery/MediaGallery'
import {TokenAmountItem} from '../../../../Portfolio/common/TokenAmountItem/TokenAmountItem'
import {useSelectedWallet} from '../../../../WalletManager/context/SelectedWalletContext'
+import {limitOfSecondaryAmountsPerTx} from '../../../common/constants'
import {useOverridePreviousSendTxRoute} from '../../../common/navigation'
import {NoAssetFoundImage} from '../../../common/NoAssetFoundImage'
import {useStrings} from '../../../common/strings'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.tsx b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.tsx
index 31219cdfd3..a9ec4ec1b3 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.tsx
@@ -3,8 +3,8 @@ import {defineMessages, useIntl} from 'react-intl'
import {Text} from 'react-native'
import {ErrorPanel} from '../../../../../../components/ErrorPanel/ErrorPanel'
-import globalMessages from '../../../../../../i18n/global-messages'
-import {limitOfSecondaryAmountsPerTx} from '../../../../../../yoroi-wallets/contants'
+import globalMessages from '../../../../../../kernel/i18n/global-messages'
+import {limitOfSecondaryAmountsPerTx} from '../../../../common/constants'
export const MaxAmountsPerTx = () => {
const strings = useStrings()
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.tsx
index 16e985c028..ca387c6dee 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/EditAmount/EditAmountScreen.tsx
@@ -7,8 +7,8 @@ import {ScrollView, StyleSheet, Text, TouchableOpacity, View, ViewProps} from 'r
import {Button, KeyboardAvoidingView, Spacer, TextInput} from '../../../../../components'
import {PairedBalance} from '../../../../../components/PairedBalance/PairedBalance'
-import {useLanguage} from '../../../../../i18n'
-import {Logger} from '../../../../../yoroi-wallets/logging'
+import {useLanguage} from '../../../../../kernel/i18n'
+import {logger} from '../../../../../kernel/logger/logger'
import {editedFormatter, pastedFormatter} from '../../../../../yoroi-wallets/utils'
import {usePortfolioBalances} from '../../../../Portfolio/common/hooks/usePortfolioBalances'
import {usePortfolioPrimaryBreakdown} from '../../../../Portfolio/common/hooks/usePortfolioPrimaryBreakdown'
@@ -65,7 +65,7 @@ export const EditAmountScreen = () => {
setInputValue(newInputValue)
setQuantity(newQuantity)
} catch (error) {
- Logger.error('EditAmountScreen::onChangeQuantity', error)
+ logger.error('EditAmountScreen: handleOnChangeQuantity error parsing input', {error})
}
},
[amount.info.decimals, numberLocale],
diff --git a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.tsx
index 4ee8036dc3..040721d4a5 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.tsx
@@ -11,9 +11,9 @@ import {FlatList} from 'react-native-gesture-handler'
import {useMutation} from 'react-query'
import {Boundary, Button, Icon, Spacer} from '../../../../components'
-import globalMessages from '../../../../i18n/global-messages'
-import {assetsToSendProperties} from '../../../../metrics/helpers'
-import {useMetrics} from '../../../../metrics/metricsManager'
+import globalMessages from '../../../../kernel/i18n/global-messages'
+import {assetsToSendProperties} from '../../../../kernel/metrics/helpers'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useSearch} from '../../../../Search/SearchContext'
import {YoroiEntry} from '../../../../yoroi-wallets/types'
import {TokenAmountItem} from '../../../Portfolio/common/TokenAmountItem/TokenAmountItem'
diff --git a/apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.tsx b/apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.tsx
index e8760126a9..756af2e6e2 100644
--- a/apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Send/useCases/StartMultiTokenTx/StartMultiTokenTxScreen.tsx
@@ -7,7 +7,7 @@ import {StyleSheet, View, ViewProps} from 'react-native'
import {Button, KeyboardAvoidingView, Spacer} from '../../../../components'
import {ScrollView, useScrollView} from '../../../../components/ScrollView/ScrollView'
-import {useMetrics} from '../../../../metrics/metricsManager'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useHasPendingTx, useIsOnline} from '../../../../yoroi-wallets/hooks'
import {useSelectedWallet} from '../../../WalletManager/context/SelectedWalletContext'
import {memoMaxLenght} from '../../common/constants'
diff --git a/apps/wallet-mobile/src/features/Settings/About/About.tsx b/apps/wallet-mobile/src/features/Settings/About/About.tsx
index f11029701a..f5bb9395bc 100644
--- a/apps/wallet-mobile/src/features/Settings/About/About.tsx
+++ b/apps/wallet-mobile/src/features/Settings/About/About.tsx
@@ -1,21 +1,21 @@
+import {useNavigation} from '@react-navigation/native'
import {useTheme} from '@yoroi/theme'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {StyleSheet, TextProps, View, ViewProps} from 'react-native'
-import DeviceInfo from 'react-native-device-info'
+import {Pressable, StyleSheet, TextProps, View, ViewProps} from 'react-native'
import {Text} from '../../../components'
-import {CONFIG} from '../../../legacy/config'
-import {lightPalette} from '../../../theme'
+import {appInfo} from '../../../kernel/appInfo'
+import {commit} from '../../../kernel/env'
+import {SettingsRouteNavigation} from '../../../kernel/navigation'
import {getNetworkConfigById} from '../../../yoroi-wallets/cardano/networks'
import {isHaskellShelley} from '../../../yoroi-wallets/cardano/utils'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
-const version = DeviceInfo.getVersion()
-
export const About = () => {
const strings = useStrings()
const styles = useStyles()
+ const navigation = useNavigation()
const wallet = useSelectedWallet()
const network = getNetworkConfigById(wallet.networkId).MARKETING_NAME
@@ -26,13 +26,15 @@ export const About = () => {
{strings.currentVersion}
- {version}
+ navigation.navigate('settings-system-log')}>
+ {appInfo.version}
+ {strings.commit}
- {CONFIG.COMMIT}
+ {commit}
@@ -80,19 +82,19 @@ const useStyles = () => {
about: {
flex: 1,
backgroundColor: color.gray_cmin,
- padding: 16,
+ ...atoms.p_lg,
},
row: {
flexDirection: 'row',
justifyContent: 'space-between',
- paddingVertical: 16,
+ ...atoms.py_lg,
},
labelText: {
color: color.gray_c900,
...atoms.body_1_lg_medium,
},
valueText: {
- color: lightPalette.gray['500'],
+ color: color.gray_c500,
...atoms.body_1_lg_regular,
},
})
diff --git a/apps/wallet-mobile/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx b/apps/wallet-mobile/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx
index 224ae22cdf..39591e6c32 100644
--- a/apps/wallet-mobile/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx
@@ -6,13 +6,12 @@ import {Platform, ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Icon, Spacer} from '../../../components'
-import {useLanguage} from '../../../i18n'
-import {themeNames} from '../../../i18n/global-messages'
-import {defaultLanguage} from '../../../i18n/languages'
-import {CONFIG, isNightly, isProduction} from '../../../legacy/config'
-import {lightPalette} from '../../../theme'
-import {useAuthSetting, useAuthWithOs, useIsAuthOsSupported} from '../../../yoroi-wallets/auth'
+import {isNightly, isProduction} from '../../../kernel/env'
+import {useLanguage} from '../../../kernel/i18n'
+import {themeNames} from '../../../kernel/i18n/global-messages'
+import {defaultLanguage} from '../../../kernel/i18n/languages'
import {useCrashReports} from '../../../yoroi-wallets/hooks'
+import {useAuthSetting, useAuthWithOs, useIsAuthOsSupported} from '../../Auth/common/hooks'
import {usePrivacyMode} from '../../Settings/PrivacyMode/PrivacyMode'
import {useNavigateTo} from '../common/navigation'
import {SettingsSwitch} from '../common/SettingsSwitch'
@@ -20,14 +19,9 @@ import {useCurrencyContext} from '../Currency'
import {useChangeScreenShareSetting, useScreenShareSettingEnabled} from '../ScreenShare'
import {NavigatedSettingsItem, SettingsItem, SettingsSection} from '../SettingsItems'
-const iconProps = {
- color: lightPalette.gray['600'],
- size: 23,
-}
-
export const ApplicationSettingsScreen = () => {
const strings = useStrings()
- const styles = useStyles()
+ const {styles, colors} = useStyles()
const {name} = useTheme()
const {languageCode, supportedLanguages} = useLanguage()
const language = supportedLanguages.find((lang) => lang.code === languageCode) ?? defaultLanguage
@@ -42,8 +36,8 @@ export const ApplicationSettingsScreen = () => {
const {authWithOs} = useAuthWithOs({onSuccess: navigateTo.enableLoginWithPin})
const {data: screenShareEnabled} = useScreenShareSettingEnabled()
- const displayScreenShareSetting = Platform.OS === 'android' && !isProduction()
- const displayToggleThemeSetting = !isNightly() && !isProduction()
+ const displayScreenShareSetting = Platform.OS === 'android' && !isProduction
+ const displayToggleThemeSetting = !isNightly && !isProduction
const onToggleAuthWithOs = () => {
if (authSetting === 'os') {
@@ -53,6 +47,11 @@ export const ApplicationSettingsScreen = () => {
}
}
+ const iconProps = {
+ color: colors.icon,
+ size: 23,
+ }
+
return (
@@ -207,9 +206,7 @@ const CrashReportsSwitch = ({crashReportEnabled}: {crashReportEnabled: boolean})
})
}
- return (
-
- )
+ return
}
// to avoid switch jumps
@@ -340,5 +337,5 @@ const useStyles = () => {
},
})
- return styles
+ return {styles, colors: {icon: color.gray_c600}} as const
}
diff --git a/apps/wallet-mobile/src/features/Settings/ChangePassword/ChangePasswordScreen.tsx b/apps/wallet-mobile/src/features/Settings/ChangePassword/ChangePasswordScreen.tsx
index 6baacadf12..726bf5ed09 100644
--- a/apps/wallet-mobile/src/features/Settings/ChangePassword/ChangePasswordScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ChangePassword/ChangePasswordScreen.tsx
@@ -7,7 +7,7 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {MutationOptions, useMutation} from 'react-query'
import {Button, Checkmark, KeyboardAvoidingView, Spacer, TextInput} from '../../../components'
-import {errorMessages} from '../../../i18n/global-messages'
+import {errorMessages} from '../../../kernel/i18n/global-messages'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {REQUIRED_PASSWORD_LENGTH, validatePassword} from '../../../yoroi-wallets/utils/validators'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Settings/ChangeTheme/ThemePickerItem.tsx b/apps/wallet-mobile/src/features/Settings/ChangeTheme/ThemePickerItem.tsx
index 52af514308..2a2273ed43 100644
--- a/apps/wallet-mobile/src/features/Settings/ChangeTheme/ThemePickerItem.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ChangeTheme/ThemePickerItem.tsx
@@ -5,7 +5,7 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {Icon} from '../../../components/Icon'
import {Text} from '../../../components/Text'
-import {themeNames} from '../../../i18n/global-messages'
+import {themeNames} from '../../../kernel/i18n/global-messages'
import {useThemeStorageMaker} from '../../../yoroi-wallets/hooks'
type Props = {
diff --git a/apps/wallet-mobile/src/features/Settings/ChangeWalletName/ChangeWalletName.tsx b/apps/wallet-mobile/src/features/Settings/ChangeWalletName/ChangeWalletName.tsx
index cfc4260a0f..ea07f451d3 100644
--- a/apps/wallet-mobile/src/features/Settings/ChangeWalletName/ChangeWalletName.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ChangeWalletName/ChangeWalletName.tsx
@@ -6,7 +6,7 @@ import {ScrollView, StyleSheet, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, KeyboardAvoidingView, Spacer, TextInput} from '../../../components'
-import globalMessages from '../../../i18n/global-messages'
+import globalMessages from '../../../kernel/i18n/global-messages'
import {isEmptyString} from '../../../utils/utils'
import {useChangeWalletName, useWalletName, useWalletNames} from '../../../yoroi-wallets/hooks'
import {getWalletNameError, validateWalletName} from '../../../yoroi-wallets/utils/validators'
diff --git a/apps/wallet-mobile/src/features/Settings/Currency/CurrencyPickerItem.tsx b/apps/wallet-mobile/src/features/Settings/Currency/CurrencyPickerItem.tsx
index 1717951397..271ba546bc 100644
--- a/apps/wallet-mobile/src/features/Settings/Currency/CurrencyPickerItem.tsx
+++ b/apps/wallet-mobile/src/features/Settings/Currency/CurrencyPickerItem.tsx
@@ -5,7 +5,7 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {Icon} from '../../../components/Icon'
import {Text} from '../../../components/Text'
-import {currencyNames} from '../../../i18n/global-messages'
+import {currencyNames} from '../../../kernel/i18n/global-messages'
import {CurrencySymbol} from '../../../yoroi-wallets/types/other'
type Props = {
diff --git a/apps/wallet-mobile/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.tsx b/apps/wallet-mobile/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.tsx
index 0829b95783..27d6c6a3ef 100644
--- a/apps/wallet-mobile/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.tsx
@@ -7,8 +7,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, KeyboardAvoidingView, Text, TextInput} from '../../../components'
import {LoadingOverlay} from '../../../components/LoadingOverlay'
-import {showErrorDialog} from '../../../dialogs'
-import {errorMessages} from '../../../i18n/global-messages'
+import {showErrorDialog} from '../../../kernel/dialogs'
+import {errorMessages} from '../../../kernel/i18n/global-messages'
import {isEmptyString} from '../../../utils/utils'
import {WrongPassword} from '../../../yoroi-wallets/cardano/errors'
import {useEnableEasyConfirmation} from '../../../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/features/Settings/EnableLoginWithOs/EnableLoginWithOsScreen.tsx b/apps/wallet-mobile/src/features/Settings/EnableLoginWithOs/EnableLoginWithOsScreen.tsx
index a49cfbdd86..4f73a254df 100644
--- a/apps/wallet-mobile/src/features/Settings/EnableLoginWithOs/EnableLoginWithOsScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/EnableLoginWithOs/EnableLoginWithOsScreen.tsx
@@ -3,10 +3,10 @@ import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet} from 'react-native'
-import {OsAuthScreen} from '../../../auth'
import {Button} from '../../../components'
-import globalMessages from '../../../i18n/global-messages'
-import {useEnableAuthWithOs} from '../../../yoroi-wallets/auth'
+import globalMessages from '../../../kernel/i18n/global-messages'
+import {OsAuthScreen} from '../../Auth'
+import {useEnableAuthWithOs} from '../../Auth/common/hooks'
export const EnableLoginWithOsScreen = () => {
const strings = useStrings()
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/ConfirmTxScreen.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/ConfirmTxScreen.tsx
index a55c74e951..fdc846f4d1 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/ConfirmTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/ConfirmTxScreen.tsx
@@ -8,7 +8,7 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {KeyboardAvoidingView, Spacer, ValidatedTextInput} from '../../../../components'
import {ConfirmTx} from '../../../../components/ConfirmTx'
-import globalMessages, {confirmationMessages, errorMessages, txLabels} from '../../../../i18n/global-messages'
+import globalMessages, {confirmationMessages, errorMessages, txLabels} from '../../../../kernel/i18n/global-messages'
import {useSetCollateralId} from '../../../../yoroi-wallets/cardano/utxoManager/useSetCollateralId'
import {useSaveMemo} from '../../../../yoroi-wallets/hooks'
import {YoroiSignedTx} from '../../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
index a709d8a3da..7ac68dc323 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/SubmittedTx/SubmittedTxScreen.tsx
@@ -3,7 +3,7 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../../components'
-import {useBlockGoBack, useWalletNavigation} from '../../../../../navigation'
+import {useBlockGoBack, useWalletNavigation} from '../../../../../kernel/navigation'
import {useStrings} from '../../../../Send/common/strings'
import {SubmittedTxImage} from './SubmittedTxImage'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/BalanceAfter.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/BalanceAfter.tsx
index d9a7b946ad..09613b3749 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/BalanceAfter.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/BalanceAfter.tsx
@@ -2,7 +2,7 @@ import * as React from 'react'
import {useIntl} from 'react-intl'
import {Text} from '../../../../../components/Text'
-import {txLabels} from '../../../../../i18n/global-messages'
+import {txLabels} from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {useBalances} from '../../../../../yoroi-wallets/hooks'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/Fees.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/Fees.tsx
index d0e354596d..ac3fca7a00 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/Fees.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/Fees.tsx
@@ -2,7 +2,7 @@ import * as React from 'react'
import {useIntl} from 'react-intl'
import {Text} from '../../../../../components/Text'
-import {txLabels} from '../../../../../i18n/global-messages'
+import {txLabels} from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
import {Amounts} from '../../../../../yoroi-wallets/utils/utils'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/PrimaryTotal.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/PrimaryTotal.tsx
index 5b65fdf099..f10442a432 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/PrimaryTotal.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ConfirmTx/Summary/PrimaryTotal.tsx
@@ -4,7 +4,7 @@ import {useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
import {Text} from '../../../../../components/Text'
-import globalMessages from '../../../../../i18n/global-messages'
+import globalMessages from '../../../../../kernel/i18n/global-messages'
import {formatTokenWithSymbol} from '../../../../../legacy/format'
import {YoroiUnsignedTx} from '../../../../../yoroi-wallets/types/yoroi'
import {Amounts} from '../../../../../yoroi-wallets/utils/utils'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ManageCollateralScreen.tsx b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ManageCollateralScreen.tsx
index 67fc61313d..ef56fa645c 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/ManageCollateralScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/ManageCollateralScreen.tsx
@@ -20,7 +20,7 @@ import {useMutation} from 'react-query'
import {Button, CopyButton, Icon, Spacer, Text} from '../../../components'
import {AmountItem} from '../../../components/AmountItem/AmountItem'
import {ErrorPanel} from '../../../components/ErrorPanel/ErrorPanel'
-import {SettingsStackRoutes, useUnsafeParams} from '../../../navigation'
+import {SettingsStackRoutes, useUnsafeParams} from '../../../kernel/navigation'
import {YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {useCollateralInfo} from '../../../yoroi-wallets/cardano/utxoManager/useCollateralInfo'
import {useSetCollateralId} from '../../../yoroi-wallets/cardano/utxoManager/useSetCollateralId'
diff --git a/apps/wallet-mobile/src/features/Settings/ManageCollateral/navigation.ts b/apps/wallet-mobile/src/features/Settings/ManageCollateral/navigation.ts
index 162db9b776..d1fb38352b 100644
--- a/apps/wallet-mobile/src/features/Settings/ManageCollateral/navigation.ts
+++ b/apps/wallet-mobile/src/features/Settings/ManageCollateral/navigation.ts
@@ -1,8 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {SettingsRouteNavigation, TxHistoryRoutes} from '../../../navigation'
-import {useOverridePreviousRoute} from '../../../utils/navigation'
+import {SettingsRouteNavigation, TxHistoryRoutes, useOverridePreviousRoute} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.tsx b/apps/wallet-mobile/src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.tsx
index 74a81d443c..0866a78e0d 100644
--- a/apps/wallet-mobile/src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/PrivacyPolicy/PrivacyPolicyScreen.tsx
@@ -3,8 +3,8 @@ import React from 'react'
import {ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {useLanguage} from '../../../i18n'
-import {PrivacyPolicy} from '../../../Legal'
+import {useLanguage} from '../../../kernel/i18n'
+import {PrivacyPolicy} from '../../Legal/PrivacyPolicy/PrivacyPolicy'
export const PrivacyPolicyScreen = () => {
const styles = useStyles()
diff --git a/apps/wallet-mobile/src/features/Settings/RemoveWallet/RemoveWalletScreen.tsx b/apps/wallet-mobile/src/features/Settings/RemoveWallet/RemoveWalletScreen.tsx
index 4815776cd9..a3d25d6440 100644
--- a/apps/wallet-mobile/src/features/Settings/RemoveWallet/RemoveWalletScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/RemoveWallet/RemoveWalletScreen.tsx
@@ -15,7 +15,7 @@ import {
TextInput,
TextInputProps,
} from '../../../components'
-import {useWalletNavigation} from '../../../navigation'
+import {useWalletNavigation} from '../../../kernel/navigation'
import {hasWalletsKey, useRemoveWallet, useWalletName} from '../../../yoroi-wallets/hooks'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
import {useWalletManager} from '../../WalletManager/context/WalletManagerContext'
diff --git a/apps/wallet-mobile/src/features/Settings/SettingsScreenNavigator.tsx b/apps/wallet-mobile/src/features/Settings/SettingsScreenNavigator.tsx
index 3f1b54f600..40d303a02b 100644
--- a/apps/wallet-mobile/src/features/Settings/SettingsScreenNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Settings/SettingsScreenNavigator.tsx
@@ -6,17 +6,17 @@ import {TransferProvider} from '@yoroi/transfer'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {ChangePinScreen} from '../../auth'
-import {EnableLoginWithPin} from '../../auth/EnableLoginWithPin'
import {Boundary} from '../../components'
-import globalMessages from '../../i18n/global-messages'
-import {useMetrics} from '../../metrics/metricsManager'
+import globalMessages from '../../kernel/i18n/global-messages'
+import {useMetrics} from '../../kernel/metrics/metricsManager'
import {
defaultMaterialTopTabNavigationOptions,
defaultStackNavigationOptions,
SettingsStackRoutes,
SettingsTabRoutes,
-} from '../../navigation'
+} from '../../kernel/navigation'
+import {ChangePinScreen} from '../Auth'
+import {EnableLoginWithPin} from '../Auth/EnableLoginWithPin'
import {useSelectedWallet} from '../WalletManager/context/SelectedWalletContext'
import {About} from './About'
import {ApplicationSettingsScreen} from './ApplicationSettings'
@@ -33,6 +33,7 @@ import {FailedTxScreen} from './ManageCollateral/ConfirmTx/FailedTx/FailedTxScre
import {SubmittedTxScreen} from './ManageCollateral/ConfirmTx/SubmittedTx/SubmittedTxScreen'
import {PrivacyPolicyScreen} from './PrivacyPolicy'
import {RemoveWalletScreen} from './RemoveWallet'
+import {SystemLogScreen} from './SystemLogScreen/SystemLogScreen'
import {TermsOfServiceScreen} from './TermsOfService'
import {WalletSettingsScreen} from './WalletSettings'
@@ -65,6 +66,12 @@ export const SettingsScreenNavigator = () => {
+
+
{
const intl = useIntl()
return {
- walletTabTitle: intl.formatMessage(messages.walletTabTitle),
+ aboutTitle: intl.formatMessage(messages.aboutTitle),
+ appSettingsTitle: intl.formatMessage(messages.appSettingsTitle),
appTabTitle: intl.formatMessage(messages.appTabTitle),
changeCustomPinTitle: intl.formatMessage(messages.changeCustomPinTitle),
changePasswordTitle: intl.formatMessage(messages.changePasswordTitle),
- removeWalletTitle: intl.formatMessage(messages.removeWalletTitle),
- termsOfServiceTitle: intl.formatMessage(messages.termsOfServiceTitle),
changeWalletNameTitle: intl.formatMessage(messages.changeWalletNameTitle),
- supportTitle: intl.formatMessage(messages.supportTitle),
- enableEasyConfirmationTitle: intl.formatMessage(messages.enableEasyConfirmationTitle),
- disableEasyConfirmationTitle: intl.formatMessage(messages.disableEasyConfirmationTitle),
+ collateral: intl.formatMessage(messages.collateral),
+ currency: intl.formatMessage(globalMessages.currency),
customPinTitle: intl.formatMessage(messages.customPinTitle),
- settingsTitle: intl.formatMessage(messages.settingsTitle),
+ disableEasyConfirmationTitle: intl.formatMessage(messages.disableEasyConfirmationTitle),
+ enableEasyConfirmationTitle: intl.formatMessage(messages.enableEasyConfirmationTitle),
languageTitle: intl.formatMessage(messages.languageTitle),
- themeTitle: intl.formatMessage(messages.themeTitle),
- currency: intl.formatMessage(globalMessages.currency),
- aboutTitle: intl.formatMessage(messages.aboutTitle),
- appSettingsTitle: intl.formatMessage(messages.appSettingsTitle),
+ systemLogTitle: intl.formatMessage(messages.systemLogTitle),
privacyPolicyTitle: intl.formatMessage(messages.privacyPolicyTitle),
- collateral: intl.formatMessage(messages.collateral),
+ removeWalletTitle: intl.formatMessage(messages.removeWalletTitle),
+ settingsTitle: intl.formatMessage(messages.settingsTitle),
+ supportTitle: intl.formatMessage(messages.supportTitle),
+ termsOfServiceTitle: intl.formatMessage(messages.termsOfServiceTitle),
+ themeTitle: intl.formatMessage(messages.themeTitle),
+ walletTabTitle: intl.formatMessage(messages.walletTabTitle),
}
}
diff --git a/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.stories.tsx b/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.stories.tsx
new file mode 100644
index 0000000000..0740e43e15
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.stories.tsx
@@ -0,0 +1,12 @@
+import {storiesOf} from '@storybook/react-native'
+import React from 'react'
+
+import {mocks} from '../../../yoroi-wallets/mocks'
+import {SelectedWalletProvider} from '../../WalletManager/context/SelectedWalletContext'
+import {SystemLogScreen} from './SystemLogScreen'
+
+storiesOf('Settings SystemLogScreen', module).add('initial', () => (
+
+
+
+))
diff --git a/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.tsx b/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.tsx
new file mode 100644
index 0000000000..ad392109ab
--- /dev/null
+++ b/apps/wallet-mobile/src/features/Settings/SystemLogScreen/SystemLogScreen.tsx
@@ -0,0 +1,88 @@
+import {useTheme} from '@yoroi/theme'
+import React from 'react'
+import {ScrollView, StyleSheet, TextProps, View} from 'react-native'
+
+import {Text} from '../../../components'
+import {Space} from '../../../components/Space/Space'
+import {logger} from '../../../kernel/logger/logger'
+import {LoggerLevel} from '../../../kernel/logger/types'
+
+export const SystemLogScreen = () => {
+ const styles = useStyles()
+
+ return (
+
+
+ {logger.trail.map((entry) => {
+ return (
+
+
+ {new Date(entry.timestamp).toLocaleDateString('en-us', {
+ month: 'short',
+ day: 'numeric',
+ hour: 'numeric',
+ minute: '2-digit',
+ second: '2-digit',
+ }) +
+ ' ' +
+ `${LoggerLevelEmoji[entry.level]}`}
+
+
+ {entry.message}
+
+
+
+ )
+ })}
+
+
+ )
+}
+
+const LoggerLevelEmoji = {
+ [LoggerLevel.Debug]: '🔍',
+ [LoggerLevel.Log]: '📋',
+ [LoggerLevel.Info]: 'ℹ️',
+ [LoggerLevel.Warn]: '⚠️',
+ [LoggerLevel.Error]: '❌',
+} as const
+
+const LabelText = ({style, children, ...props}: TextProps) => {
+ const styles = useStyles()
+
+ return (
+
+ {children}
+
+ )
+}
+
+const ValueText = ({style, children, ...props}: TextProps) => {
+ const styles = useStyles()
+
+ return (
+
+ {children}
+
+ )
+}
+const useStyles = () => {
+ const {color, atoms} = useTheme()
+ const styles = StyleSheet.create({
+ root: {
+ flex: 1,
+ backgroundColor: color.gray_cmin,
+ ...atoms.px_lg,
+ },
+ labelText: {
+ color: color.gray_c900,
+ ...atoms.body_1_lg_medium,
+ },
+ valueText: {
+ color: color.gray_c500,
+ ...atoms.body_1_lg_regular,
+ },
+ })
+
+ return styles
+}
diff --git a/apps/wallet-mobile/src/features/Settings/TermsOfService/TermsOfServiceScreen.tsx b/apps/wallet-mobile/src/features/Settings/TermsOfService/TermsOfServiceScreen.tsx
index 828718b332..0ab36e42af 100644
--- a/apps/wallet-mobile/src/features/Settings/TermsOfService/TermsOfServiceScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/TermsOfService/TermsOfServiceScreen.tsx
@@ -3,8 +3,8 @@ import React from 'react'
import {ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {useLanguage} from '../../../i18n'
-import {TermsOfService} from '../../../Legal/TermsOfService'
+import {useLanguage} from '../../../kernel/i18n'
+import {TermsOfService} from '../../Legal/TermsOfService/TermsOfService'
export const TermsOfServiceScreen = () => {
const styles = useStyles()
diff --git a/apps/wallet-mobile/src/features/Settings/WalletSettings/WalletSettingsScreen.tsx b/apps/wallet-mobile/src/features/Settings/WalletSettings/WalletSettingsScreen.tsx
index 3a2eeaaf50..777e5ff15e 100644
--- a/apps/wallet-mobile/src/features/Settings/WalletSettings/WalletSettingsScreen.tsx
+++ b/apps/wallet-mobile/src/features/Settings/WalletSettings/WalletSettingsScreen.tsx
@@ -6,17 +6,16 @@ import {defineMessages, useIntl} from 'react-intl'
import {InteractionManager, ScrollView, StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {useAuth} from '../../../auth/AuthProvider'
import {Icon, Spacer} from '../../../components'
-import {DIALOG_BUTTONS, showConfirmationDialog} from '../../../dialogs'
-import {confirmationMessages} from '../../../i18n/global-messages'
-import {SettingsRouteNavigation, useWalletNavigation} from '../../../navigation'
-import {lightPalette} from '../../../theme'
-import {useAuthSetting} from '../../../yoroi-wallets/auth'
+import {DIALOG_BUTTONS, showConfirmationDialog} from '../../../kernel/dialogs'
+import {confirmationMessages} from '../../../kernel/i18n/global-messages'
+import {SettingsRouteNavigation, useWalletNavigation} from '../../../kernel/navigation'
import {getNetworkConfigById} from '../../../yoroi-wallets/cardano/networks'
import {isByron, isHaskellShelley} from '../../../yoroi-wallets/cardano/utils'
import {useEasyConfirmationEnabled, useResync} from '../../../yoroi-wallets/hooks'
import {NetworkId, WalletImplementationId} from '../../../yoroi-wallets/types'
+import {useAuth} from '../../Auth/AuthProvider'
+import {useAuthSetting} from '../../Auth/common/hooks'
import {useAddressModeManager} from '../../WalletManager/common/useAddressModeManager'
import {useSelectedWallet, useSetSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
import {useSetSelectedWalletMeta} from '../../WalletManager/context/SelectedWalletMetaContext'
@@ -30,15 +29,10 @@ import {
SettingsSection,
} from '../SettingsItems'
-const iconProps = {
- color: lightPalette.gray['600'],
- size: 23,
-}
-
export const WalletSettingsScreen = () => {
const intl = useIntl()
const strings = useStrings()
- const {styles} = useStyles()
+ const {styles, colors} = useStyles()
const {resetToWalletSelection} = useWalletNavigation()
const wallet = useSelectedWallet()
const authSetting = useAuthSetting()
@@ -61,6 +55,11 @@ export const WalletSettingsScreen = () => {
resetToWalletSelection()
}
+ const iconProps = {
+ color: colors.icon,
+ size: 23,
+ }
+
return (
@@ -168,6 +167,7 @@ const getWalletType = (implementationId: WalletImplementationId): MessageDescrip
const ResyncButton = () => {
const strings = useStrings()
const wallet = useSelectedWallet()
+ const {colors} = useStyles()
const {navigateToTxHistory} = useWalletNavigation()
const intl = useIntl()
const {resync, isLoading} = useResync(wallet, {
@@ -181,6 +181,11 @@ const ResyncButton = () => {
}
}
+ const iconProps = {
+ color: colors.icon,
+ size: 23,
+ }
+
return (
}
@@ -363,5 +368,5 @@ const useStyles = () => {
padding: 16,
},
})
- return {styles}
+ return {styles, colors: {icon: color.gray_c500}} as const
}
diff --git a/apps/wallet-mobile/src/features/Settings/common/navigation.tsx b/apps/wallet-mobile/src/features/Settings/common/navigation.tsx
index da9d4f8c31..4c693d7293 100644
--- a/apps/wallet-mobile/src/features/Settings/common/navigation.tsx
+++ b/apps/wallet-mobile/src/features/Settings/common/navigation.tsx
@@ -1,6 +1,6 @@
import {useNavigation} from '@react-navigation/native'
-import {SettingsRouteNavigation, useWalletNavigation} from '../../../navigation'
+import {SettingsRouteNavigation, useWalletNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/SetupWallet/SetupWalletNavigator.tsx b/apps/wallet-mobile/src/features/SetupWallet/SetupWalletNavigator.tsx
index 2d4c06a766..6afdcacef2 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/SetupWalletNavigator.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/SetupWalletNavigator.tsx
@@ -3,7 +3,7 @@ import {useTheme} from '@yoroi/theme'
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {defaultStackNavigationOptions, WalletInitRoutes} from '../../navigation'
+import {defaultStackNavigationOptions, WalletInitRoutes} from '../../kernel/navigation'
import {CheckNanoXScreen} from './legacy/CheckNanoX/CheckNanoXScreen'
import {ConnectNanoXScreen} from './legacy/ConnectNanoX/ConnectNanoXScreen'
import {ImportReadOnlyWalletScreen} from './legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/common/useStrings.tsx b/apps/wallet-mobile/src/features/SetupWallet/common/useStrings.tsx
index fdc427b3ce..4b7c571392 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/common/useStrings.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/common/useStrings.tsx
@@ -1,7 +1,7 @@
import * as React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages from '../../../i18n/global-messages'
+import globalMessages from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/SetupWallet/illustrations/WalletChecksum.tsx b/apps/wallet-mobile/src/features/SetupWallet/illustrations/WalletChecksum.tsx
index 50eb10d22c..47da739187 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/illustrations/WalletChecksum.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/illustrations/WalletChecksum.tsx
@@ -1,11 +1,11 @@
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import Blockies from '@emurgo/react-native-blockies-svg'
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {StyleSheet, View, ViewStyle} from 'react-native'
import tinycolor from 'tinycolor2'
-import {COLORS as APP_COLORS} from '../../../theme'
import {isEmptyString} from '../../../utils/utils'
const mkcolor = (primary: string, secondary: string, spots: string) => ({primary, secondary, spots})
@@ -28,17 +28,21 @@ const saturation = (color: string, factor = 0) => {
return tcol.toHexString()
}
-const styles = StyleSheet.create({
- defaultStyle: {
- borderColor: APP_COLORS.LIGHT_GRAY,
- borderRadius: 6,
- borderWidth: 0.5,
- alignItems: 'center',
- justifyContent: 'center',
- aspectRatio: 1,
- overflow: 'hidden',
- },
-})
+const useStyles = () => {
+ const {color} = useTheme()
+ const styles = StyleSheet.create({
+ defaultStyle: {
+ borderColor: color.gray_cmax,
+ borderRadius: 6,
+ borderWidth: 0.5,
+ alignItems: 'center',
+ justifyContent: 'center',
+ aspectRatio: 1,
+ overflow: 'hidden',
+ },
+ })
+ return styles
+}
type Props = {
iconSeed?: string
@@ -48,6 +52,7 @@ type Props = {
}
export const WalletChecksum = ({iconSeed, scalePx = 5, saturationFactor = 0, style}: Props) => {
+ const styles = useStyles()
const colorIdx = isEmptyString(iconSeed) || iconSeed.length < 2 ? 0 : Buffer.from(iconSeed, 'hex')[0] % COLORS.length
const color = COLORS[colorIdx]
return (
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.tsx
index 706b66adeb..ded8afe055 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.tsx
@@ -8,8 +8,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import image from '../../../../assets/img/ledger_1.png'
import {BulletPointItem, Button, ProgressStep, Spacer, Text} from '../../../../components'
-import {confirmationMessages, ledgerMessages} from '../../../../i18n/global-messages'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {confirmationMessages, ledgerMessages} from '../../../../kernel/i18n/global-messages'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
export const CheckNanoXScreen = () => {
const strings = useStrings()
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.tsx
index 6b0c10bfaa..9b0bf90a67 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.tsx
@@ -7,11 +7,11 @@ import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {ProgressStep} from '../../../../components'
-import {showErrorDialog} from '../../../../dialogs'
import {LedgerConnect} from '../../../../HW'
-import {errorMessages} from '../../../../i18n/global-messages'
-import LocalizableError from '../../../../i18n/LocalizableError'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import LocalizableError from '../../../../kernel/i18n/LocalizableError'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {getHWDeviceInfo} from '../../../../yoroi-wallets/cardano/hw'
import {DeviceId, DeviceObj, HWDeviceInfo} from '../../../../yoroi-wallets/hw'
import {Device, NetworkId, WalletImplementationId} from '../../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx
index 3468ca9e28..1c09f29db7 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx
@@ -5,11 +5,10 @@ import {defineMessages, useIntl} from 'react-intl'
import {ScrollView, StatusBar, StyleSheet, View} from 'react-native'
import {BulletPointItem, CameraCodeScanner, Spacer, Text} from '../../../../components'
-import {showErrorDialog} from '../../../../dialogs'
-import {errorMessages} from '../../../../i18n/global-messages'
-import {Logger} from '../../../../legacy/logging'
-import {WalletInitRouteNavigation} from '../../../../navigation'
-import {theme} from '../../../../theme'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import {logger} from '../../../../kernel/logger/logger'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {isCIP1852AccountPath, isValidPublicKey} from '../../../../yoroi-wallets/cardano/bip44Validators'
export const ImportReadOnlyWalletScreen = () => {
@@ -27,7 +26,7 @@ export const ImportReadOnlyWalletScreen = () => {
navigation.navigate('setup-wallet-save-read-only')
} catch (error) {
- Logger.debug('ImportReadOnlyWalletScreen::onRead::error', error)
+ logger.error(error as Error)
await showErrorDialog(errorMessages.invalidQRCode, intl)
return Promise.resolve(true)
}
@@ -93,7 +92,6 @@ const useStrings = () => {
const styles = StyleSheet.create({
container: {
flex: 1,
- backgroundColor: theme.COLORS.BACKGROUND,
},
cameraContainer: {
flex: 2,
@@ -121,15 +119,11 @@ const styles = StyleSheet.create({
})
const parseReadOnlyWalletKey = async (text: string): Promise<{publicKeyHex: string; path: number[]}> => {
- Logger.debug('ImportReadOnlyWalletScreen::handleOnRead::data', text)
const dataObj = JSON.parse(text)
const {publicKeyHex, path} = dataObj
if (isCIP1852AccountPath(path) && (await isValidPublicKey(publicKeyHex))) {
- Logger.debug('ImportReadOnlyWalletScreen::publicKeyHex', publicKeyHex)
- Logger.debug('ImportReadOnlyWalletScreen::path', path)
- } else {
- throw new Error('invalid QR code')
+ return {publicKeyHex, path}
}
- return {publicKeyHex, path}
+ throw new Error('invalid QR code')
}
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.tsx
index 069f6a720b..d75a5befc9 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.tsx
@@ -5,10 +5,10 @@ import {defineMessages, useIntl} from 'react-intl'
import {InteractionManager} from 'react-native'
import image from '../../../../assets/img/ledger_2.png'
-import {showErrorDialog} from '../../../../dialogs'
-import {errorMessages} from '../../../../i18n/global-messages'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../navigation'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {useCreateBip44Wallet} from '../../../../yoroi-wallets/hooks'
import {WalletImplementationId} from '../../../../yoroi-wallets/types'
import {AddressMode} from '../../../WalletManager/common/types'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx
index 5962bead11..1782b5c522 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx
@@ -6,11 +6,10 @@ import {FlatList, InteractionManager, ScrollView, StyleSheet, View} from 'react-
import {SafeAreaView} from 'react-native-safe-area-context'
import {Boundary, Icon, Line, Text} from '../../../../components'
-import {showErrorDialog} from '../../../../dialogs'
-import {errorMessages} from '../../../../i18n/global-messages'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../navigation'
-import {theme} from '../../../../theme'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {isEmptyString} from '../../../../utils/utils'
import {NUMBERS} from '../../../../yoroi-wallets/cardano/numbers'
import {useCreateBip44Wallet, usePlate} from '../../../../yoroi-wallets/hooks'
@@ -92,7 +91,6 @@ const LABEL_MARGIN = 6
const styles = StyleSheet.create({
container: {
flex: 1,
- backgroundColor: theme.COLORS.BACKGROUND,
paddingHorizontal: 16,
},
scrollView: {
@@ -127,7 +125,6 @@ const styles = StyleSheet.create({
},
keyView: {
padding: 4,
- backgroundColor: theme.COLORS.CODE_STYLE_BACKGROUND,
marginBottom: 10,
},
walletFormStyle: {
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletDescription.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletDescription.tsx
index 063b8779a6..35ffc8c989 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletDescription.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletDescription.tsx
@@ -1,16 +1,17 @@
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {StyleSheet, View} from 'react-native'
import {Icon, Text} from '../../../components'
-import {COLORS} from '../../../theme'
export const WalletDescription = () => {
+ const {styles, colors} = useStyles()
const strings = useStrings()
return (
-
+ {strings.slogan}
@@ -34,13 +35,17 @@ const useStrings = () => {
}
}
-const styles = StyleSheet.create({
- description: {
- alignItems: 'center',
- },
- emurgoCreditsContainer: {
- marginTop: 10,
- alignItems: 'center',
- flexDirection: 'row',
- },
-})
+const useStyles = () => {
+ const {color} = useTheme()
+ const styles = StyleSheet.create({
+ description: {
+ alignItems: 'center',
+ },
+ emurgoCreditsContainer: {
+ marginTop: 10,
+ alignItems: 'center',
+ flexDirection: 'row',
+ },
+ })
+ return {styles, colors: {white: color.white_static}} as const
+}
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletForm.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletForm.tsx
index 1f1d14f4c8..de3e19e06e 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletForm.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletForm.tsx
@@ -1,12 +1,12 @@
import {useFocusEffect} from '@react-navigation/native'
+import {useTheme} from '@yoroi/theme'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
import {ScrollView, StyleSheet, TextInput as RNTextInput, View, ViewProps} from 'react-native'
import {Button, Checkmark, KeyboardAvoidingView, Spacer, TextInput} from '../../../components'
-import globalMessages from '../../../i18n/global-messages'
-import {useMetrics} from '../../../metrics/metricsManager'
-import {COLORS} from '../../../theme'
+import globalMessages from '../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../kernel/metrics/metricsManager'
import {isEmptyString} from '../../../utils/utils'
import {useWalletNames} from '../../../yoroi-wallets/hooks'
import {
@@ -23,6 +23,7 @@ type Props = {
}
export const WalletForm = ({onSubmit}: Props) => {
+ const styles = useStyles()
const strings = useStrings()
const walletManager = useWalletManager()
const {track} = useMetrics()
@@ -136,7 +137,10 @@ export const WalletForm = ({onSubmit}: Props) => {
const WalletNameInput = TextInput
const PasswordInput = TextInput
const PasswordConfirmationInput = TextInput
-const Actions = (props: ViewProps) =>
+const Actions = (props: ViewProps) => {
+ const styles = useStyles()
+ return
+}
const messages = defineMessages({
walletNameInputLabel: {
@@ -182,16 +186,20 @@ const useStrings = () => {
}
}
-const styles = StyleSheet.create({
- safeAreaView: {
- flex: 1,
- },
- scrollContentContainer: {
- paddingHorizontal: 16,
- paddingTop: 40,
- },
- actions: {
- padding: 16,
- backgroundColor: COLORS.BACKGROUND,
- },
-})
+const useStyles = () => {
+ const {atoms, color} = useTheme()
+ const styles = StyleSheet.create({
+ safeAreaView: {
+ flex: 1,
+ },
+ scrollContentContainer: {
+ paddingHorizontal: 16,
+ paddingTop: 40,
+ },
+ actions: {
+ ...atoms.p_lg,
+ backgroundColor: color.gray_cmin,
+ },
+ })
+ return styles
+}
diff --git a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx
index 69af189f76..196456848f 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx
@@ -6,9 +6,8 @@ import {defineMessages, useIntl} from 'react-intl'
import {ActivityIndicator, Image, ImageSourcePropType, ScrollView, StyleSheet, View, ViewStyle} from 'react-native'
import {Button, KeyboardAvoidingView, ProgressStep, TextInput} from '../../../../components'
-import globalMessages from '../../../../i18n/global-messages'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {spacing} from '../../../../theme'
+import globalMessages from '../../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useWalletNames} from '../../../../yoroi-wallets/hooks'
import {getWalletNameError, validateWalletName} from '../../../../yoroi-wallets/utils/validators'
import {useWalletManager} from '../../../WalletManager/context/WalletManagerContext'
@@ -121,7 +120,7 @@ const useStyles = () => {
heading: {
alignItems: 'center',
justifyContent: 'center',
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
},
buttonContainer: {
flexDirection: 'row',
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseBiometricLogin/ChooseBiometricLoginScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseBiometricLogin/ChooseBiometricLoginScreen.tsx
index d7c10d85a9..b4840306ad 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseBiometricLogin/ChooseBiometricLoginScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseBiometricLogin/ChooseBiometricLoginScreen.tsx
@@ -9,9 +9,9 @@ import {useQuery, UseQueryOptions} from 'react-query'
import {Button} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useWalletNavigation} from '../../../../navigation'
-import {useEnableAuthWithOs} from '../../../../yoroi-wallets/auth'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import * as HASKELL_SHELLEY from '../../../../yoroi-wallets/cardano/constants/mainnet/constants'
+import {useEnableAuthWithOs} from '../../../Auth/common/hooks'
import {useStrings} from '../../common/useStrings'
import {Biometric as BiometricIlustration} from '../../illustrations/Biometric'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseMnemonicType/ChooseMnemonicTypeScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseMnemonicType/ChooseMnemonicTypeScreen.tsx
index a6cc30d09c..b976f5f30f 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseMnemonicType/ChooseMnemonicTypeScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseMnemonicType/ChooseMnemonicTypeScreen.tsx
@@ -6,8 +6,8 @@ import {StyleSheet, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {ButtonCard} from '../../common/ButtonCard/ButtonCard'
import {LogoBanner} from '../../common/LogoBanner/LogoBanner'
import {useStrings} from '../../common/useStrings'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseNetwork/ChooseNetworkScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseNetwork/ChooseNetworkScreen.tsx
index 62b63ffbea..bcd10eff6f 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseNetwork/ChooseNetworkScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseNetwork/ChooseNetworkScreen.tsx
@@ -6,7 +6,7 @@ import {ScrollView, StyleSheet, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Space} from '../../../../components/Space/Space'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import * as HASKELL_SHELLEY from '../../../../yoroi-wallets/cardano/constants/mainnet/constants'
import * as SANCHONET from '../../../../yoroi-wallets/cardano/constants/sanchonet/constants'
import * as HASKELL_SHELLEY_TESTNET from '../../../../yoroi-wallets/cardano/constants/testnet/constants'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseSetupType/ChooseSetupTypeScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseSetupType/ChooseSetupTypeScreen.tsx
index dbc15fa736..58c6aa2ed4 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseSetupType/ChooseSetupTypeScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/ChooseSetupType/ChooseSetupTypeScreen.tsx
@@ -7,9 +7,9 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Space} from '../../../../components/Space/Space'
import {LedgerTransportSwitchModal} from '../../../../HW'
-import {isProduction} from '../../../../legacy/config'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {isProduction} from '../../../../kernel/env'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import * as HASKELL_SHELLEY from '../../../../yoroi-wallets/cardano/constants/mainnet/constants'
import {ButtonCard} from '../../common/ButtonCard/ButtonCard'
import {LogoBanner} from '../../common/LogoBanner/LogoBanner'
@@ -42,7 +42,7 @@ export const ChooseSetupTypeScreen = () => {
walletImplementationIdChanged(HASKELL_SHELLEY.WALLET_IMPLEMENTATION_ID)
setUpTypeChanged('create')
- if (isProduction()) {
+ if (isProduction) {
networkIdChanged(HASKELL_SHELLEY.NETWORK_ID)
navigation.navigate('setup-wallet-about-recovery-phase')
return
@@ -56,7 +56,7 @@ export const ChooseSetupTypeScreen = () => {
walletImplementationIdChanged(HASKELL_SHELLEY.WALLET_IMPLEMENTATION_ID)
setUpTypeChanged('restore')
- if (isProduction()) {
+ if (isProduction) {
networkIdChanged(HASKELL_SHELLEY.NETWORK_ID)
navigation.navigate('setup-wallet-restore-choose-mnemonic-type')
return
@@ -75,7 +75,7 @@ export const ChooseSetupTypeScreen = () => {
walletImplementationIdChanged(HASKELL_SHELLEY.WALLET_IMPLEMENTATION_ID)
setUpTypeChanged('hw')
- if (isProduction()) {
+ if (isProduction) {
networkIdChanged(HASKELL_SHELLEY.NETWORK_ID)
navigation.navigate('setup-wallet-check-nano-x')
return
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/AboutRecoveryPhraseScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/AboutRecoveryPhraseScreen.tsx
index e244069495..0abc4bf99d 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/AboutRecoveryPhraseScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/AboutRecoveryPhraseScreen.tsx
@@ -7,8 +7,8 @@ import {ViewProps} from 'react-native-svg/lib/typescript/fabric/utils'
import {Button, Spacer} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {CardAboutPhrase} from '../../common/CardAboutPhrase/CardAboutPhrase'
import {YoroiZendeskLink} from '../../common/constants'
import {LearnMoreButton} from '../../common/LearnMoreButton/LearnMoreButton'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/RecoveryPhraseScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/RecoveryPhraseScreen.tsx
index 9a97b2d1f5..41f82ae5d3 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/RecoveryPhraseScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/RecoveryPhraseScreen.tsx
@@ -9,8 +9,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Spacer, useModal} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {generateAdaMnemonic} from '../../../../yoroi-wallets/cardano/mnemonic'
import {CardAboutPhrase} from '../../common/CardAboutPhrase/CardAboutPhrase'
import {YoroiZendeskLink} from '../../common/constants'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/VerifyRecoveryPhraseScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/VerifyRecoveryPhraseScreen.tsx
index f6c7736ef9..4f039e0f83 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/VerifyRecoveryPhraseScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/VerifyRecoveryPhraseScreen.tsx
@@ -10,8 +10,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {WalletInitRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {makeKeys} from '../../../../yoroi-wallets/cardano/shelley/makeKeys'
import {StepperProgress} from '../../common/StepperProgress/StepperProgress'
import {useStrings} from '../../common/useStrings'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/WalletDetailsScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/WalletDetailsScreen.tsx
index 5526777349..485e216bd6 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/WalletDetailsScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/CreateWallet/WalletDetailsScreen.tsx
@@ -21,10 +21,10 @@ import {ViewProps} from 'react-native-svg/lib/typescript/fabric/utils'
import {Button, Icon, KeyboardAvoidingView, TextInput, useModal} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {showErrorDialog} from '../../../../dialogs'
-import {errorMessages} from '../../../../i18n/global-messages'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../navigation'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {isEmptyString} from '../../../../utils'
import {useCreateWallet, usePlate, useWalletNames} from '../../../../yoroi-wallets/hooks'
import {WalletImplementationId} from '../../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletDetailsScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletDetailsScreen.tsx
index 612656b61a..51a0900db0 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletDetailsScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletDetailsScreen.tsx
@@ -20,10 +20,10 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Icon, KeyboardAvoidingView, TextInput, useModal} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {showErrorDialog} from '../../../../dialogs'
-import {errorMessages} from '../../../../i18n/global-messages'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../navigation'
+import {showErrorDialog} from '../../../../kernel/dialogs'
+import {errorMessages} from '../../../../kernel/i18n/global-messages'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {isEmptyString} from '../../../../utils'
import {useCreateWallet, usePlate, useWalletNames} from '../../../../yoroi-wallets/hooks'
import {WalletImplementationId} from '../../../../yoroi-wallets/types'
diff --git a/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletScreen.tsx b/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletScreen.tsx
index b2ce4405ed..49228393d7 100644
--- a/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletScreen.tsx
+++ b/apps/wallet-mobile/src/features/SetupWallet/useCases/RestoreWallet/RestoreWalletScreen.tsx
@@ -10,8 +10,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, Icon, KeyboardAvoidingView, useModal} from '../../../../components'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation, WalletInitRouteNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation, WalletInitRouteNavigation} from '../../../../kernel/navigation'
import {isEmptyString} from '../../../../utils'
import {makeKeys} from '../../../../yoroi-wallets/cardano/shelley/makeKeys'
import {usePlate, useWalletMetas} from '../../../../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/GovernanceNavigator.tsx b/apps/wallet-mobile/src/features/Staking/Governance/GovernanceNavigator.tsx
index 06d36564f2..b9a6d2f587 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/GovernanceNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Staking/Governance/GovernanceNavigator.tsx
@@ -3,7 +3,7 @@ import {Atoms, ThemedPalette, useTheme} from '@yoroi/theme'
import React from 'react'
import {SafeArea} from '../../../components/SafeArea'
-import {defaultStackNavigationOptions} from '../../../navigation'
+import {defaultStackNavigationOptions} from '../../../kernel/navigation'
import {NavigationStack, useGovernanceManagerMaker, useStrings} from './common'
import {ChangeVoteScreen, ConfirmTxScreen, FailedTxScreen, HomeScreen, SuccessTxScreen} from './useCases'
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/common/helpers.ts b/apps/wallet-mobile/src/features/Staking/Governance/common/helpers.ts
index f22572f327..7a6054a9e9 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/common/helpers.ts
+++ b/apps/wallet-mobile/src/features/Staking/Governance/common/helpers.ts
@@ -2,10 +2,9 @@ import {useAsyncStorage} from '@yoroi/common'
import {type StakingKeyState, governanceApiMaker, governanceManagerMaker, useStakingKeyState} from '@yoroi/staking'
import * as React from 'react'
-import {CONFIG} from '../../../../legacy/config'
+import {governaceAfterBlock} from '../../../../kernel/config'
import {YoroiWallet} from '../../../../yoroi-wallets/cardano/types'
import {useStakingKey, useTipStatus} from '../../../../yoroi-wallets/hooks'
-import {isMainnetNetworkId, isSanchoNetworkId} from '../../../../yoroi-wallets/utils'
import {CardanoMobile} from '../../../../yoroi-wallets/wallets'
import {useSelectedWallet} from '../../../WalletManager/context/SelectedWalletContext'
import {GovernanceVote} from '../types'
@@ -31,19 +30,8 @@ export const mapStakingKeyStateToGovernanceAction = (state: StakingKeyState): Go
}
export const useIsGovernanceFeatureEnabled = (wallet: YoroiWallet) => {
- const tipStatus = useTipStatus({wallet, options: {suspense: true}})
- const {bestBlock} = tipStatus
- const walletNetworkId = wallet.networkId
- const isSanchonet = isSanchoNetworkId(walletNetworkId)
- const isMainnet = isMainnetNetworkId(walletNetworkId)
-
- const enabledSince = isSanchonet
- ? CONFIG.GOVERNANCE_ENABLED_SINCE_BLOCK.SANCHONET
- : isMainnet
- ? CONFIG.GOVERNANCE_ENABLED_SINCE_BLOCK.MAINNET
- : CONFIG.GOVERNANCE_ENABLED_SINCE_BLOCK.PREPROD
-
- return bestBlock.height >= enabledSince
+ const {bestBlock} = useTipStatus({wallet, options: {suspense: true}})
+ return bestBlock.height >= governaceAfterBlock[wallet.network]
}
export const useGovernanceManagerMaker = () => {
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/common/strings.ts b/apps/wallet-mobile/src/features/Staking/Governance/common/strings.ts
index eeec2403a6..7b478e681e 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/common/strings.ts
+++ b/apps/wallet-mobile/src/features/Staking/Governance/common/strings.ts
@@ -1,7 +1,7 @@
import {ReactNode} from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages, {errorMessages, ledgerMessages, txLabels} from '../../../../i18n/global-messages'
+import globalMessages, {errorMessages, ledgerMessages, txLabels} from '../../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/useCases/ConfirmTx/ConfirmTxScreen.tsx b/apps/wallet-mobile/src/features/Staking/Governance/useCases/ConfirmTx/ConfirmTxScreen.tsx
index 74495476b0..e2b9bf56ec 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/useCases/ConfirmTx/ConfirmTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Staking/Governance/useCases/ConfirmTx/ConfirmTxScreen.tsx
@@ -10,9 +10,9 @@ import {ConfirmTxWithHwModal} from '../../../../../components/ConfirmTxWithHwMod
import {ConfirmTxWithOsModal} from '../../../../../components/ConfirmTxWithOsModal'
import {ConfirmTxWithSpendingPasswordModal} from '../../../../../components/ConfirmTxWithSpendingPasswordModal'
import {PairedBalance} from '../../../../../components/PairedBalance/PairedBalance'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {useUnsafeParams} from '../../../../../kernel/navigation'
import {formatTokenWithText} from '../../../../../legacy/format'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {useUnsafeParams} from '../../../../../navigation'
import {Amounts} from '../../../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../../../WalletManager/context/SelectedWalletContext'
import {useNavigateTo, useStrings} from '../../common'
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/useCases/Home/HomeScreen.tsx b/apps/wallet-mobile/src/features/Staking/Governance/useCases/Home/HomeScreen.tsx
index 968ca908b0..f37e0b5772 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/useCases/Home/HomeScreen.tsx
+++ b/apps/wallet-mobile/src/features/Staking/Governance/useCases/Home/HomeScreen.tsx
@@ -15,8 +15,8 @@ import {StyleSheet, Text, View} from 'react-native'
import {Button, Spacer, useModal} from '../../../../../components'
import {useStakingInfo} from '../../../../../Dashboard/StakePoolInfos'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {useUnsafeParams, useWalletNavigation} from '../../../../../navigation'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {useUnsafeParams, useWalletNavigation} from '../../../../../kernel/navigation'
import {
useCreateGovernanceTx,
useStakingKey,
diff --git a/apps/wallet-mobile/src/features/Staking/Governance/useCases/SuccessTx/SuccessTxScreen.tsx b/apps/wallet-mobile/src/features/Staking/Governance/useCases/SuccessTx/SuccessTxScreen.tsx
index 8027d4eab1..5e13821f73 100644
--- a/apps/wallet-mobile/src/features/Staking/Governance/useCases/SuccessTx/SuccessTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Staking/Governance/useCases/SuccessTx/SuccessTxScreen.tsx
@@ -4,8 +4,8 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../../components'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {useUnsafeParams, useWalletNavigation} from '../../../../../navigation'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {useUnsafeParams, useWalletNavigation} from '../../../../../kernel/navigation'
import {useNavigateTo, useStrings} from '../../common'
import {Routes} from '../../common/navigation'
import {SuccessTxImage} from '../../illustrations'
diff --git a/apps/wallet-mobile/src/features/Swap/SwapNavigator.tsx b/apps/wallet-mobile/src/features/Swap/SwapNavigator.tsx
index e766291fe6..3baa48713c 100644
--- a/apps/wallet-mobile/src/features/Swap/SwapNavigator.tsx
+++ b/apps/wallet-mobile/src/features/Swap/SwapNavigator.tsx
@@ -5,7 +5,7 @@ import React from 'react'
import {StyleSheet} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {defaultMaterialTopTabNavigationOptions, SwapTabRoutes} from '../../navigation'
+import {defaultMaterialTopTabNavigationOptions, SwapTabRoutes} from '../../kernel/navigation'
import {useBalance} from '../../yoroi-wallets/hooks'
import {useSelectedWallet} from '../WalletManager/context/SelectedWalletContext'
import {useStrings} from './common/strings'
diff --git a/apps/wallet-mobile/src/features/Swap/common/ConfirmRawTx/ConfirmRawTxWithOs.tsx b/apps/wallet-mobile/src/features/Swap/common/ConfirmRawTx/ConfirmRawTxWithOs.tsx
index 8a544aa1c2..548865c71e 100644
--- a/apps/wallet-mobile/src/features/Swap/common/ConfirmRawTx/ConfirmRawTxWithOs.tsx
+++ b/apps/wallet-mobile/src/features/Swap/common/ConfirmRawTx/ConfirmRawTxWithOs.tsx
@@ -2,7 +2,7 @@ import {useTheme} from '@yoroi/theme'
import React, {useEffect} from 'react'
import {ActivityIndicator, StyleSheet, Text, View} from 'react-native'
-import {useAuthOsWithEasyConfirmation} from '../../../../yoroi-wallets/auth'
+import {useAuthOsWithEasyConfirmation} from '../../../Auth/common/hooks'
import {useSelectedWallet} from '../../../WalletManager/context/SelectedWalletContext'
import {getErrorMessage} from '../errors'
import {useStrings} from '../strings'
diff --git a/apps/wallet-mobile/src/features/Swap/common/SelectPool/SelectPoolFromList/SelectPoolFromList.tsx b/apps/wallet-mobile/src/features/Swap/common/SelectPool/SelectPoolFromList/SelectPoolFromList.tsx
index cfac0a8bfc..1baedb9300 100644
--- a/apps/wallet-mobile/src/features/Swap/common/SelectPool/SelectPoolFromList/SelectPoolFromList.tsx
+++ b/apps/wallet-mobile/src/features/Swap/common/SelectPool/SelectPoolFromList/SelectPoolFromList.tsx
@@ -7,7 +7,7 @@ import {StyleSheet, Text, TouchableOpacity, View} from 'react-native'
import LinearGradient from 'react-native-linear-gradient'
import {Spacer} from '../../../../../components'
-import {useMetrics} from '../../../../../metrics/metricsManager'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
import {useTokenInfo} from '../../../../../yoroi-wallets/hooks'
import {asQuantity, Quantities} from '../../../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Swap/common/SwapFormProvider.tsx b/apps/wallet-mobile/src/features/Swap/common/SwapFormProvider.tsx
index 2e7706065f..f26e03db1d 100644
--- a/apps/wallet-mobile/src/features/Swap/common/SwapFormProvider.tsx
+++ b/apps/wallet-mobile/src/features/Swap/common/SwapFormProvider.tsx
@@ -3,7 +3,7 @@ import {produce} from 'immer'
import React from 'react'
import {Keyboard, TextInput} from 'react-native'
-import {useLanguage} from '../../../i18n'
+import {useLanguage} from '../../../kernel/i18n'
import {useBalances, useTokenInfo} from '../../../yoroi-wallets/hooks'
import {Amounts, Quantities} from '../../../yoroi-wallets/utils'
import {useSelectedWallet} from '../../WalletManager/context/SelectedWalletContext'
diff --git a/apps/wallet-mobile/src/features/Swap/common/navigation.ts b/apps/wallet-mobile/src/features/Swap/common/navigation.ts
index 81f3f43655..556fe8450c 100644
--- a/apps/wallet-mobile/src/features/Swap/common/navigation.ts
+++ b/apps/wallet-mobile/src/features/Swap/common/navigation.ts
@@ -1,7 +1,7 @@
import {useNavigation} from '@react-navigation/native'
import {useRef} from 'react'
-import {SwapTokenRouteseNavigation} from '../../../navigation'
+import {SwapTokenRouteseNavigation} from '../../../kernel/navigation'
export const useNavigateTo = () => {
const navigation = useNavigation()
diff --git a/apps/wallet-mobile/src/features/Swap/common/strings.ts b/apps/wallet-mobile/src/features/Swap/common/strings.ts
index f37ea44456..b74981bfa7 100644
--- a/apps/wallet-mobile/src/features/Swap/common/strings.ts
+++ b/apps/wallet-mobile/src/features/Swap/common/strings.ts
@@ -1,6 +1,6 @@
import {defineMessages, useIntl} from 'react-intl'
-import globalMessages, {errorMessages, ledgerMessages} from '../../../i18n/global-messages'
+import globalMessages, {errorMessages, ledgerMessages} from '../../../kernel/i18n/global-messages'
export const useStrings = () => {
const intl = useIntl()
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ConfirmTxScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ConfirmTxScreen.tsx
index d2dbd39521..e0715eef85 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ConfirmTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ConfirmTxScreen.tsx
@@ -8,11 +8,11 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, KeyboardAvoidingView, Spacer} from '../../../../components'
import {LoadingOverlay} from '../../../../components/LoadingOverlay'
import {useModal} from '../../../../components/Modal/ModalContext'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useAuthOsWithEasyConfirmation} from '../../../../yoroi-wallets/auth'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
import {useSignAndSubmitTx, useTokenInfo} from '../../../../yoroi-wallets/hooks'
import {YoroiSignedTx} from '../../../../yoroi-wallets/types'
import {Quantities} from '../../../../yoroi-wallets/utils'
+import {useAuthOsWithEasyConfirmation} from '../../../Auth/common/hooks'
import {useSelectedWallet} from '../../../WalletManager/context/SelectedWalletContext'
import {useNavigateTo} from '../../common/navigation'
import {useStrings} from '../../common/strings'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/LedgerTransportSwitch.tsx b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/LedgerTransportSwitch.tsx
index 0810b80897..e11985cdb0 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/LedgerTransportSwitch.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/LedgerTransportSwitch.tsx
@@ -3,7 +3,6 @@ import {Alert, ScrollView, StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../components'
import {useIsUsbSupported} from '../../../../HW'
-import {spacing} from '../../../../theme'
import {HARDWARE_WALLETS, useLedgerPermissions} from '../../../../yoroi-wallets/hw'
import {useStrings} from '../../common/strings'
@@ -55,7 +54,7 @@ export const LedgerTransportSwitch = LedgerTransportSwitchView
const styles = StyleSheet.create({
paragraph: {
- marginBottom: spacing.paragraphBottomMargin,
+ marginBottom: 16,
fontSize: 14,
lineHeight: 22,
},
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowFailedTxScreen/ShowFailedTxScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowFailedTxScreen/ShowFailedTxScreen.tsx
index c7165e4973..b6ecf63797 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowFailedTxScreen/ShowFailedTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowFailedTxScreen/ShowFailedTxScreen.tsx
@@ -3,7 +3,7 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Button, Spacer, Text} from '../../../../../components'
-import {useBlockGoBack} from '../../../../../navigation'
+import {useBlockGoBack} from '../../../../../kernel/navigation'
import {useNavigateTo} from '../../../common/navigation'
import {useStrings} from '../../../common/strings'
import {FailedTxImage} from './FailedTxImage'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowSubmittedTxScreen/ShowSubmittedTxScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowSubmittedTxScreen/ShowSubmittedTxScreen.tsx
index a8cd2b7660..e559e5c5dd 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowSubmittedTxScreen/ShowSubmittedTxScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/ConfirmTxScreen/ShowSubmittedTxScreen/ShowSubmittedTxScreen.tsx
@@ -7,7 +7,7 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {z} from 'zod'
import {Button, Spacer, Text} from '../../../../../components'
-import {useBlockGoBack, useUnsafeParams, useWalletNavigation} from '../../../../../navigation'
+import {useBlockGoBack, useUnsafeParams, useWalletNavigation} from '../../../../../kernel/navigation'
import {useSelectedWallet} from '../../../../WalletManager/context/SelectedWalletContext'
import {useStrings} from '../../../common/strings'
import {SubmittedTxImage} from './SubmittedTxImage'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/CreateOrder.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/CreateOrder.tsx
index ddc84e9d72..8eb061bc91 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/CreateOrder.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/CreateOrder.tsx
@@ -5,12 +5,12 @@ import {Swap} from '@yoroi/types'
import BigNumber from 'bignumber.js'
import * as React from 'react'
import {Alert, StyleSheet, useWindowDimensions, View, ViewProps} from 'react-native'
-import Config from 'react-native-config'
import {ScrollView} from 'react-native-gesture-handler'
import {Button, KeyboardAvoidingView, Spacer, useModal} from '../../../../../components'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../../navigation'
+import {frontendFeeAddressMainnet, frontendFeeAddressPreprod} from '../../../../../kernel/env'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../../kernel/navigation'
import {useDisableSearchOnBar} from '../../../../../Search/SearchContext'
import {NotEnoughMoneyToSendError} from '../../../../../yoroi-wallets/cardano/types'
import {useTokenInfo} from '../../../../../yoroi-wallets/hooks'
@@ -129,9 +129,7 @@ export const CreateOrder = () => {
const isMainnet = isMainnetNetworkId(wallet.networkId)
const frontendFee = selectedPoolCalculation.cost.frontendFeeInfo.fee
- const frontendFeeDepositAddress = isMainnet
- ? Config['FRONTEND_FEE_ADDRESS_MAINNET']
- : Config['FRONTEND_FEE_ADDRESS_PREPROD']
+ const frontendFeeDepositAddress = isMainnet ? frontendFeeAddressMainnet : frontendFeeAddressPreprod
const frontendFeeEntry = makePossibleFrontendFeeEntry(frontendFee, frontendFeeDepositAddress)
const entries = frontendFeeEntry != null ? [orderEntry, frontendFeeEntry] : [orderEntry]
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen.tsx
index d1add51375..0dbdce14ac 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditBuyAmount/SelectBuyTokenFromListScreen/SelectBuyTokenFromListScreen.tsx
@@ -9,7 +9,7 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Boundary, Icon, Spacer, Text} from '../../../../../../../components'
import {AmountItem, AmountItemPlaceholder} from '../../../../../../../components/AmountItem/AmountItem'
-import {useMetrics} from '../../../../../../../metrics/metricsManager'
+import {useMetrics} from '../../../../../../../kernel/metrics/metricsManager'
import {useSearch, useSearchOnNavBar} from '../../../../../../../Search/SearchContext'
import {YoroiWallet} from '../../../../../../../yoroi-wallets/cardano/types'
import {useBalance, useBalances} from '../../../../../../../yoroi-wallets/hooks'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen.tsx
index 3ed89ab43d..96d1d0c34e 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSellAmount/SelectSellTokenFromListScreen/SelectSellTokenFromListScreen.tsx
@@ -8,7 +8,7 @@ import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {Spacer, Text} from '../../../../../../../components'
-import {useMetrics} from '../../../../../../../metrics/metricsManager'
+import {useMetrics} from '../../../../../../../kernel/metrics/metricsManager'
import {useSearch, useSearchOnNavBar} from '../../../../../../../Search/SearchContext'
import {usePortfolioBalances} from '../../../../../../Portfolio/common/hooks/usePortfolioBalances'
import {TokenAmountItem} from '../../../../../../Portfolio/common/TokenAmountItem/TokenAmountItem'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSlippage/EditSlippageScreen/EditSlippageScreen.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSlippage/EditSlippageScreen/EditSlippageScreen.tsx
index 17d1a19175..f06c544639 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSlippage/EditSlippageScreen/EditSlippageScreen.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/CreateOrder/EditSlippage/EditSlippageScreen/EditSlippageScreen.tsx
@@ -6,9 +6,9 @@ import {ScrollView, StyleSheet, Text, TextInput, TouchableOpacity, View} from 'r
import {SafeAreaView} from 'react-native-safe-area-context'
import {Button, KeyboardAvoidingView} from '../../../../../../../components'
-import {useLanguage} from '../../../../../../../i18n'
-import {NumberLocale} from '../../../../../../../i18n/languages'
-import {useMetrics} from '../../../../../../../metrics/metricsManager'
+import {useLanguage} from '../../../../../../../kernel/i18n'
+import {NumberLocale} from '../../../../../../../kernel/i18n/languages'
+import {useMetrics} from '../../../../../../../kernel/metrics/metricsManager'
import {Quantities} from '../../../../../../../yoroi-wallets/utils'
import {useNavigateTo} from '../../../../../common/navigation'
import {useStrings} from '../../../../../common/strings'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/CompletedOrders.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/CompletedOrders.tsx
index 4792607cf6..cd4e35ac08 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/CompletedOrders.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/CompletedOrders.tsx
@@ -1,5 +1,4 @@
import {useFocusEffect} from '@react-navigation/native'
-import {isString} from '@yoroi/common'
import {useExplorers} from '@yoroi/explorers'
import {getPoolUrlByProvider} from '@yoroi/swap'
import {useTheme} from '@yoroi/theme'
@@ -10,7 +9,6 @@ import {capitalize} from 'lodash'
import React from 'react'
import {useIntl} from 'react-intl'
import {Linking, StyleSheet, TouchableOpacity, View} from 'react-native'
-import Config from 'react-native-config'
import {FlatList} from 'react-native-gesture-handler'
import {
@@ -23,7 +21,8 @@ import {
Text,
TokenIcon,
} from '../../../../../components'
-import {useMetrics} from '../../../../../metrics/metricsManager'
+import {frontendFeeAddressMainnet, frontendFeeAddressPreprod} from '../../../../../kernel/env'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
import {useSearch} from '../../../../../Search/SearchContext'
import {useSync, useTokenInfos, useTransactionInfos} from '../../../../../yoroi-wallets/hooks'
import {TransactionInfo, TxMetadataInfo} from '../../../../../yoroi-wallets/types'
@@ -86,11 +85,8 @@ const findCompletedOrderTx = (transactions: TransactionInfo[]): MappedRawOrder[]
const hasFrontendFeeReturn = (tx: TransactionInfo): boolean => {
const addresses = tx.inputs.map((input) => input.address).filter(Boolean)
- const frontendFeeMainnetAddress = Config['FRONTEND_FEE_ADDRESS_MAINNET']
- const frontendFeePreprodAddress = Config['FRONTEND_FEE_ADDRESS_PREPROD']
-
- const containsMainnetFeeAddress = isString(frontendFeeMainnetAddress) && addresses.includes(frontendFeeMainnetAddress)
- const containsPreprodFeeAddress = isString(frontendFeePreprodAddress) && addresses.includes(frontendFeePreprodAddress)
+ const containsMainnetFeeAddress = addresses.includes(frontendFeeAddressMainnet)
+ const containsPreprodFeeAddress = addresses.includes(frontendFeeAddressPreprod)
return containsMainnetFeeAddress || containsPreprodFeeAddress
}
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/ListOrders.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/ListOrders.tsx
index 7cfa1eded3..a64c8ead23 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/ListOrders.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/ListOrders.tsx
@@ -4,7 +4,7 @@ import {ErrorBoundary} from 'react-error-boundary'
import {StyleSheet, View} from 'react-native'
import {Boundary} from '../../../../../components'
-import {useWalletNavigation} from '../../../../../navigation'
+import {useWalletNavigation} from '../../../../../kernel/navigation'
import {useSearchOnNavBar} from '../../../../../Search/SearchContext'
import {ButtonGroup} from '../../../common/ButtonGroup/ButtonGroup'
import {ServiceUnavailable} from '../../../common/ServiceUnavailable/ServiceUnavailable'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/OpenOrders.tsx b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/OpenOrders.tsx
index 1db99544d3..6abddaf9e7 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/OpenOrders.tsx
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/OpenOrders.tsx
@@ -24,9 +24,9 @@ import {
useModal,
} from '../../../../../components'
import {LoadingOverlay} from '../../../../../components/LoadingOverlay'
-import {useLanguage} from '../../../../../i18n'
-import {useMetrics} from '../../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../../navigation'
+import {useLanguage} from '../../../../../kernel/i18n'
+import {useMetrics} from '../../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../../kernel/navigation'
import {useSearch} from '../../../../../Search/SearchContext'
import {SubmitTxInsufficientCollateralError} from '../../../../../yoroi-wallets/cardano/api/errors'
import {convertBech32ToHex, getTransactionSigners} from '../../../../../yoroi-wallets/cardano/common/signatureUtils'
diff --git a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/mapOrders.ts b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/mapOrders.ts
index 8f3d748a32..479f229178 100644
--- a/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/mapOrders.ts
+++ b/apps/wallet-mobile/src/features/Swap/useCases/StartSwapScreen/ListOrders/mapOrders.ts
@@ -3,7 +3,7 @@ import {getPoolUrlByProvider} from '@yoroi/swap'
import {Balance, Swap} from '@yoroi/types'
import BigNumber from 'bignumber.js'
-import {NumberLocale} from '../../../../../i18n/languages'
+import {NumberLocale} from '../../../../../kernel/i18n/languages'
import {NETWORK_CONFIG} from '../../../../../yoroi-wallets/cardano/constants/mainnet/constants'
import {TransactionInfo} from '../../../../../yoroi-wallets/types'
import {Quantities} from '../../../../../yoroi-wallets/utils'
diff --git a/apps/wallet-mobile/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.tsx b/apps/wallet-mobile/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.tsx
index caae2cbd4e..461f7fa76d 100644
--- a/apps/wallet-mobile/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.tsx
+++ b/apps/wallet-mobile/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.tsx
@@ -3,7 +3,7 @@ import {useTheme} from '@yoroi/theme'
import React from 'react'
import {defineMessages, useIntl} from 'react-intl'
-import {defaultStackNavigationOptions, ToggleAnalyticsSettingsRoutes} from '../../navigation'
+import {defaultStackNavigationOptions, ToggleAnalyticsSettingsRoutes} from '../../kernel/navigation'
import {ToggleAnalyticsSettingsScreen} from './ToggleAnalyticsSettingsScreen'
const Stack = createStackNavigator()
diff --git a/apps/wallet-mobile/src/features/WalletManager/common/walletManager.test.ts b/apps/wallet-mobile/src/features/WalletManager/common/walletManager.test.ts
index f83fd148a5..42c6ad93eb 100644
--- a/apps/wallet-mobile/src/features/WalletManager/common/walletManager.test.ts
+++ b/apps/wallet-mobile/src/features/WalletManager/common/walletManager.test.ts
@@ -13,7 +13,7 @@ describe('walletMananger', () => {
})
it('creates a wallet', async () => {
- const walletManager = new WalletManager()
+ const walletManager = WalletManager.instance()
await expect(walletManager.listWallets()).resolves.toEqual([])
const name = 'name'
@@ -70,7 +70,7 @@ describe('walletMananger', () => {
expect(await walletManager.listWallets()).toEqual([])
after: {
- const walletManager = new WalletManager()
+ const walletManager = WalletManager.instance()
expect(await walletManager.listWallets()).toEqual([])
await walletManager.removeDeletedWallets()
@@ -88,7 +88,7 @@ describe('walletMananger', () => {
})
it('creates a readonly wallet', async () => {
- const walletManager = new WalletManager()
+ const walletManager = WalletManager.instance()
await expect(walletManager.listWallets()).resolves.toEqual([])
const name = 'name'
@@ -121,7 +121,7 @@ describe('walletMananger', () => {
})
it('creates a hw wallet', async () => {
- const walletManager = new WalletManager()
+ const walletManager = WalletManager.instance()
await expect(walletManager.listWallets()).resolves.toEqual([])
const name = 'name'
diff --git a/apps/wallet-mobile/src/features/WalletManager/common/walletManager.ts b/apps/wallet-mobile/src/features/WalletManager/common/walletManager.ts
index c253ed35fd..d97f62a5a1 100644
--- a/apps/wallet-mobile/src/features/WalletManager/common/walletManager.ts
+++ b/apps/wallet-mobile/src/features/WalletManager/common/walletManager.ts
@@ -15,12 +15,12 @@ import {
} from 'rxjs'
import uuid from 'uuid'
+import {makeWalletEncryptedStorage} from '../../../kernel/storage/EncryptedStorage'
+import {Keychain} from '../../../kernel/storage/Keychain'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {getCardanoWalletFactory} from '../../../yoroi-wallets/cardano/getWallet'
import {isYoroiWallet, YoroiWallet} from '../../../yoroi-wallets/cardano/types'
import {HWDeviceInfo} from '../../../yoroi-wallets/hw'
-import {makeWalletEncryptedStorage} from '../../../yoroi-wallets/storage'
-import {Keychain} from '../../../yoroi-wallets/storage/Keychain'
-import {rootStorage} from '../../../yoroi-wallets/storage/rootStorage'
import {NetworkId, WalletImplementationId} from '../../../yoroi-wallets/types'
import {buildPortfolioTokenManagers} from '../../Portfolio/common/hooks/usePortfolioTokenManager'
import {AddressMode, WalletInfos, WalletManagerEvent, WalletManagerSubscription, WalletMeta} from './types'
@@ -42,13 +42,15 @@ export class WalletManager {
#syncControl$ = new BehaviorSubject(true)
#syncSubscription: Subscription | null = null
- constructor() {
+ private constructor() {
if (WalletManager.#instance) return WalletManager.#instance
WalletManager.#instance = this
}
static instance() {
- if (!WalletManager.#instance) return new WalletManager()
+ if (!WalletManager.#instance) {
+ WalletManager.#instance = new WalletManager()
+ }
return WalletManager.#instance
}
diff --git a/apps/wallet-mobile/src/features/WalletManager/useCases/SelectWalletFromListScreen/SelectWalletFromListScreen.tsx b/apps/wallet-mobile/src/features/WalletManager/useCases/SelectWalletFromListScreen/SelectWalletFromListScreen.tsx
index cafea109e6..453f3dbb5d 100644
--- a/apps/wallet-mobile/src/features/WalletManager/useCases/SelectWalletFromListScreen/SelectWalletFromListScreen.tsx
+++ b/apps/wallet-mobile/src/features/WalletManager/useCases/SelectWalletFromListScreen/SelectWalletFromListScreen.tsx
@@ -8,8 +8,8 @@ import {SafeAreaView} from 'react-native-safe-area-context'
import {Button} from '../../../../components/Button'
import {ScrollView, useScrollView} from '../../../../components/ScrollView/ScrollView'
import {Space} from '../../../../components/Space/Space'
-import {useMetrics} from '../../../../metrics/metricsManager'
-import {useWalletNavigation} from '../../../../navigation'
+import {useMetrics} from '../../../../kernel/metrics/metricsManager'
+import {useWalletNavigation} from '../../../../kernel/navigation'
import {useWalletMetas} from '../../../../yoroi-wallets/hooks'
import {useLinksRequestWallet} from '../../../Links/common/useLinksRequestWallet'
import {WalletMeta} from '../../common/types'
diff --git a/apps/wallet-mobile/src/api/useApiErrorResolver.tsx b/apps/wallet-mobile/src/kernel/api/useApiErrorResolver.tsx
similarity index 100%
rename from apps/wallet-mobile/src/api/useApiErrorResolver.tsx
rename to apps/wallet-mobile/src/kernel/api/useApiErrorResolver.tsx
diff --git a/apps/wallet-mobile/src/api/useDialogsApi.tsx b/apps/wallet-mobile/src/kernel/api/useDialogsApi.tsx
similarity index 100%
rename from apps/wallet-mobile/src/api/useDialogsApi.tsx
rename to apps/wallet-mobile/src/kernel/api/useDialogsApi.tsx
diff --git a/apps/wallet-mobile/src/api/useStringsApiErrors.tsx b/apps/wallet-mobile/src/kernel/api/useStringsApiErrors.tsx
similarity index 100%
rename from apps/wallet-mobile/src/api/useStringsApiErrors.tsx
rename to apps/wallet-mobile/src/kernel/api/useStringsApiErrors.tsx
diff --git a/apps/wallet-mobile/src/kernel/appInfo.ts b/apps/wallet-mobile/src/kernel/appInfo.ts
new file mode 100644
index 0000000000..025d5b198b
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/appInfo.ts
@@ -0,0 +1,19 @@
+import {freeze} from 'immer'
+import {Platform} from 'react-native'
+import DeviceInfo from 'react-native-device-info'
+
+import {isNightly, isProduction} from './env'
+
+const environment = isNightly ? 'nightly' : isProduction ? 'production' : 'development'
+const version = DeviceInfo.getVersion()
+const release = isProduction ? version : 'dev'
+const build = DeviceInfo.getBuildNumber()
+const distribution = `${Platform.OS}.${build}`
+
+export const appInfo = freeze({
+ environment,
+ version,
+ release,
+ build,
+ distribution,
+})
diff --git a/apps/wallet-mobile/src/kernel/config.ts b/apps/wallet-mobile/src/kernel/config.ts
new file mode 100644
index 0000000000..3298d614d9
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/config.ts
@@ -0,0 +1,19 @@
+import {Chain} from '@yoroi/types'
+import {freeze} from 'immer'
+
+import {isDev} from './env'
+import {LoggerLevel} from './logger/types'
+
+export const dappExplorerEnabled = isDev
+
+export const governaceAfterBlock = freeze({
+ [Chain.Network.Sancho]: 0,
+
+ // TODO: Add block number once known
+ [Chain.Network.Mainnet]: Infinity,
+ [Chain.Network.Preprod]: Infinity,
+})
+
+export const agreementDate = 1691967600000
+
+export const loggerLevel: LoggerLevel = isDev ? LoggerLevel.Debug : LoggerLevel.Warn
diff --git a/apps/wallet-mobile/src/dialogs.ts b/apps/wallet-mobile/src/kernel/dialogs.ts
similarity index 100%
rename from apps/wallet-mobile/src/dialogs.ts
rename to apps/wallet-mobile/src/kernel/dialogs.ts
diff --git a/apps/wallet-mobile/src/kernel/env.ts b/apps/wallet-mobile/src/kernel/env.ts
new file mode 100644
index 0000000000..bd637dd438
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/env.ts
@@ -0,0 +1,20 @@
+import BuildConfig from 'react-native-config'
+
+const getString = (key: string) => BuildConfig[key] ?? ''
+
+export const sentryDsn = getString('SENTRY_DSN')
+export const unstoppableApiKey = getString('UNSTOPPABLE_API_KEY')
+export const commit = getString('COMMIT')
+
+export const buildVariant = getString('BUILD_VARIANT')
+export const isNightly = buildVariant === 'NIGHTLY'
+export const isProduction = buildVariant === 'PROD'
+export const isDev = __DEV__ // for dev BUILD_VARIANT must be set != prod/nighly
+
+export const frontendFeeAddressMainnet = getString('FRONTEND_FEE_ADDRESS_MAINNET')
+export const frontendFeeAddressPreprod = getString('FRONTEND_FEE_ADDRESS_PREPROD')
+
+export const banxaTestWallet = getString('BANXA_TEST_WALLET')
+
+export const dappExplorerEnabled = Boolean(BuildConfig['DAPP_EXPLORER_ENABLED'])
+export const disableLogbox = Boolean(BuildConfig['DISABLE_LOGBOX'])
diff --git a/apps/wallet-mobile/src/i18n/LanguageProvider.tsx b/apps/wallet-mobile/src/kernel/i18n/LanguageProvider.tsx
similarity index 100%
rename from apps/wallet-mobile/src/i18n/LanguageProvider.tsx
rename to apps/wallet-mobile/src/kernel/i18n/LanguageProvider.tsx
diff --git a/apps/wallet-mobile/src/i18n/LocalizableError.ts b/apps/wallet-mobile/src/kernel/i18n/LocalizableError.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/LocalizableError.ts
rename to apps/wallet-mobile/src/kernel/i18n/LocalizableError.ts
diff --git a/apps/wallet-mobile/src/i18n/global-messages.ts b/apps/wallet-mobile/src/kernel/i18n/global-messages.ts
similarity index 99%
rename from apps/wallet-mobile/src/i18n/global-messages.ts
rename to apps/wallet-mobile/src/kernel/i18n/global-messages.ts
index 50fe49a13d..fd6381f508 100644
--- a/apps/wallet-mobile/src/i18n/global-messages.ts
+++ b/apps/wallet-mobile/src/kernel/i18n/global-messages.ts
@@ -1,6 +1,6 @@
import {defineMessages} from 'react-intl'
-import {supportedCurrencies, supportedThemes} from '../yoroi-wallets/types/other'
+import {supportedCurrencies, supportedThemes} from '../../yoroi-wallets/types/other'
/*
* Some messages need to be used in multiple components
diff --git a/apps/wallet-mobile/src/i18n/index.ts b/apps/wallet-mobile/src/kernel/i18n/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/index.ts
rename to apps/wallet-mobile/src/kernel/i18n/index.ts
diff --git a/apps/wallet-mobile/src/i18n/initialization.ts b/apps/wallet-mobile/src/kernel/i18n/initialization.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/initialization.ts
rename to apps/wallet-mobile/src/kernel/i18n/initialization.ts
diff --git a/apps/wallet-mobile/src/i18n/languages.ts b/apps/wallet-mobile/src/kernel/i18n/languages.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/languages.ts
rename to apps/wallet-mobile/src/kernel/i18n/languages.ts
diff --git a/apps/wallet-mobile/src/i18n/locales/bn-BD.json b/apps/wallet-mobile/src/kernel/i18n/locales/bn-BD.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/bn-BD.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/bn-BD.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/bn-BD.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/bn-BD.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/cs-CZ.json b/apps/wallet-mobile/src/kernel/i18n/locales/cs-CZ.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/cs-CZ.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/cs-CZ.json
index 83aed783d7..fc51ebbcb9 100644
--- a/apps/wallet-mobile/src/i18n/locales/cs-CZ.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/cs-CZ.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/de-DE.json b/apps/wallet-mobile/src/kernel/i18n/locales/de-DE.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/de-DE.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/de-DE.json
index 365a6a26a2..04c9f12d16 100644
--- a/apps/wallet-mobile/src/i18n/locales/de-DE.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/de-DE.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/el-GR.json b/apps/wallet-mobile/src/kernel/i18n/locales/el-GR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/el-GR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/el-GR.json
index de92dc567c..e912458851 100644
--- a/apps/wallet-mobile/src/i18n/locales/el-GR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/el-GR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/en-US.json b/apps/wallet-mobile/src/kernel/i18n/locales/en-US.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/en-US.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/en-US.json
index 0625cfab52..9149ae5ffd 100644
--- a/apps/wallet-mobile/src/i18n/locales/en-US.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/en-US.json
@@ -437,7 +437,7 @@
"components.settings.walletsettingscreen.byronWallet": "Byron-era wallet",
"components.settings.walletsettingscreen.changePassword": "Change spending password",
"components.settings.walletsettingscreen.easyConfirmation": "Easy transaction confirmation",
- "components.settings.walletsettingscreen.easyConfirmationInfo":"Skip the password and approve transactions with biometrics",
+ "components.settings.walletsettingscreen.easyConfirmationInfo": "Skip the password and approve transactions with biometrics",
"components.settings.walletsettingscreen.general": "General",
"components.settings.walletsettingscreen.logout": "Logout",
"components.settings.walletsettingscreen.removeWallet": "Remove wallet",
@@ -800,6 +800,7 @@
"global.ledgerMessages.usbAlwaysConnected": "Your Ledger device remains connected through USB until the process is completed.",
"global.lockedDeposit": "Locked deposit",
"global.lockedDepositHint": "This amount cannot be transferred or delegated while you hold assets like tokens or NFTs",
+ "global.log": "Log",
"global.max": "Max",
"global.network.syncErrorBannerTextWithoutRefresh": "We are experiencing synchronization issues.",
"global.network.syncErrorBannerTextWithRefresh": "We are experiencing synchronization issues. Pull to refresh",
@@ -1052,5 +1053,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/es-ES.json b/apps/wallet-mobile/src/kernel/i18n/locales/es-ES.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/es-ES.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/es-ES.json
index 2ea2e090e1..ca6090ec72 100644
--- a/apps/wallet-mobile/src/i18n/locales/es-ES.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/es-ES.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/fil-PH.json b/apps/wallet-mobile/src/kernel/i18n/locales/fil-PH.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/fil-PH.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/fil-PH.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/fil-PH.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/fil-PH.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/fr-FR.json b/apps/wallet-mobile/src/kernel/i18n/locales/fr-FR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/fr-FR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/fr-FR.json
index 88177f49ba..077e13281a 100644
--- a/apps/wallet-mobile/src/i18n/locales/fr-FR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/fr-FR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/hr-HR.json b/apps/wallet-mobile/src/kernel/i18n/locales/hr-HR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/hr-HR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/hr-HR.json
index 8f3725dfc1..fd93259383 100644
--- a/apps/wallet-mobile/src/i18n/locales/hr-HR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/hr-HR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/hu-HU.json b/apps/wallet-mobile/src/kernel/i18n/locales/hu-HU.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/hu-HU.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/hu-HU.json
index 0b07154445..f8b063e5ec 100644
--- a/apps/wallet-mobile/src/i18n/locales/hu-HU.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/hu-HU.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/id-ID.json b/apps/wallet-mobile/src/kernel/i18n/locales/id-ID.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/id-ID.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/id-ID.json
index a5a9b861d0..6d8111bf6b 100644
--- a/apps/wallet-mobile/src/i18n/locales/id-ID.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/id-ID.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/it-IT.json b/apps/wallet-mobile/src/kernel/i18n/locales/it-IT.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/it-IT.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/it-IT.json
index a0aa801183..d9a81ce865 100644
--- a/apps/wallet-mobile/src/i18n/locales/it-IT.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/it-IT.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/ja-JP.json b/apps/wallet-mobile/src/kernel/i18n/locales/ja-JP.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/ja-JP.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/ja-JP.json
index 64925c9734..e73efbb1a5 100644
--- a/apps/wallet-mobile/src/i18n/locales/ja-JP.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/ja-JP.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/ko-KR.json b/apps/wallet-mobile/src/kernel/i18n/locales/ko-KR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/ko-KR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/ko-KR.json
index 77001ef16f..fdda9b81cc 100644
--- a/apps/wallet-mobile/src/i18n/locales/ko-KR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/ko-KR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/nl-NL.json b/apps/wallet-mobile/src/kernel/i18n/locales/nl-NL.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/nl-NL.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/nl-NL.json
index 7a5616e899..a687c48d8b 100644
--- a/apps/wallet-mobile/src/i18n/locales/nl-NL.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/nl-NL.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/pl-PL.json b/apps/wallet-mobile/src/kernel/i18n/locales/pl-PL.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/pl-PL.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/pl-PL.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/pl-PL.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/pl-PL.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/pt-BR.json b/apps/wallet-mobile/src/kernel/i18n/locales/pt-BR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/pt-BR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/pt-BR.json
index 88c7dc8d21..bbe94c2122 100644
--- a/apps/wallet-mobile/src/i18n/locales/pt-BR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/pt-BR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/ru-RU.json b/apps/wallet-mobile/src/kernel/i18n/locales/ru-RU.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/ru-RU.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/ru-RU.json
index 4f9c73a89f..65c82c95e8 100644
--- a/apps/wallet-mobile/src/i18n/locales/ru-RU.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/ru-RU.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/sk-SK.json b/apps/wallet-mobile/src/kernel/i18n/locales/sk-SK.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/sk-SK.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/sk-SK.json
index ecac80019e..20899031ee 100644
--- a/apps/wallet-mobile/src/i18n/locales/sk-SK.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/sk-SK.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/sl-SI.json b/apps/wallet-mobile/src/kernel/i18n/locales/sl-SI.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/sl-SI.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/sl-SI.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/sl-SI.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/sl-SI.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/sv-SE.json b/apps/wallet-mobile/src/kernel/i18n/locales/sv-SE.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/sv-SE.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/sv-SE.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/sv-SE.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/sv-SE.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/sw-KE.json b/apps/wallet-mobile/src/kernel/i18n/locales/sw-KE.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/sw-KE.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/sw-KE.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/sw-KE.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/sw-KE.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/tr-TR.json b/apps/wallet-mobile/src/kernel/i18n/locales/tr-TR.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/tr-TR.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/tr-TR.json
index 294ea28b93..d59349f8ae 100644
--- a/apps/wallet-mobile/src/i18n/locales/tr-TR.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/tr-TR.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/uk-UA.json b/apps/wallet-mobile/src/kernel/i18n/locales/uk-UA.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/uk-UA.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/uk-UA.json
index 1afe59f77b..45daa81bbc 100644
--- a/apps/wallet-mobile/src/i18n/locales/uk-UA.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/uk-UA.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/vi-VN.json b/apps/wallet-mobile/src/kernel/i18n/locales/vi-VN.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/vi-VN.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/vi-VN.json
index 23eb7a9a1e..9bf165a222 100644
--- a/apps/wallet-mobile/src/i18n/locales/vi-VN.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/vi-VN.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/zh-Hans.json b/apps/wallet-mobile/src/kernel/i18n/locales/zh-Hans.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/zh-Hans.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/zh-Hans.json
index 12a9c7842a..596591270b 100644
--- a/apps/wallet-mobile/src/i18n/locales/zh-Hans.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/zh-Hans.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/locales/zh-Hant.json b/apps/wallet-mobile/src/kernel/i18n/locales/zh-Hant.json
similarity index 99%
rename from apps/wallet-mobile/src/i18n/locales/zh-Hant.json
rename to apps/wallet-mobile/src/kernel/i18n/locales/zh-Hant.json
index c597224590..dce5638847 100644
--- a/apps/wallet-mobile/src/i18n/locales/zh-Hant.json
+++ b/apps/wallet-mobile/src/kernel/i18n/locales/zh-Hant.json
@@ -1050,5 +1050,11 @@
"discover.discoverList.dAppActions": "DApp actions",
"walletinit.theme.tryDarkTheme": "Try Yoroi dark theme",
"walletinit.theme.description": "Press the theme switcher and dive into the new stylish theme crafted to enhance your Cardano wallet experience",
- "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings"
+ "walletinit.theme.chanageTheme": "You can always change your theme later in the App settings",
+ "discover.confirmConnectionModal.title": "Confirm connection",
+ "discover.confirmConnectionModal.connectTo": "Connect to",
+ "discover.confirmConnectionModal.connect": "Connect",
+ "discover.confirmConnectionModal.allowThisDAppTo": "Allow this DApp to:",
+ "discover.confirmConnectionModal.permission1": "View addresses, account balance, activity",
+ "discover.confirmConnectionModal.permission2": "Request approval for transactions"
}
diff --git a/apps/wallet-mobile/src/i18n/polyfills.ts b/apps/wallet-mobile/src/kernel/i18n/polyfills.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/polyfills.ts
rename to apps/wallet-mobile/src/kernel/i18n/polyfills.ts
diff --git a/apps/wallet-mobile/src/i18n/translations.ts b/apps/wallet-mobile/src/kernel/i18n/translations.ts
similarity index 100%
rename from apps/wallet-mobile/src/i18n/translations.ts
rename to apps/wallet-mobile/src/kernel/i18n/translations.ts
diff --git a/apps/wallet-mobile/src/kernel/logger/adapters/dev-transporter.ts b/apps/wallet-mobile/src/kernel/logger/adapters/dev-transporter.ts
new file mode 100644
index 0000000000..0b7a437522
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/adapters/dev-transporter.ts
@@ -0,0 +1,28 @@
+import {freeze} from 'immer'
+
+import {replacer} from '../helpers/replacer'
+import {toLoggerMetadata} from '../helpers/to-logger-metadata'
+import {LoggerLevel, LoggerTransporter} from '../types'
+
+/* eslint-disable no-console */
+const devLogger = freeze({
+ [LoggerLevel.Debug]: console.debug, // console.debug is hidden by default in chrome
+ [LoggerLevel.Log]: console.log,
+ [LoggerLevel.Info]: console.info,
+ [LoggerLevel.Warn]: console.warn,
+ [LoggerLevel.Error]: console.error,
+})
+/* eslint-enable no-console */
+
+export const devAdapter = (transport = devLogger) => {
+ const transporter: LoggerTransporter = ({level, message, metadata, timestamp}) => {
+ const formattedMetadata = Object.keys(metadata).length
+ ? ' ' + JSON.stringify(toLoggerMetadata(metadata), replacer, 2)
+ : ''
+ const formattedMessage = metadata.origin?.length ? `${origin} ${message}` : message
+
+ transport[level](`${new Date(timestamp).toISOString()} ${formattedMessage}${formattedMetadata}`)
+ }
+
+ return freeze({transporter})
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/adapters/sentry-transporter.ts b/apps/wallet-mobile/src/kernel/logger/adapters/sentry-transporter.ts
new file mode 100644
index 0000000000..61c5834215
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/adapters/sentry-transporter.ts
@@ -0,0 +1,37 @@
+import {freeze} from 'immer'
+
+import {toLoggerMetadata} from '../helpers/to-logger-metadata'
+import {LoggerTransporter} from '../types'
+import {Sentry} from './sentry'
+
+export const sentryAdapter = (sentryRuntime = Sentry) => {
+ const transporter: LoggerTransporter = ({level, message, metadata, timestamp}) => {
+ const {type, ...meta} = metadata
+ const formattedMetadata = toLoggerMetadata(meta)
+
+ // simple message, add a breadcrumb
+ if (typeof message === 'string') {
+ const formattedMessage = metadata.origin?.length ? `${origin} ${message}` : message
+ sentryRuntime.addBreadcrumb({
+ message: formattedMessage,
+ data: formattedMetadata,
+ type: type ?? 'default',
+ level: level as Sentry.Breadcrumb['level'],
+ timestamp: timestamp / 1000,
+ })
+
+ if (level === 'error' || level === 'warn' || level === 'log') {
+ sentryRuntime.captureMessage(formattedMessage, {
+ level: level as Sentry.Breadcrumb['level'],
+ extra: meta,
+ })
+ }
+ } else {
+ sentryRuntime.captureException(message, {
+ extra: formattedMetadata,
+ })
+ }
+ }
+
+ return freeze({transporter})
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/adapters/sentry.ts b/apps/wallet-mobile/src/kernel/logger/adapters/sentry.ts
new file mode 100644
index 0000000000..a2ed8452d0
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/adapters/sentry.ts
@@ -0,0 +1 @@
+export {Native as Sentry} from 'sentry-expo'
diff --git a/apps/wallet-mobile/src/kernel/logger/helpers/replacer.ts b/apps/wallet-mobile/src/kernel/logger/helpers/replacer.ts
new file mode 100644
index 0000000000..99e9792262
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/helpers/replacer.ts
@@ -0,0 +1,3 @@
+export function replacer(_: unknown, value: unknown) {
+ return typeof value === 'bigint' ? value.toString() : value
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/helpers/to-logger-metadata.ts b/apps/wallet-mobile/src/kernel/logger/helpers/to-logger-metadata.ts
new file mode 100644
index 0000000000..f84f80d90a
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/helpers/to-logger-metadata.ts
@@ -0,0 +1,10 @@
+import {LoggerMetadata} from '../types'
+
+export function toLoggerMetadata(metadata: LoggerMetadata): LoggerMetadata {
+ return Object.keys(metadata).reduce((acc, key) => {
+ let value = metadata[key]
+ if (value instanceof Error) value = value.toString()
+
+ return {...acc, [key]: value}
+ }, {})
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx b/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx
new file mode 100644
index 0000000000..556e4aeda2
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/hooks/useSetupLogger.tsx
@@ -0,0 +1,50 @@
+import * as React from 'react'
+
+import {getCrashReportsEnabled} from '../../../yoroi-wallets/hooks'
+import {appInfo} from '../../appInfo'
+import {loggerLevel} from '../../config'
+import {isDev, isProduction, sentryDsn} from '../../env'
+import {devAdapter} from '../adapters/dev-transporter'
+import {Sentry} from '../adapters/sentry'
+import {sentryAdapter} from '../adapters/sentry-transporter'
+import {logger} from '../logger'
+
+export const useSetupLogger = () => {
+ const [done, setDone] = React.useState(false)
+
+ React.useEffect(() => {
+ const initLogger = async () => {
+ const sampleRate = isProduction ? 0.25 : 1
+ const isEnabled = await getCrashReportsEnabled()
+
+ logger.level = loggerLevel
+ if (isDev) logger.addTransport(devAdapter().transporter)
+
+ if (isEnabled) {
+ logger.enable()
+ } else {
+ logger.disable()
+ }
+
+ Sentry.init({
+ dsn: sentryDsn,
+ tracesSampleRate: sampleRate,
+ environment: appInfo.environment,
+ release: appInfo.release,
+ dist: appInfo.distribution,
+ beforeSend(event) {
+ // https://github.com/getsentry/sentry-javascript/issues/2039
+ // TODO: this will require to close the app when changing in the settings to take effect
+ return isEnabled ? event : null
+ },
+ })
+
+ logger.addTransport(sentryAdapter().transporter)
+
+ setDone(true)
+ }
+ initLogger()
+ }, [])
+
+ return done
+}
diff --git a/apps/wallet-mobile/src/kernel/logger/logger.ts b/apps/wallet-mobile/src/kernel/logger/logger.ts
new file mode 100644
index 0000000000..6433fd52df
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/logger.ts
@@ -0,0 +1,110 @@
+import {freeze} from 'immer'
+
+import {
+ LoggerEntry,
+ LoggerLevel,
+ LoggerManager,
+ LoggerMetadata,
+ LoggerTransporter,
+ LoggerTransporterOptions,
+} from './types'
+
+class Logger implements LoggerManager {
+ static readonly trailLimit = 500
+ static #instance: Logger
+
+ #enabled = false
+ #trail: Array = []
+
+ level = LoggerLevel.Info
+
+ readonly #transporters: LoggerTransporter[] = []
+
+ static instance(): Logger {
+ if (!Logger.#instance) {
+ Logger.#instance = new Logger()
+ }
+ return Logger.#instance
+ }
+
+ private constructor() {
+ if (Logger.#instance) {
+ return Logger.#instance
+ }
+ Logger.#instance = this
+ }
+
+ debug(message: string, metadata: LoggerMetadata = {}) {
+ const entry = {level: LoggerLevel.Debug, message, metadata}
+ this.transport(entry)
+ }
+
+ log(message: string, metadata: LoggerMetadata = {}) {
+ const entry = {level: LoggerLevel.Debug, message, metadata}
+ this.transport(entry)
+ }
+
+ info(message: string, metadata: LoggerMetadata = {}) {
+ const entry = {level: LoggerLevel.Debug, message, metadata}
+ this.transport(entry)
+ }
+
+ warn(message: string, metadata: LoggerMetadata = {}) {
+ const entry = {level: LoggerLevel.Debug, message, metadata}
+ this.transport(entry)
+ }
+
+ error(error: Error | string, metadata: LoggerMetadata = {}) {
+ const entry = {level: LoggerLevel.Debug, message: error, metadata}
+ this.transport(entry)
+ }
+
+ addTransport(transport: LoggerTransporter) {
+ this.#transporters.push(transport)
+ return () => this.#transporters.splice(this.#transporters.indexOf(transport), 1)
+ }
+
+ disable() {
+ this.#enabled = false
+ }
+
+ enable() {
+ this.#enabled = true
+ }
+
+ get trail() {
+ return this.#trail.slice(0)
+ }
+
+ // NOTE: needs `@babel/plugin-transform-private-methods` to use as #transport
+ private transport({level, message, metadata}: Pick) {
+ if (!this.#enabled) return
+ if (loggerHierarchy[level] > loggerHierarchy[this.level]) return
+
+ const timestamp = Date.now()
+ const entry = {level, message, metadata, timestamp}
+
+ this.trailTransporter(entry)
+ for (const transport of this.#transporters) transport(entry)
+ }
+
+ private trailTransporter(options: LoggerTransporterOptions) {
+ const newEntry: LoggerEntry = {
+ ...options,
+ message: options.message.toString(),
+ id: `${Math.random().toString(36).slice(2)}`,
+ }
+ this.#trail.unshift(newEntry)
+ this.#trail = this.#trail.slice(0, Logger.trailLimit)
+ }
+}
+
+export const logger = Logger.instance()
+
+const loggerHierarchy = freeze({
+ [LoggerLevel.Debug]: 4,
+ [LoggerLevel.Log]: 3,
+ [LoggerLevel.Info]: 2,
+ [LoggerLevel.Warn]: 1,
+ [LoggerLevel.Error]: 0,
+})
diff --git a/apps/wallet-mobile/src/kernel/logger/types.ts b/apps/wallet-mobile/src/kernel/logger/types.ts
new file mode 100644
index 0000000000..468aaaa196
--- /dev/null
+++ b/apps/wallet-mobile/src/kernel/logger/types.ts
@@ -0,0 +1,47 @@
+export enum LoggerLevel {
+ Debug = 'debug',
+ Log = 'log',
+ Info = 'info',
+ Warn = 'warn',
+ Error = 'error',
+}
+
+export type LoggerMessage = string | Error
+
+export type LoggerMetadata = {
+ // https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/#breadcrumb-types
+ type?: 'default' | 'debug' | 'error' | 'navigation' | 'http' | 'info' | 'query' | 'transaction' | 'ui' | 'user'
+
+ origin?: string // origin package / module
+
+ [key: string]: unknown
+}
+
+export type LoggerTransporter = (options: LoggerTransporterOptions) => void
+
+export type LoggerTransporterOptions = {
+ level: LoggerLevel
+ message: LoggerMessage
+ metadata: LoggerMetadata
+ timestamp: number
+}
+
+export type LoggerEntry = {
+ id: string
+ level: LoggerLevel
+ message: string
+ metadata: LoggerMetadata
+ timestamp: number
+}
+
+export interface LoggerManager {
+ level: LoggerLevel
+ debug(message: string, metadata?: LoggerMetadata): void
+ log(message: string, metadata?: LoggerMetadata): void
+ info(message: string, metadata?: LoggerMetadata): void
+ warn(message: string, metadata?: LoggerMetadata): void
+ error(error: Error | string, metadata?: LoggerMetadata): void
+ addTransport(transport: LoggerTransporter): () => void
+ disable(): void
+ enable(): void
+}
diff --git a/apps/wallet-mobile/src/metrics/README.md b/apps/wallet-mobile/src/kernel/metrics/README.md
similarity index 100%
rename from apps/wallet-mobile/src/metrics/README.md
rename to apps/wallet-mobile/src/kernel/metrics/README.md
diff --git a/apps/wallet-mobile/src/metrics/ampli/index.ts b/apps/wallet-mobile/src/kernel/metrics/ampli/index.ts
similarity index 100%
rename from apps/wallet-mobile/src/metrics/ampli/index.ts
rename to apps/wallet-mobile/src/kernel/metrics/ampli/index.ts
diff --git a/apps/wallet-mobile/src/metrics/helpers.ts b/apps/wallet-mobile/src/kernel/metrics/helpers.ts
similarity index 100%
rename from apps/wallet-mobile/src/metrics/helpers.ts
rename to apps/wallet-mobile/src/kernel/metrics/helpers.ts
diff --git a/apps/wallet-mobile/src/metrics/metrics.stories.tsx b/apps/wallet-mobile/src/kernel/metrics/metrics.stories.tsx
similarity index 100%
rename from apps/wallet-mobile/src/metrics/metrics.stories.tsx
rename to apps/wallet-mobile/src/kernel/metrics/metrics.stories.tsx
diff --git a/apps/wallet-mobile/src/metrics/metricsManager.test.tsx b/apps/wallet-mobile/src/kernel/metrics/metricsManager.test.tsx
similarity index 100%
rename from apps/wallet-mobile/src/metrics/metricsManager.test.tsx
rename to apps/wallet-mobile/src/kernel/metrics/metricsManager.test.tsx
diff --git a/apps/wallet-mobile/src/metrics/metricsManager.tsx b/apps/wallet-mobile/src/kernel/metrics/metricsManager.tsx
similarity index 95%
rename from apps/wallet-mobile/src/metrics/metricsManager.tsx
rename to apps/wallet-mobile/src/kernel/metrics/metricsManager.tsx
index 8700bd0178..2ed4d63170 100644
--- a/apps/wallet-mobile/src/metrics/metricsManager.tsx
+++ b/apps/wallet-mobile/src/kernel/metrics/metricsManager.tsx
@@ -2,10 +2,10 @@ import {EnrichmentPlugin, Event, PluginType} from '@amplitude/analytics-types'
import {isKeyOf, parseBoolean} from '@yoroi/common'
import {App} from '@yoroi/types'
import * as React from 'react'
-import Config from 'react-native-config'
-import {Logger} from '../yoroi-wallets/logging'
-import {rootStorage} from '../yoroi-wallets/storage/rootStorage'
+import {buildVariant} from '../env'
+import {logger} from '../logger/logger'
+import {rootStorage} from '../storage/rootStorage'
import {Ampli, ampli} from './ampli'
import {mockMetricsManager} from './mocks'
@@ -21,7 +21,7 @@ type BUILD_VARIANT_KEY = keyof typeof buildVariants
const isBuildVariant = (variant?: string): variant is BUILD_VARIANT_KEY =>
typeof variant === 'string' && isKeyOf(variant, buildVariants)
-const currentBuildVariant = isBuildVariant(Config?.BUILD_VARIANT) ? Config.BUILD_VARIANT : 'DEV'
+const currentBuildVariant = isBuildVariant(buildVariant) ? buildVariant : 'DEV'
const environment: MetricsEnv = Object.keys(buildVariants).includes(currentBuildVariant)
? buildVariants[currentBuildVariant]
: buildVariants.DEV
@@ -96,8 +96,8 @@ export const makeMetricsManager = (
metricsModule.client.add(infoPlugin)
}
})
- .catch((e) => {
- Logger.error(`[metrics-react-native] metrics.load failed:`, e)
+ .catch((error) => {
+ logger.error(`makeMetricsManager: init failed:`, {error})
})
const track = {
@@ -224,9 +224,9 @@ const defaultState: MetricsState = {
isConsentRequested: false,
} as const
const defaultActions: MetricsActions = {
- isLoadedChanged: (_loaded: boolean) => Logger.error('[metrics-react] missing initialization'),
- isEnabledChanged: (_enabled: boolean) => Logger.error('[metrics-react] missing initialization'),
- isConsentRequestedChanged: (_consentRequested: boolean) => Logger.error('[metrics-react] missing initialization'),
+ isLoadedChanged: (_loaded: boolean) => logger.error('[metrics-react] missing initialization'),
+ isEnabledChanged: (_enabled: boolean) => logger.error('[metrics-react] missing initialization'),
+ isConsentRequestedChanged: (_consentRequested: boolean) => logger.error('[metrics-react] missing initialization'),
} as const
const defaultManager: MetricsManager = mockMetricsManager()
const MetricsContext = React.createContext({
diff --git a/apps/wallet-mobile/src/metrics/mocks.ts b/apps/wallet-mobile/src/kernel/metrics/mocks.ts
similarity index 100%
rename from apps/wallet-mobile/src/metrics/mocks.ts
rename to apps/wallet-mobile/src/kernel/metrics/mocks.ts
diff --git a/apps/wallet-mobile/src/navigation.tsx b/apps/wallet-mobile/src/kernel/navigation.tsx
similarity index 83%
rename from apps/wallet-mobile/src/navigation.tsx
rename to apps/wallet-mobile/src/kernel/navigation.tsx
index c40018fd63..775019eae7 100644
--- a/apps/wallet-mobile/src/navigation.tsx
+++ b/apps/wallet-mobile/src/kernel/navigation.tsx
@@ -1,22 +1,26 @@
import {MaterialTopTabNavigationOptions} from '@react-navigation/material-top-tabs'
import {
getFocusedRouteNameFromRoute,
+ NavigationProp,
+ NavigationState,
NavigatorScreenParams,
RouteProp,
useNavigation,
+ useNavigationState,
useRoute,
} from '@react-navigation/native'
import {StackNavigationOptions, StackNavigationProp} from '@react-navigation/stack'
import {Atoms, ThemedPalette, useTheme} from '@yoroi/theme'
import {Portfolio} from '@yoroi/types'
import React from 'react'
-import {Dimensions, TouchableOpacity, TouchableOpacityProps, ViewStyle} from 'react-native'
+import {Dimensions, InteractionManager, TouchableOpacity, TouchableOpacityProps, ViewStyle} from 'react-native'
-import {Icon} from './components'
-import {ScanFeature} from './features/Scan/common/types'
-import {Routes as StakingGovernanceRoutes} from './features/Staking/Governance/common/navigation'
-import {CONFIG} from './legacy/config'
-import {YoroiUnsignedTx} from './yoroi-wallets/types'
+import {Icon} from '../components'
+import {ScanFeature} from '../features/Scan/common/types'
+import {Routes as StakingGovernanceRoutes} from '../features/Staking/Governance/common/navigation'
+import {YoroiUnsignedTx} from '../yoroi-wallets/types'
+import {compareArrays} from '../yoroi-wallets/utils/utils'
+import {dappExplorerEnabled} from './env'
// prettier-ignore
export const useUnsafeParams = () => {
@@ -225,6 +229,7 @@ export type SettingsTabRoutes = {
}
export type SettingsStackRoutes = {
+ 'settings-system-log': undefined
about: undefined
'app-settings': undefined
'main-settings': undefined
@@ -504,7 +509,7 @@ export const useWalletNavigation = () => {
},
navigateToStakingDashboard: () => {
- if (CONFIG.DAPP_EXPLORER_ENABLED) {
+ if (dappExplorerEnabled) {
navigation.navigate('manage-wallets', {
screen: 'staking-dashboard',
params: {
@@ -608,3 +613,73 @@ export const hideTabBarForRoutes = (route: RouteProp getNavigationRouteId(navigation))
+
+ React.useEffect(() => {
+ const currentRouteId = getNavigationRouteId(navigation)
+
+ if (currentRouteId !== initialRouteId) {
+ return
+ }
+ const {routes} = navigation.getState()
+ const currentRouteNames = routes.map((r) => r.name)
+
+ if (compareArrays(currentRouteNames, routesToKeep)) {
+ return
+ }
+
+ const newRoutes = routes.filter((r) => routesToKeep.includes(r.name))
+
+ const task = InteractionManager.runAfterInteractions(() => {
+ const newState = {
+ index: newRoutes.length - 1,
+ routes: newRoutes.map((r) => ({...r, state: undefined})),
+ routeNames: newRoutes.map((r) => r.name),
+ }
+ navigation.reset(newState)
+ })
+
+ return () => task.cancel()
+ }, [navigation, initialRouteId, routesToKeep])
+}
+
+export const useIsRouteActive = () => {
+ const navigation = useNavigation()
+ const currentRouteName = useNavigationState((s) => selectRouteName(s))
+ const [initialRouteName] = React.useState(() => selectRouteName(navigation.getState()))
+ return initialRouteName === currentRouteName
+}
+
+export function useOverridePreviousRoute(previousRouteName: RouteName) {
+ const navigation = useNavigation()
+ const [initialRouteName] = React.useState(() => getNavigationRouteName(navigation))
+ const allRouteNames: string[] = navigation.getState().routes.map((route) => route.name)
+ const previousRouteIndex = allRouteNames.indexOf(previousRouteName)
+ const currentRouteIndex = allRouteNames.indexOf(initialRouteName)
+
+ let newRoutes = allRouteNames
+ if (previousRouteIndex < currentRouteIndex) {
+ newRoutes = allRouteNames.filter((routeName, index) => index <= previousRouteIndex || index >= currentRouteIndex)
+ }
+
+ if (previousRouteIndex > currentRouteIndex) {
+ newRoutes = allRouteNames.filter((routeName, index) => index < currentRouteIndex)
+ newRoutes.push(previousRouteName, initialRouteName)
+ }
+
+ useKeepRoutesInHistory(newRoutes)
+}
+
+function getNavigationRouteId(navigation: NavigationProp) {
+ const state = navigation.getState()
+ return state.routes[state.index].key
+}
+
+function getNavigationRouteName(navigation: NavigationProp) {
+ return selectRouteName(navigation.getState())
+}
+
+const selectRouteName = (state: NavigationState) => state.routes[state.index].name
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/EncryptedStorage.test.ts b/apps/wallet-mobile/src/kernel/storage/EncryptedStorage.test.ts
similarity index 100%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/EncryptedStorage.test.ts
rename to apps/wallet-mobile/src/kernel/storage/EncryptedStorage.test.ts
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/EncryptedStorage.ts b/apps/wallet-mobile/src/kernel/storage/EncryptedStorage.ts
similarity index 90%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/EncryptedStorage.ts
rename to apps/wallet-mobile/src/kernel/storage/EncryptedStorage.ts
index 069d0f48ad..de3d07abb7 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/storage/EncryptedStorage.ts
+++ b/apps/wallet-mobile/src/kernel/storage/EncryptedStorage.ts
@@ -1,7 +1,7 @@
import {parseString} from '@yoroi/common'
-import {YoroiWallet} from '../cardano/types'
-import {decryptData, encryptData} from '../encryption'
+import {YoroiWallet} from '../../yoroi-wallets/cardano/types'
+import {decryptData, encryptData} from '../../yoroi-wallets/encryption/encryption'
import {rootStorage} from './rootStorage'
type StorageKey = `${string}-MASTER_PASSWORD`
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/Keychain.ts b/apps/wallet-mobile/src/kernel/storage/Keychain.ts
similarity index 92%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/Keychain.ts
rename to apps/wallet-mobile/src/kernel/storage/Keychain.ts
index ee2211badf..d27157f006 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/storage/Keychain.ts
+++ b/apps/wallet-mobile/src/kernel/storage/Keychain.ts
@@ -1,4 +1,4 @@
-import {YoroiWallet} from '../cardano/types'
+import {YoroiWallet} from '../../yoroi-wallets/cardano/types'
import {AuthenticationPrompt, KeychainStorage} from './KeychainStorage'
const authenticate = async (authenticationPrompt: AuthenticationPrompt) => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/KeychainStorage.test.ts b/apps/wallet-mobile/src/kernel/storage/KeychainStorage.test.ts
similarity index 97%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/KeychainStorage.test.ts
rename to apps/wallet-mobile/src/kernel/storage/KeychainStorage.test.ts
index b3a352a9ad..56781a57c4 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/storage/KeychainStorage.test.ts
+++ b/apps/wallet-mobile/src/kernel/storage/KeychainStorage.test.ts
@@ -1,4 +1,4 @@
-import {canAuthWithOS} from '../auth/auth'
+import {canAuthWithOS} from '../../features/Auth/common/hooks'
describe('isAuthOsSupported', () => {
describe('android', () => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/KeychainStorage.ts b/apps/wallet-mobile/src/kernel/storage/KeychainStorage.ts
similarity index 100%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/KeychainStorage.ts
rename to apps/wallet-mobile/src/kernel/storage/KeychainStorage.ts
diff --git a/apps/wallet-mobile/src/migrations/4_26_0.test.ts b/apps/wallet-mobile/src/kernel/storage/migrations/4_26_0.test.ts
similarity index 100%
rename from apps/wallet-mobile/src/migrations/4_26_0.test.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/4_26_0.test.ts
diff --git a/apps/wallet-mobile/src/migrations/4_26_0.ts b/apps/wallet-mobile/src/kernel/storage/migrations/4_26_0.ts
similarity index 93%
rename from apps/wallet-mobile/src/migrations/4_26_0.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/4_26_0.ts
index 5b9900d17c..d7c90826c2 100644
--- a/apps/wallet-mobile/src/migrations/4_26_0.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/4_26_0.ts
@@ -1,7 +1,7 @@
import {App} from '@yoroi/types'
-import {WalletMeta} from '../features/WalletManager/common/types'
-import {WALLET_IMPLEMENTATION_REGISTRY} from '../yoroi-wallets/types/other'
+import {WalletMeta} from '../../../features/WalletManager/common/types'
+import {WALLET_IMPLEMENTATION_REGISTRY} from '../../../yoroi-wallets/types/other'
export const migrateAddressMode = async (rootStorage: App.Storage) => {
const walletsRootStorage = rootStorage.join('wallet/')
diff --git a/apps/wallet-mobile/src/migrations/4_9_0.test.ts b/apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.test.ts
similarity index 97%
rename from apps/wallet-mobile/src/migrations/4_9_0.test.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.test.ts
index bb5cb645d2..9a9435a2a8 100644
--- a/apps/wallet-mobile/src/migrations/4_9_0.test.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.test.ts
@@ -1,4 +1,4 @@
-import {rootStorage} from '../yoroi-wallets/storage/rootStorage'
+import {rootStorage} from '../rootStorage'
import {migrateAuthSetting, OLD_OS_AUTH_KEY} from './4_9_0'
describe('migrateAuthSetting', () => {
const installationId = 'uuidv4'
diff --git a/apps/wallet-mobile/src/migrations/4_9_0.ts b/apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.ts
similarity index 88%
rename from apps/wallet-mobile/src/migrations/4_9_0.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.ts
index ac41e3c067..2ab3868861 100644
--- a/apps/wallet-mobile/src/migrations/4_9_0.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/4_9_0.ts
@@ -1,7 +1,12 @@
import {parseBoolean} from '@yoroi/common'
import {App} from '@yoroi/types'
-import {AUTH_WITH_OS, AUTH_WITH_PIN, disableAllEasyConfirmation, getAuthSetting} from '../yoroi-wallets/auth/auth'
+import {
+ AUTH_WITH_OS,
+ AUTH_WITH_PIN,
+ disableAllEasyConfirmation,
+ getAuthSetting,
+} from '../../../features/Auth/common/hooks'
export const migrateAuthSetting = async (storage: App.Storage) => {
const authSetting = await getAuthSetting(storage)
diff --git a/apps/wallet-mobile/src/migrations/errors.ts b/apps/wallet-mobile/src/kernel/storage/migrations/errors.ts
similarity index 100%
rename from apps/wallet-mobile/src/migrations/errors.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/errors.ts
diff --git a/apps/wallet-mobile/src/migrations/storageVersion.test.ts b/apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.test.ts
similarity index 90%
rename from apps/wallet-mobile/src/migrations/storageVersion.test.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.test.ts
index e55dfef276..405e660dca 100644
--- a/apps/wallet-mobile/src/migrations/storageVersion.test.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.test.ts
@@ -32,13 +32,13 @@ describe('storageVersion', () => {
expect(result).toBe(version)
})
- it('should return 0 if storage version is not a number', async () => {
+ it('should return current if storage version is not initialized', async () => {
const version = 'invalid'
jest.spyOn(storage, 'getItem').mockResolvedValueOnce(version)
- const {read} = storageVersionMaker(storage)
+ const {read, current} = storageVersionMaker(storage)
const result = await read()
expect(storage.getItem).toHaveBeenCalledWith('storageVersion')
- expect(result).toBe(0)
+ expect(result).toBe(current)
})
it('should throw an error if saving storage version constant is lt provided version', async () => {
diff --git a/apps/wallet-mobile/src/migrations/storageVersion.ts b/apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.ts
similarity index 94%
rename from apps/wallet-mobile/src/migrations/storageVersion.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.ts
index 8ffd52dc0b..76c0baa8dc 100644
--- a/apps/wallet-mobile/src/migrations/storageVersion.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/storageVersion.ts
@@ -16,7 +16,7 @@ export const storageVersionMaker = (storage: App.Storage) => {
return storage.setItem(keyStorageVersion, storageVersion)
},
async read() {
- return storage.getItem(keyStorageVersion).then((version) => (isNumber(version) ? version : 0))
+ return storage.getItem(keyStorageVersion).then((version) => (isNumber(version) ? version : currentVersion))
},
async newInstallation() {
return storage.setItem(keyStorageVersion, currentVersion)
diff --git a/apps/wallet-mobile/src/migrations/useMigrations.ts b/apps/wallet-mobile/src/kernel/storage/migrations/useMigrations.ts
similarity index 57%
rename from apps/wallet-mobile/src/migrations/useMigrations.ts
rename to apps/wallet-mobile/src/kernel/storage/migrations/useMigrations.ts
index 6ef156c4c1..b6e03c5dea 100644
--- a/apps/wallet-mobile/src/migrations/useMigrations.ts
+++ b/apps/wallet-mobile/src/kernel/storage/migrations/useMigrations.ts
@@ -1,6 +1,7 @@
import {App} from '@yoroi/types'
import * as React from 'react'
+import {logger} from '../../logger/logger'
import {to4_9_0} from './4_9_0'
import {to4_26_0} from './4_26_0'
import {ErrorMigrationVersion} from './errors'
@@ -14,14 +15,20 @@ export const useMigrations = (storage: App.Storage) => {
const runMigrations = async () => {
const currentVersion = await storageVersion.read()
- if (currentVersion < 1) {
- await to4_9_0(storage)
- await storageVersion.save(1)
- }
-
- if (currentVersion < 2) {
- await to4_26_0(storage)
- await storageVersion.save(2)
+ if (currentVersion !== storageVersion.current) {
+ if (currentVersion < 1) {
+ await to4_9_0(storage)
+ await storageVersion.save(1)
+ logger.info('useMigrations: Storages migrated to version 1')
+ }
+
+ if (currentVersion < 2) {
+ await to4_26_0(storage)
+ await storageVersion.save(2)
+ logger.info('useMigrations: Storages migrated to version 2')
+ }
+ } else {
+ logger.info('useMigrations: No migraitons needed')
}
const savedVersion = await storageVersion.read()
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/rootStorage.ts b/apps/wallet-mobile/src/kernel/storage/rootStorage.ts
similarity index 100%
rename from apps/wallet-mobile/src/yoroi-wallets/storage/rootStorage.ts
rename to apps/wallet-mobile/src/kernel/storage/rootStorage.ts
diff --git a/apps/wallet-mobile/src/legacy/config.ts b/apps/wallet-mobile/src/legacy/config.ts
deleted file mode 100644
index 40eab1729d..0000000000
--- a/apps/wallet-mobile/src/legacy/config.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {LogLevel} from '../legacy/logging'
-import env from './env'
-
-const BUILD_VARIANT = env.getString('BUILD_VARIANT')
-export const isNightly = () => BUILD_VARIANT === 'NIGHTLY'
-export const isProduction = () => BUILD_VARIANT === 'PROD'
-
-// TODO(v-almonacid): consider adding 'ENABLE' as an env variable
-const SENTRY_DSN = env.getString('SENTRY_DSN')
-const _COMMIT = env.getString('COMMIT') ?? ''
-
-const _LOG_LEVEL = __DEV__ ? LogLevel.Debug : LogLevel.Warn
-
-const FORCE_CRASH_REPORTS = isNightly()
-
-const AGREEMENT_DATE = 1691967600000
-
-const UNSTOPPABLE_API_KEY = env.getString('UNSTOPPABLE_API_KEY')
-const GOVERNANCE_ENABLED_SINCE_BLOCK = {
- SANCHONET: 0,
- MAINNET: Infinity, // TODO: Add block number once known
- PREPROD: Infinity, // TODO: Add block number once known
-}
-
-const DAPP_EXPLORER_ENABLED = !isProduction() && !isNightly()
-
-export const CONFIG = {
- SENTRY_DSN,
- PIN_LENGTH: 6,
- LOG_LEVEL: _LOG_LEVEL,
- COMMIT: _COMMIT,
- FORCE_CRASH_REPORTS,
- AGREEMENT_DATE,
- UNSTOPPABLE_API_KEY,
- GOVERNANCE_ENABLED_SINCE_BLOCK,
- DAPP_EXPLORER_ENABLED,
-}
diff --git a/apps/wallet-mobile/src/legacy/env.ts b/apps/wallet-mobile/src/legacy/env.ts
deleted file mode 100644
index c53f5722eb..0000000000
--- a/apps/wallet-mobile/src/legacy/env.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import BuildConfig from 'react-native-config'
-
-const getString = (key: string) => BuildConfig[key] ?? ''
-
-const getBoolean = (key: string, defaultValue: boolean) => {
- const value = getString(key)
- switch (value) {
- case 'true':
- return true
- case 'false':
- return false
- default:
- return defaultValue
- }
-}
-
-export default {
- getString,
- getBoolean,
-}
diff --git a/apps/wallet-mobile/src/legacy/logging.ts b/apps/wallet-mobile/src/legacy/logging.ts
deleted file mode 100644
index 1f294b9b90..0000000000
--- a/apps/wallet-mobile/src/legacy/logging.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-export const LogLevel = {
- Debug: 0,
- Info: 1,
- Warn: 2,
- Error: 3,
- Nothing: 4,
-}
-
-let _logLevel = LogLevel.Debug
-
-/* eslint-disable no-console */
-const consoleLogger = {
- debug: console.log, // console.debug is hidden by default in chrome
- info: console.info,
- warn: console.warn,
- error: console.error,
-}
-/* eslint-enable no-console */
-
-let _logger = consoleLogger
-
-export const setLogger = (logger: any) => {
- _logger = logger
-}
-
-export const setLogLevel = (level: (typeof LogLevel)[keyof typeof LogLevel]) => {
- _logLevel = level
-}
-
-export const Logger = {
- debug: (message: string, ...args: any) => LogLevel.Debug >= _logLevel && _logger.debug(message, ...args),
- info: (message: string, ...args: any) => LogLevel.Info >= _logLevel && _logger.info(message, ...args),
- warn: (message: string, ...args: any) => LogLevel.Warn >= _logLevel && _logger.warn(message, ...args),
- error: (message: string, ...args: any) => LogLevel.Error >= _logLevel && _logger.error(message, ...args),
- setLogLevel,
- setLogger,
-}
diff --git a/apps/wallet-mobile/src/navigationOptions.tsx b/apps/wallet-mobile/src/navigationOptions.tsx
deleted file mode 100644
index da306ed9f3..0000000000
--- a/apps/wallet-mobile/src/navigationOptions.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import {Platform} from 'react-native'
-
-export const defaultStackNavigatorOptions = {
- headerTitleAlign: 'center',
- headerBackTitleVisible: false,
- headerLeftContainerStyle: {
- paddingLeft: Platform.OS === 'ios' ? 8 : undefined,
- },
-} as const
diff --git a/apps/wallet-mobile/src/theme/config.ts b/apps/wallet-mobile/src/theme/config.ts
deleted file mode 100644
index f218d253ad..0000000000
--- a/apps/wallet-mobile/src/theme/config.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-import {Platform} from 'react-native'
-
-// TODO: need to homogenise the code style here. Only use upper case for color
-// constants. The rest should follow typical js object naming conventions.
-// All reusable styles should be included in the `theme` object
-
-export const COLORS = {
- TRANSPARENT: 'transparent',
- BACKGROUND: '#fff',
- BACKGROUND_GRAY: '#f8f8f8',
- BACKGROUND_BLUE: '#254BC9',
- BACKGROUND_LIGHT_GRAY: '#F4F6FC',
- BACKGROUND_RED: '#ff0000',
- BACKGROUND_LIGHT_RED: 'rgba(255, 16, 81, 0.06)',
- BANNER_GREY: '#F3F5F5',
- DARK_GRAY: '#4a4a4a',
- LIGHT_GRAY: '#eee',
- GRAY: '#777',
- INFO_GRAY: '#4A5065',
- WHITE: '#fff',
- BLACK: '#000',
- TRANSPARENT_BLACK: '#00000077',
- LIGHT_POSITIVE_GREEN: '#17d1aa',
- PRIMARY_GRADIENT_START: '#1036a0',
- PRIMARY_GRADIENT_END: '#164ed5',
- POSITIVE_AMOUNT: '#54ca87',
- NEGATIVE_AMOUNT: '#d0021b',
- PRIMARY: '#1036a0',
- PRIMARY_TEXT: '#fff',
- SECONDARY_TEXT: '#ADAEB6',
- DARK_TEXT: '#38393D',
- LIGHT_GRAY_TEXT: '#676970',
- DARK_BLUE: '#1036a0',
- RED: '#ff0000',
- WARNING: '#FFD303',
- WARNING_TEXT_COLOR: '#9E5B0A',
- ERROR_TEXT_COLOR: '#FF1351',
- ALERT_TEXT_COLOR: '#FF1351',
- ERROR_TEXT_COLOR_DARK: '#242838',
- DISABLED: '#999',
- SHADOW_COLOR: 'rgba(0, 0, 0, 0.06)',
- SHELLEY_BLUE: '#3154CB',
- DIVIDER: '#536ee9',
- TEXT_GRAY: '#353535',
- TEXT_GRAY2: '#9b9b9b',
- TEXT_GRAY3: '#A7AFC0',
- TEXT_INPUT: '#6B7384',
- MODAL_HEADING: '#6B7384',
- WORD_BADGE_TEXT: '#6B7384',
- NOT_SELECTED_TAB_TEXT: '#6B7384',
- BORDER_GRAY: '#DCE0E9',
- BLUE_LIGHTER: '#164FD6',
- GREY_6: '#A7AFC0',
- ACTION_GRAY: '#8A92A3',
- LIGHT_GREEN: '#08C29D',
-}
-
-// TODO: use lowercase for key names. Eg navigationActive
-export const defaultColors = {
- NAVIGATION_ACTIVE: '#3154CB',
- NAVIGATION_INACTIVE: COLORS.SECONDARY_TEXT,
- BACKGROUND: COLORS.WHITE,
- backgroundAlert: COLORS.BACKGROUND_LIGHT_RED, // follow this style
- CODE_STYLE_BACKGROUND: COLORS.LIGHT_GRAY,
-}
-
-export const defaultText = {
- fontFamily: Platform.select({
- ios: 'Rubik-Regular',
- android: 'Rubik-Regular',
- }),
- color: COLORS.BLACK,
- lineHeight: 18,
- fontSize: 14,
-}
-
-export const spacing = {
- paragraphBottomMargin: 15,
-}
-
-// TODO: use lowercase for key names
-export const theme = {
- text: defaultText, // use this style
- COLORS: defaultColors, // not this
- spacing,
-}
-
-export const DEBUG_BORDERS = {
- borderColor: COLORS.GRAY,
- borderWidth: 1,
-}
-
-// TODO: add these in default theme colors
-export const colors = {
- buttonBackground: '#17d1aa',
- buttonBackgroundBlue: '#3154cb',
- buttonBackgroundMain: '#4B6DDE',
-}
-
-// TODO: remove, use theme instead.
-export const brand = {
- defaultFont: Platform.select({
- ios: 'Rubik-Regular',
- android: 'Rubik-Regular',
- }),
- bold: Platform.select({
- ios: 'Rubik-Medium',
- android: 'Rubik-Medium',
- }),
-}
diff --git a/apps/wallet-mobile/src/theme/index.ts b/apps/wallet-mobile/src/theme/index.ts
deleted file mode 100644
index 2a5c25e7f2..0000000000
--- a/apps/wallet-mobile/src/theme/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './config'
-export * from './palettes'
diff --git a/apps/wallet-mobile/src/theme/palettes/darkPalette.ts b/apps/wallet-mobile/src/theme/palettes/darkPalette.ts
deleted file mode 100644
index 3b2f2d77ac..0000000000
--- a/apps/wallet-mobile/src/theme/palettes/darkPalette.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import {Palette} from '../types'
-
-export const darkPalette: Palette = {
- 'black-static': '#000000',
- 'white-static': '#FFFFFF',
- gray: {
- max: '#FFFFFF',
- 900: '#E1E6F5',
- 800: '#BCC5E0',
- 700: '#9BA4C2',
- 600: '#7C85A3',
- 500: '#656C85',
- 400: '#4B5266',
- 300: '#3E4457',
- 200: '#262A38',
- 100: '#1F232E',
- 50: '#15171F',
- min: '#0B0B0F',
- },
- primary: {
- 900: '#E4E8F7',
- 800: '#C4CFF5',
- 700: '#A0B3F2',
- 600: '#7892E8',
- 500: '#4B6DDE',
- 400: '#3154CB',
- 300: '#223987',
- 200: '#142049',
- 100: '#111935',
- },
- secondary: {
- 900: '#E4F7F3',
- 800: '#C6F7ED',
- 700: '#93F5E1',
- 600: '#66F2D6',
- 500: '#16E3BA',
- 400: '#08C29D',
- 300: '#0B997D',
- 200: '#12705D',
- 100: '#17453C',
- },
- magenta: {
- 700: '#FF6B92',
- 600: '#FD3468',
- 500: '#FF1351',
- 300: '#572835',
- 100: '#2F171D',
- },
- cyan: {
- 500: '#59B1F4',
- 100: '#F2F9FF',
- },
- yellow: {
- 500: '#ECBA09',
- 100: '#31290E',
- },
- gradients: {
- 'blue-green': ['#E4E8F7', '#C6F7F7'],
- green: ['#93F5E1', '#C6F7F7'],
- light: ['#C6F7ED', '#E4E8F7'],
- blue: ['#244ABF', '#4B6DDE'],
- },
- 'bottom-sheet-background': '#15171F',
- 'overlay-extension': {hex: '#15171F', opacity: 0.72},
- 'overlay-mobile': {hex: '#15171F', opacity: 0.64},
- 'sidebar-overlay': {hex: '#ffffff', opacity: 0.24},
- 'sidebar-item': {hex: '#ffffff', opacity: 0.48},
-}
diff --git a/apps/wallet-mobile/src/theme/palettes/index.ts b/apps/wallet-mobile/src/theme/palettes/index.ts
deleted file mode 100644
index 1113407c29..0000000000
--- a/apps/wallet-mobile/src/theme/palettes/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './darkPalette'
-export * from './lightPalette'
diff --git a/apps/wallet-mobile/src/theme/palettes/lightPalette.ts b/apps/wallet-mobile/src/theme/palettes/lightPalette.ts
deleted file mode 100644
index 90a1c54792..0000000000
--- a/apps/wallet-mobile/src/theme/palettes/lightPalette.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import {Palette} from '../types'
-
-export const lightPalette: Palette = {
- 'black-static': '#000000',
- 'white-static': '#FFFFFF',
- gray: {
- max: '#000000',
- 900: '#242838',
- 800: '#383E54',
- 700: '#4A5065',
- 600: '#6B7384',
- 500: '#8A92A3',
- 400: '#A7AFC0',
- 300: '#C4CAD7',
- 200: '#DCE0E9',
- 100: '#EAEDF2',
- 50: '#F0F3F5',
- min: '#FFFFFF',
- },
- primary: {
- 900: '#121F4D',
- 800: '#122770',
- 700: '#1737A3',
- 600: '#3154CB',
- 500: '#4B6DDE',
- 400: '#7892E8',
- 300: '#A0B3F2',
- 200: '#C4CFF5',
- 100: '#E4E8F7',
- },
- secondary: {
- 900: '#17453C',
- 800: '#12705D',
- 700: '#0B997D',
- 600: '#08C29D',
- 500: '#16E3BA',
- 400: '#66F2D6',
- 300: '#93F5E1',
- 200: '#C6F7ED',
- 100: '#E4F7F3',
- },
- magenta: {
- 700: '#CF053A',
- 600: '#E80742',
- 500: '#FF1351',
- 300: '#FBCBD7',
- 100: '#FFF1F5',
- },
- cyan: {
- 500: '#59B1F4',
- 100: '#F2F9FF',
- },
- yellow: {
- 500: '#ED8600',
- 100: '#FDF7E2',
- },
- gradients: {
- 'blue-green': ['#E4E8F7', '#C6F7F7'],
- light: ['#C6F7ED', '#E4E8F7'],
- green: ['#93F5E1', '#C6F7F7'],
- blue: ['#244ABF', '#4B6DDE'],
- },
- 'bottom-sheet-background': '#FFF',
- 'overlay-extension': {hex: '#121f4d', opacity: 0.7},
- 'overlay-mobile': {hex: '#000000', opacity: 0.4},
- 'sidebar-overlay': {hex: '#000000', opacity: 0.16},
- 'sidebar-item': {hex: '#ffffff', opacity: 0.48},
-}
diff --git a/apps/wallet-mobile/src/theme/transitions/screenOptions.ts b/apps/wallet-mobile/src/theme/transitions/screenOptions.ts
deleted file mode 100644
index acb113d27f..0000000000
--- a/apps/wallet-mobile/src/theme/transitions/screenOptions.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import {StackCardStyleInterpolator} from '@react-navigation/stack'
-import {Easing} from 'react-native-reanimated'
-
-/**
- * Options to be added in Stack.Screen to change transition
- * see more: https://reactnavigation.org/docs/stack-navigator/#animations
- */
-
-const topToBottomTransitionSpec = {
- open: {
- animation: 'spring',
- config: {
- stiffness: 300,
- damping: 25,
- mass: 1,
- overshootClamping: false,
- restDisplacementThreshold: 0.01,
- restSpeedThreshold: 2,
- },
- },
- close: {
- animation: 'timing',
- config: {
- easing: Easing.inOut(Easing.sin),
- duration: 300,
- },
- },
-} as const
-
-const topToBottomCardStyleInterpolator: StackCardStyleInterpolator = ({current, layouts}) =>
- ({
- cardStyle: {
- opacity: current.progress,
- transform: [
- {
- translateY: current.progress.interpolate({
- inputRange: [0, 1],
- outputRange: [-layouts.screen.height, 0],
- }),
- },
- ],
- },
- } as const)
-
-/**
- * Usage:
- *
- */
-export const topToBottom = {
- cardStyleInterpolator: topToBottomCardStyleInterpolator,
- transitionSpec: topToBottomTransitionSpec,
-}
diff --git a/apps/wallet-mobile/src/theme/types.ts b/apps/wallet-mobile/src/theme/types.ts
deleted file mode 100644
index 4a84819367..0000000000
--- a/apps/wallet-mobile/src/theme/types.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import {TextStyle} from 'react-native'
-
-export type Theme = {
- color: Palette
- typography: Typography
- spacing: Spacing
-}
-
-export type HexColor = `#${string}`
-
-export type Gradient = [HexColor, HexColor]
-
-export type Palette = {
- 'black-static': HexColor
- 'white-static': HexColor
- gray: {
- max: HexColor
- 900: HexColor
- 800: HexColor
- 700: HexColor
- 600: HexColor
- 500: HexColor
- 400: HexColor
- 300: HexColor
- 200: HexColor
- 100: HexColor
- 50: HexColor
- min: HexColor
- }
- primary: {
- 900: HexColor
- 800: HexColor
- 700: HexColor
- 600: HexColor
- 500: HexColor
- 400: HexColor
- 300: HexColor
- 200: HexColor
- 100: HexColor
- }
- secondary: {
- 900: HexColor
- 800: HexColor
- 700: HexColor
- 600: HexColor
- 500: HexColor
- 400: HexColor
- 300: HexColor
- 200: HexColor
- 100: HexColor
- }
- magenta: {
- 700: HexColor
- 600: HexColor
- 500: HexColor
- 300: HexColor
- 100: HexColor
- }
- cyan: {
- 500: HexColor
- 100: HexColor
- }
- yellow: {
- 500: HexColor
- 100: HexColor
- }
- gradients: {
- 'blue-green': Gradient
- green: Gradient
- blue: Gradient
- light: Gradient
- }
- 'bottom-sheet-background': HexColor
- 'overlay-extension': {hex: HexColor; opacity: number}
- 'overlay-mobile': {hex: HexColor; opacity: number}
- 'sidebar-overlay': {hex: HexColor; opacity: number}
- 'sidebar-item': {hex: HexColor; opacity: number}
-}
-
-type TypographyKeys =
- | 'heading-1-medium'
- | 'heading-1-regular'
- | 'heading-2-medium'
- | 'heading-2-regular'
- | 'heading-3-medium'
- | 'heading-3-regular'
- | 'heading-4-medium'
- | 'heading-4-regular'
- | 'body-1-l-medium'
- | 'body-1-l-regular'
- | 'body-2-m-medium'
- | 'body-2-m-regular'
- | 'body-3-s-medium'
- | 'body-3-s-regular'
- | 'button-1-l'
- | 'button-2-m'
- | 'button-3'
- | 'link-1-l'
- | 'link-1-l-underline'
- | 'link-2-m'
- | 'link-2-m-underline'
- | 'overline'
- | 'caption-medium'
- | 'caption-regular'
-
-type SpacingKeys =
- | 'spacing-2'
- | 'spacing-4'
- | 'spacing-6'
- | 'spacing-8'
- | 'spacing-10'
- | 'spacing-12'
- | 'spacing-16'
- | 'spacing-24'
- | 'spacing-32'
- | 'spacing-40'
- | 'spacing-48'
- | 'spacing-80'
-
-export type Typography = Record
-export type Spacing = Record
diff --git a/apps/wallet-mobile/src/utils/navigation.ts b/apps/wallet-mobile/src/utils/navigation.ts
deleted file mode 100644
index a84d70fc87..0000000000
--- a/apps/wallet-mobile/src/utils/navigation.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import {NavigationProp, NavigationState, useNavigation, useNavigationState} from '@react-navigation/native'
-import {useEffect, useState} from 'react'
-import {InteractionManager} from 'react-native'
-
-import {compareArrays} from '../yoroi-wallets/utils'
-
-function useKeepRoutesInHistory(routesToKeep: string[]) {
- const navigation = useNavigation()
- const [initialRouteId] = useState(() => getNavigationRouteId(navigation))
-
- useEffect(() => {
- const currentRouteId = getNavigationRouteId(navigation)
-
- if (currentRouteId !== initialRouteId) {
- return
- }
- const {routes} = navigation.getState()
- const currentRouteNames = routes.map((r) => r.name)
-
- if (compareArrays(currentRouteNames, routesToKeep)) {
- return
- }
-
- const newRoutes = routes.filter((r) => routesToKeep.includes(r.name))
-
- const task = InteractionManager.runAfterInteractions(() => {
- const newState = {
- index: newRoutes.length - 1,
- routes: newRoutes.map((r) => ({...r, state: undefined})),
- routeNames: newRoutes.map((r) => r.name),
- }
- navigation.reset(newState)
- })
-
- return () => task.cancel()
- }, [navigation, initialRouteId, routesToKeep])
-}
-
-export const useIsRouteActive = () => {
- const navigation = useNavigation()
- const currentRouteName = useNavigationState((s) => selectRouteName(s))
- const [initialRouteName] = useState(() => selectRouteName(navigation.getState()))
- return initialRouteName === currentRouteName
-}
-
-export function useOverridePreviousRoute(previousRouteName: RouteName) {
- const navigation = useNavigation()
- const [initialRouteName] = useState(() => getNavigationRouteName(navigation))
- const allRouteNames: string[] = navigation.getState().routes.map((route) => route.name)
- const previousRouteIndex = allRouteNames.indexOf(previousRouteName)
- const currentRouteIndex = allRouteNames.indexOf(initialRouteName)
-
- let newRoutes = allRouteNames
- if (previousRouteIndex < currentRouteIndex) {
- newRoutes = allRouteNames.filter((routeName, index) => index <= previousRouteIndex || index >= currentRouteIndex)
- }
-
- if (previousRouteIndex > currentRouteIndex) {
- newRoutes = allRouteNames.filter((routeName, index) => index < currentRouteIndex)
- newRoutes.push(previousRouteName, initialRouteName)
- }
-
- useKeepRoutesInHistory(newRoutes)
-}
-
-function getNavigationRouteId(navigation: NavigationProp) {
- const state = navigation.getState()
- return state.routes[state.index].key
-}
-
-function getNavigationRouteName(navigation: NavigationProp) {
- return selectRouteName(navigation.getState())
-}
-
-const selectRouteName = (state: NavigationState) => state.routes[state.index].name
diff --git a/apps/wallet-mobile/src/yoroi-wallets/auth/index.ts b/apps/wallet-mobile/src/yoroi-wallets/auth/index.ts
deleted file mode 100644
index f140b2ec7e..0000000000
--- a/apps/wallet-mobile/src/yoroi-wallets/auth/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './auth'
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/api/api.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/api/api.ts
index 51ee2bc26f..5c99e9151f 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/api/api.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/api/api.ts
@@ -56,7 +56,7 @@ export const filterUsedAddresses = async (addresses: Addresses, config: BackendC
return copy.filter((addr) => used.includes(addr))
}
-export const submitTransaction = async (signedTx: string, config: BackendConfig) => {
+export const submitTransaction = async (signedTx: string, config: BackendConfig): Promise => {
try {
await fetchDefault('txs/signed', {signedTx}, config)
} catch (e) {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/api/fetch.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/api/fetch.ts
index 7acd02ad80..71907ebf50 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/api/fetch.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/api/fetch.ts
@@ -3,7 +3,7 @@ import {Api} from '@yoroi/types'
import {Platform} from 'react-native'
import DeviceInfo from 'react-native-device-info'
-import {Logger} from '../../logging'
+import {logger} from '../../../kernel/logger/logger'
import type {BackendConfig} from '../../types/other'
import {ApiError, ApiHistoryError} from '../errors'
@@ -55,17 +55,15 @@ export const checkedFetch = (request: FetchRequest) => {
] as const
return fetch(...args) // Fetch throws only for network/dns/related errors, not http statuses
- .catch((e) => {
- Logger.error(`API call ${endpoint} failed`, e)
+ .catch((error) => {
+ logger.error(`API call ${endpoint} failed`, {error, type: 'http'})
- /* It really is TypeError according to
- https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
- */
- if (e instanceof TypeError) {
+ // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
+ if (error instanceof TypeError) {
throw new Api.Errors.Network()
}
- throw e
+ throw error
})
.then(async (r) => {
const response = await checkResponse(r, payload)
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/byron/ByronWallet.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/byron/ByronWallet.ts
index 833648e850..312bc5aef3 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/byron/ByronWallet.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/byron/ByronWallet.ts
@@ -1,7 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
-import {PrivateKey} from '@emurgo/cross-csl-core'
-import {signRawTransaction} from '@emurgo/yoroi-lib'
-import {Datum} from '@emurgo/yoroi-lib/dist/internals/models'
+import * as CSL from '@emurgo/cross-csl-core'
+import {Datum, signRawTransaction} from '@emurgo/yoroi-lib'
import {AppApi, CardanoApi} from '@yoroi/api'
import {isNonNullable, parseSafe} from '@yoroi/common'
import {Api, App, Balance, Chain, Portfolio} from '@yoroi/types'
@@ -18,12 +17,12 @@ import {toChainSupportedNetwork} from '../../../features/WalletManager/common/he
import {networkManager} from '../../../features/WalletManager/common/network-manager'
import {WalletMeta} from '../../../features/WalletManager/common/types'
import walletManager from '../../../features/WalletManager/common/walletManager'
-import LocalizableError from '../../../i18n/LocalizableError'
+import LocalizableError from '../../../kernel/i18n/LocalizableError'
+import {logger} from '../../../kernel/logger/logger'
+import {makeWalletEncryptedStorage, WalletEncryptedStorage} from '../../../kernel/storage/EncryptedStorage'
+import {Keychain} from '../../../kernel/storage/Keychain'
import {HWDeviceInfo} from '../../hw'
-import {Logger} from '../../logging'
import {makeMemosManager, MemosManager} from '../../memos'
-import {makeWalletEncryptedStorage, WalletEncryptedStorage} from '../../storage'
-import {Keychain} from '../../storage/Keychain'
import {
AccountStateResponse,
BackendConfig,
@@ -46,9 +45,7 @@ import {
YoroiSignedTx,
YoroiUnsignedTx,
} from '../../types'
-import {asQuantity, isMainnetNetworkId, Quantities} from '../../utils'
-import {genTimeToSlot} from '../../utils/timeUtils'
-import {validatePassword} from '../../utils/validators'
+import {asQuantity, genTimeToSlot, isMainnetNetworkId, Quantities, validatePassword} from '../../utils'
import {Cardano, CardanoMobile} from '../../wallets'
import * as legacyApi from '../api'
import {calcLockedDeposit} from '../assetUtils'
@@ -542,7 +539,7 @@ export class ByronWallet implements YoroiWallet {
}
// returns the address in bech32 (Shelley) or base58 (Byron) format
- private getChangeAddress(): string {
+ getChangeAddress(): string {
const candidateAddresses = this.internalChain.addresses
const unseen = candidateAddresses.filter((addr) => !this.isUsedAddress(addr))
assert(unseen.length > 0, 'Cannot find change address')
@@ -773,7 +770,7 @@ export class ByronWallet implements YoroiWallet {
})
} catch (e) {
if (e instanceof NotEnoughMoneyToSendError || e instanceof NoOutputsError) throw e
- Logger.error(`shelley::createUnsignedTx:: ${(e as Error).message}`, e)
+ logger.error(`ByronWallet: createUnsignedTx error creating tx`, {error: e, type: 'transaction'})
throw new CardanoError((e as Error).message)
}
}
@@ -1105,8 +1102,6 @@ export class ByronWallet implements YoroiWallet {
return yoroiSignedTx({unsignedTx, signedTx})
}
- Logger.info('CardanoWallet::signTxWithLedger: Ledger app version > 5, using CIP-36')
-
const ledgerPayload = await Cardano.buildLedgerPayload(
unsignedTx.unsignedTx,
Number.parseInt(this.getChainNetworkId(), 10),
@@ -1232,7 +1227,7 @@ export class ByronWallet implements YoroiWallet {
return legacyApi.getPoolInfo(request, this.getBackendConfig())
}
- public async signRawTx(txHex: string, pKeys: PrivateKey[]) {
+ public async signRawTx(txHex: string, pKeys: CSL.PrivateKey[]) {
return signRawTransaction(CardanoMobile, txHex, pKeys)
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/chain/chain.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/chain/chain.ts
index 5c454f7ac1..45949834d9 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/chain/chain.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/chain/chain.ts
@@ -3,7 +3,7 @@ import assert from 'assert'
import _ from 'lodash'
import {defaultMemoize} from 'reselect'
-import {Logger} from '../../logging'
+import {logger} from '../../../kernel/logger/logger'
import {NetworkId, WalletImplementationId} from '../../types'
import {CardanoMobile} from '../../wallets'
import type {CryptoAccount} from '../byron/util'
@@ -236,7 +236,7 @@ export class AddressChain {
const newAddresses = await this._addressGenerator.generate(idxs)
if (this.addresses !== addresses) {
- Logger.warn('Concurrent modification to addresses')
+ logger.warn('AddressChain: discoverNewBlock concurrent modification to addresses')
} else {
this._extendAddresses(newAddresses)
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.test.ts
new file mode 100644
index 0000000000..0610a492d5
--- /dev/null
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.test.ts
@@ -0,0 +1,91 @@
+import {mocks} from '../mocks'
+import {getMasterKeyFromMnemonic} from './byron/util'
+import {cip30ExtensionMaker} from './cip30'
+import {YoroiWallet} from './types'
+
+describe('cip30ExtensionMaker', () => {
+ it('should support submitTx', async () => {
+ const mockWallet: YoroiWallet = {
+ ...mocks.wallet,
+ submitTransaction: jest.fn(),
+ }
+
+ const cip30 = cip30ExtensionMaker(mockWallet)
+ const result = await cip30.submitTx(txCbor)
+ expect(mockWallet.submitTransaction).toHaveBeenCalled()
+ expect(result).toBe('1a6205dc7a5a0493ef64487ca7033d12ba8f85a7d4a6e62d3c8eaa570d74eb53')
+ })
+
+ it('should support getUtxos', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getUtxos(undefined, undefined)
+ expect(result).toHaveLength(mocks.wallet.utxos.length)
+ })
+
+ it('should support getBalance', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getBalance()
+ expect(result).toBeDefined()
+ expect(await (await result.coin()).toStr()).toBe('2282543724')
+ })
+
+ it('should support getUnusedAddresses', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getUnusedAddresses()
+ expect(result).toEqual([])
+ })
+
+ it('should support getUsedAddresses', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getUsedAddresses()
+ expect(result).toEqual([])
+ })
+
+ it('should support getChangeAddress', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getChangeAddress()
+ const bech32 = await result.toBech32(undefined)
+ const expectedAddress =
+ 'addr1qxy9yjhvxh700xeluhvdpwlauuvnzav42edveyggy8fusqvg2f9wcd0u77dnlewc6zalmecex96e24j6ejgssgwneqqs762af9'
+ expect(bech32).toBe(expectedAddress)
+ })
+
+ it('should support getRewardAddresses', async () => {
+ const cip30 = cip30ExtensionMaker({
+ ...mocks.wallet,
+ rewardAddressHex:
+ '0188524aec35fcf79b3fe5d8d0bbfde719317595565acc910821d3c80188524aec35fcf79b3fe5d8d0bbfde719317595565acc910821d3c801',
+ })
+ const result = await cip30.getRewardAddresses()
+ expect(result).toHaveLength(1)
+ const [address] = result
+ expect(await address.toBech32(undefined)).toBe(
+ 'addr1qxy9yjhvxh700xeluhvdpwlauuvnzav42edveyggy8fusqvg2f9wcd0u77dnlewc6zalmecex96e24j6ejgssgwneqqs762af9',
+ )
+ })
+
+ it('should support getCollateral', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.getCollateral()
+ expect(result).toHaveLength(1)
+ const [utxo] = result ?? []
+ expect(await utxo.toHex()).toBe(
+ '8282582022d391c7a97559cb4784bd975214919618acce75cde573a7150a176700e761810282583900d0f356065392d8fd5a1021aa1f876110700aad101cf15b35a7c247b2c3892366f174a76af9252f78368f5747d3055ab3568ea3b6bf40b01e1a0053274d',
+ )
+ })
+
+ it('should support signTx', async () => {
+ const cip30 = cip30ExtensionMaker(mocks.wallet)
+ const result = await cip30.signTx(await getMasterKeyFromMnemonic(mnemonic), txCbor, true)
+ expect(result).toBeDefined()
+ })
+})
+
+const mnemonic = [
+ 'dry balcony arctic what garbage sort',
+ 'cart shine egg lamp manual bottom',
+ 'slide assault bus',
+].join(' ')
+
+const txCbor =
+ '84a30081825820ab67cc8cfc2904a49066255bbfb3893894e777387ff5389f01e86e3fdd91702900018282583901627e29d0e433daf833d8e80c97c575992cc3abadffd5ac2f64086b5dfd1c740673b5b8840a12cfbbd4e6c5c243bf08bbece4c8b3258194b21a001e848082583901fef19c26a68374e0d32be6b3870e611bf1d34d5e26e95ef2812008d1fd1c740673b5b8840a12cfbbd4e6c5c243bf08bbece4c8b3258194b2821a0761679ba4581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e1a005ec5a8581c279c909f348e533da5808898f87f9a14bb2c3dfbbacccd631d927a3fa144534e454b1901bc581c8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc3a1474c4f42535445521a2d5448dd581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a0203a048021a0002af65a0f5f6'
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.ts
new file mode 100644
index 0000000000..63d3aa4827
--- /dev/null
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/cip30.ts
@@ -0,0 +1,363 @@
+import * as CSL from '@emurgo/cross-csl-core'
+import {WasmModuleProxy} from '@emurgo/cross-csl-core'
+import {RemoteUnspentOutput, signRawTransaction, UtxoAsset} from '@emurgo/yoroi-lib'
+import {normalizeToAddress} from '@emurgo/yoroi-lib/dist/internals/utils/addresses'
+import {parseTokenList} from '@emurgo/yoroi-lib/dist/internals/utils/assets'
+import {Balance} from '@yoroi/types'
+import {BalanceAmounts} from '@yoroi/types/src/balance/token'
+import {BigNumber} from 'bignumber.js'
+import {Buffer} from 'buffer'
+import _ from 'lodash'
+
+import {RawUtxo, YoroiUnsignedTx} from '../types'
+import {asQuantity, Utxos} from '../utils'
+import {Cardano, CardanoMobile} from '../wallets'
+import {toAssetNameHex, toPolicyId} from './api'
+import {getTransactionSigners} from './common/signatureUtils'
+import {Pagination, YoroiWallet} from './types'
+import {createRawTxSigningKey, identifierToCardanoAsset} from './utils'
+import {collateralConfig, findCollateralCandidates, utxosMaker} from './utxoManager/utxos'
+import {wrappedCsl} from './wrappedCsl'
+
+export const cip30ExtensionMaker = (wallet: YoroiWallet) => {
+ return new CIP30Extension(wallet)
+}
+
+const getCSL = () => wrappedCsl()
+
+const recreateValue = async (value: CSL.Value) => {
+ return CardanoMobile.Value.fromHex(await value.toHex())
+}
+
+const recreateMultiple = async (items: T[], recreate: (item: T) => Promise) => {
+ return Promise.all(items.map(recreate))
+}
+
+const recreateTransactionUnspentOutput = async (utxo: CSL.TransactionUnspentOutput) => {
+ return CardanoMobile.TransactionUnspentOutput.fromHex(await utxo.toHex())
+}
+
+const recreateWitnessSet = async (witnessSet: CSL.TransactionWitnessSet) => {
+ return CardanoMobile.TransactionWitnessSet.fromHex(await witnessSet.toHex())
+}
+
+class CIP30Extension {
+ constructor(private wallet: YoroiWallet) {}
+
+ async getBalance(tokenId = '*'): Promise {
+ const {csl, release} = getCSL()
+ try {
+ const value = await _getBalance(csl, tokenId, this.wallet.utxos, this.wallet.primaryTokenInfo.id)
+ return recreateValue(value)
+ } finally {
+ release()
+ }
+ }
+
+ async getUnusedAddresses(): Promise {
+ const bech32Addresses = this.wallet.receiveAddresses.filter((address) => !this.wallet.isUsedAddressIndex[address])
+ return Promise.all(bech32Addresses.map((addr) => CardanoMobile.Address.fromBech32(addr)))
+ }
+
+ getUsedAddresses(pagination?: Pagination): Promise {
+ const allAddresses = this.wallet.externalAddresses
+ const selectedAddresses = paginate(allAddresses, pagination)
+ return Promise.all(selectedAddresses.map((addr) => CardanoMobile.Address.fromBech32(addr)))
+ }
+
+ getChangeAddress(): Promise {
+ const changeAddr = this.wallet.getChangeAddress()
+ return CardanoMobile.Address.fromBech32(changeAddr)
+ }
+
+ async getRewardAddresses(): Promise {
+ const address = await CardanoMobile.Address.fromHex(this.wallet.rewardAddressHex)
+ return [address]
+ }
+
+ async getUtxos(value?: string, pagination?: Pagination): Promise {
+ const {csl, release} = getCSL()
+ try {
+ const utxos = await _getUtxos(csl, this.wallet, value, pagination)
+ if (utxos === null) return null
+ return Promise.all(utxos.map(async (u) => CardanoMobile.TransactionUnspentOutput.fromHex(await u.toHex())))
+ } finally {
+ release()
+ }
+ }
+
+ async getCollateral(value?: string): Promise {
+ const {csl, release} = getCSL()
+ try {
+ const valueStr = value?.trim() ?? collateralConfig.minLovelace.toString()
+ const valueNum = new BigNumber(valueStr)
+
+ if (valueNum.gte(collateralConfig.maxLovelace)) {
+ throw new Error('Collateral value is too high')
+ }
+
+ const currentCollateral = this.wallet.getCollateralInfo()
+ const canUseCurrentCollateral = currentCollateral.utxo && valueNum.lte(currentCollateral.utxo.amount)
+
+ if (canUseCurrentCollateral && currentCollateral.utxo) {
+ const utxo = await cardanoUtxoFromRemoteFormat(rawUtxoToRemoteUnspentOutput(currentCollateral.utxo))
+ return [await recreateTransactionUnspentOutput(utxo)]
+ }
+
+ const oneUtxoCollateral = await _drawCollateralInOneUtxo(this.wallet, asQuantity(valueNum))
+ if (oneUtxoCollateral) {
+ return [await recreateTransactionUnspentOutput(oneUtxoCollateral)]
+ }
+
+ const multipleUtxosCollateral = await _drawCollateralInMultipleUtxos(csl, this.wallet, asQuantity(valueNum))
+ if (multipleUtxosCollateral && multipleUtxosCollateral.length > 0) {
+ return recreateMultiple(multipleUtxosCollateral, recreateTransactionUnspentOutput)
+ }
+
+ return null
+ } finally {
+ release()
+ }
+ }
+
+ async submitTx(cbor: string): Promise {
+ const base64 = Buffer.from(cbor, 'hex').toString('base64')
+ const txId = await Cardano.calculateTxId(base64, 'base64')
+ await this.wallet.submitTransaction(base64)
+ return txId
+ }
+
+ async signData(_rootKey: string, address: string, _payload: string): Promise<{signature: string; key: string}> {
+ const {csl, release} = getCSL()
+ try {
+ const normalisedAddress = await normalizeToAddress(csl, address)
+ const bech32Address = await normalisedAddress?.toBech32(undefined)
+ if (!bech32Address) throw new Error('Invalid wallet state')
+ throw new Error('Not implemented')
+ } finally {
+ release()
+ }
+ }
+
+ async signTx(rootKey: string, cbor: string, partial = false): Promise {
+ const {csl, release} = getCSL()
+ try {
+ const signers = await getTransactionSigners(cbor, this.wallet, partial)
+ const keys = await Promise.all(signers.map(async (signer) => createRawTxSigningKey(rootKey, signer)))
+ const signedTxBytes = await signRawTransaction(csl, cbor, keys)
+ const signedTx = await csl.Transaction.fromBytes(signedTxBytes)
+ return recreateWitnessSet(await signedTx.witnessSet())
+ } finally {
+ release()
+ }
+ }
+}
+
+const remoteAssetToMultiasset = async (csl: WasmModuleProxy, remoteAssets: UtxoAsset[]): Promise => {
+ const groupedAssets = remoteAssets.reduce((res, a) => {
+ ;(res[toPolicyId(a.assetId)] = res[toPolicyId(a.assetId)] || []).push(a)
+ return res
+ }, {} as Record)
+ const multiasset = await csl.MultiAsset.new()
+ for (const policyHex of Object.keys(groupedAssets)) {
+ const assetGroup = groupedAssets[policyHex]
+ const policyId = await csl.ScriptHash.fromBytes(Buffer.from(policyHex, 'hex'))
+ const assets = await csl.Assets.new()
+ for (const asset of assetGroup) {
+ await assets.insert(
+ await csl.AssetName.new(Buffer.from(toAssetNameHex(asset.assetId), 'hex')),
+ await csl.BigNum.fromStr(asset.amount),
+ )
+ }
+ await multiasset.insert(policyId, assets)
+ }
+ return multiasset
+}
+const cardanoUtxoFromRemoteFormat = async (u: RemoteUnspentOutput): Promise => {
+ const {csl, release} = getCSL()
+ try {
+ const input = await csl.TransactionInput.new(await csl.TransactionHash.fromHex(u.txHash), u.txIndex)
+ const value = await csl.Value.new(await csl.BigNum.fromStr(u.amount))
+ if ((u.assets || []).length > 0) {
+ await value.setMultiasset(await remoteAssetToMultiasset(csl, [...u.assets]))
+ }
+ const receiver = await csl.Address.fromBech32(u.receiver)
+ if (!receiver) throw new Error('Invalid receiver')
+ const output = await csl.TransactionOutput.new(receiver, value)
+ return csl.TransactionUnspentOutput.new(input, output)
+ } finally {
+ release()
+ }
+}
+
+const _getBalance = async (csl: WasmModuleProxy, tokenId = '*', utxos: RawUtxo[], primaryTokenId: string) => {
+ if (tokenId === 'TADA' || tokenId === 'ADA') tokenId = '.'
+ const amounts = Utxos.toAmounts(utxos, primaryTokenId)
+ const value = await csl.Value.new(await csl.BigNum.fromStr(amounts[primaryTokenId]))
+ const normalizedInHex = await Promise.all(
+ Object.keys(amounts)
+ .filter((t) => {
+ if (tokenId === '*') return true
+ return t === tokenId
+ })
+ .map(async (tokenId) => {
+ if (tokenId === '.' || tokenId === '' || tokenId === primaryTokenId) return null
+ const {policyId, name} = await identifierToCardanoAsset(tokenId)
+ const amount = amounts[tokenId]
+ return {policyIdHex: await policyId.toHex(), nameHex: await name.toHex(), amount}
+ }),
+ )
+
+ const groupedByPolicyId = _.groupBy(normalizedInHex.filter(Boolean), 'policyIdHex')
+
+ const multiAsset = await csl.MultiAsset.new()
+ for (const policyIdHex of Object.keys(groupedByPolicyId)) {
+ const assetValue = groupedByPolicyId[policyIdHex]
+ if (!assetValue) continue
+ const policyId = await csl.ScriptHash.fromHex(policyIdHex)
+ const assets = await csl.Assets.new()
+ for (const asset of assetValue) {
+ if (!asset) continue
+ const assetName = await csl.AssetName.fromHex(asset.nameHex)
+ const assetValue = await csl.BigNum.fromStr(asset.amount)
+ await assets.insert(assetName, assetValue)
+ }
+ await multiAsset.insert(policyId, assets)
+ }
+ await value.setMultiasset(multiAsset)
+ return value
+}
+
+export const _getUtxos = async (csl: WasmModuleProxy, wallet: YoroiWallet, value?: string, pagination?: Pagination) => {
+ const valueStr = value?.trim() ?? ''
+
+ if (valueStr.length === 0) {
+ const validUtxos = await Promise.all(
+ wallet.utxos.map((o) => cardanoUtxoFromRemoteFormat(rawUtxoToRemoteUnspentOutput(o))),
+ )
+ return paginate(validUtxos, pagination)
+ }
+
+ const amounts: BalanceAmounts = {}
+
+ const isValueNumber = !isNaN(Number(valueStr))
+
+ if (isValueNumber) {
+ amounts[wallet.primaryTokenInfo.id] = asQuantity(valueStr)
+ } else {
+ try {
+ Object.assign(amounts, getAmountsFromValue(csl, valueStr, wallet.primaryTokenInfo.id))
+ } catch (e) {
+ //
+ }
+ }
+
+ const validUtxos = await _getRequiredUtxos(csl, wallet, amounts, wallet.utxos)
+ if (validUtxos === null) return null
+ return paginate(validUtxos, pagination)
+}
+
+const _getRequiredUtxos = async (
+ csl: WasmModuleProxy,
+ wallet: YoroiWallet,
+ amounts: Balance.Amounts,
+ allUtxos: RawUtxo[],
+): Promise => {
+ const remoteUnspentOutputs: RemoteUnspentOutput[] = allUtxos.map((utxo) => rawUtxoToRemoteUnspentOutput(utxo))
+ const rewardAddress = await (await normalizeToAddress(csl, wallet.rewardAddressHex))?.toBech32(undefined)
+ if (!rewardAddress) throw new Error('Invalid wallet state')
+
+ try {
+ const unsignedTx = await wallet.createUnsignedTx([{address: rewardAddress, amounts}])
+ const requiredUtxos = await findUtxosInUnsignedTx(unsignedTx, remoteUnspentOutputs)
+ return Promise.all(requiredUtxos.map((o) => cardanoUtxoFromRemoteFormat(o)))
+ } catch (e) {
+ return null
+ }
+}
+
+const rawUtxoToRemoteUnspentOutput = (utxo: RawUtxo): RemoteUnspentOutput => {
+ return {
+ txHash: utxo.tx_hash,
+ txIndex: utxo.tx_index,
+ receiver: utxo.receiver,
+ amount: utxo.amount,
+ assets: utxo.assets,
+ utxoId: utxo.utxo_id,
+ }
+}
+
+const findUtxosInUnsignedTx = async (unsignedTx: YoroiUnsignedTx, utxos: RemoteUnspentOutput[]) => {
+ const inputs = await unsignedTx.unsignedTx.txBody.inputs()
+ const filteredUtxos: RemoteUnspentOutput[] = []
+ for (let i = 0; i < (await inputs.len()); i++) {
+ const input = await inputs.get(i)
+ const inputTxHash = await (await input.transactionId()).toHex()
+ const inputIndex = await input.index()
+ const utxo = utxos.find((utxo) => utxo.txHash === inputTxHash && utxo.txIndex === inputIndex)
+ if (utxo) filteredUtxos.push(utxo)
+ }
+ return filteredUtxos
+}
+
+const paginate = (items: T[], pagination?: {page: number; limit: number}) => {
+ return pagination ? items.slice(pagination.page * pagination.limit, (pagination.page + 1) * pagination.limit) : items
+}
+
+const _drawCollateralInOneUtxo = async (wallet: YoroiWallet, quantity: Balance.Quantity) => {
+ const utxos = utxosMaker(wallet.utxos, {
+ maxLovelace: collateralConfig.maxLovelace,
+ minLovelace: quantity,
+ maxUTxOs: collateralConfig.maxUTxOs,
+ })
+
+ const possibleCollateralId = utxos.drawnCollateral()
+ if (!possibleCollateralId) return null
+ const collateralUtxo = utxos.findById(possibleCollateralId)
+ if (!collateralUtxo) return null
+ return cardanoUtxoFromRemoteFormat(rawUtxoToRemoteUnspentOutput(collateralUtxo))
+}
+
+const _drawCollateralInMultipleUtxos = async (
+ csl: WasmModuleProxy,
+ wallet: YoroiWallet,
+ quantity: Balance.Quantity,
+) => {
+ const possibleUtxos = findCollateralCandidates(wallet.utxos, {
+ maxLovelace: collateralConfig.maxLovelace,
+ minLovelace: asQuantity('0'),
+ maxUTxOs: collateralConfig.maxUTxOs,
+ })
+
+ const sortedFromMaxToMin = possibleUtxos.sort((a, b) => {
+ const aAmount = new BigNumber(a.amount)
+ const bAmount = new BigNumber(b.amount)
+ return bAmount.comparedTo(aAmount)
+ })
+
+ const utxosWithLimitAccounted = sortedFromMaxToMin.slice(0, collateralConfig.maxUTxOs)
+
+ const utxos = await _getRequiredUtxos(csl, wallet, {[wallet.primaryTokenInfo.id]: quantity}, utxosWithLimitAccounted)
+
+ if (utxos !== null && utxos.length > 0) {
+ return utxos
+ }
+ return null
+}
+
+const getAmountsFromValue = async (csl: WasmModuleProxy, value: string, primaryTokenId: string) => {
+ const valueFromHex = await csl.Value.fromHex(value)
+ const amounts: BalanceAmounts = {}
+
+ if (valueFromHex.hasValue()) {
+ amounts[primaryTokenId] = asQuantity(await (await valueFromHex.coin()).toStr())
+ }
+ const ma = await valueFromHex.multiasset()
+ if (ma) {
+ for (const token of await parseTokenList(ma)) {
+ const {assetId, amount} = token
+ amounts[assetId] = asQuantity(amount)
+ }
+ }
+ return amounts
+}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/common/signatureUtils.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/common/signatureUtils.ts
index 0eb2747b35..430a5abe34 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/common/signatureUtils.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/common/signatureUtils.ts
@@ -47,7 +47,11 @@ export const convertBech32ToHex = async (bech32Address: string) => {
export const harden = (num: number) => HARD_DERIVATION_START + num
-export const getRequiredSigners = async (tx: CSL_TYPES.Transaction, wallet: YoroiWallet): Promise => {
+export const getRequiredSigners = async (
+ tx: CSL_TYPES.Transaction,
+ wallet: YoroiWallet,
+ partial = true,
+): Promise => {
const stakeVKHash = await wallet.getStakingKey().then((key) => key.hash())
const body = await tx.body()
@@ -60,11 +64,11 @@ export const getRequiredSigners = async (tx: CSL_TYPES.Transaction, wallet: Yoro
receiver: utxo.receiver,
utxoId: utxo.utxo_id,
assets: utxo.assets,
- addressing: {path: getDerivationPathForAddress(utxo.receiver, wallet), startLevel},
+ addressing: {path: getDerivationPathForAddress(utxo.receiver, wallet, partial), startLevel},
}))
const getAddressAddressing = (bech32Address: string) => {
- const path = getDerivationPathForAddress(bech32Address, wallet)
+ const path = getDerivationPathForAddress(bech32Address, wallet, partial)
return {path, startLevel}
}
const signers = await getAllSigners(
@@ -74,6 +78,7 @@ export const getRequiredSigners = async (tx: CSL_TYPES.Transaction, wallet: Yoro
stakeVKHash,
getAddressAddressing,
addressedUtxos,
+ partial,
)
return getUniquePaths(signers.map((s) => s.path))
@@ -87,13 +92,16 @@ const arePathsEqual = (path1: number[], path2: number[]) => {
return path1.every((value, index) => value === path2[index]) && path1.length === path2.length
}
-const getDerivationPathForAddress = (address: string, wallet: YoroiWallet) => {
+const getDerivationPathForAddress = (address: string, wallet: YoroiWallet, partial = false) => {
const internalIndex = wallet.internalAddresses.indexOf(address)
const externalIndex = wallet.externalAddresses.indexOf(address)
const purpose = isHaskellShelley(wallet.walletImplementationId)
? NUMBERS.WALLET_TYPE_PURPOSE.CIP1852
: NUMBERS.WALLET_TYPE_PURPOSE.BIP44
- if (internalIndex === -1 && externalIndex === -1) throw new Error('Could not find matching address')
+ if (internalIndex === -1 && externalIndex === -1) {
+ if (!partial) throw new Error('Could not find matching address')
+ return [purpose, harden(1815), harden(0), 0, 0]
+ }
const role = internalIndex > -1 ? 1 : 0
const index = Math.max(internalIndex, externalIndex)
@@ -101,7 +109,7 @@ const getDerivationPathForAddress = (address: string, wallet: YoroiWallet) => {
return [purpose, harden(1815), harden(0), role, index]
}
-export const getTransactionSigners = async (cbor: string, wallet: YoroiWallet) => {
+export const getTransactionSigners = async (cbor: string, wallet: YoroiWallet, partial = true) => {
const tx = await CardanoMobile.Transaction.fromHex(cbor)
- return getRequiredSigners(tx, wallet)
+ return getRequiredSigners(tx, wallet, partial)
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/errors.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/errors.ts
index 2fca1aa1d1..e25436b8ce 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/errors.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/errors.ts
@@ -1,5 +1,5 @@
-import {errorMessages} from '../../i18n/global-messages'
-import LocalizableError from '../../i18n/LocalizableError'
+import {errorMessages} from '../../kernel/i18n/global-messages'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
// thrown when the request did go through but
// backend returned an unexpected result
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/hw/hw.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/hw/hw.ts
index ce9d92428f..94d4eb28ef 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/hw/hw.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/hw/hw.ts
@@ -14,8 +14,9 @@ import TransportHID from '@emurgo/react-native-hid'
import TransportBLE from '@ledgerhq/react-native-hw-transport-ble'
import {BleError} from 'react-native-ble-plx'
-import {ledgerMessages} from '../../../i18n/global-messages'
-import LocalizableError from '../../../i18n/LocalizableError'
+import {ledgerMessages} from '../../../kernel/i18n/global-messages'
+import LocalizableError from '../../../kernel/i18n/LocalizableError'
+import {logger} from '../../../kernel/logger/logger'
import {
AdaAppClosedError,
DeviceId,
@@ -26,7 +27,6 @@ import {
LedgerUserError,
RejectedByUserError,
} from '../../hw'
-import {Logger} from '../../logging'
import {WalletImplementationId} from '../../types'
import {NUMBERS} from '../numbers'
import {isByron, isHaskellShelley} from '../utils'
@@ -104,7 +104,7 @@ const mapLedgerError = (e: Error | any): Error | LocalizableError => {
} else if (e instanceof DeprecatedAdaAppError) {
return e
} else {
- Logger.error('ledgerUtils::mapLedgerError: Unexpected error', e)
+ logger.error('mapLedgerError: Unexpected error', {e})
return e
}
}
@@ -140,7 +140,7 @@ export const checkDeviceVersion = (versionResponse: GetVersionResponse): void =>
versionResponse.version.minor == null ||
versionResponse.version.patch == null
) {
- Logger.warn('ledgerUtils::checkDeviceVersion: incomplete version data from device')
+ logger.warn('checkDeviceVersion: incomplete version data from device', {versionResponse})
return
}
@@ -152,7 +152,7 @@ export const checkDeviceVersion = (versionResponse: GetVersionResponse): void =>
const minVersionArray = MIN_ADA_APP_VERSION.split('.')
if (minVersionArray.length !== deviceVersionArray.length) {
- Logger.warn('ledgerUtils::checkDeviceVersion: version formats mismatch')
+ logger.warn('checkDeviceVersion: version formats mismatch', {minVersionArray, deviceVersionArray})
return
}
@@ -196,7 +196,7 @@ const connectionHandler = async (
const appAda = new AppAda(transport)
const versionResp: GetVersionResponse = await appAda.getVersion()
- Logger.debug('ledgerUtils::connectionHandler: AppAda version', versionResp)
+ logger.debug('connectionHandler: AppAda version', {versionResp})
checkDeviceVersion(versionResp)
return appAda
} catch (e) {
@@ -275,7 +275,7 @@ export const doesCardanoAppVersionSupportCIP36 = (majorVersion: number) => {
export const getCardanoAppMajorVersion = async (hwDeviceInfo: HWDeviceInfo, useUSB: boolean) => {
const appAda = await connectionHandler(hwDeviceInfo.hwFeatures.deviceId, hwDeviceInfo.hwFeatures.deviceObj, useUSB)
const {version} = await appAda.getVersion()
- Logger.debug('ledgerUtils::getCardanoAppMajorVersion', version.major)
+ logger.debug('getCardanoAppMajorVersion: version', {version})
return version.major
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/ShelleyWallet.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/ShelleyWallet.ts
index 78c34fcb25..3fb9032f64 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/ShelleyWallet.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/ShelleyWallet.ts
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
-import {PrivateKey} from '@emurgo/cross-csl-core'
+import * as CSL from '@emurgo/cross-csl-core'
import {createSignedLedgerTxFromCbor, signRawTransaction} from '@emurgo/yoroi-lib'
import {Datum} from '@emurgo/yoroi-lib/dist/internals/models'
import {AppApi, CardanoApi} from '@yoroi/api'
@@ -7,6 +7,7 @@ import {isNonNullable, parseSafe} from '@yoroi/common'
import {Api, App, Balance, Chain, Portfolio} from '@yoroi/types'
import assert from 'assert'
import {BigNumber} from 'bignumber.js'
+import {Buffer} from 'buffer'
import _ from 'lodash'
import DeviceInfo from 'react-native-device-info'
import {defaultMemoize} from 'reselect'
@@ -18,12 +19,12 @@ import {toChainSupportedNetwork} from '../../../features/WalletManager/common/he
import {networkManager} from '../../../features/WalletManager/common/network-manager'
import {WalletMeta} from '../../../features/WalletManager/common/types'
import walletManager from '../../../features/WalletManager/common/walletManager'
-import LocalizableError from '../../../i18n/LocalizableError'
+import LocalizableError from '../../../kernel/i18n/LocalizableError'
+import {logger} from '../../../kernel/logger/logger'
+import {makeWalletEncryptedStorage, WalletEncryptedStorage} from '../../../kernel/storage/EncryptedStorage'
+import {Keychain} from '../../../kernel/storage/Keychain'
import {HWDeviceInfo} from '../../hw'
-import {Logger} from '../../logging'
import {makeMemosManager, MemosManager} from '../../memos'
-import {makeWalletEncryptedStorage, WalletEncryptedStorage} from '../../storage'
-import {Keychain} from '../../storage/Keychain'
import type {
AccountStateResponse,
CurrencySymbol,
@@ -75,6 +76,7 @@ import {deriveRewardAddressHex, toRecipients} from '../utils'
import {makeUtxoManager, UtxoManager} from '../utxoManager'
import {utxosMaker} from '../utxoManager/utxos'
import {makeKeys} from './makeKeys'
+
type WalletState = {
lastGeneratedAddressIndex: number
}
@@ -481,13 +483,12 @@ export const makeShelleyWallet = (constants: typeof MAINNET | typeof TESTNET | t
// =================== utils =================== //
// returns the address in bech32 (Shelley) or base58 (Byron) format
- private getChangeAddress(): string {
+ getChangeAddress(): string {
const candidateAddresses = this.internalChain.addresses
const unseen = candidateAddresses.filter((addr) => !this.isUsedAddress(addr))
assert(unseen.length > 0, 'Cannot find change address')
const changeAddress = _.first(unseen)
if (!changeAddress) throw new Error('invalid wallet state')
-
return changeAddress
}
@@ -512,7 +513,7 @@ export const makeShelleyWallet = (constants: typeof MAINNET | typeof TESTNET | t
return stakingKey
}
- public async signRawTx(txHex: string, pKeys: PrivateKey[]) {
+ public async signRawTx(txHex: string, pKeys: CSL.PrivateKey[]) {
return signRawTransaction(CardanoMobile, txHex, pKeys)
}
@@ -1008,7 +1009,7 @@ export const makeShelleyWallet = (constants: typeof MAINNET | typeof TESTNET | t
const appAdaVersion = await getCardanoAppMajorVersion(this.hwDeviceInfo, useUSB)
if (!doesCardanoAppVersionSupportCIP36(appAdaVersion) && unsignedTx.voting.registration) {
- Logger.info('CardanoWallet::signTxWithLedger: Ledger app version <= 5')
+ logger.info('ShelleyWallet: signTxWithLedger ledger app version <= 5, no CIP-36 support', {appAdaVersion})
const ledgerPayload = await Cardano.buildVotingLedgerPayloadV5(
unsignedTx.unsignedTx,
CHAIN_NETWORK_ID,
@@ -1029,7 +1030,7 @@ export const makeShelleyWallet = (constants: typeof MAINNET | typeof TESTNET | t
return yoroiSignedTx({unsignedTx, signedTx})
}
- Logger.info('CardanoWallet::signTxWithLedger: Ledger app version > 5, using CIP-36')
+ logger.info('ShelleyWallet: signTxWithLedger ledger app version > 5, using CIP-36', {appAdaVersion})
const ledgerPayload = await Cardano.buildLedgerPayload(
unsignedTx.unsignedTx,
@@ -1067,9 +1068,8 @@ export const makeShelleyWallet = (constants: typeof MAINNET | typeof TESTNET | t
return this.cardanoApi.getProtocolParams()
}
- async submitTransaction(signedTx: string) {
- const response: any = await legacyApi.submitTransaction(signedTx, BACKEND)
- return response as any
+ async submitTransaction(base64SignedTx: string) {
+ await legacyApi.submitTransaction(base64SignedTx, BACKEND)
}
private async syncUtxos({isForced = false}: {isForced?: boolean} = {}) {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/mainnet/ShelleyWallet.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/mainnet/ShelleyWallet.test.ts
index ffe01019fd..7a71913412 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/mainnet/ShelleyWallet.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/mainnet/ShelleyWallet.test.ts
@@ -4,9 +4,9 @@ import AsyncStorage from '@react-native-async-storage/async-storage'
import {Balance} from '@yoroi/types'
import {WalletMeta} from '../../../../../features/WalletManager/common/types'
+import {EncryptedStorage, EncryptedStorageKeys} from '../../../../../kernel/storage/EncryptedStorage'
+import {rootStorage} from '../../../../../kernel/storage/rootStorage'
import {HWDeviceInfo} from '../../../../hw'
-import {EncryptedStorage, EncryptedStorageKeys} from '../../../../storage'
-import {rootStorage} from '../../../../storage/rootStorage'
import {DefaultAsset} from '../../../../types'
import {ShelleyAddressGeneratorJSON} from '../../../chain'
import {YoroiWallet} from '../../../types'
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/testnet/ShelleyWalletTestnet.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/testnet/ShelleyWalletTestnet.test.ts
index 1f28f203fb..30c1efb656 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/testnet/ShelleyWalletTestnet.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/shelley/tests/testnet/ShelleyWalletTestnet.test.ts
@@ -4,9 +4,9 @@ import AsyncStorage from '@react-native-async-storage/async-storage'
import {Balance} from '@yoroi/types'
import {WalletMeta} from '../../../../../features/WalletManager/common/types'
+import {EncryptedStorage, EncryptedStorageKeys} from '../../../../../kernel/storage/EncryptedStorage'
+import {rootStorage} from '../../../../../kernel/storage/rootStorage'
import {HWDeviceInfo} from '../../../../hw'
-import {EncryptedStorage, EncryptedStorageKeys} from '../../../../storage'
-import {rootStorage} from '../../../../storage/rootStorage'
import {DefaultAsset} from '../../../../types'
import {ShelleyAddressGeneratorJSON} from '../../../chain'
import {WalletJSON} from '../../../shelley/ShelleyWallet'
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.test.ts
index b07a08985a..f6b0a303c2 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.test.ts
@@ -2,7 +2,7 @@ import AsyncStorage from '@react-native-async-storage/async-storage'
import {fromPairs} from 'lodash'
import DeviceInfo from 'react-native-device-info'
-import {rootStorage} from '../../storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {Transaction} from '../../types/other'
import {ApiHistoryError} from '../errors'
import {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.ts
index db5029b0b5..8960745757 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/transactionManager/transactionManager.ts
@@ -7,7 +7,7 @@ import {fromPairs, mapValues, max} from 'lodash'
import DeviceInfo from 'react-native-device-info'
import {defaultMemoize} from 'reselect'
-import {Logger} from '../../logging'
+import {logger} from '../../../kernel/logger/logger'
import {
BackendConfig,
CERTIFICATE_KIND,
@@ -219,17 +219,26 @@ export async function syncTxs({
)
return newTxs
} else {
- Logger.error(`API returned an unexpected error response`)
+ logger.error(`API returned an unexpected error response`, {
+ type: 'http',
+ error: e,
+ })
}
break
// UNKNOWN
default:
- Logger.error(`API returned an unknown error response: ${e}`)
+ logger.error(`API returned an unknown error response`, {
+ type: 'http',
+ error: e,
+ })
return
}
}
- Logger.error(`Unknown error: ${e}`)
+ logger.error(`Unknown error`, {
+ type: 'http',
+ error: e,
+ })
return
}
}
@@ -495,7 +504,7 @@ export const makeTxManagerStorage = (storage: App.Storage): TxManagerStorage =>
return tuples.reduce((result: TransactionManagerState['transactions'], [txid, tx]) => {
if (!tx) {
- Logger.warn('corrupted transaction', {txid})
+ logger.warn('makeTxManagerStorage: corrupted transaction', {txid})
return result
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/types.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/types.ts
index 64849e7c20..ee81edc453 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/types.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/types.ts
@@ -1,6 +1,5 @@
import {WalletChecksum as WalletChecksumType} from '@emurgo/cip4-js'
import * as CoreTypes from '@emurgo/cross-csl-core'
-import {BaseAddress, PrivateKey} from '@emurgo/cross-csl-core'
import {
Addressing as AddressingType,
CardanoAddressedUtxo as CardanoAddressedUtxoType,
@@ -14,8 +13,8 @@ import {
import {Api, App, Balance, Chain, Portfolio} from '@yoroi/types'
import {BigNumber} from 'bignumber.js'
+import {WalletEncryptedStorage} from '../../kernel/storage/EncryptedStorage'
import {HWDeviceInfo} from '../hw'
-import {WalletEncryptedStorage} from '../storage'
import {
AccountStates,
NetworkId,
@@ -83,6 +82,11 @@ export type SignedTxLegacy = {
base64: string
}
+export type Pagination = {
+ page: number
+ limit: number
+}
+
export type YoroiWallet = {
id: string
@@ -121,13 +125,13 @@ export type YoroiWallet = {
// API
api: App.Api
- signRawTx(txHex: string, pKeys: PrivateKey[]): Promise
+ signRawTx(txHex: string, pKeys: CoreTypes.PrivateKey[]): Promise
// Sending
createUnsignedTx(entries: YoroiEntry[], metadata?: Array): Promise
signTxWithLedger(request: YoroiUnsignedTx, useUSB: boolean): Promise
signTx(signRequest: YoroiUnsignedTx, rootKey: string): Promise
- submitTransaction(signedTx: string): Promise<[]>
+ submitTransaction(signedTx: string): Promise
// Voting
createVotingRegTx(
@@ -206,9 +210,11 @@ export type YoroiWallet = {
checkServerStatus(): Promise
// CIP36 Payment Address
- getFirstPaymentAddress(): Promise
+ getFirstPaymentAddress(): Promise
getProtocolParams(): Promise
+
+ getChangeAddress(): string
}
export const isYoroiWallet = (wallet: unknown): wallet is YoroiWallet => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/utils.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/utils.ts
index 599f33ecd3..6c67870e36 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/utils.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/utils.ts
@@ -63,7 +63,7 @@ export const deriveRewardAddressHex = async (accountPubKeyHex: string, networkId
/**
* Multi-asset related
*/
-const identifierToCardanoAsset = async (
+export const identifierToCardanoAsset = async (
tokenId: string,
): Promise<{
policyId: CardanoTypes.ScriptHash
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/types.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/types.ts
index 0870faa3b3..552d03513b 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/types.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/types.ts
@@ -3,4 +3,5 @@ import {Balance} from '@yoroi/types'
export type CollateralConfig = {
minLovelace: Balance.Quantity
maxLovelace: Balance.Quantity
+ maxUTxOs: number
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxoManager.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxoManager.test.ts
index 4530a1f017..68cbe64ca6 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxoManager.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxoManager.test.ts
@@ -1,4 +1,4 @@
-import {rootStorage} from '../../storage/rootStorage'
+import {rootStorage} from '../../../kernel/storage/rootStorage'
import {makeUtxoManagerStorage, makeUtxoStorage} from './utxoManager'
describe('utxo manager storage', () => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.test.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.test.ts
index b790c78d15..10ee42890c 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.test.ts
@@ -14,7 +14,7 @@ describe('UTXO utility functions', () => {
})
describe('isAmountInCollateralRange', () => {
- const config: CollateralConfig = {minLovelace: '100', maxLovelace: '200'}
+ const config: CollateralConfig = {minLovelace: '100', maxLovelace: '200', maxUTxOs: 3}
it('returns true if amount is within range', () => {
expect(isAmountInCollateralRange('150', config)).toBe(true)
@@ -26,7 +26,7 @@ describe('UTXO utility functions', () => {
})
describe('utxosMaker', () => {
- const config: CollateralConfig = {minLovelace: '50', maxLovelace: '200'}
+ const config: CollateralConfig = {minLovelace: '50', maxLovelace: '200', maxUTxOs: 3}
const utils = utxosMaker(mockRawUtxos, config)
it('findById returns the correct UTXO by id', () => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.ts
index 9bb32eb174..5ce962f448 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/utxoManager/utxos.ts
@@ -8,11 +8,17 @@ import {CollateralConfig} from './types'
export const collateralConfig: CollateralConfig = {
minLovelace: asQuantity(2_000_000),
maxLovelace: asQuantity(5_000_000),
+ maxUTxOs: 3,
}
export function isPureUtxo(utxo: RawUtxo) {
return utxo.assets.length === 0
}
+
+export const hasValue = (utxo: RawUtxo) => {
+ return new BigNumber(asQuantity(utxo.amount)).gte(0)
+}
+
export function isAmountInCollateralRange(amount: RawUtxo['amount'], {maxLovelace, minLovelace}: CollateralConfig) {
const value = new BigNumber(asQuantity(amount))
const min = new BigNumber(minLovelace)
@@ -20,9 +26,20 @@ export function isAmountInCollateralRange(amount: RawUtxo['amount'], {maxLovelac
return value.gte(min) && value.lte(max)
}
+export const findCollateralCandidates = (
+ utxos: ReadonlyArray,
+ {maxLovelace, minLovelace, maxUTxOs}: CollateralConfig,
+) => {
+ return utxos
+ .filter(isPureUtxo)
+ .filter(hasValue)
+ .filter((utxo) => isAmountInCollateralRange(utxo.amount, {maxLovelace, minLovelace, maxUTxOs}))
+ .sort((a, b) => new BigNumber(asQuantity(a.amount)).comparedTo(asQuantity(b.amount)))
+}
+
export function utxosMaker(
utxos: ReadonlyArray,
- {maxLovelace, minLovelace}: CollateralConfig = collateralConfig,
+ {maxLovelace, minLovelace, maxUTxOs}: CollateralConfig = collateralConfig,
) {
const findById = (id: RawUtxo['utxo_id']) => {
return utxos.find((utxo) => utxo.utxo_id === id)
@@ -31,14 +48,8 @@ export function utxosMaker(
return findById(id) !== undefined
}
- const findCollateralCandidates = () => {
- return utxos
- .filter(isPureUtxo)
- .filter((utxo) => isAmountInCollateralRange(utxo.amount, {maxLovelace, minLovelace}))
- .sort((a, b) => new BigNumber(asQuantity(a.amount)).comparedTo(asQuantity(b.amount)))
- }
const drawnCollateral = () => {
- const candidates = findCollateralCandidates()
+ const candidates = findCollateralCandidates(utxos, {maxLovelace, minLovelace, maxUTxOs})
const collateral = candidates.find(first)
return collateral?.utxo_id
}
@@ -46,7 +57,7 @@ export function utxosMaker(
return {
findById,
isAmountInCollateralRange,
- findCollateralCandidates,
+ findCollateralCandidates: () => findCollateralCandidates(utxos, {maxLovelace, minLovelace, maxUTxOs}),
drawnCollateral,
exists,
} as const
diff --git a/apps/wallet-mobile/src/yoroi-wallets/cardano/wrappedCsl.ts b/apps/wallet-mobile/src/yoroi-wallets/cardano/wrappedCsl.ts
new file mode 100644
index 0000000000..34b1692229
--- /dev/null
+++ b/apps/wallet-mobile/src/yoroi-wallets/cardano/wrappedCsl.ts
@@ -0,0 +1,62 @@
+import {WasmModuleProxy} from '@emurgo/cross-csl-core'
+import {init} from '@emurgo/cross-csl-mobile'
+/* eslint-disable @typescript-eslint/no-explicit-any */
+
+const cardano = init('wrappedCSL')
+
+export type CslPointer = {ptr: number; free: () => void}
+
+export const wrappedCsl = (): {csl: WasmModuleProxy; release: VoidFunction} => {
+ let pointers: CslPointer[] = []
+ const track = (p: CslPointer) => pointers.push(p)
+ const release = () => {
+ pointers.forEach((p) => {
+ if (p?.ptr !== 0) {
+ try {
+ p.free()
+ } catch (e) {
+ //
+ }
+ }
+ })
+ pointers = []
+ }
+
+ const trackIfNeeded = (obj: T): T => {
+ if (typeof (obj as any)?.free === 'function') track(obj as any)
+ if (obj instanceof Promise) {
+ return obj.then((result) => trackIfNeeded(result)) as any
+ }
+ if (Array.isArray(obj)) return obj.map((o) => trackIfNeeded(o) as any) as any
+ return obj
+ }
+
+ const proxy = new Proxy(cardano, {
+ get(target: WasmModuleProxy, p: string | symbol, receiver: any): any {
+ const prop = Reflect.get(target, p, receiver)
+ if (!isClass(prop)) {
+ return prop
+ }
+
+ return new Proxy(prop, {
+ get: (target: any, name: string) => {
+ if (name === 'prototype') return target[name]
+ const isFunc = typeof target[name] === 'function'
+ if (!isFunc) return target[name]
+ return (...args: any[]) => {
+ const result = target[name](...args)
+ return trackIfNeeded(result)
+ }
+ },
+ })
+ },
+ })
+
+ return {csl: proxy, release}
+}
+
+const isClass = (func: any) => {
+ return (
+ typeof func === 'function' && (/^\s*class\s+/.test(func.toString()) || func.name[0] === func.name[0].toUpperCase())
+ )
+}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/contants.ts b/apps/wallet-mobile/src/yoroi-wallets/contants.ts
deleted file mode 100644
index 3ddc146b7e..0000000000
--- a/apps/wallet-mobile/src/yoroi-wallets/contants.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const limitOfSecondaryAmountsPerTx = 10
diff --git a/apps/wallet-mobile/src/yoroi-wallets/hooks/index.ts b/apps/wallet-mobile/src/yoroi-wallets/hooks/index.ts
index 44999ab22e..73d79b2c9d 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/hooks/index.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/hooks/index.ts
@@ -29,7 +29,8 @@ import {AddressMode, WalletMeta} from '../../features/WalletManager/common/types
import {parseWalletMeta} from '../../features/WalletManager/common/validators'
import {WalletManager} from '../../features/WalletManager/common/walletManager'
import {useWalletManager} from '../../features/WalletManager/context/WalletManagerContext'
-import {CONFIG} from '../../legacy/config'
+import {isDev, isNightly} from '../../kernel/env'
+import {logger} from '../../kernel/logger/logger'
import {getSpendingKey, getStakingKey} from '../cardano/addressInfo/addressInfo'
import {generateShelleyPlateFromKey} from '../cardano/shelley/plate'
import {WalletEvent, YoroiWallet} from '../cardano/types'
@@ -48,8 +49,8 @@ import {Amounts, Quantities, Utxos} from '../utils/utils'
const crashReportsStorageKey = 'sendCrashReports'
export const getCrashReportsEnabled = async (storage: AsyncStorageStatic = AsyncStorage) => {
+ if (isNightly || isDev) return true
const data = await storage.getItem(crashReportsStorageKey)
- if (CONFIG.FORCE_CRASH_REPORTS) return true
return parseBoolean(data) ?? false
}
@@ -68,7 +69,14 @@ export const useCrashReportsEnabled = (storage: AsyncStorageStatic = AsyncStorag
export const useSetCrashReportsEnabled = (storage: AsyncStorageStatic = AsyncStorage) => {
const mutation = useMutationWithInvalidations({
useErrorBoundary: true,
- mutationFn: (enabled) => storage.setItem(crashReportsStorageKey, JSON.stringify(enabled)),
+ mutationFn: async (enabled) => {
+ if (enabled) {
+ logger.enable()
+ } else {
+ logger.disable()
+ }
+ return storage.setItem(crashReportsStorageKey, JSON.stringify(enabled))
+ },
invalidateQueries: [[crashReportsStorageKey]],
})
diff --git a/apps/wallet-mobile/src/yoroi-wallets/hw/hw.ts b/apps/wallet-mobile/src/yoroi-wallets/hw/hw.ts
index 4d377585d9..a8c1883ebc 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/hw/hw.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/hw/hw.ts
@@ -1,8 +1,8 @@
import {Permission, PermissionsAndroid, Platform} from 'react-native'
import {useMutation, UseMutationOptions} from 'react-query'
-import {ledgerMessages} from '../../i18n/global-messages'
-import LocalizableError from '../../i18n/LocalizableError'
+import {ledgerMessages} from '../../kernel/i18n/global-messages'
+import LocalizableError from '../../kernel/i18n/LocalizableError'
// this type is used by @ledgerhq/react-native-hid and it's not exposed
// so we redefine it here
diff --git a/apps/wallet-mobile/src/yoroi-wallets/logging.ts b/apps/wallet-mobile/src/yoroi-wallets/logging.ts
deleted file mode 100644
index 1f294b9b90..0000000000
--- a/apps/wallet-mobile/src/yoroi-wallets/logging.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-export const LogLevel = {
- Debug: 0,
- Info: 1,
- Warn: 2,
- Error: 3,
- Nothing: 4,
-}
-
-let _logLevel = LogLevel.Debug
-
-/* eslint-disable no-console */
-const consoleLogger = {
- debug: console.log, // console.debug is hidden by default in chrome
- info: console.info,
- warn: console.warn,
- error: console.error,
-}
-/* eslint-enable no-console */
-
-let _logger = consoleLogger
-
-export const setLogger = (logger: any) => {
- _logger = logger
-}
-
-export const setLogLevel = (level: (typeof LogLevel)[keyof typeof LogLevel]) => {
- _logLevel = level
-}
-
-export const Logger = {
- debug: (message: string, ...args: any) => LogLevel.Debug >= _logLevel && _logger.debug(message, ...args),
- info: (message: string, ...args: any) => LogLevel.Info >= _logLevel && _logger.info(message, ...args),
- warn: (message: string, ...args: any) => LogLevel.Warn >= _logLevel && _logger.warn(message, ...args),
- error: (message: string, ...args: any) => LogLevel.Error >= _logLevel && _logger.error(message, ...args),
- setLogLevel,
- setLogger,
-}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/memos/memosManager.test.ts b/apps/wallet-mobile/src/yoroi-wallets/memos/memosManager.test.ts
index 693739b3f6..1c95fd78a1 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/memos/memosManager.test.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/memos/memosManager.test.ts
@@ -1,6 +1,6 @@
import AsyncStorage from '@react-native-async-storage/async-storage'
-import {rootStorage} from '../storage/rootStorage'
+import {rootStorage} from '../../kernel/storage/rootStorage'
import {makeMemosManager} from './memosManager'
describe('memos manager', () => {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/mocks/storage.ts b/apps/wallet-mobile/src/yoroi-wallets/mocks/storage.ts
index 8a5172c95d..975127b894 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/mocks/storage.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/mocks/storage.ts
@@ -1,4 +1,4 @@
-import {WalletEncryptedStorage} from '../storage'
+import {WalletEncryptedStorage} from '../../kernel/storage/EncryptedStorage'
export const mockEncryptedStorage: WalletEncryptedStorage = {
rootKey: {
diff --git a/apps/wallet-mobile/src/yoroi-wallets/mocks/wallet.ts b/apps/wallet-mobile/src/yoroi-wallets/mocks/wallet.ts
index 40ab0ba794..a0d2e4ff7f 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/mocks/wallet.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/mocks/wallet.ts
@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/no-explicit-any */
+
import {action} from '@storybook/addon-actions'
import {AppApi, CardanoApi} from '@yoroi/api'
import {createPrimaryTokenInfo} from '@yoroi/portfolio'
@@ -123,6 +124,7 @@ const wallet: YoroiWallet = {
ledgerSupportsCIP36: async () => {
return true
},
+
getCollateralInfo: () => {
return {
utxo: {
@@ -299,6 +301,9 @@ const wallet: YoroiWallet = {
createUnsignedGovernanceTx: () => {
throw new Error('not implemented: createUnsignedGovernanceTx')
},
+ getChangeAddress(): string {
+ return 'addr1qxy9yjhvxh700xeluhvdpwlauuvnzav42edveyggy8fusqvg2f9wcd0u77dnlewc6zalmecex96e24j6ejgssgwneqqs762af9'
+ },
}
const hwWallet: YoroiWallet = {
@@ -573,7 +578,6 @@ const signTxWithLedger = {
const submitTransaction = {
success: async (...args: unknown[]) => {
action('submitTransaction')(...args)
- return [] as unknown as []
},
error: async (...args: unknown[]) => {
action('submitTransaction')(...args)
@@ -581,7 +585,7 @@ const submitTransaction = {
},
loading: async (...args: unknown[]) => {
action('submitTransaction')(...args)
- return new Promise(() => null) as unknown as []
+ return new Promise(() => null)
},
}
diff --git a/apps/wallet-mobile/src/yoroi-wallets/storage/index.ts b/apps/wallet-mobile/src/yoroi-wallets/storage/index.ts
deleted file mode 100644
index 525979e5a4..0000000000
--- a/apps/wallet-mobile/src/yoroi-wallets/storage/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './EncryptedStorage'
-export * from './Keychain'
-export * from './KeychainStorage'
diff --git a/apps/wallet-mobile/src/yoroi-wallets/utils/utils.ts b/apps/wallet-mobile/src/yoroi-wallets/utils/utils.ts
index 16c623c359..c9c92729a2 100644
--- a/apps/wallet-mobile/src/yoroi-wallets/utils/utils.ts
+++ b/apps/wallet-mobile/src/yoroi-wallets/utils/utils.ts
@@ -1,7 +1,7 @@
import {Balance} from '@yoroi/types'
import BigNumber from 'bignumber.js'
-import {NumberLocale} from '../../i18n/languages'
+import {NumberLocale} from '../../kernel/i18n/languages'
import {NetworkId, RawUtxo, TokenId, YoroiEntry} from '../types'
export const Entries = {
diff --git a/apps/wallet-mobile/translations/messages/src/AppNavigator.json b/apps/wallet-mobile/translations/messages/src/AppNavigator.json
index 635b542761..eec183a04e 100644
--- a/apps/wallet-mobile/translations/messages/src/AppNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/AppNavigator.json
@@ -6,12 +6,12 @@
"start": {
"line": 219,
"column": 17,
- "index": 7880
+ "index": 7951
},
"end": {
"line": 222,
"column": 3,
- "index": 7970
+ "index": 8041
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 223,
"column": 18,
- "index": 7990
+ "index": 8061
},
"end": {
"line": 226,
"column": 3,
- "index": 8088
+ "index": 8159
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 227,
"column": 25,
- "index": 8115
+ "index": 8186
},
"end": {
"line": 230,
"column": 3,
- "index": 8229
+ "index": 8300
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 231,
"column": 27,
- "index": 8258
+ "index": 8329
},
"end": {
"line": 234,
"column": 3,
- "index": 8379
+ "index": 8450
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmPin.json b/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmPin.json
index d33fc497b7..2e7b3c3962 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmPin.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmPin.json
@@ -6,12 +6,12 @@
"start": {
"line": 77,
"column": 12,
- "index": 2199
+ "index": 2213
},
"end": {
"line": 80,
"column": 3,
- "index": 2286
+ "index": 2300
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 81,
"column": 15,
- "index": 2303
+ "index": 2317
},
"end": {
"line": 84,
"column": 3,
- "index": 2478
+ "index": 2492
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmVotingTx.json b/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmVotingTx.json
index 7a239419be..8f8810b4ab 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmVotingTx.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/ConfirmVotingTx.json
@@ -6,12 +6,12 @@
"start": {
"line": 108,
"column": 12,
- "index": 3524
+ "index": 3538
},
"end": {
"line": 111,
"column": 3,
- "index": 3622
+ "index": 3636
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 112,
"column": 15,
- "index": 3639
+ "index": 3653
},
"end": {
"line": 118,
"column": 3,
- "index": 3884
+ "index": 3898
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 119,
"column": 22,
- "index": 3908
+ "index": 3922
},
"end": {
"line": 122,
"column": 3,
- "index": 4079
+ "index": 4093
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/DisplayPin.json b/apps/wallet-mobile/translations/messages/src/Catalyst/DisplayPin.json
index 19bf0ff641..8fa490ef6b 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/DisplayPin.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/DisplayPin.json
@@ -6,12 +6,12 @@
"start": {
"line": 65,
"column": 12,
- "index": 1661
+ "index": 1668
},
"end": {
"line": 68,
"column": 3,
- "index": 1753
+ "index": 1760
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 69,
"column": 15,
- "index": 1770
+ "index": 1777
},
"end": {
"line": 73,
"column": 3,
- "index": 1957
+ "index": 1964
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/DownloadCatalyst.json b/apps/wallet-mobile/translations/messages/src/Catalyst/DownloadCatalyst.json
index cf191fb0ea..fd2de8a252 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/DownloadCatalyst.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/DownloadCatalyst.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Before you begin, make sure to download the Catalyst Voting App.",
"file": "src/Catalyst/DownloadCatalyst.tsx",
"start": {
- "line": 131,
+ "line": 122,
"column": 12,
- "index": 3568
+ "index": 3404
},
"end": {
- "line": 134,
+ "line": 125,
"column": 3,
- "index": 3710
+ "index": 3546
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Catalyst voting rewards are sent to delegation accounts and your wallet does not seem to have a registered delegation certificate. If you want to receive voting rewards, you need to delegate your funds first.",
"file": "src/Catalyst/DownloadCatalyst.tsx",
"start": {
- "line": 135,
+ "line": 126,
"column": 27,
- "index": 3739
+ "index": 3575
},
"end": {
- "line": 141,
+ "line": 132,
"column": 3,
- "index": 4068
+ "index": 3904
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Tip: Make sure you know how to take a screenshot with your device, so that you can backup your catalyst QR code.",
"file": "src/Catalyst/DownloadCatalyst.tsx",
"start": {
- "line": 142,
+ "line": 133,
"column": 7,
- "index": 4077
+ "index": 3913
},
"end": {
- "line": 147,
+ "line": 138,
"column": 3,
- "index": 4279
+ "index": 4115
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/QrCode.json b/apps/wallet-mobile/translations/messages/src/Catalyst/QrCode.json
index d688d57519..6166628b70 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/QrCode.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/QrCode.json
@@ -6,12 +6,12 @@
"start": {
"line": 102,
"column": 12,
- "index": 3092
+ "index": 3106
},
"end": {
"line": 105,
"column": 3,
- "index": 3190
+ "index": 3204
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 106,
"column": 15,
- "index": 3207
+ "index": 3221
},
"end": {
"line": 109,
"column": 3,
- "index": 3329
+ "index": 3343
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 110,
"column": 16,
- "index": 3347
+ "index": 3361
},
"end": {
"line": 115,
"column": 3,
- "index": 3577
+ "index": 3591
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 116,
"column": 16,
- "index": 3595
+ "index": 3609
},
"end": {
"line": 121,
"column": 3,
- "index": 3813
+ "index": 3827
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 122,
"column": 8,
- "index": 3823
+ "index": 3837
},
"end": {
"line": 125,
"column": 3,
- "index": 3971
+ "index": 3985
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 126,
"column": 14,
- "index": 3987
+ "index": 4001
},
"end": {
"line": 129,
"column": 3,
- "index": 4078
+ "index": 4092
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/VotingBanner.json b/apps/wallet-mobile/translations/messages/src/Catalyst/VotingBanner.json
index 14fd99f7bf..04651d14f7 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/VotingBanner.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/VotingBanner.json
@@ -6,12 +6,12 @@
"start": {
"line": 77,
"column": 8,
- "index": 2592
+ "index": 2569
},
"end": {
"line": 80,
"column": 3,
- "index": 2695
+ "index": 2672
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Catalyst/VotingRegistrationBackupCheckModal.json b/apps/wallet-mobile/translations/messages/src/Catalyst/VotingRegistrationBackupCheckModal.json
index 828fc8ca01..92374c1fa2 100644
--- a/apps/wallet-mobile/translations/messages/src/Catalyst/VotingRegistrationBackupCheckModal.json
+++ b/apps/wallet-mobile/translations/messages/src/Catalyst/VotingRegistrationBackupCheckModal.json
@@ -6,12 +6,12 @@
"start": {
"line": 59,
"column": 15,
- "index": 1783
+ "index": 1790
},
"end": {
"line": 62,
"column": 3,
- "index": 1954
+ "index": 1961
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 63,
"column": 18,
- "index": 1974
+ "index": 1981
},
"end": {
"line": 66,
"column": 3,
- "index": 2165
+ "index": 2172
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 67,
"column": 24,
- "index": 2191
+ "index": 2198
},
"end": {
"line": 73,
"column": 3,
- "index": 2471
+ "index": 2478
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/Dashboard.json b/apps/wallet-mobile/translations/messages/src/Dashboard/Dashboard.json
index 8d11a13fff..880a92ebea 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/Dashboard.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/Dashboard.json
@@ -6,12 +6,12 @@
"start": {
"line": 240,
"column": 23,
- "index": 7948
+ "index": 7942
},
"end": {
"line": 243,
"column": 3,
- "index": 8081
+ "index": 8075
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/DashboardNavigator.json b/apps/wallet-mobile/translations/messages/src/Dashboard/DashboardNavigator.json
index bcb06d383e..8acb05aa06 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/DashboardNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/DashboardNavigator.json
@@ -6,12 +6,12 @@
"start": {
"line": 65,
"column": 9,
- "index": 2100
+ "index": 2107
},
"end": {
"line": 68,
"column": 3,
- "index": 2188
+ "index": 2195
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/EpochProgress.json b/apps/wallet-mobile/translations/messages/src/Dashboard/EpochProgress.json
index a9b4f390bd..904351564c 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/EpochProgress.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/EpochProgress.json
@@ -6,12 +6,12 @@
"start": {
"line": 60,
"column": 22,
- "index": 1665
+ "index": 1672
},
"end": {
"line": 63,
"column": 3,
- "index": 1771
+ "index": 1778
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 64,
"column": 15,
- "index": 1788
+ "index": 1795
},
"end": {
"line": 67,
"column": 3,
- "index": 1888
+ "index": 1895
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/UserSummary.json b/apps/wallet-mobile/translations/messages/src/Dashboard/UserSummary.json
index 26ea272ef1..fa97545864 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/UserSummary.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/UserSummary.json
@@ -6,12 +6,12 @@
"start": {
"line": 164,
"column": 9,
- "index": 4834
+ "index": 4841
},
"end": {
"line": 167,
"column": 3,
- "index": 4936
+ "index": 4943
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 168,
"column": 16,
- "index": 4954
+ "index": 4961
},
"end": {
"line": 171,
"column": 3,
- "index": 5064
+ "index": 5071
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 172,
"column": 18,
- "index": 5084
+ "index": 5091
},
"end": {
"line": 175,
"column": 3,
- "index": 5198
+ "index": 5205
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 176,
"column": 23,
- "index": 5223
+ "index": 5230
},
"end": {
"line": 179,
"column": 3,
- "index": 5335
+ "index": 5342
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.json b/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.json
index 1574e38256..ca0cf8e390 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/TransferSummary/TransferSummary.json
@@ -6,12 +6,12 @@
"start": {
"line": 175,
"column": 13,
- "index": 5503
+ "index": 5510
},
"end": {
"line": 178,
"column": 3,
- "index": 5616
+ "index": 5623
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 179,
"column": 16,
- "index": 5634
+ "index": 5641
},
"end": {
"line": 182,
"column": 3,
- "index": 5763
+ "index": 5770
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 183,
"column": 21,
- "index": 5786
+ "index": 5793
},
"end": {
"line": 186,
"column": 3,
- "index": 5916
+ "index": 5923
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 187,
"column": 25,
- "index": 5943
+ "index": 5950
},
"end": {
"line": 192,
"column": 3,
- "index": 6178
+ "index": 6185
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.json b/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.json
index cf51a7ca0f..c81e73a241 100644
--- a/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.json
+++ b/apps/wallet-mobile/translations/messages/src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Also deregister staking key?",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 125,
+ "line": 130,
"column": 21,
- "index": 4213
+ "index": 4349
},
"end": {
- "line": 128,
+ "line": 133,
"column": 3,
- "index": 4341
+ "index": 4477
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!When **withdrawing rewards**, you also have the option to deregister the staking key.",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 129,
+ "line": 134,
"column": 16,
- "index": 4359
+ "index": 4495
},
"end": {
- "line": 132,
+ "line": 137,
"column": 3,
- "index": 4539
+ "index": 4675
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!**Keeping the staking key** will allow you to withdraw the rewards, but continue delegating to the same pool.",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 133,
+ "line": 138,
"column": 16,
- "index": 4557
+ "index": 4693
},
"end": {
- "line": 138,
+ "line": 143,
"column": 3,
- "index": 4778
+ "index": 4914
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!**Deregistering the staking key** will give you back your deposit and undelegate the key from any pool.",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 139,
+ "line": 144,
"column": 16,
- "index": 4796
+ "index": 4932
},
"end": {
- "line": 143,
+ "line": 148,
"column": 3,
- "index": 5000
+ "index": 5136
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!You do NOT need to deregister to delegate to a different stake pool. You can change your delegation preference at any time.",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 144,
+ "line": 149,
"column": 12,
- "index": 5014
+ "index": 5150
},
"end": {
- "line": 149,
+ "line": 154,
"column": 3,
- "index": 5245
+ "index": 5381
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!You should NOT deregister if this staking key is used as a stake pool's reward account, as this will cause all pool operator rewards to be sent back to the reserve.",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 150,
+ "line": 155,
"column": 12,
- "index": 5259
+ "index": 5395
},
"end": {
- "line": 156,
+ "line": 161,
"column": 3,
- "index": 5542
+ "index": 5678
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Deregistering means this key will no longer receive rewards until you re-register the staking key (usually by delegating to a pool again)",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 157,
+ "line": 162,
"column": 12,
- "index": 5556
+ "index": 5692
},
"end": {
- "line": 162,
+ "line": 167,
"column": 3,
- "index": 5801
+ "index": 5937
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Keep registered",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 163,
+ "line": 168,
"column": 14,
- "index": 5817
+ "index": 5953
},
"end": {
- "line": 166,
+ "line": 171,
"column": 3,
- "index": 5925
+ "index": 6061
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Deregister",
"file": "src/Dashboard/WithdrawStakingRewards/WithdrawStakingRewards.tsx",
"start": {
- "line": 167,
+ "line": 172,
"column": 20,
- "index": 5947
+ "index": 6083
},
"end": {
- "line": 170,
+ "line": 175,
"column": 3,
- "index": 6056
+ "index": 6192
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/HW/Instructions/Instructions.json b/apps/wallet-mobile/translations/messages/src/HW/Instructions/Instructions.json
index efd898720e..e35a1324d0 100644
--- a/apps/wallet-mobile/translations/messages/src/HW/Instructions/Instructions.json
+++ b/apps/wallet-mobile/translations/messages/src/HW/Instructions/Instructions.json
@@ -6,12 +6,12 @@
"start": {
"line": 52,
"column": 17,
- "index": 1561
+ "index": 1568
},
"end": {
"line": 55,
"column": 3,
- "index": 1708
+ "index": 1715
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/HW/LedgerConnect/LedgerConnect.json b/apps/wallet-mobile/translations/messages/src/HW/LedgerConnect/LedgerConnect.json
index e90899215d..41de5b14bd 100644
--- a/apps/wallet-mobile/translations/messages/src/HW/LedgerConnect/LedgerConnect.json
+++ b/apps/wallet-mobile/translations/messages/src/HW/LedgerConnect/LedgerConnect.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Scanning bluetooth devices...",
"file": "src/HW/LedgerConnect/LedgerConnect.tsx",
"start": {
- "line": 315,
+ "line": 317,
"column": 11,
- "index": 9898
+ "index": 10086
},
"end": {
- "line": 318,
+ "line": 320,
"column": 3,
- "index": 10032
+ "index": 10220
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!You'll need to:",
"file": "src/HW/LedgerConnect/LedgerConnect.tsx",
"start": {
- "line": 319,
+ "line": 321,
"column": 13,
- "index": 10047
+ "index": 10235
},
"end": {
- "line": 322,
+ "line": 324,
"column": 3,
- "index": 10169
+ "index": 10357
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!USB device is ready, please tap on Confirm to continue.",
"file": "src/HW/LedgerConnect/LedgerConnect.tsx",
"start": {
- "line": 323,
+ "line": 325,
"column": 18,
- "index": 10189
+ "index": 10377
},
"end": {
- "line": 326,
+ "line": 328,
"column": 3,
- "index": 10334
+ "index": 10522
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!An error occurred while trying to connect with your hardware wallet:",
"file": "src/HW/LedgerConnect/LedgerConnect.tsx",
"start": {
- "line": 327,
+ "line": 329,
"column": 9,
- "index": 10345
+ "index": 10533
},
"end": {
- "line": 330,
+ "line": 332,
"column": 3,
- "index": 10516
+ "index": 10704
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.json b/apps/wallet-mobile/translations/messages/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.json
index 9483b3905a..477b479581 100644
--- a/apps/wallet-mobile/translations/messages/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.json
+++ b/apps/wallet-mobile/translations/messages/src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Choose Connection Method",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 100,
+ "line": 99,
"column": 9,
- "index": 2863
+ "index": 2834
},
"end": {
- "line": 103,
+ "line": 102,
"column": 3,
- "index": 2981
+ "index": 2952
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Choose this option if you want to connect to a Ledger Nano model X or S using an on-the-go USB cable adaptor:",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 104,
+ "line": 103,
"column": 18,
- "index": 3001
+ "index": 2972
},
"end": {
- "line": 109,
+ "line": 108,
"column": 3,
- "index": 3230
+ "index": 3201
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Connect with USB",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 110,
+ "line": 109,
"column": 13,
- "index": 3245
+ "index": 3216
},
"end": {
- "line": 113,
+ "line": 112,
"column": 3,
- "index": 3359
+ "index": 3330
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Connect with USB\n(Not supported)",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 114,
+ "line": 113,
"column": 25,
- "index": 3386
+ "index": 3357
},
"end": {
- "line": 117,
+ "line": 116,
"column": 3,
- "index": 3529
+ "index": 3500
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Connect with USB\n(Blocked by Apple for iOS)",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 118,
+ "line": 117,
"column": 21,
- "index": 3552
+ "index": 3523
},
"end": {
- "line": 121,
+ "line": 120,
"column": 3,
- "index": 3702
+ "index": 3673
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Choose this option if you want to connect to a Ledger Nano model X through Bluetooth:",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 122,
+ "line": 121,
"column": 24,
- "index": 3728
+ "index": 3699
},
"end": {
- "line": 125,
+ "line": 124,
"column": 3,
- "index": 3922
+ "index": 3893
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Connect with Bluetooth",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 126,
+ "line": 125,
"column": 19,
- "index": 3943
+ "index": 3914
},
"end": {
- "line": 129,
+ "line": 128,
"column": 3,
- "index": 4069
+ "index": 4040
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Connect with Bluetooth",
"file": "src/HW/LedgerTransportSwitchModal/LedgerTransportSwitchModal.tsx",
"start": {
- "line": 130,
+ "line": 129,
"column": 18,
- "index": 4089
+ "index": 4060
},
"end": {
- "line": 133,
+ "line": 132,
"column": 3,
- "index": 4199
+ "index": 4170
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Nfts/Nfts.json b/apps/wallet-mobile/translations/messages/src/Nfts/Nfts.json
index 12c0786bc2..496b6290dc 100644
--- a/apps/wallet-mobile/translations/messages/src/Nfts/Nfts.json
+++ b/apps/wallet-mobile/translations/messages/src/Nfts/Nfts.json
@@ -6,12 +6,12 @@
"start": {
"line": 163,
"column": 12,
- "index": 4308
+ "index": 4315
},
"end": {
"line": 166,
"column": 3,
- "index": 4381
+ "index": 4388
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 167,
"column": 14,
- "index": 4397
+ "index": 4404
},
"end": {
"line": 170,
"column": 3,
- "index": 4468
+ "index": 4475
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 171,
"column": 20,
- "index": 4490
+ "index": 4497
},
"end": {
"line": 174,
"column": 3,
- "index": 4583
+ "index": 4590
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 175,
"column": 13,
- "index": 4598
+ "index": 4605
},
"end": {
"line": 178,
"column": 3,
- "index": 4686
+ "index": 4693
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 179,
"column": 15,
- "index": 4703
+ "index": 4710
},
"end": {
"line": 182,
"column": 3,
- "index": 4783
+ "index": 4790
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 183,
"column": 18,
- "index": 4803
+ "index": 4810
},
"end": {
"line": 186,
"column": 3,
- "index": 4905
+ "index": 4912
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 187,
"column": 9,
- "index": 4916
+ "index": 4923
},
"end": {
"line": 190,
"column": 3,
- "index": 4991
+ "index": 4998
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 191,
"column": 10,
- "index": 5003
+ "index": 5010
},
"end": {
"line": 194,
"column": 3,
- "index": 5078
+ "index": 5085
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Nfts/NftsNavigator.json b/apps/wallet-mobile/translations/messages/src/Nfts/NftsNavigator.json
index 6162c0d965..e1921047b2 100644
--- a/apps/wallet-mobile/translations/messages/src/Nfts/NftsNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/Nfts/NftsNavigator.json
@@ -6,12 +6,12 @@
"start": {
"line": 47,
"column": 9,
- "index": 1376
+ "index": 1389
},
"end": {
"line": 50,
"column": 3,
- "index": 1447
+ "index": 1460
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Staking/DelegationConfirmation/DelegationConfirmation.json b/apps/wallet-mobile/translations/messages/src/Staking/DelegationConfirmation/DelegationConfirmation.json
index c204065e01..96bf0f97b4 100644
--- a/apps/wallet-mobile/translations/messages/src/Staking/DelegationConfirmation/DelegationConfirmation.json
+++ b/apps/wallet-mobile/translations/messages/src/Staking/DelegationConfirmation/DelegationConfirmation.json
@@ -6,12 +6,12 @@
"start": {
"line": 150,
"column": 23,
- "index": 5461
+ "index": 5475
},
"end": {
"line": 153,
"column": 3,
- "index": 5575
+ "index": 5589
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 154,
"column": 10,
- "index": 5587
+ "index": 5601
},
"end": {
"line": 157,
"column": 3,
- "index": 5687
+ "index": 5701
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 158,
"column": 22,
- "index": 5711
+ "index": 5725
},
"end": {
"line": 161,
"column": 3,
- "index": 5881
+ "index": 5895
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 162,
"column": 15,
- "index": 5898
+ "index": 5912
},
"end": {
"line": 165,
"column": 3,
- "index": 6017
+ "index": 6031
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Staking/PoolWarningModal/PoolWarningModal.json b/apps/wallet-mobile/translations/messages/src/Staking/PoolWarningModal/PoolWarningModal.json
index f89586aa73..acfc7aa89d 100644
--- a/apps/wallet-mobile/translations/messages/src/Staking/PoolWarningModal/PoolWarningModal.json
+++ b/apps/wallet-mobile/translations/messages/src/Staking/PoolWarningModal/PoolWarningModal.json
@@ -6,12 +6,12 @@
"start": {
"line": 126,
"column": 9,
- "index": 3288
+ "index": 3295
},
"end": {
"line": 129,
"column": 3,
- "index": 3388
+ "index": 3395
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 130,
"column": 10,
- "index": 3400
+ "index": 3407
},
"end": {
"line": 133,
"column": 3,
- "index": 3538
+ "index": 3545
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 134,
"column": 14,
- "index": 3554
+ "index": 3561
},
"end": {
"line": 137,
"column": 3,
- "index": 3716
+ "index": 3723
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 138,
"column": 16,
- "index": 3734
+ "index": 3741
},
"end": {
"line": 141,
"column": 3,
- "index": 3899
+ "index": 3906
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 142,
"column": 13,
- "index": 3914
+ "index": 3921
},
"end": {
"line": 148,
"column": 3,
- "index": 4226
+ "index": 4233
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 149,
"column": 11,
- "index": 4239
+ "index": 4246
},
"end": {
"line": 152,
"column": 3,
- "index": 4385
+ "index": 4392
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/Staking/StakingCenter/StakingCenter.json b/apps/wallet-mobile/translations/messages/src/Staking/StakingCenter/StakingCenter.json
index 960e342375..47a8f12fb7 100644
--- a/apps/wallet-mobile/translations/messages/src/Staking/StakingCenter/StakingCenter.json
+++ b/apps/wallet-mobile/translations/messages/src/Staking/StakingCenter/StakingCenter.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Invalid Pool Data",
"file": "src/Staking/StakingCenter/StakingCenter.tsx",
"start": {
- "line": 99,
+ "line": 97,
"column": 9,
- "index": 3361
+ "index": 3323
},
"end": {
- "line": 102,
+ "line": 100,
"column": 3,
- "index": 3469
+ "index": 3431
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!The data from the stake pool(s) you selected is invalid. Please try again",
"file": "src/Staking/StakingCenter/StakingCenter.tsx",
"start": {
- "line": 103,
+ "line": 101,
"column": 11,
- "index": 3482
+ "index": 3444
},
"end": {
- "line": 106,
+ "line": 104,
"column": 3,
- "index": 3648
+ "index": 3610
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/AssetList.json b/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/AssetList.json
index eebe73f1bc..730841a34c 100644
--- a/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/AssetList.json
+++ b/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/AssetList.json
@@ -6,12 +6,12 @@
"start": {
"line": 96,
"column": 20,
- "index": 3411
+ "index": 3418
},
"end": {
"line": 99,
"column": 3,
- "index": 3504
+ "index": 3511
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/TxDetails.json b/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/TxDetails.json
index 26d462ef7b..fbb226a473 100644
--- a/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/TxDetails.json
+++ b/apps/wallet-mobile/translations/messages/src/TxHistory/TxDetails/TxDetails.json
@@ -6,12 +6,12 @@
"start": {
"line": 350,
"column": 8,
- "index": 12232
+ "index": 12239
},
"end": {
"line": 353,
"column": 3,
- "index": 12327
+ "index": 12334
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 354,
"column": 12,
- "index": 12341
+ "index": 12348
},
"end": {
"line": 357,
"column": 3,
- "index": 12444
+ "index": 12451
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 358,
"column": 8,
- "index": 12454
+ "index": 12461
},
"end": {
"line": 361,
"column": 3,
- "index": 12562
+ "index": 12569
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 362,
"column": 9,
- "index": 12573
+ "index": 12580
},
"end": {
"line": 365,
"column": 3,
- "index": 12682
+ "index": 12689
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 369,
"column": 24,
- "index": 12746
+ "index": 12753
},
"end": {
"line": 372,
"column": 3,
- "index": 12847
+ "index": 12854
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 373,
"column": 23,
- "index": 12872
+ "index": 12879
},
"end": {
"line": 376,
"column": 3,
- "index": 12973
+ "index": 12980
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 377,
"column": 24,
- "index": 12999
+ "index": 13006
},
"end": {
"line": 380,
"column": 3,
- "index": 13102
+ "index": 13109
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 381,
"column": 7,
- "index": 13111
+ "index": 13118
},
"end": {
"line": 384,
"column": 3,
- "index": 13194
+ "index": 13201
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 385,
"column": 17,
- "index": 13213
+ "index": 13220
},
"end": {
"line": 388,
"column": 3,
- "index": 13315
+ "index": 13322
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 389,
"column": 15,
- "index": 13332
+ "index": 13339
},
"end": {
"line": 392,
"column": 3,
- "index": 13430
+ "index": 13437
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 393,
"column": 8,
- "index": 13440
+ "index": 13447
},
"end": {
"line": 396,
"column": 3,
- "index": 13523
+ "index": 13530
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 397,
"column": 17,
- "index": 13542
+ "index": 13549
},
"end": {
"line": 400,
"column": 3,
- "index": 13644
+ "index": 13651
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 401,
"column": 20,
- "index": 13666
+ "index": 13673
},
"end": {
"line": 404,
"column": 3,
- "index": 13784
+ "index": 13791
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 405,
"column": 17,
- "index": 13803
+ "index": 13810
},
"end": {
"line": 408,
"column": 3,
- "index": 13952
+ "index": 13959
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 409,
"column": 16,
- "index": 13970
+ "index": 13977
},
"end": {
"line": 412,
"column": 3,
- "index": 14119
+ "index": 14126
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 413,
"column": 18,
- "index": 14139
+ "index": 14146
},
"end": {
"line": 416,
"column": 3,
- "index": 14220
+ "index": 14227
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistory.json b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistory.json
index 926946ce47..f5fb1ced2c 100644
--- a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistory.json
+++ b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistory.json
@@ -6,12 +6,12 @@
"start": {
"line": 129,
"column": 9,
- "index": 4236
+ "index": 4243
},
"end": {
"line": 132,
"column": 3,
- "index": 4335
+ "index": 4342
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 133,
"column": 11,
- "index": 4348
+ "index": 4355
},
"end": {
"line": 136,
"column": 3,
- "index": 4530
+ "index": 4537
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryList/TxHistoryListItem.json b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryList/TxHistoryListItem.json
index d606e95951..e831b26b87 100644
--- a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryList/TxHistoryListItem.json
+++ b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryList/TxHistoryListItem.json
@@ -6,12 +6,12 @@
"start": {
"line": 179,
"column": 7,
- "index": 6330
+ "index": 6337
},
"end": {
"line": 182,
"column": 3,
- "index": 6419
+ "index": 6426
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 183,
"column": 23,
- "index": 6444
+ "index": 6451
},
"end": {
"line": 186,
"column": 3,
- "index": 6554
+ "index": 6561
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 187,
"column": 27,
- "index": 6583
+ "index": 6590
},
"end": {
"line": 190,
"column": 3,
- "index": 6701
+ "index": 6708
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 191,
"column": 23,
- "index": 6726
+ "index": 6733
},
"end": {
"line": 194,
"column": 3,
- "index": 6839
+ "index": 6846
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 195,
"column": 24,
- "index": 6865
+ "index": 6872
},
"end": {
"line": 198,
"column": 3,
- "index": 6978
+ "index": 6985
}
},
{
@@ -82,12 +82,12 @@
"start": {
"line": 199,
"column": 10,
- "index": 6990
+ "index": 6997
},
"end": {
"line": 203,
"column": 3,
- "index": 7142
+ "index": 7149
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryNavigator.json b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryNavigator.json
index 705868a383..4e32491ba8 100644
--- a/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/TxHistory/TxHistoryNavigator.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Receive",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 434,
+ "line": 433,
"column": 16,
- "index": 16935
+ "index": 16921
},
"end": {
- "line": 437,
+ "line": 436,
"column": 3,
- "index": 17024
+ "index": 17010
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Address details",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 438,
+ "line": 437,
"column": 32,
- "index": 17058
+ "index": 17044
},
"end": {
- "line": 441,
+ "line": 440,
"column": 3,
- "index": 17171
+ "index": 17157
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Swap",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 442,
+ "line": 441,
"column": 13,
- "index": 17186
+ "index": 17172
},
"end": {
- "line": 445,
+ "line": 444,
"column": 3,
- "index": 17259
+ "index": 17245
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Swap from",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 446,
+ "line": 445,
"column": 17,
- "index": 17278
+ "index": 17264
},
"end": {
- "line": 449,
+ "line": 448,
"column": 3,
- "index": 17355
+ "index": 17341
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Swap to",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 450,
+ "line": 449,
"column": 15,
- "index": 17372
+ "index": 17358
},
"end": {
- "line": 453,
+ "line": 452,
"column": 3,
- "index": 17445
+ "index": 17431
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Slippage Tolerance",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 454,
+ "line": 453,
"column": 21,
- "index": 17468
+ "index": 17454
},
"end": {
- "line": 457,
+ "line": 456,
"column": 3,
- "index": 17563
+ "index": 17549
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Select pool",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 458,
+ "line": 457,
"column": 14,
- "index": 17579
+ "index": 17565
},
"end": {
- "line": 461,
+ "line": 460,
"column": 3,
- "index": 17660
+ "index": 17646
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Send",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 462,
+ "line": 461,
"column": 13,
- "index": 17675
+ "index": 17661
},
"end": {
- "line": 465,
+ "line": 464,
"column": 3,
- "index": 17755
+ "index": 17741
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Scan QR code address",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 466,
+ "line": 465,
"column": 18,
- "index": 17775
+ "index": 17761
},
"end": {
- "line": 469,
+ "line": 468,
"column": 3,
- "index": 17876
+ "index": 17862
}
},
{
@@ -139,14 +139,14 @@
"defaultMessage": "!!!Select asset",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 470,
+ "line": 469,
"column": 20,
- "index": 17898
+ "index": 17884
},
"end": {
- "line": 473,
+ "line": 472,
"column": 3,
- "index": 17987
+ "index": 17973
}
},
{
@@ -154,14 +154,14 @@
"defaultMessage": "!!!Selected tokens",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 474,
+ "line": 473,
"column": 26,
- "index": 18015
+ "index": 18001
},
"end": {
- "line": 477,
+ "line": 476,
"column": 3,
- "index": 18119
+ "index": 18105
}
},
{
@@ -169,14 +169,14 @@
"defaultMessage": "!!!Edit amount",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 478,
+ "line": 477,
"column": 19,
- "index": 18140
+ "index": 18126
},
"end": {
- "line": 481,
+ "line": 480,
"column": 3,
- "index": 18233
+ "index": 18219
}
},
{
@@ -184,14 +184,14 @@
"defaultMessage": "!!!Confirm",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 482,
+ "line": 481,
"column": 16,
- "index": 18251
+ "index": 18237
},
"end": {
- "line": 485,
+ "line": 484,
"column": 3,
- "index": 18337
+ "index": 18323
}
},
{
@@ -199,14 +199,14 @@
"defaultMessage": "!!!Share this address to receive payments. To protect your privacy, new addresses are generated automatically once you use them.",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 486,
+ "line": 485,
"column": 19,
- "index": 18358
+ "index": 18344
},
"end": {
- "line": 492,
+ "line": 491,
"column": 3,
- "index": 18596
+ "index": 18582
}
},
{
@@ -214,14 +214,14 @@
"defaultMessage": "!!!Confirm transaction",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 493,
+ "line": 492,
"column": 27,
- "index": 18625
+ "index": 18611
},
"end": {
- "line": 496,
+ "line": 495,
"column": 3,
- "index": 18718
+ "index": 18704
}
},
{
@@ -229,14 +229,14 @@
"defaultMessage": "!!!Please scan a QR code",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 497,
+ "line": 496,
"column": 13,
- "index": 18733
+ "index": 18719
},
"end": {
- "line": 500,
+ "line": 499,
"column": 3,
- "index": 18808
+ "index": 18794
}
},
{
@@ -244,14 +244,14 @@
"defaultMessage": "!!!Success",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 501,
+ "line": 500,
"column": 25,
- "index": 18835
+ "index": 18821
},
"end": {
- "line": 504,
+ "line": 503,
"column": 3,
- "index": 18909
+ "index": 18895
}
},
{
@@ -259,14 +259,14 @@
"defaultMessage": "!!!Request specific amount",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 505,
+ "line": 504,
"column": 18,
- "index": 18929
+ "index": 18915
},
"end": {
- "line": 508,
+ "line": 507,
"column": 3,
- "index": 19043
+ "index": 19029
}
},
{
@@ -274,14 +274,14 @@
"defaultMessage": "!!!Buy/Sell ADA",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 509,
+ "line": 508,
"column": 28,
- "index": 19073
+ "index": 19059
},
"end": {
- "line": 512,
+ "line": 511,
"column": 3,
- "index": 19169
+ "index": 19155
}
},
{
@@ -289,14 +289,14 @@
"defaultMessage": "!!!Buy provider",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 513,
+ "line": 512,
"column": 29,
- "index": 19200
+ "index": 19186
},
"end": {
- "line": 516,
+ "line": 515,
"column": 3,
- "index": 19308
+ "index": 19294
}
},
{
@@ -304,14 +304,14 @@
"defaultMessage": "!!!Sell provider",
"file": "src/TxHistory/TxHistoryNavigator.tsx",
"start": {
- "line": 517,
+ "line": 516,
"column": 30,
- "index": 19340
+ "index": 19326
},
"end": {
- "line": 520,
+ "line": 519,
"column": 3,
- "index": 19450
+ "index": 19436
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/WalletNavigator.json b/apps/wallet-mobile/translations/messages/src/WalletNavigator.json
index 7468f10352..bfa8a224ba 100644
--- a/apps/wallet-mobile/translations/messages/src/WalletNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/WalletNavigator.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Transactions",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 233,
+ "line": 238,
"column": 22,
- "index": 8025
+ "index": 8054
},
"end": {
- "line": 236,
+ "line": 241,
"column": 3,
- "index": 8128
+ "index": 8157
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Send",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 237,
+ "line": 242,
"column": 14,
- "index": 8144
+ "index": 8173
},
"end": {
- "line": 240,
+ "line": 245,
"column": 3,
- "index": 8243
+ "index": 8272
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Receive",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 241,
+ "line": 246,
"column": 17,
- "index": 8262
+ "index": 8291
},
"end": {
- "line": 244,
+ "line": 249,
"column": 3,
- "index": 8367
+ "index": 8396
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Dashboard",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 245,
+ "line": 250,
"column": 19,
- "index": 8388
+ "index": 8417
},
"end": {
- "line": 248,
+ "line": 253,
"column": 3,
- "index": 8485
+ "index": 8514
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Delegate",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 249,
+ "line": 254,
"column": 18,
- "index": 8505
+ "index": 8534
},
"end": {
- "line": 252,
+ "line": 257,
"column": 3,
- "index": 8600
+ "index": 8629
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Wallet",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 253,
+ "line": 258,
"column": 16,
- "index": 8618
+ "index": 8647
},
"end": {
- "line": 256,
+ "line": 261,
"column": 3,
- "index": 8716
+ "index": 8745
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Staking",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 257,
+ "line": 262,
"column": 17,
- "index": 8735
+ "index": 8764
},
"end": {
- "line": 260,
+ "line": 265,
"column": 3,
- "index": 8800
+ "index": 8829
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!NFT Gallery",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 261,
+ "line": 266,
"column": 14,
- "index": 8816
+ "index": 8845
},
"end": {
- "line": 264,
+ "line": 269,
"column": 3,
- "index": 8910
+ "index": 8939
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Menu",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 265,
+ "line": 270,
"column": 14,
- "index": 8926
+ "index": 8955
},
"end": {
- "line": 268,
+ "line": 273,
"column": 3,
- "index": 8978
+ "index": 9007
}
},
{
@@ -139,14 +139,14 @@
"defaultMessage": "!!!Discover",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 269,
+ "line": 274,
"column": 18,
- "index": 8998
+ "index": 9027
},
"end": {
- "line": 272,
+ "line": 277,
"column": 3,
- "index": 9087
+ "index": 9116
}
},
{
@@ -154,14 +154,14 @@
"defaultMessage": "!!!My wallets",
"file": "src/WalletNavigator.tsx",
"start": {
- "line": 273,
+ "line": 278,
"column": 31,
- "index": 9120
+ "index": 9149
},
"end": {
- "line": 276,
+ "line": 281,
"column": 3,
- "index": 9229
+ "index": 9258
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/components/Analytics/Analytics.json b/apps/wallet-mobile/translations/messages/src/components/Analytics/Analytics.json
index 19e7609175..d568e4268d 100644
--- a/apps/wallet-mobile/translations/messages/src/components/Analytics/Analytics.json
+++ b/apps/wallet-mobile/translations/messages/src/components/Analytics/Analytics.json
@@ -6,12 +6,12 @@
"start": {
"line": 290,
"column": 10,
- "index": 7238
+ "index": 7245
},
"end": {
"line": 293,
"column": 3,
- "index": 7331
+ "index": 7338
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 294,
"column": 15,
- "index": 7348
+ "index": 7355
},
"end": {
"line": 297,
"column": 3,
- "index": 7487
+ "index": 7494
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 298,
"column": 13,
- "index": 7502
+ "index": 7509
},
"end": {
"line": 301,
"column": 3,
- "index": 7589
+ "index": 7596
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 302,
"column": 10,
- "index": 7601
+ "index": 7608
},
"end": {
"line": 305,
"column": 3,
- "index": 7696
+ "index": 7703
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 306,
"column": 11,
- "index": 7709
+ "index": 7716
},
"end": {
"line": 309,
"column": 3,
- "index": 7806
+ "index": 7813
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 310,
"column": 8,
- "index": 7816
+ "index": 7823
},
"end": {
"line": 313,
"column": 3,
- "index": 7914
+ "index": 7921
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 314,
"column": 10,
- "index": 7926
+ "index": 7933
},
"end": {
"line": 317,
"column": 3,
- "index": 8012
+ "index": 8019
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 318,
"column": 8,
- "index": 8022
+ "index": 8029
},
"end": {
"line": 321,
"column": 3,
- "index": 8110
+ "index": 8117
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 322,
"column": 8,
- "index": 8120
+ "index": 8127
},
"end": {
"line": 325,
"column": 3,
- "index": 8182
+ "index": 8189
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 326,
"column": 10,
- "index": 8194
+ "index": 8201
},
"end": {
"line": 329,
"column": 3,
- "index": 8260
+ "index": 8267
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 330,
"column": 10,
- "index": 8272
+ "index": 8279
},
"end": {
"line": 333,
"column": 3,
- "index": 8353
+ "index": 8360
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/components/ErrorModal/ErrorModal.json b/apps/wallet-mobile/translations/messages/src/components/ErrorModal/ErrorModal.json
index 50ff9ecaf7..477364354c 100644
--- a/apps/wallet-mobile/translations/messages/src/components/ErrorModal/ErrorModal.json
+++ b/apps/wallet-mobile/translations/messages/src/components/ErrorModal/ErrorModal.json
@@ -6,12 +6,12 @@
"start": {
"line": 151,
"column": 13,
- "index": 4186
+ "index": 4193
},
"end": {
"line": 154,
"column": 3,
- "index": 4286
+ "index": 4293
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 155,
"column": 13,
- "index": 4301
+ "index": 4308
},
"end": {
"line": 158,
"column": 3,
- "index": 4401
+ "index": 4408
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/components/ErrorPanel/ErrorPanel.stories.json b/apps/wallet-mobile/translations/messages/src/components/ErrorPanel/ErrorPanel.stories.json
index d354e0e896..3a66e900eb 100644
--- a/apps/wallet-mobile/translations/messages/src/components/ErrorPanel/ErrorPanel.stories.json
+++ b/apps/wallet-mobile/translations/messages/src/components/ErrorPanel/ErrorPanel.stories.json
@@ -6,12 +6,12 @@
"start": {
"line": 29,
"column": 19,
- "index": 940
+ "index": 955
},
"end": {
"line": 32,
"column": 3,
- "index": 1091
+ "index": 1106
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/components/LanguagePicker/LanguagePicker.json b/apps/wallet-mobile/translations/messages/src/components/LanguagePicker/LanguagePicker.json
index 1b9ad93e01..c3a98c8895 100644
--- a/apps/wallet-mobile/translations/messages/src/components/LanguagePicker/LanguagePicker.json
+++ b/apps/wallet-mobile/translations/messages/src/components/LanguagePicker/LanguagePicker.json
@@ -6,12 +6,12 @@
"start": {
"line": 103,
"column": 23,
- "index": 2792
+ "index": 2799
},
"end": {
"line": 106,
"column": 3,
- "index": 2856
+ "index": 2863
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 107,
"column": 24,
- "index": 2882
+ "index": 2889
},
"end": {
"line": 110,
"column": 3,
- "index": 2945
+ "index": 2952
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/CheckPinInput/CheckPinInput.json b/apps/wallet-mobile/translations/messages/src/features/Auth/CheckPinInput/CheckPinInput.json
new file mode 100644
index 0000000000..4fe52b5db8
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/CheckPinInput/CheckPinInput.json
@@ -0,0 +1,32 @@
+[
+ {
+ "id": "components.settings.changecustompinscreen.CurrentPinInput.title",
+ "defaultMessage": "!!!Enter PIN",
+ "file": "src/features/Auth/CheckPinInput/CheckPinInput.tsx",
+ "start": {
+ "line": 50,
+ "column": 9,
+ "index": 1349
+ },
+ "end": {
+ "line": 53,
+ "column": 3,
+ "index": 1465
+ }
+ },
+ {
+ "id": "components.settings.changecustompinscreen.CurrentPinInput.subtitle",
+ "defaultMessage": "!!!Enter your current PIN",
+ "file": "src/features/Auth/CheckPinInput/CheckPinInput.tsx",
+ "start": {
+ "line": 54,
+ "column": 12,
+ "index": 1479
+ },
+ "end": {
+ "line": 57,
+ "column": 3,
+ "index": 1611
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/CreatePinInput/CreatePinInput.json b/apps/wallet-mobile/translations/messages/src/features/Auth/CreatePinInput/CreatePinInput.json
new file mode 100644
index 0000000000..1685830fe8
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/CreatePinInput/CreatePinInput.json
@@ -0,0 +1,62 @@
+[
+ {
+ "id": "components.initialization.custompinscreen.pinInputTitle",
+ "defaultMessage": "!!!Enter PIN",
+ "file": "src/features/Auth/CreatePinInput/CreatePinInput.tsx",
+ "start": {
+ "line": 78,
+ "column": 17,
+ "index": 2443
+ },
+ "end": {
+ "line": 81,
+ "column": 3,
+ "index": 2551
+ }
+ },
+ {
+ "id": "components.initialization.custompinscreen.pinInputSubtitle",
+ "defaultMessage": "!!!Choose a new PIN to quickly access your wallet",
+ "file": "src/features/Auth/CreatePinInput/CreatePinInput.tsx",
+ "start": {
+ "line": 82,
+ "column": 20,
+ "index": 2573
+ },
+ "end": {
+ "line": 85,
+ "column": 3,
+ "index": 2721
+ }
+ },
+ {
+ "id": "components.initialization.custompinscreen.pinConfirmationTitle",
+ "defaultMessage": "!!!Repeat PIN",
+ "file": "src/features/Auth/CreatePinInput/CreatePinInput.tsx",
+ "start": {
+ "line": 86,
+ "column": 29,
+ "index": 2752
+ },
+ "end": {
+ "line": 89,
+ "column": 3,
+ "index": 2868
+ }
+ },
+ {
+ "id": "components.firstrun.custompinscreen.pinInputConfirmationSubTitle",
+ "defaultMessage": "!!!Repeat a new PIN to quickly access your wallet",
+ "file": "src/features/Auth/CreatePinInput/CreatePinInput.tsx",
+ "start": {
+ "line": 90,
+ "column": 32,
+ "index": 2902
+ },
+ "end": {
+ "line": 93,
+ "column": 3,
+ "index": 3056
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/OsAuthScreen/OsAuthScreen.json b/apps/wallet-mobile/translations/messages/src/features/Auth/OsAuthScreen/OsAuthScreen.json
new file mode 100644
index 0000000000..3339a5f002
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/OsAuthScreen/OsAuthScreen.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "components.common.fingerprintscreenbase.welcomeMessage",
+ "defaultMessage": "!!!Welcome Back",
+ "file": "src/features/Auth/OsAuthScreen/OsAuthScreen.tsx",
+ "start": {
+ "line": 101,
+ "column": 18,
+ "index": 3097
+ },
+ "end": {
+ "line": 104,
+ "column": 3,
+ "index": 3207
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/OsLoginScreen/OsLoginScreen.json b/apps/wallet-mobile/translations/messages/src/features/Auth/OsLoginScreen/OsLoginScreen.json
new file mode 100644
index 0000000000..f41b20f26c
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/OsLoginScreen/OsLoginScreen.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "components.common.osloginscreen.button.title",
+ "defaultMessage": "!!!Login",
+ "file": "src/features/Auth/OsLoginScreen/OsLoginScreen.tsx",
+ "start": {
+ "line": 65,
+ "column": 9,
+ "index": 1692
+ },
+ "end": {
+ "line": 68,
+ "column": 3,
+ "index": 1785
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/PinInput/PinInput.stories.json b/apps/wallet-mobile/translations/messages/src/features/Auth/PinInput/PinInput.stories.json
new file mode 100644
index 0000000000..2160105cd3
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/PinInput/PinInput.stories.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "components.login.custompinlogin.title",
+ "defaultMessage": "!!!Enter PIN",
+ "file": "src/features/Auth/PinInput/PinInput.stories.tsx",
+ "start": {
+ "line": 45,
+ "column": 9,
+ "index": 1191
+ },
+ "end": {
+ "line": 48,
+ "column": 3,
+ "index": 1281
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/PinLoginScreen/PinLoginScreen.json b/apps/wallet-mobile/translations/messages/src/features/Auth/PinLoginScreen/PinLoginScreen.json
new file mode 100644
index 0000000000..e025a315db
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/PinLoginScreen/PinLoginScreen.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "components.login.custompinlogin.title",
+ "defaultMessage": "!!!Enter PIN",
+ "file": "src/features/Auth/PinLoginScreen/PinLoginScreen.tsx",
+ "start": {
+ "line": 69,
+ "column": 9,
+ "index": 1769
+ },
+ "end": {
+ "line": 72,
+ "column": 3,
+ "index": 1859
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Auth/common/hooks.json b/apps/wallet-mobile/translations/messages/src/features/Auth/common/hooks.json
new file mode 100644
index 0000000000..99a2323bce
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/Auth/common/hooks.json
@@ -0,0 +1,47 @@
+[
+ {
+ "id": "components.send.biometricauthscreen.authorizeOperation",
+ "defaultMessage": "!!!Authorize",
+ "file": "src/features/Auth/common/hooks.ts",
+ "start": {
+ "line": 261,
+ "column": 13,
+ "index": 9001
+ },
+ "end": {
+ "line": 264,
+ "column": 3,
+ "index": 9108
+ }
+ },
+ {
+ "id": "components.send.biometricauthscreen.SENSOR_LOCKOUT",
+ "defaultMessage": "!!!Too many attempts",
+ "file": "src/features/Auth/common/hooks.ts",
+ "start": {
+ "line": 265,
+ "column": 19,
+ "index": 9129
+ },
+ "end": {
+ "line": 268,
+ "column": 3,
+ "index": 9240
+ }
+ },
+ {
+ "id": "components.send.biometricauthscreen.UNKNOWN_ERROR",
+ "defaultMessage": "!!!Unknown error!",
+ "file": "src/features/Auth/common/hooks.ts",
+ "start": {
+ "line": 269,
+ "column": 16,
+ "index": 9258
+ },
+ "end": {
+ "line": 272,
+ "column": 3,
+ "index": 9365
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Claim/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/Claim/common/useStrings.json
index c8398744db..8d0b81dae0 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Claim/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Claim/common/useStrings.json
@@ -6,12 +6,12 @@
"start": {
"line": 41,
"column": 26,
- "index": 1766
+ "index": 1773
},
"end": {
"line": 44,
"column": 5,
- "index": 1856
+ "index": 1863
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 45,
"column": 22,
- "index": 1880
+ "index": 1887
},
"end": {
"line": 48,
"column": 5,
- "index": 1960
+ "index": 1967
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 50,
"column": 15,
- "index": 1978
+ "index": 1985
},
"end": {
"line": 53,
"column": 5,
- "index": 2048
+ "index": 2055
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 54,
"column": 17,
- "index": 2067
+ "index": 2074
},
"end": {
"line": 57,
"column": 5,
- "index": 2139
+ "index": 2146
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 58,
"column": 19,
- "index": 2160
+ "index": 2167
},
"end": {
"line": 61,
"column": 5,
- "index": 2238
+ "index": 2245
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 62,
"column": 21,
- "index": 2261
+ "index": 2268
},
"end": {
"line": 65,
"column": 5,
- "index": 2341
+ "index": 2348
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 66,
"column": 21,
- "index": 2364
+ "index": 2371
},
"end": {
"line": 69,
"column": 5,
- "index": 2446
+ "index": 2453
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 70,
"column": 23,
- "index": 2471
+ "index": 2478
},
"end": {
"line": 73,
"column": 5,
- "index": 2555
+ "index": 2562
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 75,
"column": 27,
- "index": 2585
+ "index": 2592
},
"end": {
"line": 78,
"column": 5,
- "index": 2685
+ "index": 2692
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 79,
"column": 12,
- "index": 2699
+ "index": 2706
},
"end": {
"line": 82,
"column": 5,
- "index": 2767
+ "index": 2774
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 83,
"column": 10,
- "index": 2779
+ "index": 2786
},
"end": {
"line": 86,
"column": 5,
- "index": 2843
+ "index": 2850
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 88,
"column": 19,
- "index": 2865
+ "index": 2872
},
"end": {
"line": 91,
"column": 5,
- "index": 2946
+ "index": 2953
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 92,
"column": 28,
- "index": 2976
+ "index": 2983
},
"end": {
"line": 95,
"column": 5,
- "index": 3070
+ "index": 3077
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 96,
"column": 22,
- "index": 3094
+ "index": 3101
},
"end": {
"line": 99,
"column": 5,
- "index": 3176
+ "index": 3183
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 100,
"column": 28,
- "index": 3206
+ "index": 3213
},
"end": {
"line": 103,
"column": 5,
- "index": 3300
+ "index": 3307
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 104,
"column": 21,
- "index": 3323
+ "index": 3330
},
"end": {
"line": 107,
"column": 5,
- "index": 3402
+ "index": 3409
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 108,
"column": 22,
- "index": 3426
+ "index": 3433
},
"end": {
"line": 111,
"column": 5,
- "index": 3508
+ "index": 3515
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 112,
"column": 25,
- "index": 3535
+ "index": 3542
},
"end": {
"line": 115,
"column": 5,
- "index": 3623
+ "index": 3630
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 117,
"column": 14,
- "index": 3640
+ "index": 3647
},
"end": {
"line": 120,
"column": 5,
- "index": 3749
+ "index": 3756
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Discover/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/Discover/common/useStrings.json
index 4a0fdfee02..abb178f8b6 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Discover/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Discover/common/useStrings.json
@@ -1,17 +1,32 @@
[
+ {
+ "id": "global.confirmationTransaction",
+ "defaultMessage": "!!!Confirm transaction",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 32,
+ "column": 15,
+ "index": 1709
+ },
+ "end": {
+ "line": 35,
+ "column": 5,
+ "index": 1808
+ }
+ },
{
"id": "discover.discoverList.discoverTitle",
"defaultMessage": "!!!Discover Cardano",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 25,
+ "line": 36,
"column": 19,
- "index": 1056
+ "index": 1829
},
"end": {
- "line": 28,
+ "line": 39,
"column": 5,
- "index": 1157
+ "index": 1930
}
},
{
@@ -19,14 +34,14 @@
"defaultMessage": "!!!Search DApps",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 29,
+ "line": 40,
"column": 17,
- "index": 1176
+ "index": 1949
},
"end": {
- "line": 32,
+ "line": 43,
"column": 5,
- "index": 1271
+ "index": 2044
}
},
{
@@ -34,14 +49,14 @@
"defaultMessage": "!!!Welcome to Yoroi DApp Explorer",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 33,
+ "line": 44,
"column": 32,
- "index": 1305
+ "index": 2078
},
"end": {
- "line": 36,
+ "line": 47,
"column": 5,
- "index": 1433
+ "index": 2206
}
},
{
@@ -49,14 +64,14 @@
"defaultMessage": "!!!Discover, inspect, and connect to Cardano decentralized applications (DApps) with ease. Our solution helps to interact with DApps and their smart contracts, seamlessly enhancing your Cardano experience",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 37,
+ "line": 48,
"column": 43,
- "index": 1478
+ "index": 2251
},
"end": {
- "line": 41,
+ "line": 52,
"column": 5,
- "index": 1796
+ "index": 2569
}
},
{
@@ -64,14 +79,14 @@
"defaultMessage": "!!!Next",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 42,
+ "line": 53,
"column": 10,
- "index": 1808
+ "index": 2581
},
"end": {
- "line": 45,
+ "line": 56,
"column": 5,
- "index": 1873
+ "index": 2646
}
},
{
@@ -79,14 +94,14 @@
"defaultMessage": "!!!DApp(s) available",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 46,
+ "line": 57,
"column": 24,
- "index": 1899
+ "index": 2672
},
"end": {
- "line": 49,
+ "line": 60,
"column": 5,
- "index": 2001
+ "index": 2774
}
},
{
@@ -94,14 +109,14 @@
"defaultMessage": "!!!Connected",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 50,
+ "line": 61,
"column": 15,
- "index": 2018
+ "index": 2791
},
"end": {
- "line": 53,
+ "line": 64,
"column": 5,
- "index": 2108
+ "index": 2881
}
},
{
@@ -109,14 +124,14 @@
"defaultMessage": "!!!Recommended",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 54,
+ "line": 65,
"column": 17,
- "index": 2127
+ "index": 2900
},
"end": {
- "line": 57,
+ "line": 68,
"column": 5,
- "index": 2221
+ "index": 2994
}
},
{
@@ -124,14 +139,14 @@
"defaultMessage": "!!!DONE",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 58,
+ "line": 69,
"column": 10,
- "index": 2233
+ "index": 3006
},
"end": {
- "line": 61,
+ "line": 72,
"column": 5,
- "index": 2313
+ "index": 3086
}
},
{
@@ -139,14 +154,14 @@
"defaultMessage": "!!!Open DApp",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 62,
+ "line": 73,
"column": 14,
- "index": 2329
+ "index": 3102
},
"end": {
- "line": 65,
+ "line": 76,
"column": 5,
- "index": 2418
+ "index": 3191
}
},
{
@@ -154,14 +169,14 @@
"defaultMessage": "!!!Disconnect wallet from DApp",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 66,
+ "line": 77,
"column": 30,
- "index": 2450
+ "index": 3223
},
"end": {
- "line": 69,
+ "line": 80,
"column": 5,
- "index": 2573
+ "index": 3346
}
},
{
@@ -169,14 +184,104 @@
"defaultMessage": "!!!DApp actions",
"file": "src/features/Discover/common/useStrings.tsx",
"start": {
- "line": 70,
+ "line": 81,
"column": 17,
- "index": 2592
+ "index": 3365
},
"end": {
- "line": 73,
+ "line": 84,
+ "column": 5,
+ "index": 3460
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.title",
+ "defaultMessage": "!!!Confirm connection",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 85,
+ "column": 33,
+ "index": 3495
+ },
+ "end": {
+ "line": 88,
+ "column": 5,
+ "index": 3600
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.connectTo",
+ "defaultMessage": "!!!Connect to",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 89,
+ "column": 37,
+ "index": 3639
+ },
+ "end": {
+ "line": 92,
+ "column": 5,
+ "index": 3740
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.connect",
+ "defaultMessage": "!!!Connect",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 93,
+ "column": 35,
+ "index": 3777
+ },
+ "end": {
+ "line": 96,
+ "column": 5,
+ "index": 3873
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.allowThisDAppTo",
+ "defaultMessage": "!!!Allow this DApp to:",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 97,
+ "column": 43,
+ "index": 3918
+ },
+ "end": {
+ "line": 100,
+ "column": 5,
+ "index": 4034
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.permission1",
+ "defaultMessage": "!!!View addresses, account balance, activity",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 101,
+ "column": 39,
+ "index": 4075
+ },
+ "end": {
+ "line": 104,
+ "column": 5,
+ "index": 4209
+ }
+ },
+ {
+ "id": "discover.confirmConnectionModal.permission2",
+ "defaultMessage": "!!!Request approval for transactions",
+ "file": "src/features/Discover/common/useStrings.tsx",
+ "start": {
+ "line": 105,
+ "column": 39,
+ "index": 4250
+ },
+ "end": {
+ "line": 108,
"column": 5,
- "index": 2687
+ "index": 4376
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Exchange/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/Exchange/common/useStrings.json
index 9afa4db3ae..1b05ec0614 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Exchange/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Exchange/common/useStrings.json
@@ -6,12 +6,12 @@
"start": {
"line": 45,
"column": 20,
- "index": 2151
+ "index": 2158
},
"end": {
"line": 48,
"column": 5,
- "index": 2246
+ "index": 2253
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 49,
"column": 13,
- "index": 2261
+ "index": 2268
},
"end": {
"line": 52,
"column": 5,
- "index": 2332
+ "index": 2339
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 53,
"column": 16,
- "index": 2350
+ "index": 2357
},
"end": {
"line": 56,
"column": 5,
- "index": 2446
+ "index": 2453
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 57,
"column": 23,
- "index": 2471
+ "index": 2478
},
"end": {
"line": 61,
"column": 5,
- "index": 2971
+ "index": 2978
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 62,
"column": 15,
- "index": 2988
+ "index": 2995
},
"end": {
"line": 65,
"column": 5,
- "index": 3080
+ "index": 3087
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 66,
"column": 16,
- "index": 3098
+ "index": 3105
},
"end": {
"line": 69,
"column": 5,
- "index": 3192
+ "index": 3199
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 70,
"column": 17,
- "index": 3211
+ "index": 3218
},
"end": {
"line": 73,
"column": 5,
- "index": 3308
+ "index": 3315
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 74,
"column": 17,
- "index": 3327
+ "index": 3334
},
"end": {
"line": 77,
"column": 5,
- "index": 3426
+ "index": 3433
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 78,
"column": 14,
- "index": 3442
+ "index": 3449
},
"end": {
"line": 81,
"column": 5,
- "index": 3534
+ "index": 3541
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 82,
"column": 11,
- "index": 3547
+ "index": 3554
},
"end": {
"line": 85,
"column": 5,
- "index": 3633
+ "index": 3640
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 86,
"column": 11,
- "index": 3646
+ "index": 3653
},
"end": {
"line": 89,
"column": 5,
- "index": 3723
+ "index": 3730
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 90,
"column": 22,
- "index": 3747
+ "index": 3754
},
"end": {
"line": 93,
"column": 5,
- "index": 3848
+ "index": 3855
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 94,
"column": 20,
- "index": 3870
+ "index": 3877
},
"end": {
"line": 97,
"column": 5,
- "index": 3987
+ "index": 3994
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 98,
"column": 25,
- "index": 4014
+ "index": 4021
},
"end": {
"line": 101,
"column": 5,
- "index": 4154
+ "index": 4161
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 102,
"column": 14,
- "index": 4170
+ "index": 4177
},
"end": {
"line": 105,
"column": 5,
- "index": 4300
+ "index": 4307
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 106,
"column": 24,
- "index": 4326
+ "index": 4333
},
"end": {
"line": 109,
"column": 5,
- "index": 4438
+ "index": 4445
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 110,
"column": 22,
- "index": 4462
+ "index": 4469
},
"end": {
"line": 113,
"column": 5,
- "index": 4574
+ "index": 4581
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 114,
"column": 22,
- "index": 4598
+ "index": 4605
},
"end": {
"line": 117,
"column": 5,
- "index": 4708
+ "index": 4715
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 118,
"column": 19,
- "index": 4729
+ "index": 4736
},
"end": {
"line": 121,
"column": 5,
- "index": 4842
+ "index": 4849
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 122,
"column": 38,
- "index": 4882
+ "index": 4889
},
"end": {
"line": 126,
"column": 5,
- "index": 5262
+ "index": 5269
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 127,
"column": 13,
- "index": 5277
+ "index": 5284
},
"end": {
"line": 130,
"column": 5,
- "index": 5367
+ "index": 5374
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 131,
"column": 9,
- "index": 5378
+ "index": 5385
},
"end": {
"line": 134,
"column": 5,
- "index": 5460
+ "index": 5467
}
},
{
@@ -336,12 +336,12 @@
"start": {
"line": 135,
"column": 21,
- "index": 5483
+ "index": 5490
},
"end": {
"line": 138,
"column": 5,
- "index": 5596
+ "index": 5603
}
},
{
@@ -351,12 +351,12 @@
"start": {
"line": 139,
"column": 17,
- "index": 5615
+ "index": 5622
},
"end": {
"line": 142,
"column": 5,
- "index": 5764
+ "index": 5771
}
},
{
@@ -366,12 +366,12 @@
"start": {
"line": 143,
"column": 20,
- "index": 5786
+ "index": 5793
},
"end": {
"line": 146,
"column": 5,
- "index": 5928
+ "index": 5935
}
},
{
@@ -381,12 +381,12 @@
"start": {
"line": 147,
"column": 24,
- "index": 5954
+ "index": 5961
},
"end": {
"line": 150,
"column": 5,
- "index": 6100
+ "index": 6107
}
},
{
@@ -396,12 +396,12 @@
"start": {
"line": 151,
"column": 20,
- "index": 6122
+ "index": 6129
},
"end": {
"line": 154,
"column": 5,
- "index": 6246
+ "index": 6253
}
},
{
@@ -411,12 +411,12 @@
"start": {
"line": 155,
"column": 9,
- "index": 6257
+ "index": 6264
},
"end": {
"line": 158,
"column": 5,
- "index": 6339
+ "index": 6346
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Links/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/Links/common/useStrings.json
index 40eeacfc3b..359dfea3f1 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Links/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Links/common/useStrings.json
@@ -6,12 +6,12 @@
"start": {
"line": 31,
"column": 34,
- "index": 1360
+ "index": 1367
},
"end": {
"line": 34,
"column": 5,
- "index": 1463
+ "index": 1470
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 35,
"column": 40,
- "index": 1505
+ "index": 1512
},
"end": {
"line": 38,
"column": 5,
- "index": 1626
+ "index": 1633
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 39,
"column": 36,
- "index": 1664
+ "index": 1671
},
"end": {
"line": 42,
"column": 5,
- "index": 1769
+ "index": 1776
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 43,
"column": 42,
- "index": 1813
+ "index": 1820
},
"end": {
"line": 46,
"column": 5,
- "index": 1936
+ "index": 1943
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 48,
"column": 27,
- "index": 1966
+ "index": 1973
},
"end": {
"line": 51,
"column": 5,
- "index": 2057
+ "index": 2064
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 52,
"column": 33,
- "index": 2092
+ "index": 2099
},
"end": {
"line": 55,
"column": 5,
- "index": 2203
+ "index": 2210
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 57,
"column": 24,
- "index": 2230
+ "index": 2237
},
"end": {
"line": 60,
"column": 5,
- "index": 2323
+ "index": 2330
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 61,
"column": 30,
- "index": 2355
+ "index": 2362
},
"end": {
"line": 65,
"column": 5,
- "index": 2573
+ "index": 2580
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Portfolio/common/MediaDetails/MediaDetails.json b/apps/wallet-mobile/translations/messages/src/features/Portfolio/common/MediaDetails/MediaDetails.json
index 522fd0e52f..d3b2fd01ee 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Portfolio/common/MediaDetails/MediaDetails.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Portfolio/common/MediaDetails/MediaDetails.json
@@ -6,12 +6,12 @@
"start": {
"line": 315,
"column": 9,
- "index": 8846
+ "index": 8860
},
"end": {
"line": 318,
"column": 3,
- "index": 8917
+ "index": 8931
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 319,
"column": 12,
- "index": 8931
+ "index": 8945
},
"end": {
"line": 322,
"column": 3,
- "index": 9002
+ "index": 9016
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 323,
"column": 12,
- "index": 9016
+ "index": 9030
},
"end": {
"line": 326,
"column": 3,
- "index": 9087
+ "index": 9101
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 327,
"column": 11,
- "index": 9100
+ "index": 9114
},
"end": {
"line": 330,
"column": 3,
- "index": 9170
+ "index": 9184
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 331,
"column": 13,
- "index": 9185
+ "index": 9199
},
"end": {
"line": 334,
"column": 3,
- "index": 9256
+ "index": 9270
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 335,
"column": 15,
- "index": 9273
+ "index": 9287
},
"end": {
"line": 338,
"column": 3,
- "index": 9350
+ "index": 9364
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 339,
"column": 10,
- "index": 9362
+ "index": 9376
},
"end": {
"line": 342,
"column": 3,
- "index": 9429
+ "index": 9443
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 343,
"column": 15,
- "index": 9446
+ "index": 9460
},
"end": {
"line": 346,
"column": 3,
- "index": 9523
+ "index": 9537
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 347,
"column": 12,
- "index": 9537
+ "index": 9551
},
"end": {
"line": 350,
"column": 3,
- "index": 9609
+ "index": 9623
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 351,
"column": 16,
- "index": 9627
+ "index": 9641
},
"end": {
"line": 354,
"column": 3,
- "index": 9704
+ "index": 9718
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 355,
"column": 16,
- "index": 9722
+ "index": 9736
},
"end": {
"line": 358,
"column": 3,
- "index": 9802
+ "index": 9816
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Scan/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/Scan/common/useStrings.json
index 5726f413af..5a1a922e90 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Scan/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Scan/common/useStrings.json
@@ -6,12 +6,12 @@
"start": {
"line": 42,
"column": 15,
- "index": 2526
+ "index": 2533
},
"end": {
"line": 45,
"column": 5,
- "index": 2607
+ "index": 2614
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 47,
"column": 33,
- "index": 2643
+ "index": 2650
},
"end": {
"line": 50,
"column": 5,
- "index": 2751
+ "index": 2758
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 51,
"column": 32,
- "index": 2785
+ "index": 2792
},
"end": {
"line": 54,
"column": 5,
- "index": 2922
+ "index": 2929
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 55,
"column": 23,
- "index": 2947
+ "index": 2954
},
"end": {
"line": 58,
"column": 5,
- "index": 3033
+ "index": 3040
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 59,
"column": 22,
- "index": 3057
+ "index": 3064
},
"end": {
"line": 62,
"column": 5,
- "index": 3141
+ "index": 3148
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 63,
"column": 30,
- "index": 3173
+ "index": 3180
},
"end": {
"line": 66,
"column": 5,
- "index": 3274
+ "index": 3281
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 67,
"column": 29,
- "index": 3305
+ "index": 3312
},
"end": {
"line": 70,
"column": 5,
- "index": 3404
+ "index": 3411
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 72,
"column": 38,
- "index": 3445
+ "index": 3452
},
"end": {
"line": 75,
"column": 5,
- "index": 3555
+ "index": 3562
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 76,
"column": 37,
- "index": 3594
+ "index": 3601
},
"end": {
"line": 79,
"column": 5,
- "index": 3708
+ "index": 3715
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 80,
"column": 44,
- "index": 3754
+ "index": 3761
},
"end": {
"line": 83,
"column": 5,
- "index": 3876
+ "index": 3883
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 84,
"column": 43,
- "index": 3921
+ "index": 3928
},
"end": {
"line": 87,
"column": 5,
- "index": 4047
+ "index": 4054
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 88,
"column": 42,
- "index": 4091
+ "index": 4098
},
"end": {
"line": 91,
"column": 5,
- "index": 4209
+ "index": 4216
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 92,
"column": 41,
- "index": 4252
+ "index": 4259
},
"end": {
"line": 95,
"column": 5,
- "index": 4374
+ "index": 4381
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 96,
"column": 43,
- "index": 4419
+ "index": 4426
},
"end": {
"line": 99,
"column": 5,
- "index": 4539
+ "index": 4546
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 100,
"column": 42,
- "index": 4583
+ "index": 4590
},
"end": {
"line": 103,
"column": 5,
- "index": 4707
+ "index": 4714
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 104,
"column": 41,
- "index": 4750
+ "index": 4757
},
"end": {
"line": 107,
"column": 5,
- "index": 4862
+ "index": 4869
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 108,
"column": 40,
- "index": 4904
+ "index": 4911
},
"end": {
"line": 111,
"column": 5,
- "index": 5020
+ "index": 5027
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 112,
"column": 39,
- "index": 5061
+ "index": 5068
},
"end": {
"line": 115,
"column": 5,
- "index": 5169
+ "index": 5176
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 116,
"column": 38,
- "index": 5209
+ "index": 5216
},
"end": {
"line": 119,
"column": 5,
- "index": 5321
+ "index": 5328
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 120,
"column": 41,
- "index": 5364
+ "index": 5371
},
"end": {
"line": 123,
"column": 5,
- "index": 5477
+ "index": 5484
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 124,
"column": 40,
- "index": 5519
+ "index": 5526
},
"end": {
"line": 127,
"column": 5,
- "index": 5636
+ "index": 5643
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 129,
"column": 14,
- "index": 5653
+ "index": 5660
},
"end": {
"line": 132,
"column": 5,
- "index": 5762
+ "index": 5769
}
},
{
@@ -336,12 +336,12 @@
"start": {
"line": 133,
"column": 21,
- "index": 5785
+ "index": 5792
},
"end": {
"line": 136,
"column": 5,
- "index": 5874
+ "index": 5881
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Send/common/strings.json b/apps/wallet-mobile/translations/messages/src/features/Send/common/strings.json
index 277106852a..de3e5da65b 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Send/common/strings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Send/common/strings.json
@@ -6,12 +6,12 @@
"start": {
"line": 81,
"column": 18,
- "index": 5210
+ "index": 5217
},
"end": {
"line": 84,
"column": 3,
- "index": 5338
+ "index": 5345
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 85,
"column": 27,
- "index": 5367
+ "index": 5374
},
"end": {
"line": 88,
"column": 3,
- "index": 5504
+ "index": 5511
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 89,
"column": 13,
- "index": 5519
+ "index": 5526
},
"end": {
"line": 92,
"column": 3,
- "index": 5633
+ "index": 5640
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 93,
"column": 11,
- "index": 5646
+ "index": 5653
},
"end": {
"line": 96,
"column": 3,
- "index": 5759
+ "index": 5766
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 97,
"column": 15,
- "index": 5776
+ "index": 5783
},
"end": {
"line": 100,
"column": 3,
- "index": 5916
+ "index": 5923
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 101,
"column": 12,
- "index": 5930
+ "index": 5937
},
"end": {
"line": 104,
"column": 3,
- "index": 6050
+ "index": 6057
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 105,
"column": 23,
- "index": 6075
+ "index": 6082
},
"end": {
"line": 108,
"column": 3,
- "index": 6224
+ "index": 6231
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 109,
"column": 17,
- "index": 6243
+ "index": 6250
},
"end": {
"line": 112,
"column": 3,
- "index": 6405
+ "index": 6412
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 113,
"column": 30,
- "index": 6437
+ "index": 6444
},
"end": {
"line": 116,
"column": 3,
- "index": 6547
+ "index": 6554
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 120,
"column": 17,
- "index": 6611
+ "index": 6618
},
"end": {
"line": 123,
"column": 3,
- "index": 6709
+ "index": 6716
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 124,
"column": 12,
- "index": 6723
+ "index": 6730
},
"end": {
"line": 127,
"column": 3,
- "index": 6810
+ "index": 6817
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 128,
"column": 12,
- "index": 6824
+ "index": 6831
},
"end": {
"line": 131,
"column": 3,
- "index": 6906
+ "index": 6913
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 132,
"column": 19,
- "index": 6927
+ "index": 6934
},
"end": {
"line": 135,
"column": 3,
- "index": 7014
+ "index": 7021
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 136,
"column": 21,
- "index": 7037
+ "index": 7044
},
"end": {
"line": 139,
"column": 3,
- "index": 7124
+ "index": 7131
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 140,
"column": 28,
- "index": 7154
+ "index": 7161
},
"end": {
"line": 143,
"column": 3,
- "index": 7250
+ "index": 7257
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 144,
"column": 34,
- "index": 7286
+ "index": 7293
},
"end": {
"line": 147,
"column": 3,
- "index": 7406
+ "index": 7413
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 148,
"column": 36,
- "index": 7444
+ "index": 7451
},
"end": {
"line": 151,
"column": 3,
- "index": 7548
+ "index": 7555
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 152,
"column": 35,
- "index": 7585
+ "index": 7592
},
"end": {
"line": 155,
"column": 3,
- "index": 7713
+ "index": 7720
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 156,
"column": 34,
- "index": 7749
+ "index": 7756
},
"end": {
"line": 159,
"column": 3,
- "index": 7875
+ "index": 7882
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 160,
"column": 21,
- "index": 7898
+ "index": 7905
},
"end": {
"line": 163,
"column": 3,
- "index": 8019
+ "index": 8026
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 164,
"column": 25,
- "index": 8046
+ "index": 8053
},
"end": {
"line": 167,
"column": 3,
- "index": 8176
+ "index": 8183
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 168,
"column": 19,
- "index": 8197
+ "index": 8204
},
"end": {
"line": 171,
"column": 3,
- "index": 8301
+ "index": 8308
}
},
{
@@ -337,12 +337,12 @@
"start": {
"line": 172,
"column": 28,
- "index": 8331
+ "index": 8338
},
"end": {
"line": 176,
"column": 3,
- "index": 8480
+ "index": 8487
}
},
{
@@ -353,12 +353,12 @@
"start": {
"line": 177,
"column": 29,
- "index": 8511
+ "index": 8518
},
"end": {
"line": 181,
"column": 3,
- "index": 8676
+ "index": 8683
}
},
{
@@ -369,12 +369,12 @@
"start": {
"line": 182,
"column": 26,
- "index": 8704
+ "index": 8711
},
"end": {
"line": 186,
"column": 3,
- "index": 8850
+ "index": 8857
}
},
{
@@ -384,12 +384,12 @@
"start": {
"line": 187,
"column": 16,
- "index": 8868
+ "index": 8875
},
"end": {
"line": 190,
"column": 3,
- "index": 8964
+ "index": 8971
}
},
{
@@ -399,12 +399,12 @@
"start": {
"line": 191,
"column": 20,
- "index": 8986
+ "index": 8993
},
"end": {
"line": 194,
"column": 3,
- "index": 9075
+ "index": 9082
}
},
{
@@ -414,12 +414,12 @@
"start": {
"line": 195,
"column": 16,
- "index": 9093
+ "index": 9100
},
"end": {
"line": 198,
"column": 3,
- "index": 9198
+ "index": 9205
}
},
{
@@ -429,12 +429,12 @@
"start": {
"line": 199,
"column": 12,
- "index": 9212
+ "index": 9219
},
"end": {
"line": 202,
"column": 3,
- "index": 9315
+ "index": 9322
}
},
{
@@ -444,12 +444,12 @@
"start": {
"line": 203,
"column": 9,
- "index": 9326
+ "index": 9333
},
"end": {
"line": 206,
"column": 3,
- "index": 9416
+ "index": 9423
}
},
{
@@ -459,12 +459,12 @@
"start": {
"line": 207,
"column": 11,
- "index": 9429
+ "index": 9436
},
"end": {
"line": 210,
"column": 3,
- "index": 9524
+ "index": 9531
}
},
{
@@ -474,12 +474,12 @@
"start": {
"line": 211,
"column": 26,
- "index": 9552
+ "index": 9559
},
"end": {
"line": 214,
"column": 3,
- "index": 9714
+ "index": 9721
}
},
{
@@ -489,12 +489,12 @@
"start": {
"line": 215,
"column": 20,
- "index": 9736
+ "index": 9743
},
"end": {
"line": 218,
"column": 3,
- "index": 9855
+ "index": 9862
}
},
{
@@ -504,12 +504,12 @@
"start": {
"line": 219,
"column": 23,
- "index": 9880
+ "index": 9887
},
"end": {
"line": 222,
"column": 3,
- "index": 10001
+ "index": 10008
}
},
{
@@ -519,12 +519,12 @@
"start": {
"line": 223,
"column": 22,
- "index": 10025
+ "index": 10032
},
"end": {
"line": 227,
"column": 3,
- "index": 10217
+ "index": 10224
}
},
{
@@ -534,12 +534,12 @@
"start": {
"line": 228,
"column": 24,
- "index": 10243
+ "index": 10250
},
"end": {
"line": 231,
"column": 3,
- "index": 10406
+ "index": 10413
}
},
{
@@ -549,12 +549,12 @@
"start": {
"line": 232,
"column": 24,
- "index": 10432
+ "index": 10439
},
"end": {
"line": 237,
"column": 3,
- "index": 10661
+ "index": 10668
}
},
{
@@ -564,12 +564,12 @@
"start": {
"line": 238,
"column": 24,
- "index": 10687
+ "index": 10694
},
"end": {
"line": 241,
"column": 3,
- "index": 10860
+ "index": 10867
}
},
{
@@ -579,12 +579,12 @@
"start": {
"line": 242,
"column": 18,
- "index": 10880
+ "index": 10887
},
"end": {
"line": 245,
"column": 3,
- "index": 10973
+ "index": 10980
}
},
{
@@ -594,12 +594,12 @@
"start": {
"line": 246,
"column": 27,
- "index": 11002
+ "index": 11009
},
"end": {
"line": 249,
"column": 3,
- "index": 11174
+ "index": 11181
}
},
{
@@ -609,12 +609,12 @@
"start": {
"line": 250,
"column": 41,
- "index": 11217
+ "index": 11224
},
"end": {
"line": 253,
"column": 3,
- "index": 11397
+ "index": 11404
}
},
{
@@ -624,12 +624,12 @@
"start": {
"line": 254,
"column": 20,
- "index": 11419
+ "index": 11426
},
"end": {
"line": 257,
"column": 3,
- "index": 11527
+ "index": 11534
}
},
{
@@ -639,12 +639,12 @@
"start": {
"line": 258,
"column": 19,
- "index": 11548
+ "index": 11555
},
"end": {
"line": 261,
"column": 3,
- "index": 11691
+ "index": 11698
}
},
{
@@ -654,12 +654,12 @@
"start": {
"line": 262,
"column": 21,
- "index": 11714
+ "index": 11721
},
"end": {
"line": 265,
"column": 3,
- "index": 11820
+ "index": 11827
}
},
{
@@ -669,12 +669,12 @@
"start": {
"line": 266,
"column": 17,
- "index": 11839
+ "index": 11846
},
"end": {
"line": 269,
"column": 3,
- "index": 11941
+ "index": 11948
}
},
{
@@ -684,12 +684,12 @@
"start": {
"line": 270,
"column": 16,
- "index": 11959
+ "index": 11966
},
"end": {
"line": 273,
"column": 3,
- "index": 12114
+ "index": 12121
}
},
{
@@ -699,12 +699,12 @@
"start": {
"line": 274,
"column": 18,
- "index": 12134
+ "index": 12141
},
"end": {
"line": 277,
"column": 3,
- "index": 12228
+ "index": 12235
}
},
{
@@ -714,12 +714,12 @@
"start": {
"line": 278,
"column": 9,
- "index": 12239
+ "index": 12246
},
"end": {
"line": 281,
"column": 3,
- "index": 12312
+ "index": 12319
}
},
{
@@ -729,12 +729,12 @@
"start": {
"line": 282,
"column": 23,
- "index": 12337
+ "index": 12344
},
"end": {
"line": 285,
"column": 3,
- "index": 12464
+ "index": 12471
}
},
{
@@ -744,12 +744,12 @@
"start": {
"line": 286,
"column": 19,
- "index": 12485
+ "index": 12492
},
"end": {
"line": 289,
"column": 3,
- "index": 12586
+ "index": 12593
}
},
{
@@ -759,12 +759,12 @@
"start": {
"line": 290,
"column": 23,
- "index": 12611
+ "index": 12618
},
"end": {
"line": 293,
"column": 3,
- "index": 12730
+ "index": 12737
}
},
{
@@ -774,12 +774,12 @@
"start": {
"line": 294,
"column": 22,
- "index": 12754
+ "index": 12761
},
"end": {
"line": 298,
"column": 3,
- "index": 12966
+ "index": 12973
}
},
{
@@ -789,12 +789,12 @@
"start": {
"line": 299,
"column": 29,
- "index": 12997
+ "index": 13004
},
"end": {
"line": 302,
"column": 3,
- "index": 13132
+ "index": 13139
}
},
{
@@ -804,12 +804,12 @@
"start": {
"line": 303,
"column": 37,
- "index": 13171
+ "index": 13178
},
"end": {
"line": 307,
"column": 3,
- "index": 13356
+ "index": 13363
}
},
{
@@ -819,12 +819,12 @@
"start": {
"line": 308,
"column": 34,
- "index": 13392
+ "index": 13399
},
"end": {
"line": 311,
"column": 3,
- "index": 13498
+ "index": 13505
}
},
{
@@ -834,12 +834,12 @@
"start": {
"line": 312,
"column": 37,
- "index": 13537
+ "index": 13544
},
"end": {
"line": 316,
"column": 3,
- "index": 13729
+ "index": 13736
}
},
{
@@ -849,12 +849,12 @@
"start": {
"line": 318,
"column": 13,
- "index": 13745
+ "index": 13752
},
"end": {
"line": 321,
"column": 3,
- "index": 13824
+ "index": 13831
}
},
{
@@ -864,12 +864,12 @@
"start": {
"line": 322,
"column": 26,
- "index": 13852
+ "index": 13859
},
"end": {
"line": 325,
"column": 3,
- "index": 13962
+ "index": 13969
}
},
{
@@ -879,12 +879,12 @@
"start": {
"line": 326,
"column": 26,
- "index": 13990
+ "index": 13997
},
"end": {
"line": 329,
"column": 3,
- "index": 14081
+ "index": 14088
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.json b/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.json
index ea32b6edf3..48f590f88f 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/AddToken/Show/MaxAmountsPerTx.json
@@ -6,12 +6,12 @@
"start": {
"line": 26,
"column": 19,
- "index": 760
+ "index": 755
},
"end": {
"line": 29,
"column": 3,
- "index": 911
+ "index": 906
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.json b/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.json
index 8d1836dc22..df16fae784 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Send/useCases/ListAmountsToSend/ListAmountsToSendScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 186,
"column": 12,
- "index": 5892
+ "index": 5913
},
"end": {
"line": 189,
"column": 3,
- "index": 5969
+ "index": 5990
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/About/About.json b/apps/wallet-mobile/translations/messages/src/features/Settings/About/About.json
index 62ce6ab8b7..545d954eb5 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/About/About.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/About/About.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Current Version",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 118,
+ "line": 120,
"column": 18,
- "index": 3088
+ "index": 3288
},
"end": {
- "line": 121,
+ "line": 123,
"column": 3,
- "index": 3168
+ "index": 3368
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Commit",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 122,
+ "line": 124,
"column": 10,
- "index": 3180
+ "index": 3380
},
"end": {
- "line": 125,
+ "line": 127,
"column": 3,
- "index": 3243
+ "index": 3443
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Network",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 126,
+ "line": 128,
"column": 11,
- "index": 3256
+ "index": 3456
},
"end": {
- "line": 129,
+ "line": 131,
"column": 3,
- "index": 3321
+ "index": 3521
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Wallet type",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 130,
+ "line": 132,
"column": 14,
- "index": 3337
+ "index": 3537
},
"end": {
- "line": 133,
+ "line": 135,
"column": 3,
- "index": 3448
+ "index": 3648
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Byron-era wallet",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 134,
+ "line": 136,
"column": 15,
- "index": 3465
+ "index": 3665
},
"end": {
- "line": 137,
+ "line": 139,
"column": 3,
- "index": 3576
+ "index": 3776
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Shelley-era wallet",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 138,
+ "line": 140,
"column": 17,
- "index": 3595
+ "index": 3795
},
"end": {
- "line": 141,
+ "line": 143,
"column": 3,
- "index": 3710
+ "index": 3910
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Unknown Wallet Type",
"file": "src/features/Settings/About/About.tsx",
"start": {
- "line": 142,
+ "line": 144,
"column": 21,
- "index": 3733
+ "index": 3933
},
"end": {
- "line": 145,
+ "line": 147,
"column": 3,
- "index": 3853
+ "index": 4053
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.json b/apps/wallet-mobile/translations/messages/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.json
index a502dff94a..44b37624d2 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!General",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 255,
+ "line": 252,
"column": 11,
- "index": 8962
+ "index": 8896
},
"end": {
- "line": 258,
+ "line": 255,
"column": 3,
- "index": 9072
+ "index": 9006
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Security & Reporting",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 259,
+ "line": 256,
"column": 21,
- "index": 9095
+ "index": 9029
},
"end": {
- "line": 262,
+ "line": 259,
"column": 3,
- "index": 9228
+ "index": 9162
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Language",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 263,
+ "line": 260,
"column": 18,
- "index": 9248
+ "index": 9182
},
"end": {
- "line": 266,
+ "line": 263,
"column": 3,
- "index": 9360
+ "index": 9294
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Theme",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 267,
+ "line": 264,
"column": 15,
- "index": 9377
+ "index": 9311
},
"end": {
- "line": 270,
+ "line": 267,
"column": 3,
- "index": 9483
+ "index": 9417
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Fiat Currency",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 271,
+ "line": 268,
"column": 22,
- "index": 9507
+ "index": 9441
},
"end": {
- "line": 274,
+ "line": 271,
"column": 3,
- "index": 9628
+ "index": 9562
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!About",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 275,
+ "line": 272,
"column": 9,
- "index": 9639
+ "index": 9573
},
"end": {
- "line": 278,
+ "line": 275,
"column": 3,
- "index": 9739
+ "index": 9673
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Terms of Service Agreement",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 279,
+ "line": 276,
"column": 18,
- "index": 9759
+ "index": 9693
},
"end": {
- "line": 282,
+ "line": 279,
"column": 3,
- "index": 9886
+ "index": 9820
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Change PIN",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 283,
+ "line": 280,
"column": 13,
- "index": 9901
+ "index": 9835
},
"end": {
- "line": 286,
+ "line": 283,
"column": 3,
- "index": 10010
+ "index": 9944
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Hide balance",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 287,
+ "line": 284,
"column": 15,
- "index": 10027
+ "index": 9961
},
"end": {
- "line": 290,
+ "line": 287,
"column": 3,
- "index": 10140
+ "index": 10074
}
},
{
@@ -139,14 +139,14 @@
"defaultMessage": "!!!This function will be applied to all wallets in your app",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 291,
+ "line": 288,
"column": 19,
- "index": 10161
+ "index": 10095
},
"end": {
- "line": 294,
+ "line": 291,
"column": 3,
- "index": 10322
+ "index": 10256
}
},
{
@@ -154,14 +154,14 @@
"defaultMessage": "!!!Sign in with your biometrics",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 295,
+ "line": 292,
"column": 20,
- "index": 10344
+ "index": 10278
},
"end": {
- "line": 298,
+ "line": 295,
"column": 3,
- "index": 10478
+ "index": 10412
}
},
{
@@ -169,14 +169,14 @@
"defaultMessage": "!!!Changes to this option will be reflected after restarting the application",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 299,
+ "line": 296,
"column": 24,
- "index": 10504
+ "index": 10438
},
"end": {
- "line": 302,
+ "line": 299,
"column": 3,
- "index": 10687
+ "index": 10621
}
},
{
@@ -184,14 +184,14 @@
"defaultMessage": "!!!Send crash report to Emurgo",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 303,
+ "line": 300,
"column": 18,
- "index": 10707
+ "index": 10641
},
"end": {
- "line": 306,
+ "line": 303,
"column": 3,
- "index": 10838
+ "index": 10772
}
},
{
@@ -199,14 +199,14 @@
"defaultMessage": "!!!Changes to this option will be reflected after restarting the application",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 307,
+ "line": 304,
"column": 22,
- "index": 10862
+ "index": 10796
},
"end": {
- "line": 310,
+ "line": 307,
"column": 3,
- "index": 11043
+ "index": 10977
}
},
{
@@ -214,14 +214,14 @@
"defaultMessage": "!!!Analytics",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 311,
+ "line": 308,
"column": 13,
- "index": 11058
+ "index": 10992
},
"end": {
- "line": 314,
+ "line": 311,
"column": 3,
- "index": 11166
+ "index": 11100
}
},
{
@@ -229,14 +229,14 @@
"defaultMessage": "!!!Privacy Policy",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 315,
+ "line": 312,
"column": 17,
- "index": 11185
+ "index": 11119
},
"end": {
- "line": 318,
+ "line": 315,
"column": 3,
- "index": 11302
+ "index": 11236
}
},
{
@@ -244,14 +244,14 @@
"defaultMessage": "!!!Enable screensharing",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 319,
+ "line": 316,
"column": 17,
- "index": 11321
+ "index": 11255
},
"end": {
- "line": 322,
+ "line": 319,
"column": 3,
- "index": 11444
+ "index": 11378
}
},
{
@@ -259,14 +259,14 @@
"defaultMessage": "!!!Changes to this option will enable you to make screenshots as well share your screen via third party apps",
"file": "src/features/Settings/ApplicationSettings/ApplicationSettingsScreen.tsx",
"start": {
- "line": 323,
+ "line": 320,
"column": 21,
- "index": 11467
+ "index": 11401
},
"end": {
- "line": 327,
+ "line": 324,
"column": 3,
- "index": 11685
+ "index": 11619
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/ChangePassword/ChangePasswordScreen.json b/apps/wallet-mobile/translations/messages/src/features/Settings/ChangePassword/ChangePasswordScreen.json
index bbbee6f6d9..62cd4b5bd5 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/ChangePassword/ChangePasswordScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/ChangePassword/ChangePasswordScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 117,
"column": 25,
- "index": 4645
+ "index": 4652
},
"end": {
"line": 120,
"column": 3,
- "index": 4767
+ "index": 4774
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 121,
"column": 25,
- "index": 4794
+ "index": 4801
},
"end": {
"line": 124,
"column": 3,
- "index": 4912
+ "index": 4919
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 125,
"column": 31,
- "index": 4945
+ "index": 4952
},
"end": {
"line": 128,
"column": 3,
- "index": 5110
+ "index": 5117
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 129,
"column": 28,
- "index": 5140
+ "index": 5147
},
"end": {
"line": 132,
"column": 3,
- "index": 5268
+ "index": 5275
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 133,
"column": 36,
- "index": 5306
+ "index": 5313
},
"end": {
"line": 136,
"column": 3,
- "index": 5445
+ "index": 5452
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 137,
"column": 18,
- "index": 5465
+ "index": 5472
},
"end": {
"line": 140,
"column": 3,
- "index": 5579
+ "index": 5586
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/ChangeWalletName/ChangeWalletName.json b/apps/wallet-mobile/translations/messages/src/features/Settings/ChangeWalletName/ChangeWalletName.json
index ce02c122a2..2a04598c42 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/ChangeWalletName/ChangeWalletName.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/ChangeWalletName/ChangeWalletName.json
@@ -6,12 +6,12 @@
"start": {
"line": 101,
"column": 16,
- "index": 3380
+ "index": 3387
},
"end": {
"line": 104,
"column": 3,
- "index": 3484
+ "index": 3491
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 105,
"column": 24,
- "index": 3510
+ "index": 3517
},
"end": {
"line": 108,
"column": 3,
- "index": 3622
+ "index": 3629
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.json b/apps/wallet-mobile/translations/messages/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.json
index 3cd7f1f837..3e740d0e39 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/EasyConfirmation/EnableEasyConfirmationScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 96,
"column": 17,
- "index": 3406
+ "index": 3420
},
"end": {
"line": 104,
"column": 3,
- "index": 3802
+ "index": 3816
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 105,
"column": 17,
- "index": 3821
+ "index": 3835
},
"end": {
"line": 110,
"column": 3,
- "index": 4058
+ "index": 4072
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 111,
"column": 22,
- "index": 4082
+ "index": 4096
},
"end": {
"line": 114,
"column": 3,
- "index": 4210
+ "index": 4224
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 115,
"column": 16,
- "index": 4228
+ "index": 4242
},
"end": {
"line": 118,
"column": 3,
- "index": 4339
+ "index": 4353
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/RemoveWallet/RemoveWalletScreen.json b/apps/wallet-mobile/translations/messages/src/features/Settings/RemoveWallet/RemoveWalletScreen.json
index e748ffa584..602a40cd04 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/RemoveWallet/RemoveWalletScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/RemoveWallet/RemoveWalletScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 126,
"column": 25,
- "index": 4037
+ "index": 4044
},
"end": {
"line": 129,
"column": 3,
- "index": 4231
+ "index": 4238
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 130,
"column": 25,
- "index": 4258
+ "index": 4265
},
"end": {
"line": 133,
"column": 3,
- "index": 4415
+ "index": 4422
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 134,
"column": 14,
- "index": 4431
+ "index": 4438
},
"end": {
"line": 137,
"column": 3,
- "index": 4535
+ "index": 4542
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 138,
"column": 19,
- "index": 4556
+ "index": 4563
},
"end": {
"line": 141,
"column": 3,
- "index": 4665
+ "index": 4672
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 142,
"column": 27,
- "index": 4694
+ "index": 4701
},
"end": {
"line": 145,
"column": 3,
- "index": 4826
+ "index": 4833
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 146,
"column": 10,
- "index": 4838
+ "index": 4845
},
"end": {
"line": 149,
"column": 3,
- "index": 4940
+ "index": 4947
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 150,
"column": 26,
- "index": 4968
+ "index": 4975
},
"end": {
"line": 154,
"column": 3,
- "index": 5182
+ "index": 5189
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/SettingsScreenNavigator.json b/apps/wallet-mobile/translations/messages/src/features/Settings/SettingsScreenNavigator.json
index 804684c423..4a56adebce 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/SettingsScreenNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/SettingsScreenNavigator.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Wallet",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 236,
+ "line": 243,
"column": 18,
- "index": 7231
+ "index": 7473
},
"end": {
- "line": 239,
+ "line": 246,
"column": 3,
- "index": 7329
+ "index": 7571
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Application",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 240,
+ "line": 247,
"column": 15,
- "index": 7346
+ "index": 7588
},
"end": {
- "line": 243,
+ "line": 250,
"column": 3,
- "index": 7455
+ "index": 7697
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Change PIN",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 244,
+ "line": 251,
"column": 24,
- "index": 7481
+ "index": 7723
},
"end": {
- "line": 247,
+ "line": 254,
"column": 3,
- "index": 7590
+ "index": 7832
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Change spending password",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 248,
+ "line": 255,
"column": 23,
- "index": 7615
+ "index": 7857
},
"end": {
- "line": 251,
+ "line": 258,
"column": 3,
- "index": 7729
+ "index": 7971
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Remove wallet",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 252,
+ "line": 259,
"column": 21,
- "index": 7752
+ "index": 7994
},
"end": {
- "line": 255,
+ "line": 262,
"column": 3,
- "index": 7853
+ "index": 8095
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Terms of Service Agreement",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 256,
+ "line": 263,
"column": 23,
- "index": 7878
+ "index": 8120
},
"end": {
- "line": 259,
+ "line": 266,
"column": 3,
- "index": 7994
+ "index": 8236
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Change wallet name",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 260,
+ "line": 267,
"column": 25,
- "index": 8021
+ "index": 8263
},
"end": {
- "line": 263,
+ "line": 270,
"column": 3,
- "index": 8125
+ "index": 8367
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Support",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 264,
+ "line": 271,
"column": 16,
- "index": 8143
+ "index": 8385
},
"end": {
- "line": 267,
+ "line": 274,
"column": 3,
- "index": 8234
+ "index": 8476
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Easy confirmation",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 268,
+ "line": 275,
"column": 31,
- "index": 8267
+ "index": 8509
},
"end": {
- "line": 271,
+ "line": 278,
"column": 3,
- "index": 8382
+ "index": 8624
}
},
{
@@ -139,14 +139,14 @@
"defaultMessage": "!!!Easy confirmation",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 272,
+ "line": 279,
"column": 32,
- "index": 8416
+ "index": 8658
},
"end": {
- "line": 275,
+ "line": 282,
"column": 3,
- "index": 8532
+ "index": 8774
}
},
{
@@ -154,14 +154,14 @@
"defaultMessage": "!!!Set PIN",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 276,
+ "line": 283,
"column": 18,
- "index": 8552
+ "index": 8794
},
"end": {
- "line": 279,
+ "line": 286,
"column": 3,
- "index": 8650
+ "index": 8892
}
},
{
@@ -169,14 +169,14 @@
"defaultMessage": "!!!Settings",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 280,
+ "line": 287,
"column": 17,
- "index": 8669
+ "index": 8911
},
"end": {
- "line": 283,
+ "line": 290,
"column": 3,
- "index": 8772
+ "index": 9014
}
},
{
@@ -184,14 +184,14 @@
"defaultMessage": "!!!Language",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 284,
+ "line": 291,
"column": 17,
- "index": 8791
+ "index": 9033
},
"end": {
- "line": 287,
+ "line": 294,
"column": 3,
- "index": 8889
+ "index": 9131
}
},
{
@@ -199,14 +199,14 @@
"defaultMessage": "!!!Theming",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 288,
+ "line": 295,
"column": 14,
- "index": 8905
+ "index": 9147
},
"end": {
- "line": 291,
+ "line": 298,
"column": 3,
- "index": 8999
+ "index": 9241
}
},
{
@@ -214,14 +214,14 @@
"defaultMessage": "!!!App settings",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 292,
+ "line": 299,
"column": 20,
- "index": 9021
+ "index": 9263
},
"end": {
- "line": 295,
+ "line": 302,
"column": 3,
- "index": 9139
+ "index": 9381
}
},
{
@@ -229,14 +229,14 @@
"defaultMessage": "!!!About",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 296,
+ "line": 303,
"column": 14,
- "index": 9155
+ "index": 9397
},
"end": {
- "line": 299,
+ "line": 306,
"column": 3,
- "index": 9255
+ "index": 9497
}
},
{
@@ -244,14 +244,14 @@
"defaultMessage": "!!!Privacy Policy",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 300,
+ "line": 307,
"column": 22,
- "index": 9279
+ "index": 9521
},
"end": {
- "line": 303,
+ "line": 310,
"column": 3,
- "index": 9382
+ "index": 9624
}
},
{
@@ -259,14 +259,29 @@
"defaultMessage": "!!!Collateral",
"file": "src/features/Settings/SettingsScreenNavigator.tsx",
"start": {
- "line": 304,
+ "line": 311,
"column": 14,
- "index": 9398
+ "index": 9640
},
"end": {
- "line": 307,
+ "line": 314,
+ "column": 3,
+ "index": 9711
+ }
+ },
+ {
+ "id": "global.log",
+ "defaultMessage": "!!!Log",
+ "file": "src/features/Settings/SettingsScreenNavigator.tsx",
+ "start": {
+ "line": 315,
+ "column": 18,
+ "index": 9731
+ },
+ "end": {
+ "line": 318,
"column": 3,
- "index": 9469
+ "index": 9788
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Settings/WalletSettings/WalletSettingsScreen.json b/apps/wallet-mobile/translations/messages/src/features/Settings/WalletSettings/WalletSettingsScreen.json
index e76096808c..8934d19b14 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Settings/WalletSettings/WalletSettingsScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Settings/WalletSettings/WalletSettingsScreen.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!General",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 239,
+ "line": 244,
"column": 11,
- "index": 7789
+ "index": 7858
},
"end": {
- "line": 242,
+ "line": 247,
"column": 3,
- "index": 7887
+ "index": 7956
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Actions",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 243,
+ "line": 248,
"column": 11,
- "index": 7900
+ "index": 7969
},
"end": {
- "line": 246,
+ "line": 251,
"column": 3,
- "index": 7998
+ "index": 8067
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Switch wallet",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 247,
+ "line": 252,
"column": 16,
- "index": 8016
+ "index": 8085
},
"end": {
- "line": 250,
+ "line": 255,
"column": 3,
- "index": 8125
+ "index": 8194
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Logout",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 251,
+ "line": 256,
"column": 10,
- "index": 8137
+ "index": 8206
},
"end": {
- "line": 254,
+ "line": 259,
"column": 3,
- "index": 8233
+ "index": 8302
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Wallet name",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 255,
+ "line": 260,
"column": 14,
- "index": 8249
+ "index": 8318
},
"end": {
- "line": 258,
+ "line": 263,
"column": 3,
- "index": 8354
+ "index": 8423
}
},
{
@@ -79,14 +79,14 @@
"defaultMessage": "!!!Security",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 259,
+ "line": 264,
"column": 12,
- "index": 8368
+ "index": 8437
},
"end": {
- "line": 262,
+ "line": 267,
"column": 3,
- "index": 8468
+ "index": 8537
}
},
{
@@ -94,14 +94,14 @@
"defaultMessage": "!!!Change spending password",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 263,
+ "line": 268,
"column": 18,
- "index": 8488
+ "index": 8557
},
"end": {
- "line": 266,
+ "line": 271,
"column": 3,
- "index": 8610
+ "index": 8679
}
},
{
@@ -109,14 +109,14 @@
"defaultMessage": "!!!Easy transaction confirmation",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 267,
+ "line": 272,
"column": 20,
- "index": 8632
+ "index": 8701
},
"end": {
- "line": 270,
+ "line": 275,
"column": 3,
- "index": 8761
+ "index": 8830
}
},
{
@@ -124,14 +124,14 @@
"defaultMessage": "!!!Skip the password and approve transactions with biometrics",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 271,
+ "line": 276,
"column": 24,
- "index": 8787
+ "index": 8856
},
"end": {
- "line": 274,
+ "line": 279,
"column": 3,
- "index": 8949
+ "index": 9018
}
},
{
@@ -139,14 +139,14 @@
"defaultMessage": "!!!Remove wallet",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 275,
+ "line": 280,
"column": 16,
- "index": 8967
+ "index": 9036
},
"end": {
- "line": 278,
+ "line": 283,
"column": 3,
- "index": 9076
+ "index": 9145
}
},
{
@@ -154,14 +154,14 @@
"defaultMessage": "!!!Collateral",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 279,
+ "line": 284,
"column": 14,
- "index": 9092
+ "index": 9161
},
"end": {
- "line": 282,
+ "line": 287,
"column": 3,
- "index": 9163
+ "index": 9232
}
},
{
@@ -169,14 +169,14 @@
"defaultMessage": "!!!Multiple addresses",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 283,
+ "line": 288,
"column": 21,
- "index": 9186
+ "index": 9255
},
"end": {
- "line": 286,
+ "line": 291,
"column": 3,
- "index": 9272
+ "index": 9341
}
},
{
@@ -184,14 +184,14 @@
"defaultMessage": "!!!Single address",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 287,
+ "line": 292,
"column": 17,
- "index": 9291
+ "index": 9360
},
"end": {
- "line": 290,
+ "line": 295,
"column": 3,
- "index": 9369
+ "index": 9438
}
},
{
@@ -199,14 +199,14 @@
"defaultMessage": "!!!By enabling this you can operate with more wallet addresses",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 291,
+ "line": 296,
"column": 25,
- "index": 9396
+ "index": 9465
},
"end": {
- "line": 294,
+ "line": 299,
"column": 3,
- "index": 9527
+ "index": 9596
}
},
{
@@ -214,14 +214,14 @@
"defaultMessage": "!!!Network:",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 296,
+ "line": 301,
"column": 11,
- "index": 9588
+ "index": 9657
},
"end": {
- "line": 299,
+ "line": 304,
"column": 3,
- "index": 9654
+ "index": 9723
}
},
{
@@ -229,14 +229,14 @@
"defaultMessage": "!!!Wallet type:",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 300,
+ "line": 305,
"column": 14,
- "index": 9670
+ "index": 9739
},
"end": {
- "line": 303,
+ "line": 308,
"column": 3,
- "index": 9776
+ "index": 9845
}
},
{
@@ -244,14 +244,14 @@
"defaultMessage": "!!!Byron-era wallet",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 304,
+ "line": 309,
"column": 15,
- "index": 9793
+ "index": 9862
},
"end": {
- "line": 307,
+ "line": 312,
"column": 3,
- "index": 9904
+ "index": 9973
}
},
{
@@ -259,14 +259,14 @@
"defaultMessage": "!!!Shelley-era wallet",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 308,
+ "line": 313,
"column": 17,
- "index": 9923
+ "index": 9992
},
"end": {
- "line": 311,
+ "line": 316,
"column": 3,
- "index": 10038
+ "index": 10107
}
},
{
@@ -274,14 +274,14 @@
"defaultMessage": "!!!Unknown Wallet Type",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 312,
+ "line": 317,
"column": 21,
- "index": 10061
+ "index": 10130
},
"end": {
- "line": 315,
+ "line": 320,
"column": 3,
- "index": 10181
+ "index": 10250
}
},
{
@@ -289,14 +289,14 @@
"defaultMessage": "!!!About",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 316,
+ "line": 321,
"column": 9,
- "index": 10192
+ "index": 10261
},
"end": {
- "line": 319,
+ "line": 324,
"column": 3,
- "index": 10286
+ "index": 10355
}
},
{
@@ -304,14 +304,14 @@
"defaultMessage": "!!!Resync",
"file": "src/features/Settings/WalletSettings/WalletSettingsScreen.tsx",
"start": {
- "line": 320,
+ "line": 325,
"column": 10,
- "index": 10298
+ "index": 10367
},
"end": {
- "line": 323,
+ "line": 328,
"column": 3,
- "index": 10400
+ "index": 10469
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/SetupWalletNavigator.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/SetupWalletNavigator.json
index aa50107c44..1b8cf454ec 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/SetupWalletNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/SetupWalletNavigator.json
@@ -6,12 +6,12 @@
"start": {
"line": 144,
"column": 21,
- "index": 5048
+ "index": 5055
},
"end": {
"line": 147,
"column": 3,
- "index": 5150
+ "index": 5157
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 148,
"column": 21,
- "index": 5173
+ "index": 5180
},
"end": {
"line": 151,
"column": 3,
- "index": 5289
+ "index": 5296
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 152,
"column": 22,
- "index": 5313
+ "index": 5320
},
"end": {
"line": 155,
"column": 3,
- "index": 5432
+ "index": 5439
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 156,
"column": 23,
- "index": 5457
+ "index": 5464
},
"end": {
"line": 159,
"column": 3,
- "index": 5571
+ "index": 5578
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 160,
"column": 27,
- "index": 5600
+ "index": 5607
},
"end": {
"line": 163,
"column": 3,
- "index": 5719
+ "index": 5726
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 164,
"column": 21,
- "index": 5742
+ "index": 5749
},
"end": {
"line": 167,
"column": 3,
- "index": 5860
+ "index": 5867
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 168,
"column": 22,
- "index": 5884
+ "index": 5891
},
"end": {
"line": 171,
"column": 3,
- "index": 6003
+ "index": 6010
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 172,
"column": 29,
- "index": 6034
+ "index": 6041
},
"end": {
"line": 175,
"column": 3,
- "index": 6148
+ "index": 6155
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 176,
"column": 26,
- "index": 6176
+ "index": 6183
},
"end": {
"line": 179,
"column": 3,
- "index": 6303
+ "index": 6310
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 180,
"column": 21,
- "index": 6326
+ "index": 6333
},
"end": {
"line": 183,
"column": 3,
- "index": 6453
+ "index": 6460
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 184,
"column": 19,
- "index": 6474
+ "index": 6481
},
"end": {
"line": 187,
"column": 3,
- "index": 6599
+ "index": 6606
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 188,
"column": 18,
- "index": 6619
+ "index": 6626
},
"end": {
"line": 191,
"column": 3,
- "index": 6730
+ "index": 6737
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/common/useStrings.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/common/useStrings.json
index 0095f15c30..c961648038 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/common/useStrings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/common/useStrings.json
@@ -6,12 +6,12 @@
"start": {
"line": 109,
"column": 14,
- "index": 8022
+ "index": 8029
},
"end": {
"line": 112,
"column": 5,
- "index": 8143
+ "index": 8150
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 113,
"column": 14,
- "index": 8159
+ "index": 8166
},
"end": {
"line": 116,
"column": 5,
- "index": 8280
+ "index": 8287
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 117,
"column": 33,
- "index": 8315
+ "index": 8322
},
"end": {
"line": 120,
"column": 5,
- "index": 8462
+ "index": 8469
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 121,
"column": 30,
- "index": 8494
+ "index": 8501
},
"end": {
"line": 124,
"column": 5,
- "index": 8616
+ "index": 8623
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 125,
"column": 30,
- "index": 8648
+ "index": 8655
},
"end": {
"line": 128,
"column": 5,
- "index": 8777
+ "index": 8784
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 129,
"column": 15,
- "index": 8794
+ "index": 8801
},
"end": {
"line": 132,
"column": 5,
- "index": 8896
+ "index": 8903
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 133,
"column": 18,
- "index": 8916
+ "index": 8923
},
"end": {
"line": 136,
"column": 5,
- "index": 9047
+ "index": 9054
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 137,
"column": 15,
- "index": 9064
+ "index": 9071
},
"end": {
"line": 140,
"column": 5,
- "index": 9189
+ "index": 9196
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 141,
"column": 20,
- "index": 9211
+ "index": 9218
},
"end": {
"line": 144,
"column": 5,
- "index": 9325
+ "index": 9332
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 145,
"column": 10,
- "index": 9337
+ "index": 9344
},
"end": {
"line": 148,
"column": 5,
- "index": 9443
+ "index": 9450
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 149,
"column": 28,
- "index": 9473
+ "index": 9480
},
"end": {
"line": 152,
"column": 5,
- "index": 9601
+ "index": 9608
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 153,
"column": 29,
- "index": 9632
+ "index": 9639
},
"end": {
"line": 156,
"column": 5,
- "index": 9773
+ "index": 9780
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 157,
"column": 29,
- "index": 9804
+ "index": 9811
},
"end": {
"line": 160,
"column": 5,
- "index": 9946
+ "index": 9953
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 161,
"column": 20,
- "index": 9968
+ "index": 9975
},
"end": {
"line": 164,
"column": 5,
- "index": 10096
+ "index": 10103
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 165,
"column": 20,
- "index": 10118
+ "index": 10125
},
"end": {
"line": 168,
"column": 5,
- "index": 10254
+ "index": 10261
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 169,
"column": 22,
- "index": 10278
+ "index": 10285
},
"end": {
"line": 172,
"column": 5,
- "index": 10410
+ "index": 10417
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 173,
"column": 31,
- "index": 10443
+ "index": 10450
},
"end": {
"line": 176,
"column": 5,
- "index": 10581
+ "index": 10588
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 177,
"column": 31,
- "index": 10614
+ "index": 10621
},
"end": {
"line": 180,
"column": 5,
- "index": 10759
+ "index": 10766
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 181,
"column": 33,
- "index": 10794
+ "index": 10801
},
"end": {
"line": 184,
"column": 5,
- "index": 10949
+ "index": 10956
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 185,
"column": 26,
- "index": 10977
+ "index": 10984
},
"end": {
"line": 189,
"column": 5,
- "index": 11210
+ "index": 11217
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 190,
"column": 18,
- "index": 11230
+ "index": 11237
},
"end": {
"line": 193,
"column": 5,
- "index": 11353
+ "index": 11360
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 194,
"column": 18,
- "index": 11373
+ "index": 11380
},
"end": {
"line": 197,
"column": 5,
- "index": 11527
+ "index": 11534
}
},
{
@@ -336,12 +336,12 @@
"start": {
"line": 198,
"column": 30,
- "index": 11559
+ "index": 11566
},
"end": {
"line": 201,
"column": 5,
- "index": 11743
+ "index": 11750
}
},
{
@@ -351,12 +351,12 @@
"start": {
"line": 202,
"column": 29,
- "index": 11774
+ "index": 11781
},
"end": {
"line": 205,
"column": 5,
- "index": 11913
+ "index": 11920
}
},
{
@@ -366,12 +366,12 @@
"start": {
"line": 206,
"column": 38,
- "index": 11953
+ "index": 11960
},
"end": {
"line": 209,
"column": 5,
- "index": 12131
+ "index": 12138
}
},
{
@@ -381,12 +381,12 @@
"start": {
"line": 210,
"column": 39,
- "index": 12172
+ "index": 12179
},
"end": {
"line": 213,
"column": 5,
- "index": 12378
+ "index": 12385
}
},
{
@@ -396,12 +396,12 @@
"start": {
"line": 214,
"column": 38,
- "index": 12418
+ "index": 12425
},
"end": {
"line": 217,
"column": 5,
- "index": 12608
+ "index": 12615
}
},
{
@@ -411,12 +411,12 @@
"start": {
"line": 218,
"column": 39,
- "index": 12649
+ "index": 12656
},
"end": {
"line": 221,
"column": 5,
- "index": 12840
+ "index": 12847
}
},
{
@@ -426,12 +426,12 @@
"start": {
"line": 222,
"column": 38,
- "index": 12880
+ "index": 12887
},
"end": {
"line": 225,
"column": 5,
- "index": 13088
+ "index": 13095
}
},
{
@@ -441,12 +441,12 @@
"start": {
"line": 226,
"column": 25,
- "index": 13115
+ "index": 13122
},
"end": {
"line": 229,
"column": 5,
- "index": 13265
+ "index": 13272
}
},
{
@@ -456,12 +456,12 @@
"start": {
"line": 230,
"column": 24,
- "index": 13291
+ "index": 13298
},
"end": {
"line": 233,
"column": 5,
- "index": 13414
+ "index": 13421
}
},
{
@@ -471,12 +471,12 @@
"start": {
"line": 234,
"column": 30,
- "index": 13446
+ "index": 13453
},
"end": {
"line": 237,
"column": 5,
- "index": 13577
+ "index": 13584
}
},
{
@@ -486,12 +486,12 @@
"start": {
"line": 238,
"column": 30,
- "index": 13609
+ "index": 13616
},
"end": {
"line": 241,
"column": 5,
- "index": 13740
+ "index": 13747
}
},
{
@@ -501,12 +501,12 @@
"start": {
"line": 242,
"column": 30,
- "index": 13772
+ "index": 13779
},
"end": {
"line": 245,
"column": 5,
- "index": 13888
+ "index": 13895
}
},
{
@@ -516,12 +516,12 @@
"start": {
"line": 246,
"column": 29,
- "index": 13919
+ "index": 13926
},
"end": {
"line": 249,
"column": 5,
- "index": 14063
+ "index": 14070
}
},
{
@@ -531,12 +531,12 @@
"start": {
"line": 250,
"column": 33,
- "index": 14098
+ "index": 14105
},
"end": {
"line": 253,
"column": 5,
- "index": 14256
+ "index": 14263
}
},
{
@@ -546,12 +546,12 @@
"start": {
"line": 254,
"column": 34,
- "index": 14292
+ "index": 14299
},
"end": {
"line": 257,
"column": 5,
- "index": 14433
+ "index": 14440
}
},
{
@@ -561,12 +561,12 @@
"start": {
"line": 258,
"column": 33,
- "index": 14468
+ "index": 14475
},
"end": {
"line": 262,
"column": 5,
- "index": 14694
+ "index": 14701
}
},
{
@@ -576,12 +576,12 @@
"start": {
"line": 263,
"column": 34,
- "index": 14730
+ "index": 14737
},
"end": {
"line": 267,
"column": 5,
- "index": 14947
+ "index": 14954
}
},
{
@@ -591,12 +591,12 @@
"start": {
"line": 268,
"column": 33,
- "index": 14982
+ "index": 14989
},
"end": {
"line": 271,
"column": 5,
- "index": 15189
+ "index": 15196
}
},
{
@@ -606,12 +606,12 @@
"start": {
"line": 272,
"column": 31,
- "index": 15222
+ "index": 15229
},
"end": {
"line": 275,
"column": 5,
- "index": 15390
+ "index": 15397
}
},
{
@@ -621,12 +621,12 @@
"start": {
"line": 276,
"column": 30,
- "index": 15422
+ "index": 15429
},
"end": {
"line": 279,
"column": 5,
- "index": 15564
+ "index": 15571
}
},
{
@@ -636,12 +636,12 @@
"start": {
"line": 280,
"column": 38,
- "index": 15604
+ "index": 15611
},
"end": {
"line": 283,
"column": 5,
- "index": 15735
+ "index": 15742
}
},
{
@@ -651,12 +651,12 @@
"start": {
"line": 284,
"column": 40,
- "index": 15777
+ "index": 15784
},
"end": {
"line": 287,
"column": 5,
- "index": 15915
+ "index": 15922
}
},
{
@@ -666,12 +666,12 @@
"start": {
"line": 288,
"column": 29,
- "index": 15946
+ "index": 15953
},
"end": {
"line": 291,
"column": 5,
- "index": 16065
+ "index": 16072
}
},
{
@@ -681,12 +681,12 @@
"start": {
"line": 292,
"column": 30,
- "index": 16097
+ "index": 16104
},
"end": {
"line": 295,
"column": 5,
- "index": 16232
+ "index": 16239
}
},
{
@@ -696,12 +696,12 @@
"start": {
"line": 296,
"column": 34,
- "index": 16268
+ "index": 16275
},
"end": {
"line": 299,
"column": 5,
- "index": 16467
+ "index": 16474
}
},
{
@@ -711,12 +711,12 @@
"start": {
"line": 300,
"column": 35,
- "index": 16504
+ "index": 16511
},
"end": {
"line": 304,
"column": 5,
- "index": 16722
+ "index": 16729
}
},
{
@@ -726,12 +726,12 @@
"start": {
"line": 305,
"column": 34,
- "index": 16758
+ "index": 16765
},
"end": {
"line": 308,
"column": 5,
- "index": 16894
+ "index": 16901
}
},
{
@@ -741,12 +741,12 @@
"start": {
"line": 309,
"column": 38,
- "index": 16934
+ "index": 16941
},
"end": {
"line": 312,
"column": 5,
- "index": 17139
+ "index": 17146
}
},
{
@@ -756,12 +756,12 @@
"start": {
"line": 313,
"column": 39,
- "index": 17180
+ "index": 17187
},
"end": {
"line": 317,
"column": 5,
- "index": 17410
+ "index": 17417
}
},
{
@@ -771,12 +771,12 @@
"start": {
"line": 318,
"column": 34,
- "index": 17446
+ "index": 17453
},
"end": {
"line": 321,
"column": 5,
- "index": 17607
+ "index": 17614
}
},
{
@@ -786,12 +786,12 @@
"start": {
"line": 322,
"column": 38,
- "index": 17647
+ "index": 17654
},
"end": {
"line": 326,
"column": 5,
- "index": 17883
+ "index": 17890
}
},
{
@@ -801,12 +801,12 @@
"start": {
"line": 327,
"column": 39,
- "index": 17924
+ "index": 17931
},
"end": {
"line": 330,
"column": 5,
- "index": 18125
+ "index": 18132
}
},
{
@@ -816,12 +816,12 @@
"start": {
"line": 331,
"column": 38,
- "index": 18165
+ "index": 18172
},
"end": {
"line": 334,
"column": 5,
- "index": 18366
+ "index": 18373
}
},
{
@@ -831,12 +831,12 @@
"start": {
"line": 335,
"column": 23,
- "index": 18391
+ "index": 18398
},
"end": {
"line": 338,
"column": 5,
- "index": 18508
+ "index": 18515
}
},
{
@@ -846,12 +846,12 @@
"start": {
"line": 339,
"column": 24,
- "index": 18534
+ "index": 18541
},
"end": {
"line": 342,
"column": 5,
- "index": 18673
+ "index": 18680
}
},
{
@@ -861,12 +861,12 @@
"start": {
"line": 343,
"column": 33,
- "index": 18708
+ "index": 18715
},
"end": {
"line": 346,
"column": 5,
- "index": 18877
+ "index": 18884
}
},
{
@@ -876,12 +876,12 @@
"start": {
"line": 347,
"column": 28,
- "index": 18907
+ "index": 18914
},
"end": {
"line": 350,
"column": 5,
- "index": 19032
+ "index": 19039
}
},
{
@@ -891,12 +891,12 @@
"start": {
"line": 351,
"column": 32,
- "index": 19066
+ "index": 19073
},
"end": {
"line": 354,
"column": 5,
- "index": 19192
+ "index": 19199
}
},
{
@@ -906,12 +906,12 @@
"start": {
"line": 355,
"column": 39,
- "index": 19233
+ "index": 19240
},
"end": {
"line": 358,
"column": 5,
- "index": 19368
+ "index": 19375
}
},
{
@@ -921,12 +921,12 @@
"start": {
"line": 359,
"column": 12,
- "index": 19382
+ "index": 19389
},
"end": {
"line": 362,
"column": 5,
- "index": 19497
+ "index": 19504
}
},
{
@@ -936,12 +936,12 @@
"start": {
"line": 363,
"column": 21,
- "index": 19520
+ "index": 19527
},
"end": {
"line": 366,
"column": 5,
- "index": 19644
+ "index": 19651
}
},
{
@@ -951,12 +951,12 @@
"start": {
"line": 367,
"column": 30,
- "index": 19676
+ "index": 19683
},
"end": {
"line": 370,
"column": 5,
- "index": 19827
+ "index": 19834
}
},
{
@@ -966,12 +966,12 @@
"start": {
"line": 371,
"column": 19,
- "index": 19848
+ "index": 19855
},
"end": {
"line": 374,
"column": 5,
- "index": 19974
+ "index": 19981
}
},
{
@@ -981,12 +981,12 @@
"start": {
"line": 375,
"column": 23,
- "index": 19999
+ "index": 20006
},
"end": {
"line": 378,
"column": 5,
- "index": 20135
+ "index": 20142
}
},
{
@@ -996,12 +996,12 @@
"start": {
"line": 379,
"column": 21,
- "index": 20158
+ "index": 20165
},
"end": {
"line": 382,
"column": 5,
- "index": 20307
+ "index": 20314
}
},
{
@@ -1011,12 +1011,12 @@
"start": {
"line": 383,
"column": 19,
- "index": 20328
+ "index": 20335
},
"end": {
"line": 386,
"column": 5,
- "index": 20478
+ "index": 20485
}
},
{
@@ -1026,12 +1026,12 @@
"start": {
"line": 387,
"column": 29,
- "index": 20509
+ "index": 20516
},
"end": {
"line": 390,
"column": 5,
- "index": 20659
+ "index": 20666
}
},
{
@@ -1041,12 +1041,12 @@
"start": {
"line": 391,
"column": 32,
- "index": 20693
+ "index": 20700
},
"end": {
"line": 394,
"column": 5,
- "index": 20828
+ "index": 20835
}
},
{
@@ -1056,12 +1056,12 @@
"start": {
"line": 395,
"column": 32,
- "index": 20862
+ "index": 20869
},
"end": {
"line": 398,
"column": 5,
- "index": 20997
+ "index": 21004
}
},
{
@@ -1071,12 +1071,12 @@
"start": {
"line": 399,
"column": 30,
- "index": 21029
+ "index": 21036
},
"end": {
"line": 402,
"column": 5,
- "index": 21230
+ "index": 21237
}
},
{
@@ -1086,12 +1086,12 @@
"start": {
"line": 403,
"column": 39,
- "index": 21271
+ "index": 21278
},
"end": {
"line": 406,
"column": 5,
- "index": 21438
+ "index": 21445
}
},
{
@@ -1101,12 +1101,12 @@
"start": {
"line": 407,
"column": 38,
- "index": 21478
+ "index": 21485
},
"end": {
"line": 411,
"column": 5,
- "index": 21720
+ "index": 21727
}
},
{
@@ -1116,12 +1116,12 @@
"start": {
"line": 412,
"column": 40,
- "index": 21762
+ "index": 21769
},
"end": {
"line": 415,
"column": 5,
- "index": 21913
+ "index": 21920
}
},
{
@@ -1131,12 +1131,12 @@
"start": {
"line": 416,
"column": 21,
- "index": 21936
+ "index": 21943
},
"end": {
"line": 419,
"column": 5,
- "index": 22081
+ "index": 22088
}
},
{
@@ -1146,12 +1146,12 @@
"start": {
"line": 420,
"column": 18,
- "index": 22101
+ "index": 22108
},
"end": {
"line": 423,
"column": 5,
- "index": 22233
+ "index": 22240
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.json
index e65ed747d8..6edb8733a3 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/CheckNanoX/CheckNanoXScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 67,
"column": 13,
- "index": 2389
+ "index": 2403
},
"end": {
"line": 70,
"column": 3,
- "index": 2535
+ "index": 2549
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.json
index dd5805ef78..9d943b97ec 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ConnectNanoX/ConnectNanoXScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 82,
"column": 13,
- "index": 2870
+ "index": 2898
},
"end": {
"line": 85,
"column": 3,
- "index": 3042
+ "index": 3070
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.json
index d092e5b09b..2818b0c274 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!To import a read-only wallet from the Yoroi extension, you will need to:",
"file": "src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx",
"start": {
- "line": 64,
+ "line": 63,
"column": 13,
- "index": 2206
+ "index": 2157
},
"end": {
- "line": 67,
+ "line": 66,
"column": 3,
- "index": 2380
+ "index": 2331
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Open \"My wallets\" page in the Yoroi extension.",
"file": "src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx",
"start": {
- "line": 68,
+ "line": 67,
"column": 9,
- "index": 2391
+ "index": 2342
},
"end": {
- "line": 71,
+ "line": 70,
"column": 3,
- "index": 2535
+ "index": 2486
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Look for the {buttonType} for the wallet you want to import in the mobile app.",
"file": "src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx",
"start": {
- "line": 72,
+ "line": 71,
"column": 9,
- "index": 2546
+ "index": 2497
},
"end": {
- "line": 75,
+ "line": 74,
"column": 3,
- "index": 2722
+ "index": 2673
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!export read-only wallet button",
"file": "src/features/SetupWallet/legacy/ImportReadOnlyWallet/ImportReadOnlyWalletScreen.tsx",
"start": {
- "line": 76,
+ "line": 75,
"column": 14,
- "index": 2738
+ "index": 2689
},
"end": {
- "line": 79,
+ "line": 78,
"column": 3,
- "index": 2871
+ "index": 2822
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.json
index dab40fad11..770756cd44 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveNanoX/SaveNanoXScreen.json
@@ -6,12 +6,12 @@
"start": {
"line": 80,
"column": 30,
- "index": 2576
+ "index": 2604
},
"end": {
"line": 83,
"column": 3,
- "index": 2713
+ "index": 2741
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.json
index 361e685a53..21bf0c64a1 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!My read-only wallet",
"file": "src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx",
"start": {
- "line": 143,
+ "line": 140,
"column": 21,
- "index": 4239
+ "index": 4124
},
"end": {
- "line": 146,
+ "line": 143,
"column": 3,
- "index": 4366
+ "index": 4251
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Checksum label",
"file": "src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx",
"start": {
- "line": 147,
+ "line": 144,
"column": 17,
- "index": 4385
+ "index": 4270
},
"end": {
- "line": 150,
+ "line": 147,
"column": 3,
- "index": 4499
+ "index": 4384
}
},
{
@@ -34,14 +34,14 @@
"defaultMessage": "!!!Wallet Address(es):",
"file": "src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx",
"start": {
- "line": 151,
+ "line": 148,
"column": 22,
- "index": 4523
+ "index": 4408
},
"end": {
- "line": 154,
+ "line": 151,
"column": 3,
- "index": 4647
+ "index": 4532
}
},
{
@@ -49,14 +49,14 @@
"defaultMessage": "!!!Key:",
"file": "src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx",
"start": {
- "line": 155,
+ "line": 152,
"column": 7,
- "index": 4656
+ "index": 4541
},
"end": {
- "line": 158,
+ "line": 155,
"column": 3,
- "index": 4754
+ "index": 4639
}
},
{
@@ -64,14 +64,14 @@
"defaultMessage": "!!!Derivation path:",
"file": "src/features/SetupWallet/legacy/SaveReadOnlyWallet/SaveReadOnlyWalletScreen.tsx",
"start": {
- "line": 159,
+ "line": 156,
"column": 18,
- "index": 4774
+ "index": 4659
},
"end": {
- "line": 162,
+ "line": 159,
"column": 3,
- "index": 4895
+ "index": 4780
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletDescription.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletDescription.json
new file mode 100644
index 0000000000..6aca0ea845
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletDescription.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "components.walletinit.walletdescription.slogan",
+ "defaultMessage": "!!!Your gateway to the financial world",
+ "file": "src/features/SetupWallet/legacy/WalletDescription.tsx",
+ "start": {
+ "line": 24,
+ "column": 10,
+ "index": 616
+ },
+ "end": {
+ "line": 27,
+ "column": 3,
+ "index": 741
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletForm.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletForm.json
new file mode 100644
index 0000000000..c407dbf3aa
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletForm.json
@@ -0,0 +1,92 @@
+[
+ {
+ "id": "components.walletinit.walletform.walletNameInputLabel",
+ "defaultMessage": "!!!Wallet name",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 146,
+ "column": 24,
+ "index": 5315
+ },
+ "end": {
+ "line": 149,
+ "column": 3,
+ "index": 5423
+ }
+ },
+ {
+ "id": "components.walletinit.walletform.newPasswordInput",
+ "defaultMessage": "!!!Spending password",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 150,
+ "column": 20,
+ "index": 5445
+ },
+ "end": {
+ "line": 153,
+ "column": 3,
+ "index": 5555
+ }
+ },
+ {
+ "id": "components.walletinit.walletform.continueButton",
+ "defaultMessage": "!!!Continue",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 154,
+ "column": 18,
+ "index": 5575
+ },
+ "end": {
+ "line": 157,
+ "column": 3,
+ "index": 5674
+ }
+ },
+ {
+ "id": "components.walletinit.createwallet.createwalletscreen.passwordLengthRequirement",
+ "defaultMessage": "!!!Minimum characters",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 158,
+ "column": 31,
+ "index": 5707
+ },
+ "end": {
+ "line": 161,
+ "column": 3,
+ "index": 5848
+ }
+ },
+ {
+ "id": "components.walletinit.walletform.repeatPasswordInputLabel",
+ "defaultMessage": "!!!Repeat password",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 162,
+ "column": 28,
+ "index": 5878
+ },
+ "end": {
+ "line": 165,
+ "column": 3,
+ "index": 5994
+ }
+ },
+ {
+ "id": "components.walletinit.walletform.repeatPasswordInputError",
+ "defaultMessage": "!!!Passwords do not match",
+ "file": "src/features/SetupWallet/legacy/WalletForm.tsx",
+ "start": {
+ "line": 166,
+ "column": 28,
+ "index": 6024
+ },
+ "end": {
+ "line": 169,
+ "column": 3,
+ "index": 6147
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.json b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.json
index dfde6e1110..ea8dff3896 100644
--- a/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.json
+++ b/apps/wallet-mobile/translations/messages/src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.json
@@ -4,14 +4,14 @@
"defaultMessage": "!!!Wallet name",
"file": "src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx",
"start": {
- "line": 140,
+ "line": 139,
"column": 24,
- "index": 4180
+ "index": 4125
},
"end": {
- "line": 143,
+ "line": 142,
"column": 3,
- "index": 4288
+ "index": 4233
}
},
{
@@ -19,14 +19,14 @@
"defaultMessage": "!!!Save",
"file": "src/features/SetupWallet/legacy/WalletNameForm/WalletNameForm.tsx",
"start": {
- "line": 144,
+ "line": 143,
"column": 8,
- "index": 4298
+ "index": 4243
},
"end": {
- "line": 147,
+ "line": 146,
"column": 3,
- "index": 4401
+ "index": 4346
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Staking/Governance/common/strings.json b/apps/wallet-mobile/translations/messages/src/features/Staking/Governance/common/strings.json
index 59bb5708b5..e63a77ae4c 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Staking/Governance/common/strings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Staking/Governance/common/strings.json
@@ -6,12 +6,12 @@
"start": {
"line": 69,
"column": 25,
- "index": 4315
+ "index": 4322
},
"end": {
"line": 72,
"column": 3,
- "index": 4422
+ "index": 4429
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 73,
"column": 18,
- "index": 4442
+ "index": 4449
},
"end": {
"line": 76,
"column": 3,
- "index": 4541
+ "index": 4548
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 77,
"column": 28,
- "index": 4571
+ "index": 4578
},
"end": {
"line": 80,
"column": 3,
- "index": 4688
+ "index": 4695
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 81,
"column": 30,
- "index": 4720
+ "index": 4727
},
"end": {
"line": 84,
"column": 3,
- "index": 4830
+ "index": 4837
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 85,
"column": 36,
- "index": 4868
+ "index": 4875
},
"end": {
"line": 89,
"column": 3,
- "index": 5073
+ "index": 5080
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 90,
"column": 22,
- "index": 5097
+ "index": 5104
},
"end": {
"line": 93,
"column": 3,
- "index": 5188
+ "index": 5195
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 94,
"column": 28,
- "index": 5218
+ "index": 5225
},
"end": {
"line": 97,
"column": 3,
- "index": 5383
+ "index": 5390
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 98,
"column": 27,
- "index": 5412
+ "index": 5419
},
"end": {
"line": 101,
"column": 3,
- "index": 5514
+ "index": 5521
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 102,
"column": 33,
- "index": 5549
+ "index": 5556
},
"end": {
"line": 105,
"column": 3,
- "index": 5719
+ "index": 5726
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 106,
"column": 11,
- "index": 5732
+ "index": 5739
},
"end": {
"line": 109,
"column": 3,
- "index": 5813
+ "index": 5820
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 110,
"column": 21,
- "index": 5836
+ "index": 5843
},
"end": {
"line": 113,
"column": 3,
- "index": 5939
+ "index": 5946
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 114,
"column": 14,
- "index": 5955
+ "index": 5962
},
"end": {
"line": 117,
"column": 3,
- "index": 6041
+ "index": 6048
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 118,
"column": 24,
- "index": 6067
+ "index": 6074
},
"end": {
"line": 121,
"column": 3,
- "index": 6182
+ "index": 6189
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 122,
"column": 17,
- "index": 6201
+ "index": 6208
},
"end": {
"line": 125,
"column": 3,
- "index": 6294
+ "index": 6301
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 126,
"column": 22,
- "index": 6318
+ "index": 6325
},
"end": {
"line": 129,
"column": 3,
- "index": 6422
+ "index": 6429
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 130,
"column": 14,
- "index": 6438
+ "index": 6445
},
"end": {
"line": 133,
"column": 3,
- "index": 6524
+ "index": 6531
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 134,
"column": 17,
- "index": 6543
+ "index": 6550
},
"end": {
"line": 137,
"column": 3,
- "index": 6661
+ "index": 6668
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 138,
"column": 10,
- "index": 6673
+ "index": 6680
},
"end": {
"line": 141,
"column": 3,
- "index": 6752
+ "index": 6759
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 142,
"column": 28,
- "index": 6782
+ "index": 6789
},
"end": {
"line": 145,
"column": 3,
- "index": 6913
+ "index": 6920
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 146,
"column": 32,
- "index": 6947
+ "index": 6954
},
"end": {
"line": 149,
"column": 3,
- "index": 7075
+ "index": 7082
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 150,
"column": 25,
- "index": 7102
+ "index": 7109
},
"end": {
"line": 154,
"column": 3,
- "index": 7330
+ "index": 7337
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 155,
"column": 18,
- "index": 7350
+ "index": 7357
},
"end": {
"line": 158,
"column": 3,
- "index": 7446
+ "index": 7453
}
},
{
@@ -336,12 +336,12 @@
"start": {
"line": 159,
"column": 16,
- "index": 7464
+ "index": 7471
},
"end": {
"line": 162,
"column": 3,
- "index": 7558
+ "index": 7565
}
},
{
@@ -351,12 +351,12 @@
"start": {
"line": 163,
"column": 17,
- "index": 7577
+ "index": 7584
},
"end": {
"line": 166,
"column": 3,
- "index": 7726
+ "index": 7733
}
},
{
@@ -366,12 +366,12 @@
"start": {
"line": 167,
"column": 34,
- "index": 7762
+ "index": 7769
},
"end": {
"line": 170,
"column": 3,
- "index": 7918
+ "index": 7925
}
},
{
@@ -381,12 +381,12 @@
"start": {
"line": 171,
"column": 25,
- "index": 7945
+ "index": 7952
},
"end": {
"line": 175,
"column": 3,
- "index": 8159
+ "index": 8166
}
},
{
@@ -396,12 +396,12 @@
"start": {
"line": 176,
"column": 14,
- "index": 8175
+ "index": 8182
},
"end": {
"line": 179,
"column": 3,
- "index": 8262
+ "index": 8269
}
},
{
@@ -411,12 +411,12 @@
"start": {
"line": 180,
"column": 11,
- "index": 8275
+ "index": 8282
},
"end": {
"line": 183,
"column": 3,
- "index": 8355
+ "index": 8362
}
},
{
@@ -426,12 +426,12 @@
"start": {
"line": 184,
"column": 22,
- "index": 8379
+ "index": 8386
},
"end": {
"line": 187,
"column": 3,
- "index": 8482
+ "index": 8489
}
},
{
@@ -441,12 +441,12 @@
"start": {
"line": 188,
"column": 9,
- "index": 8493
+ "index": 8500
},
"end": {
"line": 191,
"column": 3,
- "index": 8569
+ "index": 8576
}
},
{
@@ -456,12 +456,12 @@
"start": {
"line": 192,
"column": 21,
- "index": 8592
+ "index": 8599
},
"end": {
"line": 195,
"column": 3,
- "index": 8693
+ "index": 8700
}
},
{
@@ -471,12 +471,12 @@
"start": {
"line": 196,
"column": 32,
- "index": 8727
+ "index": 8734
},
"end": {
"line": 199,
"column": 3,
- "index": 8893
+ "index": 8900
}
},
{
@@ -486,12 +486,12 @@
"start": {
"line": 200,
"column": 12,
- "index": 8907
+ "index": 8914
},
"end": {
"line": 203,
"column": 3,
- "index": 8990
+ "index": 8997
}
},
{
@@ -501,12 +501,12 @@
"start": {
"line": 204,
"column": 24,
- "index": 9016
+ "index": 9023
},
"end": {
"line": 207,
"column": 3,
- "index": 9118
+ "index": 9125
}
},
{
@@ -516,12 +516,12 @@
"start": {
"line": 208,
"column": 30,
- "index": 9150
+ "index": 9157
},
"end": {
"line": 212,
"column": 3,
- "index": 9441
+ "index": 9448
}
},
{
@@ -531,12 +531,12 @@
"start": {
"line": 213,
"column": 25,
- "index": 9468
+ "index": 9475
},
"end": {
"line": 216,
"column": 3,
- "index": 9580
+ "index": 9587
}
},
{
@@ -546,12 +546,12 @@
"start": {
"line": 217,
"column": 15,
- "index": 9597
+ "index": 9604
},
"end": {
"line": 220,
"column": 3,
- "index": 9690
+ "index": 9697
}
},
{
@@ -561,12 +561,12 @@
"start": {
"line": 221,
"column": 35,
- "index": 9727
+ "index": 9734
},
"end": {
"line": 224,
"column": 3,
- "index": 9859
+ "index": 9866
}
},
{
@@ -576,12 +576,12 @@
"start": {
"line": 225,
"column": 34,
- "index": 9895
+ "index": 9902
},
"end": {
"line": 228,
"column": 3,
- "index": 10069
+ "index": 10076
}
},
{
@@ -591,12 +591,12 @@
"start": {
"line": 229,
"column": 14,
- "index": 10085
+ "index": 10092
},
"end": {
"line": 232,
"column": 3,
- "index": 10173
+ "index": 10180
}
},
{
@@ -606,12 +606,12 @@
"start": {
"line": 233,
"column": 10,
- "index": 10185
+ "index": 10192
},
"end": {
"line": 236,
"column": 3,
- "index": 10272
+ "index": 10279
}
},
{
@@ -621,12 +621,12 @@
"start": {
"line": 237,
"column": 22,
- "index": 10296
+ "index": 10303
},
"end": {
"line": 240,
"column": 3,
- "index": 10400
+ "index": 10407
}
},
{
@@ -636,12 +636,12 @@
"start": {
"line": 241,
"column": 19,
- "index": 10421
+ "index": 10428
},
"end": {
"line": 244,
"column": 3,
- "index": 10577
+ "index": 10584
}
},
{
@@ -651,12 +651,12 @@
"start": {
"line": 245,
"column": 15,
- "index": 10594
+ "index": 10601
},
"end": {
"line": 248,
"column": 3,
- "index": 10684
+ "index": 10691
}
},
{
@@ -666,12 +666,12 @@
"start": {
"line": 249,
"column": 25,
- "index": 10711
+ "index": 10718
},
"end": {
"line": 252,
"column": 3,
- "index": 10840
+ "index": 10847
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/Swap/common/strings.json b/apps/wallet-mobile/translations/messages/src/features/Swap/common/strings.json
index 79764e546c..1eb5148188 100644
--- a/apps/wallet-mobile/translations/messages/src/features/Swap/common/strings.json
+++ b/apps/wallet-mobile/translations/messages/src/features/Swap/common/strings.json
@@ -6,12 +6,12 @@
"start": {
"line": 165,
"column": 24,
- "index": 10644
+ "index": 10651
},
"end": {
"line": 168,
"column": 3,
- "index": 10753
+ "index": 10760
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 169,
"column": 13,
- "index": 10768
+ "index": 10775
},
"end": {
"line": 172,
"column": 3,
- "index": 10841
+ "index": 10848
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 173,
"column": 13,
- "index": 10856
+ "index": 10863
},
"end": {
"line": 176,
"column": 3,
- "index": 10938
+ "index": 10945
}
},
{
@@ -51,12 +51,12 @@
"start": {
"line": 177,
"column": 13,
- "index": 10953
+ "index": 10960
},
"end": {
"line": 180,
"column": 3,
- "index": 11032
+ "index": 11039
}
},
{
@@ -66,12 +66,12 @@
"start": {
"line": 181,
"column": 16,
- "index": 11050
+ "index": 11057
},
"end": {
"line": 184,
"column": 3,
- "index": 11135
+ "index": 11142
}
},
{
@@ -81,12 +81,12 @@
"start": {
"line": 185,
"column": 15,
- "index": 11152
+ "index": 11159
},
"end": {
"line": 188,
"column": 3,
- "index": 11228
+ "index": 11235
}
},
{
@@ -96,12 +96,12 @@
"start": {
"line": 189,
"column": 12,
- "index": 11242
+ "index": 11249
},
"end": {
"line": 192,
"column": 3,
- "index": 11319
+ "index": 11326
}
},
{
@@ -111,12 +111,12 @@
"start": {
"line": 193,
"column": 10,
- "index": 11331
+ "index": 11338
},
"end": {
"line": 196,
"column": 3,
- "index": 11404
+ "index": 11411
}
},
{
@@ -126,12 +126,12 @@
"start": {
"line": 197,
"column": 18,
- "index": 11424
+ "index": 11431
},
"end": {
"line": 200,
"column": 3,
- "index": 11513
+ "index": 11520
}
},
{
@@ -141,12 +141,12 @@
"start": {
"line": 201,
"column": 11,
- "index": 11526
+ "index": 11533
},
"end": {
"line": 204,
"column": 3,
- "index": 11600
+ "index": 11607
}
},
{
@@ -156,12 +156,12 @@
"start": {
"line": 205,
"column": 15,
- "index": 11617
+ "index": 11624
},
"end": {
"line": 208,
"column": 3,
- "index": 11700
+ "index": 11707
}
},
{
@@ -171,12 +171,12 @@
"start": {
"line": 209,
"column": 15,
- "index": 11717
+ "index": 11724
},
"end": {
"line": 212,
"column": 3,
- "index": 11800
+ "index": 11807
}
},
{
@@ -186,12 +186,12 @@
"start": {
"line": 213,
"column": 19,
- "index": 11821
+ "index": 11828
},
"end": {
"line": 217,
"column": 3,
- "index": 12022
+ "index": 12029
}
},
{
@@ -201,12 +201,12 @@
"start": {
"line": 218,
"column": 18,
- "index": 12042
+ "index": 12049
},
"end": {
"line": 222,
"column": 3,
- "index": 12371
+ "index": 12378
}
},
{
@@ -216,12 +216,12 @@
"start": {
"line": 223,
"column": 14,
- "index": 12387
+ "index": 12394
},
"end": {
"line": 226,
"column": 3,
- "index": 12468
+ "index": 12475
}
},
{
@@ -231,12 +231,12 @@
"start": {
"line": 227,
"column": 21,
- "index": 12491
+ "index": 12498
},
"end": {
"line": 230,
"column": 3,
- "index": 12586
+ "index": 12593
}
},
{
@@ -246,12 +246,12 @@
"start": {
"line": 231,
"column": 26,
- "index": 12614
+ "index": 12621
},
"end": {
"line": 234,
"column": 3,
- "index": 12763
+ "index": 12770
}
},
{
@@ -261,12 +261,12 @@
"start": {
"line": 235,
"column": 25,
- "index": 12790
+ "index": 12797
},
"end": {
"line": 238,
"column": 3,
- "index": 12894
+ "index": 12901
}
},
{
@@ -276,12 +276,12 @@
"start": {
"line": 239,
"column": 14,
- "index": 12910
+ "index": 12917
},
"end": {
"line": 242,
"column": 3,
- "index": 12998
+ "index": 13005
}
},
{
@@ -291,12 +291,12 @@
"start": {
"line": 243,
"column": 12,
- "index": 13012
+ "index": 13019
},
"end": {
"line": 246,
"column": 3,
- "index": 13109
+ "index": 13116
}
},
{
@@ -306,12 +306,12 @@
"start": {
"line": 247,
"column": 16,
- "index": 13127
+ "index": 13134
},
"end": {
"line": 250,
"column": 3,
- "index": 13265
+ "index": 13272
}
},
{
@@ -321,12 +321,12 @@
"start": {
"line": 251,
"column": 12,
- "index": 13279
+ "index": 13286
},
"end": {
"line": 254,
"column": 3,
- "index": 13353
+ "index": 13360
}
},
{
@@ -336,12 +336,12 @@
"start": {
"line": 255,
"column": 14,
- "index": 13369
+ "index": 13376
},
"end": {
"line": 258,
"column": 3,
- "index": 13449
+ "index": 13456
}
},
{
@@ -351,12 +351,12 @@
"start": {
"line": 259,
"column": 14,
- "index": 13465
+ "index": 13472
},
"end": {
"line": 263,
"column": 3,
- "index": 13646
+ "index": 13653
}
},
{
@@ -366,12 +366,12 @@
"start": {
"line": 264,
"column": 19,
- "index": 13667
+ "index": 13674
},
"end": {
"line": 267,
"column": 3,
- "index": 13749
+ "index": 13756
}
},
{
@@ -381,12 +381,12 @@
"start": {
"line": 268,
"column": 12,
- "index": 13763
+ "index": 13770
},
"end": {
"line": 271,
"column": 3,
- "index": 13926
+ "index": 13933
}
},
{
@@ -396,12 +396,12 @@
"start": {
"line": 272,
"column": 17,
- "index": 13945
+ "index": 13952
},
"end": {
"line": 275,
"column": 3,
- "index": 14022
+ "index": 14029
}
},
{
@@ -411,12 +411,12 @@
"start": {
"line": 276,
"column": 20,
- "index": 14044
+ "index": 14051
},
"end": {
"line": 279,
"column": 3,
- "index": 14142
+ "index": 14149
}
},
{
@@ -426,12 +426,12 @@
"start": {
"line": 280,
"column": 18,
- "index": 14162
+ "index": 14169
},
"end": {
"line": 283,
"column": 3,
- "index": 14250
+ "index": 14257
}
},
{
@@ -441,12 +441,12 @@
"start": {
"line": 284,
"column": 24,
- "index": 14276
+ "index": 14283
},
"end": {
"line": 288,
"column": 3,
- "index": 14579
+ "index": 14586
}
},
{
@@ -456,12 +456,12 @@
"start": {
"line": 289,
"column": 19,
- "index": 14600
+ "index": 14607
},
"end": {
"line": 292,
"column": 3,
- "index": 14746
+ "index": 14753
}
},
{
@@ -471,12 +471,12 @@
"start": {
"line": 293,
"column": 24,
- "index": 14772
+ "index": 14779
},
"end": {
"line": 296,
"column": 3,
- "index": 14864
+ "index": 14871
}
},
{
@@ -486,12 +486,12 @@
"start": {
"line": 297,
"column": 17,
- "index": 14883
+ "index": 14890
},
"end": {
"line": 300,
"column": 3,
- "index": 15020
+ "index": 15027
}
},
{
@@ -501,12 +501,12 @@
"start": {
"line": 301,
"column": 20,
- "index": 15042
+ "index": 15049
},
"end": {
"line": 304,
"column": 3,
- "index": 15137
+ "index": 15144
}
},
{
@@ -516,12 +516,12 @@
"start": {
"line": 305,
"column": 10,
- "index": 15149
+ "index": 15156
},
"end": {
"line": 308,
"column": 3,
- "index": 15226
+ "index": 15233
}
},
{
@@ -531,12 +531,12 @@
"start": {
"line": 309,
"column": 24,
- "index": 15252
+ "index": 15259
},
"end": {
"line": 313,
"column": 3,
- "index": 15534
+ "index": 15541
}
},
{
@@ -546,12 +546,12 @@
"start": {
"line": 314,
"column": 9,
- "index": 15545
+ "index": 15552
},
"end": {
"line": 317,
"column": 3,
- "index": 15607
+ "index": 15614
}
},
{
@@ -561,12 +561,12 @@
"start": {
"line": 318,
"column": 17,
- "index": 15626
+ "index": 15633
},
"end": {
"line": 321,
"column": 3,
- "index": 15728
+ "index": 15735
}
},
{
@@ -576,12 +576,12 @@
"start": {
"line": 322,
"column": 20,
- "index": 15750
+ "index": 15757
},
"end": {
"line": 325,
"column": 3,
- "index": 15856
+ "index": 15863
}
},
{
@@ -591,12 +591,12 @@
"start": {
"line": 326,
"column": 21,
- "index": 15879
+ "index": 15886
},
"end": {
"line": 329,
"column": 3,
- "index": 15981
+ "index": 15988
}
},
{
@@ -606,12 +606,12 @@
"start": {
"line": 330,
"column": 17,
- "index": 16000
+ "index": 16007
},
"end": {
"line": 333,
"column": 3,
- "index": 16087
+ "index": 16094
}
},
{
@@ -621,12 +621,12 @@
"start": {
"line": 334,
"column": 14,
- "index": 16103
+ "index": 16110
},
"end": {
"line": 337,
"column": 3,
- "index": 16184
+ "index": 16191
}
},
{
@@ -636,12 +636,12 @@
"start": {
"line": 338,
"column": 19,
- "index": 16205
+ "index": 16212
},
"end": {
"line": 341,
"column": 3,
- "index": 16296
+ "index": 16303
}
},
{
@@ -651,12 +651,12 @@
"start": {
"line": 342,
"column": 7,
- "index": 16305
+ "index": 16312
},
"end": {
"line": 345,
"column": 3,
- "index": 16371
+ "index": 16378
}
},
{
@@ -666,12 +666,12 @@
"start": {
"line": 346,
"column": 11,
- "index": 16384
+ "index": 16391
},
"end": {
"line": 349,
"column": 3,
- "index": 16459
+ "index": 16466
}
},
{
@@ -681,12 +681,12 @@
"start": {
"line": 350,
"column": 14,
- "index": 16475
+ "index": 16482
},
"end": {
"line": 353,
"column": 3,
- "index": 16557
+ "index": 16564
}
},
{
@@ -696,12 +696,12 @@
"start": {
"line": 354,
"column": 26,
- "index": 16585
+ "index": 16592
},
"end": {
"line": 357,
"column": 3,
- "index": 16678
+ "index": 16685
}
},
{
@@ -711,12 +711,12 @@
"start": {
"line": 358,
"column": 32,
- "index": 16712
+ "index": 16719
},
"end": {
"line": 363,
"column": 3,
- "index": 16932
+ "index": 16939
}
},
{
@@ -726,12 +726,12 @@
"start": {
"line": 364,
"column": 30,
- "index": 16964
+ "index": 16971
},
"end": {
"line": 367,
"column": 3,
- "index": 17066
+ "index": 17073
}
},
{
@@ -741,12 +741,12 @@
"start": {
"line": 368,
"column": 32,
- "index": 17100
+ "index": 17107
},
"end": {
"line": 371,
"column": 3,
- "index": 17200
+ "index": 17207
}
},
{
@@ -756,12 +756,12 @@
"start": {
"line": 372,
"column": 25,
- "index": 17227
+ "index": 17234
},
"end": {
"line": 375,
"column": 3,
- "index": 17312
+ "index": 17319
}
},
{
@@ -771,12 +771,12 @@
"start": {
"line": 376,
"column": 28,
- "index": 17342
+ "index": 17349
},
"end": {
"line": 379,
"column": 3,
- "index": 17430
+ "index": 17437
}
},
{
@@ -786,12 +786,12 @@
"start": {
"line": 380,
"column": 21,
- "index": 17453
+ "index": 17460
},
"end": {
"line": 383,
"column": 3,
- "index": 17551
+ "index": 17558
}
},
{
@@ -801,12 +801,12 @@
"start": {
"line": 384,
"column": 22,
- "index": 17575
+ "index": 17582
},
"end": {
"line": 387,
"column": 3,
- "index": 17741
+ "index": 17748
}
},
{
@@ -816,12 +816,12 @@
"start": {
"line": 388,
"column": 7,
- "index": 17750
+ "index": 17757
},
"end": {
"line": 391,
"column": 3,
- "index": 17817
+ "index": 17824
}
},
{
@@ -831,12 +831,12 @@
"start": {
"line": 392,
"column": 17,
- "index": 17836
+ "index": 17843
},
"end": {
"line": 395,
"column": 3,
- "index": 17924
+ "index": 17931
}
},
{
@@ -846,12 +846,12 @@
"start": {
"line": 396,
"column": 9,
- "index": 17935
+ "index": 17942
},
"end": {
"line": 399,
"column": 3,
- "index": 18008
+ "index": 18015
}
},
{
@@ -861,12 +861,12 @@
"start": {
"line": 400,
"column": 9,
- "index": 18019
+ "index": 18026
},
"end": {
"line": 403,
"column": 3,
- "index": 18080
+ "index": 18087
}
},
{
@@ -876,12 +876,12 @@
"start": {
"line": 404,
"column": 19,
- "index": 18101
+ "index": 18108
},
"end": {
"line": 407,
"column": 3,
- "index": 18183
+ "index": 18190
}
},
{
@@ -891,12 +891,12 @@
"start": {
"line": 408,
"column": 20,
- "index": 18205
+ "index": 18212
},
"end": {
"line": 411,
"column": 3,
- "index": 18289
+ "index": 18296
}
},
{
@@ -906,12 +906,12 @@
"start": {
"line": 412,
"column": 25,
- "index": 18316
+ "index": 18323
},
"end": {
"line": 415,
"column": 3,
- "index": 18436
+ "index": 18443
}
},
{
@@ -921,12 +921,12 @@
"start": {
"line": 416,
"column": 8,
- "index": 18446
+ "index": 18453
},
"end": {
"line": 419,
"column": 3,
- "index": 18505
+ "index": 18512
}
},
{
@@ -936,12 +936,12 @@
"start": {
"line": 420,
"column": 14,
- "index": 18521
+ "index": 18528
},
"end": {
"line": 423,
"column": 3,
- "index": 18580
+ "index": 18587
}
},
{
@@ -951,12 +951,12 @@
"start": {
"line": 424,
"column": 23,
- "index": 18605
+ "index": 18612
},
"end": {
"line": 427,
"column": 3,
- "index": 18690
+ "index": 18697
}
},
{
@@ -966,12 +966,12 @@
"start": {
"line": 428,
"column": 18,
- "index": 18710
+ "index": 18717
},
"end": {
"line": 431,
"column": 3,
- "index": 18785
+ "index": 18792
}
},
{
@@ -981,12 +981,12 @@
"start": {
"line": 432,
"column": 24,
- "index": 18811
+ "index": 18818
},
"end": {
"line": 435,
"column": 3,
- "index": 18908
+ "index": 18915
}
},
{
@@ -996,12 +996,12 @@
"start": {
"line": 436,
"column": 29,
- "index": 18939
+ "index": 18946
},
"end": {
"line": 439,
"column": 3,
- "index": 19026
+ "index": 19033
}
},
{
@@ -1011,12 +1011,12 @@
"start": {
"line": 440,
"column": 31,
- "index": 19059
+ "index": 19066
},
"end": {
"line": 443,
"column": 3,
- "index": 19180
+ "index": 19187
}
},
{
@@ -1026,12 +1026,12 @@
"start": {
"line": 444,
"column": 23,
- "index": 19205
+ "index": 19212
},
"end": {
"line": 447,
"column": 3,
- "index": 19312
+ "index": 19319
}
},
{
@@ -1041,12 +1041,12 @@
"start": {
"line": 448,
"column": 29,
- "index": 19343
+ "index": 19350
},
"end": {
"line": 451,
"column": 3,
- "index": 19430
+ "index": 19437
}
},
{
@@ -1056,12 +1056,12 @@
"start": {
"line": 452,
"column": 30,
- "index": 19462
+ "index": 19469
},
"end": {
"line": 455,
"column": 3,
- "index": 19551
+ "index": 19558
}
},
{
@@ -1071,12 +1071,12 @@
"start": {
"line": 456,
"column": 32,
- "index": 19585
+ "index": 19592
},
"end": {
"line": 459,
"column": 3,
- "index": 19678
+ "index": 19685
}
},
{
@@ -1086,12 +1086,12 @@
"start": {
"line": 460,
"column": 34,
- "index": 19714
+ "index": 19721
},
"end": {
"line": 463,
"column": 3,
- "index": 19811
+ "index": 19818
}
},
{
@@ -1101,12 +1101,12 @@
"start": {
"line": 464,
"column": 26,
- "index": 19839
+ "index": 19846
},
"end": {
"line": 467,
"column": 3,
- "index": 19919
+ "index": 19926
}
},
{
@@ -1116,12 +1116,12 @@
"start": {
"line": 468,
"column": 23,
- "index": 19944
+ "index": 19951
},
"end": {
"line": 471,
"column": 3,
- "index": 20018
+ "index": 20025
}
},
{
@@ -1131,12 +1131,12 @@
"start": {
"line": 472,
"column": 19,
- "index": 20039
+ "index": 20046
},
"end": {
"line": 475,
"column": 3,
- "index": 20109
+ "index": 20116
}
},
{
@@ -1146,12 +1146,12 @@
"start": {
"line": 476,
"column": 27,
- "index": 20138
+ "index": 20145
},
"end": {
"line": 479,
"column": 3,
- "index": 20225
+ "index": 20232
}
},
{
@@ -1161,12 +1161,12 @@
"start": {
"line": 480,
"column": 25,
- "index": 20252
+ "index": 20259
},
"end": {
"line": 483,
"column": 3,
- "index": 20335
+ "index": 20342
}
},
{
@@ -1176,12 +1176,12 @@
"start": {
"line": 484,
"column": 27,
- "index": 20364
+ "index": 20371
},
"end": {
"line": 487,
"column": 3,
- "index": 20451
+ "index": 20458
}
},
{
@@ -1191,12 +1191,12 @@
"start": {
"line": 488,
"column": 18,
- "index": 20471
+ "index": 20478
},
"end": {
"line": 491,
"column": 3,
- "index": 20549
+ "index": 20556
}
},
{
@@ -1206,12 +1206,12 @@
"start": {
"line": 492,
"column": 26,
- "index": 20577
+ "index": 20584
},
"end": {
"line": 495,
"column": 3,
- "index": 20695
+ "index": 20702
}
},
{
@@ -1221,12 +1221,12 @@
"start": {
"line": 496,
"column": 18,
- "index": 20715
+ "index": 20722
},
"end": {
"line": 501,
"column": 3,
- "index": 20944
+ "index": 20951
}
},
{
@@ -1236,12 +1236,12 @@
"start": {
"line": 502,
"column": 13,
- "index": 20959
+ "index": 20966
},
"end": {
"line": 505,
"column": 3,
- "index": 21073
+ "index": 21080
}
},
{
@@ -1251,12 +1251,12 @@
"start": {
"line": 506,
"column": 26,
- "index": 21101
+ "index": 21108
},
"end": {
"line": 509,
"column": 3,
- "index": 21253
+ "index": 21260
}
},
{
@@ -1266,12 +1266,12 @@
"start": {
"line": 510,
"column": 24,
- "index": 21279
+ "index": 21286
},
"end": {
"line": 513,
"column": 3,
- "index": 21473
+ "index": 21480
}
},
{
@@ -1281,12 +1281,12 @@
"start": {
"line": 514,
"column": 19,
- "index": 21494
+ "index": 21501
},
"end": {
"line": 517,
"column": 3,
- "index": 21620
+ "index": 21627
}
},
{
@@ -1296,12 +1296,12 @@
"start": {
"line": 518,
"column": 18,
- "index": 21640
+ "index": 21647
},
"end": {
"line": 521,
"column": 3,
- "index": 21750
+ "index": 21757
}
},
{
@@ -1311,12 +1311,12 @@
"start": {
"line": 522,
"column": 22,
- "index": 21774
+ "index": 21781
},
"end": {
"line": 525,
"column": 3,
- "index": 21868
+ "index": 21875
}
},
{
@@ -1326,12 +1326,12 @@
"start": {
"line": 526,
"column": 26,
- "index": 21896
+ "index": 21903
},
"end": {
"line": 529,
"column": 3,
- "index": 22054
+ "index": 22061
}
},
{
@@ -1341,12 +1341,12 @@
"start": {
"line": 530,
"column": 20,
- "index": 22076
+ "index": 22083
},
"end": {
"line": 533,
"column": 3,
- "index": 22182
+ "index": 22189
}
},
{
@@ -1356,12 +1356,12 @@
"start": {
"line": 536,
"column": 11,
- "index": 22241
+ "index": 22248
},
"end": {
"line": 539,
"column": 3,
- "index": 22336
+ "index": 22343
}
},
{
@@ -1371,12 +1371,12 @@
"start": {
"line": 540,
"column": 12,
- "index": 22350
+ "index": 22357
},
"end": {
"line": 543,
"column": 3,
- "index": 22453
+ "index": 22460
}
},
{
@@ -1386,12 +1386,12 @@
"start": {
"line": 544,
"column": 9,
- "index": 22464
+ "index": 22471
},
"end": {
"line": 547,
"column": 3,
- "index": 22554
+ "index": 22561
}
},
{
@@ -1401,12 +1401,12 @@
"start": {
"line": 548,
"column": 16,
- "index": 22572
+ "index": 22579
},
"end": {
"line": 551,
"column": 3,
- "index": 22668
+ "index": 22675
}
},
{
@@ -1416,12 +1416,12 @@
"start": {
"line": 552,
"column": 20,
- "index": 22690
+ "index": 22697
},
"end": {
"line": 555,
"column": 3,
- "index": 22779
+ "index": 22786
}
},
{
@@ -1431,12 +1431,12 @@
"start": {
"line": 556,
"column": 11,
- "index": 22792
+ "index": 22799
},
"end": {
"line": 559,
"column": 3,
- "index": 22886
+ "index": 22893
}
},
{
@@ -1446,12 +1446,12 @@
"start": {
"line": 560,
"column": 20,
- "index": 22908
+ "index": 22915
},
"end": {
"line": 563,
"column": 3,
- "index": 23006
+ "index": 23013
}
},
{
@@ -1461,12 +1461,12 @@
"start": {
"line": 564,
"column": 22,
- "index": 23030
+ "index": 23037
},
"end": {
"line": 567,
"column": 3,
- "index": 23142
+ "index": 23149
}
},
{
@@ -1476,12 +1476,12 @@
"start": {
"line": 568,
"column": 22,
- "index": 23166
+ "index": 23173
},
"end": {
"line": 571,
"column": 3,
- "index": 23321
+ "index": 23328
}
},
{
@@ -1491,12 +1491,12 @@
"start": {
"line": 572,
"column": 28,
- "index": 23351
+ "index": 23358
},
"end": {
"line": 575,
"column": 3,
- "index": 23472
+ "index": 23479
}
},
{
@@ -1506,12 +1506,12 @@
"start": {
"line": 576,
"column": 23,
- "index": 23497
+ "index": 23504
},
"end": {
"line": 580,
"column": 3,
- "index": 23795
+ "index": 23802
}
},
{
@@ -1521,12 +1521,12 @@
"start": {
"line": 581,
"column": 17,
- "index": 23814
+ "index": 23821
},
"end": {
"line": 584,
"column": 3,
- "index": 23916
+ "index": 23923
}
},
{
@@ -1536,12 +1536,12 @@
"start": {
"line": 585,
"column": 16,
- "index": 23934
+ "index": 23941
},
"end": {
"line": 588,
"column": 3,
- "index": 24089
+ "index": 24096
}
},
{
@@ -1551,12 +1551,12 @@
"start": {
"line": 589,
"column": 18,
- "index": 24109
+ "index": 24116
},
"end": {
"line": 592,
"column": 3,
- "index": 24203
+ "index": 24210
}
},
{
@@ -1566,12 +1566,12 @@
"start": {
"line": 593,
"column": 20,
- "index": 24225
+ "index": 24232
},
"end": {
"line": 596,
"column": 3,
- "index": 24319
+ "index": 24326
}
},
{
@@ -1581,12 +1581,12 @@
"start": {
"line": 597,
"column": 19,
- "index": 24340
+ "index": 24347
},
"end": {
"line": 600,
"column": 3,
- "index": 24444
+ "index": 24451
}
},
{
@@ -1596,12 +1596,12 @@
"start": {
"line": 601,
"column": 23,
- "index": 24469
+ "index": 24476
},
"end": {
"line": 604,
"column": 3,
- "index": 24592
+ "index": 24599
}
},
{
@@ -1611,12 +1611,12 @@
"start": {
"line": 605,
"column": 10,
- "index": 24604
+ "index": 24611
},
"end": {
"line": 608,
"column": 3,
- "index": 24719
+ "index": 24726
}
},
{
@@ -1626,12 +1626,12 @@
"start": {
"line": 609,
"column": 20,
- "index": 24741
+ "index": 24748
},
"end": {
"line": 612,
"column": 3,
- "index": 24841
+ "index": 24848
}
},
{
@@ -1641,12 +1641,12 @@
"start": {
"line": 613,
"column": 12,
- "index": 24855
+ "index": 24862
},
"end": {
"line": 616,
"column": 3,
- "index": 24958
+ "index": 24965
}
},
{
@@ -1656,12 +1656,12 @@
"start": {
"line": 617,
"column": 24,
- "index": 24984
+ "index": 24991
},
"end": {
"line": 620,
"column": 3,
- "index": 25078
+ "index": 25085
}
},
{
@@ -1671,12 +1671,12 @@
"start": {
"line": 621,
"column": 23,
- "index": 25103
+ "index": 25110
},
"end": {
"line": 625,
"column": 3,
- "index": 25306
+ "index": 25313
}
},
{
@@ -1686,12 +1686,12 @@
"start": {
"line": 626,
"column": 31,
- "index": 25339
+ "index": 25346
},
"end": {
"line": 629,
"column": 3,
- "index": 25432
+ "index": 25439
}
},
{
@@ -1701,12 +1701,12 @@
"start": {
"line": 630,
"column": 31,
- "index": 25465
+ "index": 25472
},
"end": {
"line": 633,
"column": 3,
- "index": 25600
+ "index": 25607
}
},
{
@@ -1716,12 +1716,12 @@
"start": {
"line": 634,
"column": 19,
- "index": 25621
+ "index": 25628
},
"end": {
"line": 637,
"column": 3,
- "index": 25719
+ "index": 25726
}
},
{
@@ -1731,12 +1731,12 @@
"start": {
"line": 638,
"column": 22,
- "index": 25743
+ "index": 25750
},
"end": {
"line": 641,
"column": 3,
- "index": 25866
+ "index": 25873
}
},
{
@@ -1746,12 +1746,12 @@
"start": {
"line": 642,
"column": 24,
- "index": 25892
+ "index": 25899
},
"end": {
"line": 645,
"column": 3,
- "index": 25995
+ "index": 26002
}
},
{
@@ -1761,12 +1761,12 @@
"start": {
"line": 646,
"column": 15,
- "index": 26012
+ "index": 26019
},
"end": {
"line": 649,
"column": 3,
- "index": 26095
+ "index": 26102
}
},
{
@@ -1776,12 +1776,12 @@
"start": {
"line": 650,
"column": 23,
- "index": 26120
+ "index": 26127
},
"end": {
"line": 653,
"column": 3,
- "index": 26229
+ "index": 26236
}
},
{
@@ -1791,12 +1791,12 @@
"start": {
"line": 654,
"column": 30,
- "index": 26261
+ "index": 26268
},
"end": {
"line": 658,
"column": 3,
- "index": 26451
+ "index": 26458
}
},
{
@@ -1806,12 +1806,12 @@
"start": {
"line": 659,
"column": 34,
- "index": 26487
+ "index": 26494
},
"end": {
"line": 662,
"column": 3,
- "index": 26667
+ "index": 26674
}
},
{
@@ -1821,12 +1821,12 @@
"start": {
"line": 663,
"column": 19,
- "index": 26688
+ "index": 26695
},
"end": {
"line": 666,
"column": 3,
- "index": 26857
+ "index": 26864
}
},
{
@@ -1836,12 +1836,12 @@
"start": {
"line": 667,
"column": 11,
- "index": 26870
+ "index": 26877
},
"end": {
"line": 670,
"column": 3,
- "index": 26964
+ "index": 26971
}
},
{
@@ -1851,12 +1851,12 @@
"start": {
"line": 671,
"column": 20,
- "index": 26986
+ "index": 26993
},
"end": {
"line": 674,
"column": 3,
- "index": 27081
+ "index": 27088
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.json b/apps/wallet-mobile/translations/messages/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.json
index 34d88f8e2f..dbaa95b647 100644
--- a/apps/wallet-mobile/translations/messages/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.json
+++ b/apps/wallet-mobile/translations/messages/src/features/ToggleAnalyticsSettings/ToggleAnalyticsSettingsNavigator.json
@@ -6,12 +6,12 @@
"start": {
"line": 39,
"column": 16,
- "index": 1171
+ "index": 1178
},
"end": {
"line": 42,
"column": 3,
- "index": 1266
+ "index": 1273
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/kernel/i18n/global-messages.json b/apps/wallet-mobile/translations/messages/src/kernel/i18n/global-messages.json
new file mode 100644
index 0000000000..94b12700e9
--- /dev/null
+++ b/apps/wallet-mobile/translations/messages/src/kernel/i18n/global-messages.json
@@ -0,0 +1,2523 @@
+[
+ {
+ "id": "global.actions.dialogs.logout.title",
+ "defaultMessage": "!!!Logout",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 13,
+ "column": 11,
+ "index": 413
+ },
+ "end": {
+ "line": 16,
+ "column": 5,
+ "index": 504
+ }
+ },
+ {
+ "id": "global.actions.dialogs.logout.message",
+ "defaultMessage": "!!!Do you really want to logout?",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 17,
+ "column": 13,
+ "index": 519
+ },
+ "end": {
+ "line": 20,
+ "column": 5,
+ "index": 635
+ }
+ },
+ {
+ "id": "global.actions.dialogs.logout.yesButton",
+ "defaultMessage": "!!!Yes",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 39,
+ "column": 15,
+ "index": 1091
+ },
+ "end": {
+ "line": 42,
+ "column": 5,
+ "index": 1183
+ }
+ },
+ {
+ "id": "global.cancel",
+ "defaultMessage": "!!!Cancel",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 830,
+ "column": 10,
+ "index": 24276
+ },
+ "end": {
+ "line": 833,
+ "column": 3,
+ "index": 24339
+ }
+ },
+ {
+ "id": "global.actions.dialogs.resync.title",
+ "defaultMessage": "!!!Title",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 31,
+ "column": 11,
+ "index": 875
+ },
+ "end": {
+ "line": 34,
+ "column": 5,
+ "index": 965
+ }
+ },
+ {
+ "id": "global.actions.dialogs.resync.message",
+ "defaultMessage": "!!!Message",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 35,
+ "column": 13,
+ "index": 980
+ },
+ "end": {
+ "line": 38,
+ "column": 5,
+ "index": 1074
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.confirmButton",
+ "defaultMessage": "!!!Confirm",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 49,
+ "column": 19,
+ "index": 1329
+ },
+ "end": {
+ "line": 52,
+ "column": 5,
+ "index": 1436
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.continueButton",
+ "defaultMessage": "!!!Continue",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 53,
+ "column": 20,
+ "index": 1458
+ },
+ "end": {
+ "line": 56,
+ "column": 5,
+ "index": 1567
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.cancelButton",
+ "defaultMessage": "!!!Cancel",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 57,
+ "column": 18,
+ "index": 1587
+ },
+ "end": {
+ "line": 60,
+ "column": 5,
+ "index": 1692
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.backButton",
+ "defaultMessage": "!!!Back",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 61,
+ "column": 16,
+ "index": 1710
+ },
+ "end": {
+ "line": 64,
+ "column": 5,
+ "index": 1811
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.iUnderstandButton",
+ "defaultMessage": "!!!I understand",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 65,
+ "column": 23,
+ "index": 1836
+ },
+ "end": {
+ "line": 68,
+ "column": 5,
+ "index": 1952
+ }
+ },
+ {
+ "id": "global.actions.dialogs.commonbuttons.completeButton",
+ "defaultMessage": "!!!Complete",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 69,
+ "column": 20,
+ "index": 1974
+ },
+ "end": {
+ "line": 72,
+ "column": 5,
+ "index": 2083
+ }
+ },
+ {
+ "id": "global.txLabels.incorrectSpendingPassword",
+ "defaultMessage": "!!!Incorrect spending password",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 78,
+ "column": 29,
+ "index": 2211
+ },
+ "end": {
+ "line": 81,
+ "column": 3,
+ "index": 2323
+ }
+ },
+ {
+ "id": "global.txLabels.amount",
+ "defaultMessage": "!!!Amount",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 82,
+ "column": 10,
+ "index": 2335
+ },
+ "end": {
+ "line": 85,
+ "column": 3,
+ "index": 2407
+ }
+ },
+ {
+ "id": "global.txLabels.balanceAfterTx",
+ "defaultMessage": "!!!Balance after transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 86,
+ "column": 18,
+ "index": 2427
+ },
+ "end": {
+ "line": 89,
+ "column": 3,
+ "index": 2526
+ }
+ },
+ {
+ "id": "global.txLabels.confirmTx",
+ "defaultMessage": "!!!Confirm transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 90,
+ "column": 13,
+ "index": 2541
+ },
+ "end": {
+ "line": 93,
+ "column": 3,
+ "index": 2629
+ }
+ },
+ {
+ "id": "global.txLabels.fees",
+ "defaultMessage": "!!!Fees",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 94,
+ "column": 8,
+ "index": 2639
+ },
+ "end": {
+ "line": 97,
+ "column": 3,
+ "index": 2707
+ }
+ },
+ {
+ "id": "components.walletinit.restorewallet.upgradeconfirmmodal.fromLabel",
+ "defaultMessage": "!!!From",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 98,
+ "column": 8,
+ "index": 2717
+ },
+ "end": {
+ "line": 101,
+ "column": 3,
+ "index": 2830
+ }
+ },
+ {
+ "id": "global.txLabels.password",
+ "defaultMessage": "!!!Spending password",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 102,
+ "column": 12,
+ "index": 2844
+ },
+ "end": {
+ "line": 105,
+ "column": 3,
+ "index": 2929
+ }
+ },
+ {
+ "id": "global.txLabels.receiver",
+ "defaultMessage": "!!!Receiver",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 106,
+ "column": 12,
+ "index": 2943
+ },
+ "end": {
+ "line": 109,
+ "column": 3,
+ "index": 3019
+ }
+ },
+ {
+ "id": "global.txLabels.stakeDeregistration",
+ "defaultMessage": "!!!Staking key deregistration",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 110,
+ "column": 23,
+ "index": 3044
+ },
+ "end": {
+ "line": 113,
+ "column": 3,
+ "index": 3149
+ }
+ },
+ {
+ "id": "global.txLabels.submittingTx",
+ "defaultMessage": "!!!Submitting transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 114,
+ "column": 16,
+ "index": 3167
+ },
+ "end": {
+ "line": 117,
+ "column": 3,
+ "index": 3261
+ }
+ },
+ {
+ "id": "global.txLabels.signingTx",
+ "defaultMessage": "!!!Signing transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 118,
+ "column": 13,
+ "index": 3276
+ },
+ "end": {
+ "line": 121,
+ "column": 3,
+ "index": 3364
+ }
+ },
+ {
+ "id": "global.sign",
+ "defaultMessage": "!!!Sign",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 122,
+ "column": 8,
+ "index": 3374
+ },
+ "end": {
+ "line": 125,
+ "column": 3,
+ "index": 3433
+ }
+ },
+ {
+ "id": "components.walletinit.restorewallet.upgradeconfirmmodal.toLabel",
+ "defaultMessage": "!!!To",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 126,
+ "column": 6,
+ "index": 3441
+ },
+ "end": {
+ "line": 129,
+ "column": 3,
+ "index": 3550
+ }
+ },
+ {
+ "id": "global.txLabels.transactions",
+ "defaultMessage": "!!!Transactions",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 130,
+ "column": 16,
+ "index": 3568
+ },
+ "end": {
+ "line": 133,
+ "column": 3,
+ "index": 3652
+ }
+ },
+ {
+ "id": "components.walletinit.restorewallet.upgradeconfirmmodal.txIdLabel",
+ "defaultMessage": "!!!Transaction ID",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 134,
+ "column": 8,
+ "index": 3662
+ },
+ "end": {
+ "line": 137,
+ "column": 3,
+ "index": 3785
+ }
+ },
+ {
+ "id": "global.txLabels.withdrawals",
+ "defaultMessage": "!!!Withdrawals",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 138,
+ "column": 15,
+ "index": 3802
+ },
+ "end": {
+ "line": 141,
+ "column": 3,
+ "index": 3884
+ }
+ },
+ {
+ "id": "global.enterSpendingPassword",
+ "defaultMessage": "!!!Enter spending password to sign this transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 142,
+ "column": 25,
+ "index": 3911
+ },
+ "end": {
+ "line": 145,
+ "column": 3,
+ "index": 4031
+ }
+ },
+ {
+ "id": "global.spendingPassword",
+ "defaultMessage": "!!!Spending Password",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 146,
+ "column": 20,
+ "index": 4053
+ },
+ "end": {
+ "line": 149,
+ "column": 3,
+ "index": 4137
+ }
+ },
+ {
+ "id": "global.ledgerMessages.bluetoothEnabled",
+ "defaultMessage": "!!!Bluetooth is enabled on your smartphone.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 154,
+ "column": 20,
+ "index": 4229
+ },
+ "end": {
+ "line": 157,
+ "column": 3,
+ "index": 4351
+ }
+ },
+ {
+ "id": "global.ledgerMessages.locationEnabled",
+ "defaultMessage": "!!!Location is enabled on your device.Android requires location to be enabled to provide access to Bluetooth, but EMURGO will never store any location data.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 158,
+ "column": 19,
+ "index": 4372
+ },
+ "end": {
+ "line": 164,
+ "column": 3,
+ "index": 4634
+ }
+ },
+ {
+ "id": "global.ledgerMessages.haveOTGAdapter",
+ "defaultMessage": "!!!You have an on-the-go adapter allowing you to connect your Ledgerdevice with your smartphone using a USB cable.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 165,
+ "column": 18,
+ "index": 4654
+ },
+ "end": {
+ "line": 170,
+ "column": 3,
+ "index": 4862
+ }
+ },
+ {
+ "id": "global.ledgerMessages.usbAlwaysConnected",
+ "defaultMessage": "!!!Your Ledger device remains connected through USB until the processis completed.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 171,
+ "column": 22,
+ "index": 4886
+ },
+ "end": {
+ "line": 174,
+ "column": 3,
+ "index": 5054
+ }
+ },
+ {
+ "id": "global.ledgerMessages.appInstalled",
+ "defaultMessage": "!!!Cardano ADA app is installed on your Ledger device.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 175,
+ "column": 16,
+ "index": 5072
+ },
+ "end": {
+ "line": 178,
+ "column": 3,
+ "index": 5201
+ }
+ },
+ {
+ "id": "global.ledgerMessages.appOpened",
+ "defaultMessage": "!!!Cardano ADA app must remain open on your Ledger device.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 179,
+ "column": 13,
+ "index": 5216
+ },
+ "end": {
+ "line": 182,
+ "column": 3,
+ "index": 5346
+ }
+ },
+ {
+ "id": "global.ledgerMessages.enableTransport",
+ "defaultMessage": "!!!Enable bluetooth.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 184,
+ "column": 19,
+ "index": 5394
+ },
+ "end": {
+ "line": 187,
+ "column": 3,
+ "index": 5492
+ }
+ },
+ {
+ "id": "global.ledgerMessages.enableLocation",
+ "defaultMessage": "!!!Enable location services.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 188,
+ "column": 18,
+ "index": 5512
+ },
+ "end": {
+ "line": 191,
+ "column": 3,
+ "index": 5617
+ }
+ },
+ {
+ "id": "global.ledgerMessages.connectUsb",
+ "defaultMessage": "!!!Connect your Ledger device through your smartphone'sUSB port using your OTG adapter.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 192,
+ "column": 14,
+ "index": 5633
+ },
+ "end": {
+ "line": 195,
+ "column": 3,
+ "index": 5798
+ }
+ },
+ {
+ "id": "global.ledgerMessages.keepUsbConnected",
+ "defaultMessage": "!!!Make sure your device remains connected until the operation is completed.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 196,
+ "column": 20,
+ "index": 5820
+ },
+ "end": {
+ "line": 199,
+ "column": 3,
+ "index": 5980
+ }
+ },
+ {
+ "id": "global.ledgerMessages.enterPin",
+ "defaultMessage": "!!!Power on your ledger device and enter your PIN.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 200,
+ "column": 12,
+ "index": 5994
+ },
+ "end": {
+ "line": 203,
+ "column": 3,
+ "index": 6115
+ }
+ },
+ {
+ "id": "global.ledgerMessages.openApp",
+ "defaultMessage": "!!!Open Cardano ADA app on the Ledger device.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 204,
+ "column": 11,
+ "index": 6128
+ },
+ "end": {
+ "line": 207,
+ "column": 3,
+ "index": 6243
+ }
+ },
+ {
+ "id": "global.ledgerMessages.followSteps",
+ "defaultMessage": "!!!Please, follow the steps shown in your Ledger device",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 208,
+ "column": 15,
+ "index": 6260
+ },
+ "end": {
+ "line": 211,
+ "column": 3,
+ "index": 6389
+ }
+ },
+ {
+ "id": "global.ledgerMessages.bluetoothDisabledError",
+ "defaultMessage": "!!!Bluetooth is disabled in your smartphone",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 213,
+ "column": 26,
+ "index": 6436
+ },
+ "end": {
+ "line": 216,
+ "column": 3,
+ "index": 6564
+ }
+ },
+ {
+ "id": "global.ledgerMessages.connectionError",
+ "defaultMessage": "!!!An error occurred while trying to connect with your hardware wallet. Please, make sure you are following the stepscorrectly. Restarting your hardware wallet may also fix the problem.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 217,
+ "column": 19,
+ "index": 6585
+ },
+ "end": {
+ "line": 223,
+ "column": 3,
+ "index": 6876
+ }
+ },
+ {
+ "id": "global.ledgerMessages.deprecatedAdaAppError",
+ "defaultMessage": "!!!The Cardano ADA app installed in your Ledger deviceis not up-to-date. Required version: {version}",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 224,
+ "column": 25,
+ "index": 6903
+ },
+ "end": {
+ "line": 228,
+ "column": 3,
+ "index": 7098
+ }
+ },
+ {
+ "id": "global.ledgerMessages.rejectedByUserError",
+ "defaultMessage": "!!!Operation rejected by user.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 229,
+ "column": 23,
+ "index": 7123
+ },
+ "end": {
+ "line": 232,
+ "column": 3,
+ "index": 7235
+ }
+ },
+ {
+ "id": "global.ledgerMessages.noDeviceInfoError",
+ "defaultMessage": "!!!Device metadata was lost or corrupted. To fix this issue, please add a new wallet and connect it with your device.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 233,
+ "column": 21,
+ "index": 7258
+ },
+ "end": {
+ "line": 238,
+ "column": 3,
+ "index": 7472
+ }
+ },
+ {
+ "id": "global.ledgerMessages.continueOnLedger",
+ "defaultMessage": "!!!Continue on Ledger",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 239,
+ "column": 20,
+ "index": 7494
+ },
+ "end": {
+ "line": 242,
+ "column": 3,
+ "index": 7594
+ }
+ },
+ {
+ "id": "global.actions.dialogs.pinMismatch.title",
+ "defaultMessage": "!!!Invalid PIN",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 247,
+ "column": 11,
+ "index": 7674
+ },
+ "end": {
+ "line": 250,
+ "column": 5,
+ "index": 7775
+ }
+ },
+ {
+ "id": "global.actions.dialogs.pinMismatch.message",
+ "defaultMessage": "!!!PINs do not match.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 251,
+ "column": 13,
+ "index": 7790
+ },
+ "end": {
+ "line": 254,
+ "column": 5,
+ "index": 7900
+ }
+ },
+ {
+ "id": "global.actions.dialogs.insufficientCollateral.message",
+ "defaultMessage": "!!!Collateral amount is insufficient. Please assign collateral.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 257,
+ "column": 11,
+ "index": 7957
+ },
+ "end": {
+ "line": 260,
+ "column": 5,
+ "index": 8120
+ }
+ },
+ {
+ "id": "global.actions.dialogs.incorrectPin.title",
+ "defaultMessage": "!!!Invalid PIN",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 263,
+ "column": 11,
+ "index": 8172
+ },
+ "end": {
+ "line": 266,
+ "column": 5,
+ "index": 8274
+ }
+ },
+ {
+ "id": "global.actions.dialogs.incorrectPin.message",
+ "defaultMessage": "!!!The PIN you entered is incorrect.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 267,
+ "column": 13,
+ "index": 8289
+ },
+ "end": {
+ "line": 270,
+ "column": 5,
+ "index": 8415
+ }
+ },
+ {
+ "id": "global.actions.dialogs.incorrectPassword.title",
+ "defaultMessage": "!!!Wrong password",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 273,
+ "column": 11,
+ "index": 8472
+ },
+ "end": {
+ "line": 276,
+ "column": 5,
+ "index": 8582
+ }
+ },
+ {
+ "id": "global.actions.dialogs.incorrectPassword.message",
+ "defaultMessage": "!!!Password you provided is incorrect.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 277,
+ "column": 13,
+ "index": 8597
+ },
+ "end": {
+ "line": 280,
+ "column": 5,
+ "index": 8730
+ }
+ },
+ {
+ "id": "global.actions.dialogs.biometricsIsTurnedOff.title",
+ "defaultMessage": "!!!Biometrics was turned off",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 283,
+ "column": 11,
+ "index": 8787
+ },
+ "end": {
+ "line": 286,
+ "column": 5,
+ "index": 8912
+ }
+ },
+ {
+ "id": "global.actions.dialogs.biometricsIsTurnedOff.message",
+ "defaultMessage": "!!!It seems that you turned off biometrics, please turn it on",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 287,
+ "column": 13,
+ "index": 8927
+ },
+ "end": {
+ "line": 290,
+ "column": 5,
+ "index": 9087
+ }
+ },
+ {
+ "id": "global.actions.dialogs.walletKeysInvalidated.title",
+ "defaultMessage": "!!!Biometrics changed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 293,
+ "column": 11,
+ "index": 9148
+ },
+ "end": {
+ "line": 296,
+ "column": 5,
+ "index": 9266
+ }
+ },
+ {
+ "id": "global.actions.dialogs.walletKeysInvalidated.message",
+ "defaultMessage": "!!!We detected that your biometrics in phone changed. As a result the easy transaction confirmation was disabled and transaction submitting is allowed only with master password. You can re-enable easy transactions confirmation in settings",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 297,
+ "column": 13,
+ "index": 9281
+ },
+ "end": {
+ "line": 304,
+ "column": 5,
+ "index": 9665
+ }
+ },
+ {
+ "id": "global.actions.dialogs.walletStateInvalid.title",
+ "defaultMessage": "!!!Invalid wallet state",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 307,
+ "column": 11,
+ "index": 9723
+ },
+ "end": {
+ "line": 310,
+ "column": 5,
+ "index": 9840
+ }
+ },
+ {
+ "id": "global.actions.dialogs.walletStateInvalid.message",
+ "defaultMessage": "!!!Your wallet is in an inconsistent state. You may solve this by restoring your wallet with your mnemonics. Please contact EMURGO support to report this issue as this may help us fix the problem in a future release.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 311,
+ "column": 13,
+ "index": 9855
+ },
+ "end": {
+ "line": 318,
+ "column": 5,
+ "index": 10214
+ }
+ },
+ {
+ "id": "global.actions.dialogs.itnNotSupported.title",
+ "defaultMessage": "!!!ITN Wallet not longer supported",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 321,
+ "column": 11,
+ "index": 10269
+ },
+ "end": {
+ "line": 324,
+ "column": 5,
+ "index": 10394
+ }
+ },
+ {
+ "id": "global.actions.dialogs.itnNotSupported.message",
+ "defaultMessage": "!!!Wallets created during the Incentivized Testnet (ITN) are no longer operative. If you would like to claim your rewards, we will update Yoroi Mobile as well as Yoroi Desktop in the next couple of weeks.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 325,
+ "column": 13,
+ "index": 10409
+ },
+ "end": {
+ "line": 332,
+ "column": 5,
+ "index": 10753
+ }
+ },
+ {
+ "id": "global.actions.dialogs.networkError.title",
+ "defaultMessage": "!!!Network error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 335,
+ "column": 11,
+ "index": 10805
+ },
+ "end": {
+ "line": 338,
+ "column": 5,
+ "index": 10909
+ }
+ },
+ {
+ "id": "global.actions.dialogs.networkError.message",
+ "defaultMessage": "!!!Error connecting to the server. Please check your internet connection",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 339,
+ "column": 13,
+ "index": 10924
+ },
+ "end": {
+ "line": 342,
+ "column": 5,
+ "index": 11091
+ }
+ },
+ {
+ "id": "global.actions.dialogs.apiError.title",
+ "defaultMessage": "!!!API error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 345,
+ "column": 11,
+ "index": 11139
+ },
+ "end": {
+ "line": 348,
+ "column": 5,
+ "index": 11235
+ }
+ },
+ {
+ "id": "global.actions.dialogs.apiError.message",
+ "defaultMessage": "!!!Error received from api method call while sending transaction. Please try again later or check our Twitter account (https://twitter.com/YoroiWallet)",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 349,
+ "column": 13,
+ "index": 11250
+ },
+ "end": {
+ "line": 354,
+ "column": 5,
+ "index": 11508
+ }
+ },
+ {
+ "id": "global.actions.dialogs.insufficientBalance.title",
+ "defaultMessage": "!!!Transaction error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 357,
+ "column": 11,
+ "index": 11567
+ },
+ "end": {
+ "line": 360,
+ "column": 5,
+ "index": 11682
+ }
+ },
+ {
+ "id": "global.actions.dialogs.insufficientBalance.message",
+ "defaultMessage": "!!Not enough funds to make this transaction",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 361,
+ "column": 13,
+ "index": 11697
+ },
+ "end": {
+ "line": 364,
+ "column": 5,
+ "index": 11837
+ }
+ },
+ {
+ "id": "global.actions.dialogs.disableEasyConfirmationFirst.title",
+ "defaultMessage": "!!!Action failed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 367,
+ "column": 11,
+ "index": 11905
+ },
+ "end": {
+ "line": 370,
+ "column": 5,
+ "index": 12025
+ }
+ },
+ {
+ "id": "global.actions.dialogs.disableEasyConfirmationFirst.message",
+ "defaultMessage": "!!!Please disable easy confirmation function in all your wallets first",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 371,
+ "column": 13,
+ "index": 12040
+ },
+ "end": {
+ "line": 374,
+ "column": 5,
+ "index": 12221
+ }
+ },
+ {
+ "id": "global.actions.dialogs.enableFingerprintsFirst.title",
+ "defaultMessage": "!!!Action failed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 377,
+ "column": 11,
+ "index": 12284
+ },
+ "end": {
+ "line": 380,
+ "column": 5,
+ "index": 12399
+ }
+ },
+ {
+ "id": "global.actions.dialogs.enableFingerprintsFirst.message",
+ "defaultMessage": "!!!You need to enable biometrics in your device first in order to be able link it with this app",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 381,
+ "column": 13,
+ "index": 12414
+ },
+ "end": {
+ "line": 385,
+ "column": 5,
+ "index": 12623
+ }
+ },
+ {
+ "id": "global.actions.dialogs.enableSystemAuthFirst.title",
+ "defaultMessage": "!!!Lock screen disabled",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 388,
+ "column": 11,
+ "index": 12684
+ },
+ "end": {
+ "line": 391,
+ "column": 5,
+ "index": 12804
+ }
+ },
+ {
+ "id": "global.actions.dialogs.enableSystemAuthFirst.message",
+ "defaultMessage": "!!!You probably disabled lock screen in your phone. You need to disable easy transaction confirmation first. Please set up you lock screen (PIN / Password / Pattern) on your phone and then restart application. After this action you should be able to disable lock screen on your phone and use this application",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 392,
+ "column": 13,
+ "index": 12819
+ },
+ "end": {
+ "line": 401,
+ "column": 5,
+ "index": 13299
+ }
+ },
+ {
+ "id": "global.actions.dialogs.wrongPinError.title",
+ "defaultMessage": "!!!Invalid PIN",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 404,
+ "column": 11,
+ "index": 13352
+ },
+ "end": {
+ "line": 407,
+ "column": 5,
+ "index": 13455
+ }
+ },
+ {
+ "id": "global.actions.dialogs.wrongPinError.message",
+ "defaultMessage": "!!!PIN is incorrect.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 408,
+ "column": 13,
+ "index": 13470
+ },
+ "end": {
+ "line": 411,
+ "column": 5,
+ "index": 13581
+ }
+ },
+ {
+ "id": "global.actions.dialogs.hwConnectionError.title",
+ "defaultMessage": "!!!Connection error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 414,
+ "column": 11,
+ "index": 13638
+ },
+ "end": {
+ "line": 417,
+ "column": 5,
+ "index": 13750
+ }
+ },
+ {
+ "id": "global.actions.dialogs.hwConnectionError.message",
+ "defaultMessage": "!!!An error occurred while trying to connect with your hardware wallet. Please, make sure you are following the stepscorrectly. Restarting your hardware wallet may also fix the problem.Error: {message}",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 418,
+ "column": 13,
+ "index": 13765
+ },
+ "end": {
+ "line": 425,
+ "column": 5,
+ "index": 14108
+ }
+ },
+ {
+ "id": "global.notSupported",
+ "defaultMessage": "!!!Feature not supported",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 739,
+ "column": 16,
+ "index": 22043
+ },
+ "end": {
+ "line": 742,
+ "column": 3,
+ "index": 22127
+ }
+ },
+ {
+ "id": "global.actions.dialogs.notSupportedError.message",
+ "defaultMessage": "!!!This feature is not yet supported. It will be enabled in a future release.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 432,
+ "column": 13,
+ "index": 14270
+ },
+ "end": {
+ "line": 435,
+ "column": 5,
+ "index": 14447
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalError.title",
+ "defaultMessage": "!!!Unexpected error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 438,
+ "column": 11,
+ "index": 14499
+ },
+ "end": {
+ "line": 441,
+ "column": 5,
+ "index": 14606
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalError.message",
+ "defaultMessage": "!!!Requested operation failed. This is all we know: {message}",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 442,
+ "column": 13,
+ "index": 14621
+ },
+ "end": {
+ "line": 445,
+ "column": 5,
+ "index": 14772
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalLocalizableError.title",
+ "defaultMessage": "!!!Operation failed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 448,
+ "column": 11,
+ "index": 14835
+ },
+ "end": {
+ "line": 451,
+ "column": 5,
+ "index": 14953
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalLocalizableError.message",
+ "defaultMessage": "!!!Requested operation failed: {message}",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 452,
+ "column": 13,
+ "index": 14968
+ },
+ "end": {
+ "line": 455,
+ "column": 5,
+ "index": 15109
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalTxError.title",
+ "defaultMessage": "!!!Transaction Error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 458,
+ "column": 11,
+ "index": 15163
+ },
+ "end": {
+ "line": 461,
+ "column": 5,
+ "index": 15273
+ }
+ },
+ {
+ "id": "global.actions.dialogs.generalTxError.message",
+ "defaultMessage": "!!!An error occurred while trying to send the transaction.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 462,
+ "column": 13,
+ "index": 15288
+ },
+ "end": {
+ "line": 465,
+ "column": 5,
+ "index": 15438
+ }
+ },
+ {
+ "id": "global.actions.dialogs.invalidQRCode.title",
+ "defaultMessage": "!!!Invalid QR code",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 468,
+ "column": 11,
+ "index": 15491
+ },
+ "end": {
+ "line": 471,
+ "column": 5,
+ "index": 15598
+ }
+ },
+ {
+ "id": "global.actions.dialogs.invalidQRCode.message",
+ "defaultMessage": "!!!The QR code you scanned does not seem to contain a valid public key. Please try again with a new one.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 472,
+ "column": 13,
+ "index": 15613
+ },
+ "end": {
+ "line": 476,
+ "column": 5,
+ "index": 15821
+ }
+ },
+ {
+ "id": "global.actions.dialogs.fetchError.title",
+ "defaultMessage": "!!!Server error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 479,
+ "column": 11,
+ "index": 15871
+ },
+ "end": {
+ "line": 482,
+ "column": 5,
+ "index": 15972
+ }
+ },
+ {
+ "id": "global.actions.dialogs.fetchError.message",
+ "defaultMessage": "!!!An error occurred when Yoroi tried to fetch your wallet state from the server. Please try again later.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 483,
+ "column": 13,
+ "index": 15987
+ },
+ "end": {
+ "line": 488,
+ "column": 5,
+ "index": 16201
+ }
+ },
+ {
+ "id": "global.assets.assetsLabel",
+ "defaultMessage": "!!!Assets",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 767,
+ "column": 15,
+ "index": 22868
+ },
+ "end": {
+ "line": 770,
+ "column": 3,
+ "index": 22943
+ }
+ },
+ {
+ "id": "api.error.title",
+ "defaultMessage": "!!!API error title",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 500,
+ "column": 9,
+ "index": 16400
+ },
+ "end": {
+ "line": 503,
+ "column": 3,
+ "index": 16474
+ }
+ },
+ {
+ "id": "api.error.badRequest",
+ "defaultMessage": "!!!Bad request",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 504,
+ "column": 14,
+ "index": 16490
+ },
+ "end": {
+ "line": 507,
+ "column": 3,
+ "index": 16565
+ }
+ },
+ {
+ "id": "api.error.unauthorized",
+ "defaultMessage": "!!!Unauthorized",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 508,
+ "column": 16,
+ "index": 16583
+ },
+ "end": {
+ "line": 511,
+ "column": 3,
+ "index": 16661
+ }
+ },
+ {
+ "id": "api.error.forbidden",
+ "defaultMessage": "!!!Forbidden",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 512,
+ "column": 13,
+ "index": 16676
+ },
+ "end": {
+ "line": 515,
+ "column": 3,
+ "index": 16748
+ }
+ },
+ {
+ "id": "api.error.notFound",
+ "defaultMessage": "!!!Not found",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 516,
+ "column": 12,
+ "index": 16762
+ },
+ "end": {
+ "line": 519,
+ "column": 3,
+ "index": 16833
+ }
+ },
+ {
+ "id": "api.error.conflict",
+ "defaultMessage": "!!!Conflict",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 520,
+ "column": 12,
+ "index": 16847
+ },
+ "end": {
+ "line": 523,
+ "column": 3,
+ "index": 16917
+ }
+ },
+ {
+ "id": "api.error.gone",
+ "defaultMessage": "!!!Gone",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 524,
+ "column": 8,
+ "index": 16927
+ },
+ "end": {
+ "line": 527,
+ "column": 3,
+ "index": 16989
+ }
+ },
+ {
+ "id": "api.error.tooEarly",
+ "defaultMessage": "!!!Too early",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 528,
+ "column": 12,
+ "index": 17003
+ },
+ "end": {
+ "line": 531,
+ "column": 3,
+ "index": 17074
+ }
+ },
+ {
+ "id": "api.error.tooManyRequests",
+ "defaultMessage": "!!!Too many requests",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 532,
+ "column": 19,
+ "index": 17095
+ },
+ "end": {
+ "line": 535,
+ "column": 3,
+ "index": 17181
+ }
+ },
+ {
+ "id": "api.error.serverSide",
+ "defaultMessage": "!!!Server side",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 536,
+ "column": 14,
+ "index": 17197
+ },
+ "end": {
+ "line": 539,
+ "column": 3,
+ "index": 17272
+ }
+ },
+ {
+ "id": "api.error.unknown",
+ "defaultMessage": "!!!Unknown",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 540,
+ "column": 11,
+ "index": 17285
+ },
+ "end": {
+ "line": 543,
+ "column": 3,
+ "index": 17353
+ }
+ },
+ {
+ "id": "api.error.network",
+ "defaultMessage": "!!!Network",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 544,
+ "column": 11,
+ "index": 17366
+ },
+ "end": {
+ "line": 547,
+ "column": 3,
+ "index": 17434
+ }
+ },
+ {
+ "id": "api.error.invalidState",
+ "defaultMessage": "!!!Invalid state",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 548,
+ "column": 16,
+ "index": 17452
+ },
+ "end": {
+ "line": 551,
+ "column": 3,
+ "index": 17531
+ }
+ },
+ {
+ "id": "api.error.responseMalformed",
+ "defaultMessage": "!!!Response malformed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 552,
+ "column": 21,
+ "index": 17554
+ },
+ "end": {
+ "line": 555,
+ "column": 3,
+ "index": 17643
+ }
+ },
+ {
+ "id": "global.send",
+ "defaultMessage": "!!!Send",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 559,
+ "column": 8,
+ "index": 17704
+ },
+ "end": {
+ "line": 562,
+ "column": 3,
+ "index": 17763
+ }
+ },
+ {
+ "id": "global.receive",
+ "defaultMessage": "!!!Receive",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 563,
+ "column": 11,
+ "index": 17776
+ },
+ "end": {
+ "line": 566,
+ "column": 3,
+ "index": 17841
+ }
+ },
+ {
+ "id": "global.buy",
+ "defaultMessage": "!!!Buy",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 567,
+ "column": 7,
+ "index": 17850
+ },
+ "end": {
+ "line": 570,
+ "column": 3,
+ "index": 17907
+ }
+ },
+ {
+ "id": "global.buyTitle",
+ "defaultMessage": "!!!Exchange ADA",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 571,
+ "column": 12,
+ "index": 17921
+ },
+ "end": {
+ "line": 574,
+ "column": 3,
+ "index": 17992
+ }
+ },
+ {
+ "id": "global.buyInfo",
+ "defaultMessage": "!!!Yoroi uses Banxa to provide direct Fiat-ADA exchange. By clicking “Proceed,” you also acknowledge that you will be redirected to our partner’s website, where you may be asked to accept their terms and conditions.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 575,
+ "column": 11,
+ "index": 18005
+ },
+ "end": {
+ "line": 579,
+ "column": 3,
+ "index": 18288
+ }
+ },
+ {
+ "id": "global.proceed",
+ "defaultMessage": "!!!Proceed",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 580,
+ "column": 11,
+ "index": 18301
+ },
+ "end": {
+ "line": 583,
+ "column": 3,
+ "index": 18366
+ }
+ },
+ {
+ "id": "global.swap",
+ "defaultMessage": "!!!Swap",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 584,
+ "column": 8,
+ "index": 18376
+ },
+ "end": {
+ "line": 587,
+ "column": 3,
+ "index": 18435
+ }
+ },
+ {
+ "id": "global.comingSoon",
+ "defaultMessage": "!!!Coming soon",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 723,
+ "column": 14,
+ "index": 21691
+ },
+ "end": {
+ "line": 726,
+ "column": 3,
+ "index": 21763
+ }
+ },
+ {
+ "id": "global.exchange",
+ "defaultMessage": "!!!Buy/Sell ADA",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 592,
+ "column": 12,
+ "index": 18531
+ },
+ "end": {
+ "line": 595,
+ "column": 3,
+ "index": 18602
+ }
+ },
+ {
+ "id": "global.currency.ADA",
+ "defaultMessage": "!!!ADA",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 599,
+ "column": 29,
+ "index": 18683
+ },
+ "end": {
+ "line": 602,
+ "column": 3,
+ "index": 18749
+ }
+ },
+ {
+ "id": "global.currency.BRL",
+ "defaultMessage": "!!!BRL",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 603,
+ "column": 29,
+ "index": 18780
+ },
+ "end": {
+ "line": 606,
+ "column": 3,
+ "index": 18846
+ }
+ },
+ {
+ "id": "global.currency.BTC",
+ "defaultMessage": "!!!BTC",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 607,
+ "column": 29,
+ "index": 18877
+ },
+ "end": {
+ "line": 610,
+ "column": 3,
+ "index": 18943
+ }
+ },
+ {
+ "id": "global.currency.CNY",
+ "defaultMessage": "!!!CNY",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 611,
+ "column": 29,
+ "index": 18974
+ },
+ "end": {
+ "line": 614,
+ "column": 3,
+ "index": 19040
+ }
+ },
+ {
+ "id": "global.currency.ETH",
+ "defaultMessage": "!!!ETH",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 615,
+ "column": 29,
+ "index": 19071
+ },
+ "end": {
+ "line": 618,
+ "column": 3,
+ "index": 19137
+ }
+ },
+ {
+ "id": "global.currency.EUR",
+ "defaultMessage": "!!!EUR",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 619,
+ "column": 29,
+ "index": 19168
+ },
+ "end": {
+ "line": 622,
+ "column": 3,
+ "index": 19234
+ }
+ },
+ {
+ "id": "global.currency.JPY",
+ "defaultMessage": "!!!JPY",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 623,
+ "column": 29,
+ "index": 19265
+ },
+ "end": {
+ "line": 626,
+ "column": 3,
+ "index": 19331
+ }
+ },
+ {
+ "id": "global.currency.KRW",
+ "defaultMessage": "!!!KRW",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 627,
+ "column": 29,
+ "index": 19362
+ },
+ "end": {
+ "line": 630,
+ "column": 3,
+ "index": 19428
+ }
+ },
+ {
+ "id": "global.currency.USD",
+ "defaultMessage": "!!!USD",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 631,
+ "column": 29,
+ "index": 19459
+ },
+ "end": {
+ "line": 634,
+ "column": 3,
+ "index": 19525
+ }
+ },
+ {
+ "id": "global.auto",
+ "defaultMessage": "!!! System",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 639,
+ "column": 28,
+ "index": 19670
+ },
+ "end": {
+ "line": 642,
+ "column": 3,
+ "index": 19732
+ }
+ },
+ {
+ "id": "global.dark",
+ "defaultMessage": "!!! Dark",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 643,
+ "column": 37,
+ "index": 19771
+ },
+ "end": {
+ "line": 646,
+ "column": 3,
+ "index": 19831
+ }
+ },
+ {
+ "id": "global.light",
+ "defaultMessage": "!!! Light",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 647,
+ "column": 38,
+ "index": 19871
+ },
+ "end": {
+ "line": 650,
+ "column": 3,
+ "index": 19933
+ }
+ },
+ {
+ "id": "global.continue",
+ "defaultMessage": "!!!Continue",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 654,
+ "column": 12,
+ "index": 19983
+ },
+ "end": {
+ "line": 657,
+ "column": 3,
+ "index": 20050
+ }
+ },
+ {
+ "id": "global.disclaimer",
+ "defaultMessage": "!!!Disclaimer",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 658,
+ "column": 14,
+ "index": 20066
+ },
+ "end": {
+ "line": 661,
+ "column": 3,
+ "index": 20137
+ }
+ },
+ {
+ "id": "global.unknown",
+ "defaultMessage": "!!!Unknown",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 662,
+ "column": 11,
+ "index": 20150
+ },
+ "end": {
+ "line": 665,
+ "column": 3,
+ "index": 20215
+ }
+ },
+ {
+ "id": "global.apply",
+ "defaultMessage": "!!!Apply",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 666,
+ "column": 9,
+ "index": 20226
+ },
+ "end": {
+ "line": 669,
+ "column": 3,
+ "index": 20287
+ }
+ },
+ {
+ "id": "global.max",
+ "defaultMessage": "!!!Max",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 670,
+ "column": 7,
+ "index": 20296
+ },
+ "end": {
+ "line": 673,
+ "column": 3,
+ "index": 20353
+ }
+ },
+ {
+ "id": "components.walletinit.restorewallet.upgradeconfirmmodal.noUpgradeLabel",
+ "defaultMessage": "!!!All done!",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 674,
+ "column": 11,
+ "index": 20366
+ },
+ "end": {
+ "line": 677,
+ "column": 3,
+ "index": 20489
+ }
+ },
+ {
+ "id": "components.stakingcenter.poolwarningmodal.title",
+ "defaultMessage": "!!!Attention",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 678,
+ "column": 13,
+ "index": 20504
+ },
+ "end": {
+ "line": 681,
+ "column": 3,
+ "index": 20604
+ }
+ },
+ {
+ "id": "global.tryAgain",
+ "defaultMessage": "!!!Try again",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 682,
+ "column": 12,
+ "index": 20618
+ },
+ "end": {
+ "line": 685,
+ "column": 3,
+ "index": 20686
+ }
+ },
+ {
+ "id": "global.error.walletNameTooLong",
+ "defaultMessage": "!!!Wallet name cannot exceed 40 letters",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 686,
+ "column": 26,
+ "index": 20714
+ },
+ "end": {
+ "line": 689,
+ "column": 3,
+ "index": 20824
+ }
+ },
+ {
+ "id": "global.error.walletNameAlreadyTaken",
+ "defaultMessage": "!!!You already have a wallet with this name",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 690,
+ "column": 35,
+ "index": 20861
+ },
+ "end": {
+ "line": 693,
+ "column": 3,
+ "index": 20980
+ }
+ },
+ {
+ "id": "global.error.walletNameMustBeFilled",
+ "defaultMessage": "!!!Must be filled",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 694,
+ "column": 31,
+ "index": 21013
+ },
+ "end": {
+ "line": 697,
+ "column": 3,
+ "index": 21106
+ }
+ },
+ {
+ "id": "global.pleaseWait",
+ "description": "Common messages for time consuming actions",
+ "defaultMessage": "!!!please wait ...",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 698,
+ "column": 14,
+ "index": 21122
+ },
+ "end": {
+ "line": 702,
+ "column": 3,
+ "index": 21261
+ }
+ },
+ {
+ "id": "global.pleaseConfirm",
+ "defaultMessage": "!!!Please confirm",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 703,
+ "column": 17,
+ "index": 21280
+ },
+ "end": {
+ "line": 706,
+ "column": 3,
+ "index": 21358
+ }
+ },
+ {
+ "id": "global.termsOfUse",
+ "defaultMessage": "!!!Terms of use",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 707,
+ "column": 7,
+ "index": 21367
+ },
+ "end": {
+ "line": 710,
+ "column": 3,
+ "index": 21440
+ }
+ },
+ {
+ "id": "global.ok",
+ "defaultMessage": "!!!OK",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 711,
+ "column": 6,
+ "index": 21448
+ },
+ "end": {
+ "line": 714,
+ "column": 3,
+ "index": 21503
+ }
+ },
+ {
+ "id": "global.close",
+ "defaultMessage": "!!!close",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 715,
+ "column": 9,
+ "index": 21514
+ },
+ "end": {
+ "line": 718,
+ "column": 3,
+ "index": 21575
+ }
+ },
+ {
+ "id": "global.availableFunds",
+ "defaultMessage": "!!!Available funds",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 719,
+ "column": 18,
+ "index": 21595
+ },
+ "end": {
+ "line": 722,
+ "column": 3,
+ "index": 21675
+ }
+ },
+ {
+ "id": "global.deprecated",
+ "defaultMessage": "!!!Deprecated",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 727,
+ "column": 14,
+ "index": 21779
+ },
+ "end": {
+ "line": 730,
+ "column": 3,
+ "index": 21850
+ }
+ },
+ {
+ "id": "global.staking.epochLabel",
+ "defaultMessage": "!!!Epoch",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 731,
+ "column": 14,
+ "index": 21866
+ },
+ "end": {
+ "line": 734,
+ "column": 3,
+ "index": 21940
+ }
+ },
+ {
+ "id": "global.learnMore",
+ "defaultMessage": "!!!Learn more",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 735,
+ "column": 13,
+ "index": 21955
+ },
+ "end": {
+ "line": 738,
+ "column": 3,
+ "index": 22025
+ }
+ },
+ {
+ "id": "global.total",
+ "defaultMessage": "!!!Total",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 743,
+ "column": 9,
+ "index": 22138
+ },
+ "end": {
+ "line": 746,
+ "column": 3,
+ "index": 22199
+ }
+ },
+ {
+ "id": "global.totalAda",
+ "defaultMessage": "!!!Total ADA",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 747,
+ "column": 12,
+ "index": 22213
+ },
+ "end": {
+ "line": 750,
+ "column": 3,
+ "index": 22281
+ }
+ },
+ {
+ "id": "global.staking.stakePoolName",
+ "defaultMessage": "!!!Stake pool name",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 751,
+ "column": 17,
+ "index": 22300
+ },
+ "end": {
+ "line": 754,
+ "column": 3,
+ "index": 22387
+ }
+ },
+ {
+ "id": "global.staking.stakePoolHash",
+ "defaultMessage": "!!!Stake pool hash",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 755,
+ "column": 17,
+ "index": 22406
+ },
+ "end": {
+ "line": 758,
+ "column": 3,
+ "index": 22493
+ }
+ },
+ {
+ "id": "global.network.syncErrorBannerTextWithoutRefresh",
+ "defaultMessage": "!!!We are experiencing synchronization issues.",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 759,
+ "column": 37,
+ "index": 22532
+ },
+ "end": {
+ "line": 762,
+ "column": 3,
+ "index": 22667
+ }
+ },
+ {
+ "id": "global.network.syncErrorBannerTextWithRefresh",
+ "defaultMessage": "!!!We are experiencing synchronization issues. Pull to refresh",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 763,
+ "column": 34,
+ "index": 22703
+ },
+ "end": {
+ "line": 766,
+ "column": 3,
+ "index": 22851
+ }
+ },
+ {
+ "id": "components.catalyst.title",
+ "defaultMessage": "!!!Register to vote",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 771,
+ "column": 15,
+ "index": 22960
+ },
+ "end": {
+ "line": 774,
+ "column": 3,
+ "index": 23045
+ }
+ },
+ {
+ "id": "components.catalyst.insufficientBalance",
+ "defaultMessage": "!!!Participating requires at least {requiredBalance},but you only have {currentBalance}. Unwithdrawn rewards are not included in this amount",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 775,
+ "column": 23,
+ "index": 23070
+ },
+ "end": {
+ "line": 781,
+ "column": 3,
+ "index": 23318
+ }
+ },
+ {
+ "id": "global.nfts",
+ "defaultMessage": "!!! NFTs",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 782,
+ "column": 8,
+ "index": 23328
+ },
+ "end": {
+ "line": 785,
+ "column": 3,
+ "index": 23388
+ }
+ },
+ {
+ "id": "global.tokens",
+ "defaultMessage": "!!! Tokens",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 786,
+ "column": 10,
+ "index": 23400
+ },
+ "end": {
+ "line": 789,
+ "column": 3,
+ "index": 23464
+ }
+ },
+ {
+ "id": "global.assets",
+ "defaultMessage": "!!! Assets",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 790,
+ "column": 10,
+ "index": 23476
+ },
+ "end": {
+ "line": 793,
+ "column": 3,
+ "index": 23540
+ }
+ },
+ {
+ "id": "global.available",
+ "defaultMessage": "!!! available",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 794,
+ "column": 13,
+ "index": 23555
+ },
+ "end": {
+ "line": 797,
+ "column": 3,
+ "index": 23625
+ }
+ },
+ {
+ "id": "global.pools",
+ "defaultMessage": "!!! Dex",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 798,
+ "column": 9,
+ "index": 23636
+ },
+ "end": {
+ "line": 801,
+ "column": 3,
+ "index": 23696
+ }
+ },
+ {
+ "id": "global.price",
+ "defaultMessage": "!!! Price",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 802,
+ "column": 9,
+ "index": 23707
+ },
+ "end": {
+ "line": 805,
+ "column": 3,
+ "index": 23769
+ }
+ },
+ {
+ "id": "global.all",
+ "defaultMessage": "!!!All",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 806,
+ "column": 7,
+ "index": 23778
+ },
+ "end": {
+ "line": 809,
+ "column": 3,
+ "index": 23835
+ }
+ },
+ {
+ "id": "global.lockedDeposit",
+ "defaultMessage": "!!!Locked deposit",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 810,
+ "column": 17,
+ "index": 23854
+ },
+ "end": {
+ "line": 813,
+ "column": 3,
+ "index": 23932
+ }
+ },
+ {
+ "id": "global.lockedDepositHint",
+ "defaultMessage": "!!!Locked deposit hint",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 814,
+ "column": 21,
+ "index": 23955
+ },
+ "end": {
+ "line": 817,
+ "column": 3,
+ "index": 24042
+ }
+ },
+ {
+ "id": "global.currency",
+ "defaultMessage": "!!!Currency",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 818,
+ "column": 12,
+ "index": 24056
+ },
+ "end": {
+ "line": 821,
+ "column": 3,
+ "index": 24123
+ }
+ },
+ {
+ "id": "global.next",
+ "defaultMessage": "!!!Next",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 822,
+ "column": 8,
+ "index": 24133
+ },
+ "end": {
+ "line": 825,
+ "column": 3,
+ "index": 24192
+ }
+ },
+ {
+ "id": "global.error",
+ "defaultMessage": "!!!Error",
+ "file": "src/kernel/i18n/global-messages.ts",
+ "start": {
+ "line": 826,
+ "column": 9,
+ "index": 24203
+ },
+ "end": {
+ "line": 829,
+ "column": 3,
+ "index": 24264
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/wallet-mobile/translations/messages/src/yoroi-wallets/auth/auth.json b/apps/wallet-mobile/translations/messages/src/yoroi-wallets/auth/auth.json
index 14122d2fd2..01e3313818 100644
--- a/apps/wallet-mobile/translations/messages/src/yoroi-wallets/auth/auth.json
+++ b/apps/wallet-mobile/translations/messages/src/yoroi-wallets/auth/auth.json
@@ -6,12 +6,12 @@
"start": {
"line": 256,
"column": 13,
- "index": 8599
+ "index": 8606
},
"end": {
"line": 259,
"column": 3,
- "index": 8706
+ "index": 8713
}
},
{
@@ -21,12 +21,12 @@
"start": {
"line": 260,
"column": 19,
- "index": 8727
+ "index": 8734
},
"end": {
"line": 263,
"column": 3,
- "index": 8838
+ "index": 8845
}
},
{
@@ -36,12 +36,12 @@
"start": {
"line": 264,
"column": 16,
- "index": 8856
+ "index": 8863
},
"end": {
"line": 267,
"column": 3,
- "index": 8963
+ "index": 8970
}
}
]
\ No newline at end of file
diff --git a/apps/wallet-mobile/tsconfig.json b/apps/wallet-mobile/tsconfig.json
index 7b0b86692e..ab64ece701 100644
--- a/apps/wallet-mobile/tsconfig.json
+++ b/apps/wallet-mobile/tsconfig.json
@@ -13,5 +13,5 @@
"*.md": ["text-loader"]
}
},
- "include": ["./.d.ts", "./src", ".storybook/decorators"]
+ "include": ["./.d.ts", "./src", ".storybook/decorators", "src/kernel/logger/logger.ts"]
}
diff --git a/crowdin-wallet-mobile.yml b/crowdin-wallet-mobile.yml
index d3c9e5f0fc..09105d337c 100644
--- a/crowdin-wallet-mobile.yml
+++ b/crowdin-wallet-mobile.yml
@@ -1,7 +1,7 @@
preserve_hierarchy: true
files:
- - source: /apps/wallet-mobile/src/i18n/locales/**/en-US.json
- translation: /apps/wallet-mobile/src/i18n/locales/**/%locale%.json
+ - source: /apps/wallet-mobile/src/kernel/i18n/locales/**/en-US.json
+ translation: /apps/wallet-mobile/src/kernel/i18n/locales/**/%locale%.json
languages_mapping:
locale:
zh-CN: zh-Hans
@@ -17,8 +17,8 @@ files:
it: it-IT
nl: nl-NL
cz: cs-CZ
- - source: /apps/wallet-mobile/src/i18n/locales/**/en-US.md
- translation: /apps/wallet-mobile/src/i18n/locales/**/%locale%.md
+ - source: /apps/wallet-mobile/src/features/Legal/**/en-US.md
+ translation: /apps/wallet-mobile/src/features/Legal/**/%locale%.md
languages_mapping:
locale:
zh-CN: zh-Hans
diff --git a/packages/dapp-connector/src/connector.js b/packages/dapp-connector/src/connector.js
index 5a002efdaa..63ee52c486 100644
--- a/packages/dapp-connector/src/connector.js
+++ b/packages/dapp-connector/src/connector.js
@@ -6,6 +6,13 @@
* @Property {(...args: any[]) => Promise} getNetworkId Function to get network ID.
* @Property {(...args: any[]) => Promise} getRewardAddresses Function to get reward addresses.
* @Property {(...args: any[]) => Promise} getUsedAddresses Function to get used addresses.
+ * @Property {(...args: any[]) => Promise} getUnusedAddresses Function to get unused addresses.
+ * @Property {(...args: any[]) => Promise} getUtxos Function to get UTXOs.
+ * @Property {(...args: any[]) => Promise} signData Function to sign data.
+ * @Property {(...args: any[]) => Promise} signTx Function to sign transaction.
+ * @Property {(...args: any[]) => Promise} submitTx Function to submit transaction.
+ * @Property {(...args: any[]) => Promise} getCollateral Function to get collateral.
+ * @Property {(...args: any[]) => Promise} getExtensions Function to get extensions.
*/
/**
@@ -100,7 +107,7 @@ const initWallet = ({iconUrl, apiVersion, walletName, supportedExtensions, sessi
}
window.addEventListener('message', (event) => {
- logMessage('Received message' + JSON.stringify(event.data))
+ logMessage('Received message ' + JSON.stringify(event.data))
const {id, result, error} = event.data
const promise = promisesMap.get(id)
if (!promise) return
@@ -125,11 +132,18 @@ const initWallet = ({iconUrl, apiVersion, walletName, supportedExtensions, sessi
enabling = false
return {
+ getExtensions: (...args) => callExternalMethod('api.getExtensions', args),
+ getNetworkId: (...args) => callExternalMethod('api.getNetworkId', args),
+ getUtxos: (...args) => callExternalMethod('api.getUtxos', args),
+ getCollateral: (...args) => callExternalMethod('api.getCollateral', args),
getBalance: (...args) => callExternalMethod('api.getBalance', args),
+ getUsedAddresses: (...args) => callExternalMethod('api.getUsedAddresses', args),
+ getUnusedAddresses: (...args) => callExternalMethod('api.getUnusedAddresses', args),
getChangeAddress: (...args) => callExternalMethod('api.getChangeAddress', args),
- getNetworkId: (...args) => callExternalMethod('api.getNetworkId', args),
getRewardAddresses: (...args) => callExternalMethod('api.getRewardAddresses', args),
- getUsedAddresses: (...args) => callExternalMethod('api.getUsedAddresses', args),
+ signTx: (...args) => callExternalMethod('api.signTx', args),
+ signData: (...args) => callExternalMethod('api.signData', args),
+ submitTx: (...args) => callExternalMethod('api.submitTx', args),
}
}
diff --git a/packages/dapp-connector/src/dapp-connector.test.ts b/packages/dapp-connector/src/dapp-connector.test.ts
index aa8c24fdc1..f27d4704eb 100644
--- a/packages/dapp-connector/src/dapp-connector.test.ts
+++ b/packages/dapp-connector/src/dapp-connector.test.ts
@@ -4,6 +4,8 @@ import {connectionStorageMaker} from './adapters/async-storage'
import {dappConnectorMaker} from './dapp-connector'
import {Api, dappConnectorApiMaker} from './adapters/api'
import {mockedDAppList} from './manager.mocks'
+import {ResolverWallet} from './resolver'
+import {init} from '@emurgo/cross-csl-nodejs'
const getDappConnector = (wallet = mockWallet) => {
const storage = connectionStorageMaker({storage: storageMock})
@@ -94,7 +96,9 @@ describe('DappConnector', () => {
expect(sendMessage).toHaveBeenCalledWith(
'1',
null,
- new Error(`Unknown method 'unknown' with params {"browserContext":{"origin":"https://yoroi-wallet.com"}}`),
+ new Error(
+ `Unknown method 'unknown' with params {"args":[],"browserContext":{"origin":"https://yoroi-wallet.com"}}`,
+ ),
)
})
@@ -128,6 +132,13 @@ describe('DappConnector', () => {
await dappConnector.handleEvent(createEvent('log_message'), trustedUrl, sendMessage)
})
+ it('should ignore log_message event if it has no arguments', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.handleEvent(createEvent('log_message', {args: undefined}), trustedUrl, sendMessage)
+ expect(sendMessage).not.toHaveBeenCalledWith(sendMessage)
+ })
+
it('should handle cardano_enable event with true if the user confirms connection', async () => {
const dappConnector = getDappConnector({...mockWallet, confirmConnection: () => Promise.resolve(true)})
const event = createEvent('cardano_enable')
@@ -230,12 +241,20 @@ describe('DappConnector', () => {
expect(sendMessage).toHaveBeenCalledWith('1', mockedData[walletId].balance)
})
- it('should resolve getChangeAddresses with mocked data', async () => {
+ it('should throw in getBalance with when incorrect arguments are presented', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getBalance', {args: [1]}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null, new Error(`Invalid params`))
+ })
+
+ it('should resolve getChangeAddress with mocked data', async () => {
const dappConnector = getDappConnector()
const sendMessage = jest.fn()
await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
- await dappConnector.handleEvent(createEvent('api.getChangeAddresses'), trustedUrl, sendMessage)
- expect(sendMessage).toHaveBeenCalledWith('1', mockedData[walletId].changeAddresses)
+ await dappConnector.handleEvent(createEvent('api.getChangeAddress'), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', mockedData[walletId].changeAddresses[0])
})
it('should resolve getRewardAddresses with mocked data', async () => {
@@ -247,11 +266,170 @@ describe('DappConnector', () => {
})
it('should resolve getUsedAddresses with mocked data', async () => {
- const dappConnector = getDappConnector()
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getUsedAddresses: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
const sendMessage = jest.fn()
await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
await dappConnector.handleEvent(createEvent('api.getUsedAddresses'), trustedUrl, sendMessage)
- expect(sendMessage).toHaveBeenCalledWith('1', mockedData[walletId].usedAddresses)
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve getUsedAddresses with mocked data also when pagination is provided', async () => {
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getUsedAddresses: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(
+ createEvent('api.getUsedAddresses', {
+ args: [{page: 1, limit: 1}],
+ }),
+ trustedUrl,
+ sendMessage,
+ )
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve signTx with mocked data if partial sign is unknown', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.signTx', {args: ['CBOR']}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', 'a0')
+ })
+
+ it('should resolve signTx with mocked data if partial sign is known', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.signTx', {args: ['CBOR', true]}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', 'a0')
+ })
+
+ it('should throw in signTx with when incorrect arguments are presented', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.signTx', {args: []}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null, new Error(`Invalid params`))
+ })
+
+ it('should resolve signData with mocked data', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(
+ createEvent('api.signData', {
+ args: [
+ 'addr1qxxvt9rzpdxxysmqp50d7f5a3gdescgrejsu7zsdxqjy8yun4cngaq46gr8c9qyz4td9ddajzqhjnrqvfh0gspzv9xnsmq6nqx',
+ 'CBOR',
+ ],
+ }),
+ trustedUrl,
+ sendMessage,
+ )
+ expect(sendMessage).toHaveBeenCalledWith('1', {key: '', signature: ''})
+ })
+
+ it('should throw in signData with when incorrect arguments are presented', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.signData', {args: []}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null, new Error(`Invalid params`))
+ })
+
+ it('should resolve submitTx with mocked data', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.submitTx', {args: ['CBOR']}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', 'tx-id')
+ })
+
+ it('should throw in submitTx with when incorrect arguments are presented', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.submitTx', {args: []}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null, new Error(`Invalid params`))
+ })
+
+ it('should resolve getCollateral with mocked data', async () => {
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getCollateral: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getCollateral'), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve getCollateral with null if not enough funds', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getCollateral', {args: ['100000000']}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null)
+ })
+
+ it('should resolve getUnusedAddresses with mocked data', async () => {
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getUnusedAddresses: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getUnusedAddresses'), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve getExtensions with CIP30', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getExtensions'), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', [{cip: 30}])
+ })
+
+ it('should resolve getUtxos with mocked data', async () => {
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getUtxos: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getUtxos'), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve getUtxos with mocked data also when pagination is provided', async () => {
+ const dappConnector = getDappConnector({
+ ...mockWallet,
+ getUtxos: () => Promise.resolve([{toHex: () => '00'}] as any),
+ })
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(
+ createEvent('api.getUtxos', {
+ args: ['100000000', {page: 1, limit: 1}],
+ }),
+ trustedUrl,
+ sendMessage,
+ )
+ expect(sendMessage).toHaveBeenCalledWith('1', ['00'])
+ })
+
+ it('should resolve getUtxos with null if not enough funds', async () => {
+ const dappConnector = getDappConnector()
+ const sendMessage = jest.fn()
+ await dappConnector.addConnection({walletId, dappOrigin: 'https://yoroi-wallet.com'})
+ await dappConnector.handleEvent(createEvent('api.getUtxos', {args: ['100000000']}), trustedUrl, sendMessage)
+ expect(sendMessage).toHaveBeenCalledWith('1', null)
})
})
@@ -264,9 +442,33 @@ describe('DappConnector', () => {
})
const createEvent = (method: string, params?: object) => {
- return JSON.stringify({id: '1', method, params: {...params, browserContext: {origin: 'https://yoroi-wallet.com'}}})
+ return JSON.stringify({
+ id: '1',
+ method,
+ params: {args: [], ...params, browserContext: {origin: 'https://yoroi-wallet.com'}},
+ })
}
const walletId = 'b5d94758-26c5-48b0-af2b-6e68c3ef2dbf'
-const mockWallet = {id: walletId, networkId: 1, confirmConnection: async () => true}
+
+const CSL = init('test')
+const mockWallet: ResolverWallet = {
+ signTx: () => Promise.resolve(CSL.TransactionWitnessSet.new()),
+ signData: () => Promise.resolve({key: '', signature: ''}),
+ id: walletId,
+ networkId: 1,
+ confirmConnection: async () => true,
+ getBalance: () => CSL.Value.fromHex('1a062ea8a0'),
+ getUnusedAddresses: () => Promise.resolve([]),
+ getUsedAddresses: () => Promise.resolve([]),
+ getChangeAddress: () =>
+ CSL.Address.fromHex(
+ '017ef00ee3672330155382a2857573868af466b88aa8c4081f45583e1784d958399bcce03402fd853d43a4e7366f2018932e5aff4eea904693',
+ ),
+ getRewardAddresses: () =>
+ Promise.all([CSL.Address.fromHex('e184d958399bcce03402fd853d43a4e7366f2018932e5aff4eea904693')]),
+ getUtxos: () => Promise.resolve([]),
+ getCollateral: () => Promise.resolve([]),
+ submitTx: () => Promise.resolve('tx-id'),
+}
const trustedUrl = 'https://yoroi-wallet.com/'
diff --git a/packages/dapp-connector/src/dapp-connector.ts b/packages/dapp-connector/src/dapp-connector.ts
index e25e1ae16e..6a88ec7c57 100644
--- a/packages/dapp-connector/src/dapp-connector.ts
+++ b/packages/dapp-connector/src/dapp-connector.ts
@@ -1,4 +1,4 @@
-import {resolverHandleEvent} from './resolver'
+import {resolverHandleEvent, ResolverWallet} from './resolver'
// @ts-ignore-next-line
import {connectWallet} from './connector'
import {DappConnection, Storage} from './adapters/async-storage'
@@ -17,12 +17,12 @@ export type DappConnectorManager = {
): Promise
}
-export const dappConnectorMaker = (storage: Storage, wallet: Wallet, api: Api): DappConnector => {
+export const dappConnectorMaker = (storage: Storage, wallet: ResolverWallet, api: Api): DappConnector => {
return new DappConnector(storage, wallet, api)
}
export class DappConnector implements DappConnectorManager {
- constructor(private storage: Storage, private wallet: Wallet, private api: Api) {}
+ constructor(private storage: Storage, private wallet: ResolverWallet, private api: Api) {}
async getDAppList() {
return this.api.getDApps()
@@ -51,7 +51,7 @@ export class DappConnector implements DappConnectorManager {
trustedUrl: string,
sendMessage: (id: string, result: unknown, error?: Error) => void,
) {
- return await resolverHandleEvent(eventData, trustedUrl, this.wallet, sendMessage, this.storage)
+ return await resolverHandleEvent(eventData, trustedUrl, this.wallet, sendMessage, this.storage, supportedExtensions)
}
}
@@ -59,10 +59,4 @@ type SupportedExtension = {
cip: number
}
-const supportedExtensions: SupportedExtension[] = []
-
-type Wallet = {
- id: string
- networkId: number
- confirmConnection: (dappOrigin: string) => Promise
-}
+const supportedExtensions: SupportedExtension[] = [{cip: 30}]
diff --git a/packages/dapp-connector/src/index.ts b/packages/dapp-connector/src/index.ts
index ab39444d66..bfe8b0f1cc 100644
--- a/packages/dapp-connector/src/index.ts
+++ b/packages/dapp-connector/src/index.ts
@@ -1,5 +1,6 @@
-export {connectionStorageMaker, type Storage} from './adapters/async-storage'
-export {type DappConnector, dappConnectorMaker} from './dapp-connector'
+export {connectionStorageMaker, type Storage, type DappConnection} from './adapters/async-storage'
+export {type DappConnector, dappConnectorMaker, type DappConnectorManager} from './dapp-connector'
export * from './translators/reactjs/DappConnectorProvider'
export {useDappList} from './translators/reactjs/useDappList'
export {type DappListResponse, dappConnectorApiMaker} from './adapters/api'
+export {ResolverWallet} from './resolver'
diff --git a/packages/dapp-connector/src/resolver.ts b/packages/dapp-connector/src/resolver.ts
index a8b3599e1e..1bd34665ed 100644
--- a/packages/dapp-connector/src/resolver.ts
+++ b/packages/dapp-connector/src/resolver.ts
@@ -1,12 +1,14 @@
-import {isKeyOf, isRecord} from '@yoroi/common'
-import {mockedData, mockWalletId1} from './mocks'
+import {isKeyOf, isRecord, createTypeGuardFromSchema} from '@yoroi/common'
import {Storage} from './adapters/async-storage'
+import {z} from 'zod'
+import {Address, TransactionUnspentOutput, TransactionWitnessSet, Value} from '@emurgo/cross-csl-core'
type Context = {
browserOrigin: string
- wallet: Wallet
+ wallet: ResolverWallet
trustedOrigin: string
storage: Storage
+ supportedExtensions: Array<{cip: number}>
}
type ResolvableMethod = (params: unknown, context: Context) => Promise
@@ -17,10 +19,17 @@ type Resolver = {
isEnabled: ResolvableMethod
api: {
getBalance: ResolvableMethod
- getChangeAddresses: ResolvableMethod
+ getChangeAddress: ResolvableMethod
getNetworkId: ResolvableMethod
getRewardAddresses: ResolvableMethod
getUsedAddresses: ResolvableMethod
+ getExtensions: ResolvableMethod>
+ getUnusedAddresses: ResolvableMethod
+ getUtxos: ResolvableMethod
+ getCollateral: ResolvableMethod
+ submitTx: ResolvableMethod
+ signTx: ResolvableMethod
+ signData: ResolvableMethod<{signature: string; key: string}>
}
}
@@ -43,15 +52,86 @@ export const resolver: Resolver = {
return hasWalletAcceptedConnection(context)
},
api: {
- getBalance: async (_params: unknown, context: Context) => {
+ signTx: async (params: unknown, context: Context) => {
assertOriginsMatch(context)
await assertWalletAcceptedConnection(context)
- return mockedData[mockWalletId1].balance
+ const tx =
+ isRecord(params) && isKeyOf('args', params) && Array.isArray(params.args) && typeof params.args[0] === 'string'
+ ? params.args[0]
+ : undefined
+ const partialSign =
+ isRecord(params) && isKeyOf('args', params) && Array.isArray(params.args) && typeof params.args[1] === 'boolean'
+ ? params.args[1]
+ : undefined
+ if (tx === undefined) throw new Error('Invalid params')
+ const result = await context.wallet.signTx(tx, partialSign ?? false)
+ return result.toHex()
},
- getChangeAddresses: async (_params: unknown, context: Context) => {
+ signData: async (params: unknown, context: Context) => {
assertOriginsMatch(context)
await assertWalletAcceptedConnection(context)
- return mockedData[mockWalletId1].changeAddresses
+ const address =
+ isRecord(params) && isKeyOf('args', params) && Array.isArray(params.args) && typeof params.args[0] === 'string'
+ ? params.args[0]
+ : undefined
+ const payload =
+ isRecord(params) && isKeyOf('args', params) && Array.isArray(params.args) && typeof params.args[1] === 'string'
+ ? params.args[1]
+ : undefined
+ if (address === undefined || payload === undefined) throw new Error('Invalid params')
+ return context.wallet.signData(address, payload)
+ },
+ submitTx: async (params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ if (
+ !isRecord(params) ||
+ !isKeyOf('args', params) ||
+ !Array.isArray(params.args) ||
+ typeof params.args[0] !== 'string'
+ ) {
+ throw new Error('Invalid params')
+ }
+ return context.wallet.submitTx(params.args[0])
+ },
+ getCollateral: async (params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ const value =
+ isRecord(params) && Array.isArray(params.args) && typeof params.args[0] === 'string'
+ ? params.args[0]
+ : undefined
+ const result = await context.wallet.getCollateral(value)
+
+ if (result === null || (result.length === 0 && typeof value === 'string')) return null
+
+ return Promise.all(result.map((u) => u.toHex()))
+ },
+
+ getUnusedAddresses: async (_params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ const addresses = await context.wallet.getUnusedAddresses()
+ return Promise.all(addresses.map((a) => a.toHex()))
+ },
+ getExtensions: async (_params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ return context.supportedExtensions
+ },
+ getBalance: async (params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ if (!isGetBalanceParams(params)) throw new Error('Invalid params')
+ const [tokenId = '*'] = params.args
+ const balance = await context.wallet.getBalance(tokenId)
+ return balance.toHex()
+ },
+ getChangeAddress: async (_params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ const address = await context.wallet.getChangeAddress()
+ return address.toHex()
},
getNetworkId: async (_params: unknown, context: Context) => {
assertOriginsMatch(context)
@@ -61,16 +141,42 @@ export const resolver: Resolver = {
getRewardAddresses: async (_params: unknown, context: Context) => {
assertOriginsMatch(context)
await assertWalletAcceptedConnection(context)
- return mockedData[mockWalletId1].rewardAddresses
+ const addresses = await context.wallet.getRewardAddresses()
+ return Promise.all(addresses.map((a) => a.toHex()))
},
- getUsedAddresses: async (_params: unknown, context: Context) => {
+ getUtxos: async (params: unknown, context: Context) => {
assertOriginsMatch(context)
await assertWalletAcceptedConnection(context)
- return mockedData[mockWalletId1].usedAddresses
+ const value =
+ isRecord(params) && Array.isArray(params.args) && typeof params.args[0] === 'string'
+ ? params.args[0]
+ : undefined
+ const pagination =
+ isRecord(params) && Array.isArray(params.args) && isPaginationParams(params.args[1])
+ ? params.args[1]
+ : undefined
+ const utxos = await context.wallet.getUtxos(value, pagination)
+ if (utxos === null || (utxos.length === 0 && typeof value === 'string')) return null
+ return Promise.all(utxos.map((u) => u.toHex()))
+ },
+ getUsedAddresses: async (params: unknown, context: Context) => {
+ assertOriginsMatch(context)
+ await assertWalletAcceptedConnection(context)
+ const pagination =
+ isRecord(params) && Array.isArray(params.args) && isPaginationParams(params.args[0])
+ ? params.args[0]
+ : undefined
+ const addresses = await context.wallet.getUsedAddresses(pagination)
+ return Promise.all(addresses.map((a) => a.toHex()))
},
},
} as const
+const paginationSchema = z.object({page: z.number(), limit: z.number()})
+const getBalanceSchema = z.object({args: z.array(z.string().optional())})
+const isGetBalanceParams = createTypeGuardFromSchema(getBalanceSchema)
+const isPaginationParams = createTypeGuardFromSchema(paginationSchema)
+
const assertOriginsMatch = (context: Context) => {
if (context.browserOrigin !== context.trustedOrigin) {
throw new Error(`Origins do not match: ${context.browserOrigin} !== ${context.trustedOrigin}`)
@@ -94,7 +200,7 @@ const hasWalletAcceptedConnection = async (context: Context) => {
const handleMethod = async (
method: string,
params: {browserContext?: {origin?: unknown}},
- trustedContext: {wallet: Wallet; origin: string; storage: Storage},
+ trustedContext: {wallet: ResolverWallet; origin: string; storage: Storage; supportedExtensions: Array<{cip: number}>},
) => {
const browserOrigin = String(params?.browserContext?.origin || '')
@@ -103,6 +209,7 @@ const handleMethod = async (
wallet: trustedContext.wallet,
trustedOrigin: trustedContext.origin,
storage: trustedContext.storage,
+ supportedExtensions: trustedContext.supportedExtensions,
}
if (method === 'cardano_enable') {
@@ -131,24 +238,40 @@ const handleMethod = async (
export const resolverHandleEvent = async (
eventData: string,
trustedUrl: string,
- wallet: Wallet,
+ wallet: ResolverWallet,
sendMessage: (id: string, result: unknown, error?: Error) => void,
storage: Storage,
+ supportedExtensions: Array<{cip: number}>,
) => {
const trustedOrigin = new URL(trustedUrl).origin
const {id, method, params} = JSON.parse(eventData)
try {
- const result = await handleMethod(method, params, {origin: trustedOrigin, wallet, storage})
+ const result = await handleMethod(method, params, {origin: trustedOrigin, wallet, storage, supportedExtensions})
if (method !== LOG_MESSAGE_EVENT) sendMessage(id, result)
} catch (error) {
sendMessage(id, null, error as Error)
}
}
-type Wallet = {
+export type ResolverWallet = {
id: string
networkId: number
confirmConnection: (dappOrigin: string) => Promise
+ getBalance: (tokenId?: string) => Promise
+ getUnusedAddresses: () => Promise
+ getUsedAddresses: (pagination?: Pagination) => Promise
+ getChangeAddress: () => Promise
+ getRewardAddresses: () => Promise
+ getUtxos: (value?: string, pagination?: Pagination) => Promise
+ getCollateral: (value?: string) => Promise
+ submitTx: (cbor: string) => Promise
+ signTx: (txHex: string, partialSign?: boolean) => Promise
+ signData: (address: string, payload: string) => Promise<{signature: string; key: string}>
+}
+
+type Pagination = {
+ page: number
+ limit: number
}
const LOG_MESSAGE_EVENT = 'log_message'
diff --git a/yarn.lock b/yarn.lock
index 6ce31e9ce1..f4535a9742 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2156,10 +2156,10 @@
bignumber.js "^9.0.1"
easy-crc "1.1.0"
-"@emurgo/yoroi-lib@0.15.4-alpha.6":
- version "0.15.4-alpha.6"
- resolved "https://registry.yarnpkg.com/@emurgo/yoroi-lib/-/yoroi-lib-0.15.4-alpha.6.tgz#2287b75a00ee0a20f24a670b48aba051cae705cc"
- integrity sha512-fKO+fKOz7WaBtEeTVw5TL06PJanDsYdSyb/WPGNA5xiS4BaOXCzJj2cgh39cjwuI8pvChYtyA+7JlSgWuFehpQ==
+"@emurgo/yoroi-lib@0.15.4-alpha.7":
+ version "0.15.4-alpha.7"
+ resolved "https://registry.yarnpkg.com/@emurgo/yoroi-lib/-/yoroi-lib-0.15.4-alpha.7.tgz#a964beaee14163feb0ef50e914de744aea3aea7d"
+ integrity sha512-5huN9m73+XbIfQQILY4eHsT719M1HF+yOXKXxBZH2hrgNR3JfSGQtE2Ihc7ZK+4F/II39yR8XLC7lxcrq/7BLg==
dependencies:
"@cardano-foundation/ledgerjs-hw-app-cardano" "^6.0.0"
"@emurgo/cross-csl-core" "4.4.0"
@@ -21044,16 +21044,7 @@ string-natural-compare@^3.0.1:
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
-"string-width-cjs@npm:string-width@^4.2.0":
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -21166,7 +21157,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -21194,13 +21185,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -22813,7 +22797,7 @@ workerpool@6.2.1:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -22849,15 +22833,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"