From 8eb1a070c3fe36af0b01526c49592133fbf562ee Mon Sep 17 00:00:00 2001 From: soralit Date: Wed, 17 Jul 2024 16:52:18 +0800 Subject: [PATCH 1/7] feat(keystone): add basic keystone components --- packages/mobile/package.json | 1 + .../core/KeystoneQRCode/KeystoneQRCode.tsx | 55 ++ .../KeystoneScanQR.interface.ts | 17 + .../core/KeystoneScanQR/KeystoneScanQR.tsx | 247 ++++++++ .../navigation/AppStack/AppStack.interface.ts | 5 + .../mobile/src/navigation/navigationNames.ts | 1 + packages/uikit/package.json | 1 + yarn.lock | 546 +++++++++++++++++- 8 files changed, 868 insertions(+), 5 deletions(-) create mode 100644 packages/mobile/src/core/KeystoneQRCode/KeystoneQRCode.tsx create mode 100644 packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.interface.ts create mode 100644 packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 8e3be1b98..9ced40406 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -32,6 +32,7 @@ "@craftzdog/react-native-buffer": "^6.0.5", "@expo/react-native-action-sheet": "^4.0.1", "@gorhom/bottom-sheet": "^4.6.0", + "@keystonehq/keystone-sdk": "^0.7.5", "@ledgerhq/hw-transport": "^6.30.6", "@ledgerhq/react-native-hw-transport-ble": "^6.32.5", "@rainbow-me/animated-charts": "https://github.com/tonkeeper/react-native-animated-charts#737b1633c41e13da437c8e111c4aedd15bd10558", diff --git a/packages/mobile/src/core/KeystoneQRCode/KeystoneQRCode.tsx b/packages/mobile/src/core/KeystoneQRCode/KeystoneQRCode.tsx new file mode 100644 index 000000000..a062652ec --- /dev/null +++ b/packages/mobile/src/core/KeystoneQRCode/KeystoneQRCode.tsx @@ -0,0 +1,55 @@ +import { UR, UREncoder } from '@keystonehq/keystone-sdk'; +import { View, ViewStyle, deviceWidth, ns } from '@tonkeeper/uikit'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { Animated, LayoutChangeEvent } from 'react-native'; +import QRCode from 'react-native-qrcode-styled'; +import { useAnimatedStyle, useSharedValue } from 'react-native-reanimated'; + +export type KeystoneQRCodeProps = { + ur: UR; +}; + +export const QR_SIZE = deviceWidth - ns(16) * 2 - ns(24) * 2; + +export const QR_WRAP_STYLE: ViewStyle = { + width: QR_SIZE, + height: QR_SIZE, + alignItems: 'center', + justifyContent: 'center', +}; + +export const KeystoneQRCode = ({ ur }: KeystoneQRCodeProps) => { + const encoder = useMemo(() => { + return new UREncoder(ur, 400); + }, [ur]); + const [data, setData] = useState(encoder.nextPart().toUpperCase()); + useEffect(() => { + const id = setInterval(() => { + setData(encoder.nextPart().toUpperCase()); + }, 100); + return () => { + clearInterval(id); + }; + }, [encoder, setData]); + + const qrCodeScale = useSharedValue(1); + + const handleQrCodeLayout = useCallback( + (e: LayoutChangeEvent) => { + qrCodeScale.value = QR_SIZE / e.nativeEvent.layout.width; + }, + [qrCodeScale], + ); + + const qrStyle = useAnimatedStyle(() => ({ + transform: [{ scale: qrCodeScale.value }], + })); + + return ( + + + + + + ); +}; diff --git a/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.interface.ts b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.interface.ts new file mode 100644 index 000000000..2cc92aa00 --- /dev/null +++ b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.interface.ts @@ -0,0 +1,17 @@ +import { RouteProp } from '@react-navigation/native'; +import { AppStackRouteNames } from '$navigation'; +import { AppStackParamList } from '$navigation/AppStack'; + +export enum KeystoneScanState { + SUCCESS, + FAILED, +} + +export interface KeystoneScanStatus { + state: KeystoneScanState, + errorMessage: string, +} + +export interface KeystoneScanQRProps { + route: RouteProp; +} diff --git a/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx new file mode 100644 index 000000000..bf82dd59a --- /dev/null +++ b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx @@ -0,0 +1,247 @@ +import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import QRCodeScanner from 'react-native-qrcode-scanner'; +import { RNCamera } from 'react-native-camera'; +import { + check, + PERMISSIONS, + RESULTS, + request, + openSettings, +} from 'react-native-permissions'; +import { Platform, StatusBar } from 'react-native'; +import { KeystoneScanQRProps, KeystoneScanState } from './KeystoneScanQR.interface'; +import * as S from '../ScanQR/ScanQR.style'; +import { Button, Icon, NavBar, Text } from '$uikit'; +import { + delay, + deviceHeight, + isIOS, + ns, + triggerImpactLight, + triggerNotificationSuccess, + triggerSelection, +} from '$utils'; +import { BottomButtonWrap, BottomButtonWrapHelper } from '$shared/components'; +import { useNavigation } from '@tonkeeper/router'; +import { t } from '@tonkeeper/shared/i18n'; +import SystemNavigationBar from 'react-native-system-navigation-bar'; +import { DarkTheme } from '@tonkeeper/uikit/src/styles/themes/dark'; +import { useTheme } from '@tonkeeper/uikit'; +import { URDecoder, UREncoder } from '@keystonehq/keystone-sdk'; + +export const KeystoneScanQR: FC = ({ route }) => { + const nav = useNavigation(); + const onScan = route.params.onScan; + const scannerRef = useRef(null); + + const theme = useTheme(); + + const [isFlashlightOn, setFlashlightOn] = useState(false); + const [isCameraBlocked, setCameraBlocked] = useState(false); + const [isHasPermission, setHasPermissions] = useState(false); + const [decoder, setDecoder] = useState(new URDecoder()); + + useEffect(() => { + SystemNavigationBar.setNavigationColor( + DarkTheme.backgroundPageAlternate, + 'light', + 'navigation', + ); + + return () => { + SystemNavigationBar.setNavigationColor( + theme.backgroundPageAlternate, + theme.isDark ? 'light' : 'dark', + 'navigation', + ); + }; + }, [theme.backgroundPageAlternate, theme.isDark]); + + useEffect(() => { + const permissionName = Platform.select({ + android: PERMISSIONS.ANDROID.CAMERA, + ios: PERMISSIONS.IOS.CAMERA, + default: PERMISSIONS.IOS.CAMERA, + }); + + check(permissionName).then((result) => { + if (result === RESULTS.GRANTED) { + setHasPermissions(true); + } else if (result === RESULTS.DENIED) { + request(permissionName) + .then((res) => { + if (res === RESULTS.GRANTED) { + setHasPermissions(true); + } else { + setCameraBlocked(true); + } + }) + .catch(() => { + setCameraBlocked(true); + }); + } else { + setCameraBlocked(true); + } + }); + }, []); + + const toggleLanternHandle = useCallback(() => { + if (!isFlashlightOn) { + triggerImpactLight(); + } else { + triggerSelection(); + } + setFlashlightOn(!isFlashlightOn); + }, [isFlashlightOn]); + + const handleBack = useCallback(() => { + nav.goBack(); + }, []); + + const handleOpenSettings = useCallback(() => { + openSettings(); + }, []); + + const onRead = async (e: any) => { + if (e.data) { + decoder.receivePart(e.data); + if (decoder.isSuccess()) { + const ur = decoder.resultUR(); + const status = await onScan(ur); + if (status.state === KeystoneScanState.SUCCESS) { + triggerNotificationSuccess(); + nav.goBack(); + } else { + //alert error message + await delay(400); + setDecoder(new URDecoder); + scannerRef.current?.reactivate(); + } + } else if (decoder.isError()) { + await delay(400); + setDecoder(new URDecoder); + scannerRef.current?.reactivate(); + } + } + }; + + function renderContent() { + if (isCameraBlocked) { + return ( + + + + + + + {t('scan_qr_permission_error')} + + + + + + + + + ); + } + + return ( + + + + + {isIOS && } + + + + {isHasPermission && ( + + )} + + + + + {t('scan_qr_title')} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {isFlashlightOn ? ( + + + + ) : ( + + {isIOS && } + + + )} + + + + ); + } + + return <>{renderContent()}; +}; diff --git a/packages/mobile/src/navigation/AppStack/AppStack.interface.ts b/packages/mobile/src/navigation/AppStack/AppStack.interface.ts index 160749fdc..98c026f78 100644 --- a/packages/mobile/src/navigation/AppStack/AppStack.interface.ts +++ b/packages/mobile/src/navigation/AppStack/AppStack.interface.ts @@ -4,7 +4,9 @@ import { CryptoCurrency } from '$shared/constants'; import { SendAnalyticsFrom, SubscriptionModel } from '$store/models'; import { NFTKeyPair } from '$store/nfts/interface'; import { CurrencyAdditionalParams, TokenType } from '$core/Send/Send.interface'; +import {UR} from '@keystonehq/keystone-sdk'; import {CustomFeeCurrency} from "$core/Send/new/core/useSendCore"; +import { KeystoneScanStatus } from '$core/KeystoneScanQR/KeystoneScanQR.interface'; export type AppStackParamList = { [AppStackRouteNames.MainStack]: {}; @@ -39,6 +41,9 @@ export type AppStackParamList = { [AppStackRouteNames.ScanQR]: { onScan: (url: string) => boolean | Promise; }; + [AppStackRouteNames.KeystoneScanQR]: { + onScan: (ur: UR) => Promise; + }; [AppStackRouteNames.Subscription]: { subscription: SubscriptionModel; }; diff --git a/packages/mobile/src/navigation/navigationNames.ts b/packages/mobile/src/navigation/navigationNames.ts index 9d4eeb910..86ac5183d 100644 --- a/packages/mobile/src/navigation/navigationNames.ts +++ b/packages/mobile/src/navigation/navigationNames.ts @@ -11,6 +11,7 @@ export enum AppStackRouteNames { Send = 'Send', ChooseCountry = 'ChooseCountry', ScanQR = 'ScanQR', + KeystoneScanQR = 'KeystoneScanQR', RequireWalletModal = 'RequireWalletModal', NFTSend = 'NFTSend', BatterySend = 'BatterySend', diff --git a/packages/uikit/package.json b/packages/uikit/package.json index 33461a08c..b8490712a 100644 --- a/packages/uikit/package.json +++ b/packages/uikit/package.json @@ -12,6 +12,7 @@ "dependencies": { "@bogoslavskiy/react-native-steezy": "^1.0.4", "@gorhom/bottom-sheet": "^4.6.0", + "@keystonehq/keystone-sdk": "^0.7.5", "@tonkeeper/router": "1.0.0", "expo-linear-gradient": "^12.1.2", "lodash": "^4.17.21", diff --git a/yarn.lock b/yarn.lock index 0ee44b163..2f3cb93d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1352,6 +1352,11 @@ resolved "https://registry.yarnpkg.com/@bogoslavskiy/react-native-steezy/-/react-native-steezy-1.0.4.tgz#6fa2eaeda04a6babca1440a00f3c542c60da985b" integrity sha512-0kEtqYE5zYYO9XWcUaXIFHaWwxkP9qgINnpcJeyCTL3NHbeCK/KcCrkflch+LHyiIgYL6ma8iOdEOCV5VT2Ueg== +"@bufbuild/protobuf@^1.2.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.10.0.tgz#1a67ac889c2d464a3492b3e54c38f80517963b16" + integrity sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag== + "@craftzdog/react-native-buffer@^6.0.5": version "6.0.5" resolved "https://registry.yarnpkg.com/@craftzdog/react-native-buffer/-/react-native-buffer-6.0.5.tgz#0d4fbe0dd104186d2806655e3c0d25cebdae91d3" @@ -1421,6 +1426,19 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + +"@ethereumjs/util@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.0.3.tgz#c2709e6127a85bbe23a71937ac78358ac93e7241" + integrity sha512-PmwzWDflky+7jlZIFqiGsBPap12tk9zK5SVH9YW2OEnDN7OEhCjUOMzbOqwuClrbkSIkM2ERivd7sXZ48Rh/vg== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.1.3" + "@ethersproject/shims@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/shims/-/shims-5.7.0.tgz#ee32e543418595774029c5ea6123ea8995e7e154" @@ -2388,6 +2406,157 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@keystonehq/alias-sampling@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz#63af931ffe6500aef4c0d87775a5b279189abf8d" + integrity sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w== + +"@keystonehq/bc-ur-registry-aptos@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-aptos/-/bc-ur-registry-aptos-0.6.3.tgz#7a557b16cfecfddc4fb3a2532be7bf77c110940f" + integrity sha512-NJipiLJpu/pxocCUz8yiQUwmjHtu5XEDhhZHoNFE4M5B9WoZTae+wDCt6dTZD42XlePkPIgLAotBKIKmSHMGRQ== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-arweave@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-arweave/-/bc-ur-registry-arweave-0.5.3.tgz#881259fcfdb8aecf2fc81328cf8061a2c988a965" + integrity sha512-b5OAzhW7HLaOX7OEyWA+Bz+4EJIzCT7c+JXU0TElzpBD5rGo4ylf+StuyV6WnuKx5NV11fv9k2XDyHit26CCLA== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-btc@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-btc/-/bc-ur-registry-btc-0.1.1.tgz#5363961c2d0c529b01080eb278ff60de6bf5d181" + integrity sha512-LdYqItY1Y/M6fWJNE6L0HYZbKL8CGVP6OigG7T/gJ+SWnOGgYXj3at02aV7b9qZ7iNwJPkNrqsIDN5eajQcZjQ== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-cardano@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-cardano/-/bc-ur-registry-cardano-0.3.4.tgz#dc83b114e4b06cf6393ad9a364be100eb60c68ee" + integrity sha512-70DGS6GVUINiOTGqFLpD0RwkG/Ne7tdG/6GqF3iTo1Wu/tG70FCQAgo7n7Zdz7Tbz2+1/rVwZzU0ZPFwBY7xPw== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-cosmos@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-cosmos/-/bc-ur-registry-cosmos-0.5.3.tgz#8b431a6b02ec2d60783d6ce0bdbd116878320f37" + integrity sha512-bCmm2LMM4EHiLrjhfkbzfnwTXi4ez56MfwKYke8Z0roeaJbHmr2KkCg6/MePLjeK9PRbY0jKXBmCowMe2DhfhA== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-eth@^0.20.1": + version "0.20.1" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.20.1.tgz#43e3303dce9a87c61da3d5beb7f5111ae5d6cc19" + integrity sha512-vQpqhj2DeDI1/xwY3eqj1PWgqqTdg53RgMVBUZUV3O8CSc0nbnH4SaP3cx85KEOO+4Loq6SXHbFJr1egalM2ng== + dependencies: + "@ethereumjs/util" "^9.0.3" + "@keystonehq/bc-ur-registry" "^0.6.4" + hdkey "^2.0.1" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-evm@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-evm/-/bc-ur-registry-evm-0.5.3.tgz#086167a53194fbfe070ea066d83bacaaede56e4e" + integrity sha512-K3tmY1Y2SDImtSnCPFoASMBNernbN/ZRIIkp8iKegDeyHtaPbzfNIdaEL/wUHVoieTgTOUTwyWZspBvvbgrivw== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^9.0.0" + +"@keystonehq/bc-ur-registry-keystone@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-keystone/-/bc-ur-registry-keystone-0.4.3.tgz#e58ad5e5d17d2a6665c7440e44e58c4d0c24c1f8" + integrity sha512-YTf0p9TYYq9+bfF/wMEE2gbhNiV1S0m31hMwnl+4kn3q1avwlrXZ6h30nANZXD31NQ8hMuLO8x7Ny+0AldmAOA== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + +"@keystonehq/bc-ur-registry-near@^0.9.3": + version "0.9.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-near/-/bc-ur-registry-near-0.9.3.tgz#3b87d284d4afb4bf80f07ef39f3bb59dcf10f1e3" + integrity sha512-+JHxlxwa4pbZXODSZYcIHN42XZZYblNQFp6ogP0yyqct1ayVbAgz/RoYdLrfdNJ4TDvPRClOPDIvZSiUFYCpaw== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-sol@^0.9.3": + version "0.9.3" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-sol/-/bc-ur-registry-sol-0.9.3.tgz#6263195d58c0e06e3c44016461bb2f018113a5d2" + integrity sha512-ZjTeInzS4y10tIZlgEN4NGW9W6vTBxzZrM9CaNNeVqTgtyiOB2JvPIW8buxlZUKYj2M5Mu5jPHuAjVRCK6Jm9Q== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-stellar@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-stellar/-/bc-ur-registry-stellar-0.0.4.tgz#7acd57738b95102343c292e39ef5c7ab049c474b" + integrity sha512-L/naB3+/386htOrePisgQsTUOIKgIWpXS6FF24TTkyWWr/SHQV3PNOYXOnMto+WKABv6+BbG6AAnsw/7UuONLg== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + bs58check "^2.1.2" + uuid "^8.3.2" + +"@keystonehq/bc-ur-registry-sui@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-sui/-/bc-ur-registry-sui-0.3.1.tgz#636f601620def48e0488408df049aa15718380a2" + integrity sha512-cbxu5AF5xFg9J3p0AXIkp1IMGSSNsaXWRgn22bcnkIlzwMEwmgJR5J/Lg45MIyIpW2p17fKyYqc9yuP0iMALEQ== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + uuid "^9.0.0" + +"@keystonehq/bc-ur-registry-ton@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-ton/-/bc-ur-registry-ton-0.1.2.tgz#0847cc01655221015bb138e849777abc195e8b62" + integrity sha512-m36/QODXTbkQQacM8vIopt5RvE/uc/f9f4Jc9VFxsxKWmld3aGwrMsLB1SBSva31kawikOVSMEWXhXlQ07UJhA== + dependencies: + "@keystonehq/bc-ur-registry" "^0.6.4" + uuid "^9.0.0" + +"@keystonehq/bc-ur-registry@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz#9c57ff9687cafdc0d2bbd04dc36676d3a38c1485" + integrity sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ== + dependencies: + "@ngraveio/bc-ur" "^1.1.5" + bs58check "^2.1.2" + tslib "^2.3.0" + +"@keystonehq/keystone-sdk@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@keystonehq/keystone-sdk/-/keystone-sdk-0.7.5.tgz#c2b06d2d649db72487484a7bc844a1ac0a23e521" + integrity sha512-/OtyqaXxjiiKzzjpmGMpeqX/f/PNXk5G3yd/sM+nl7FVJKiMUoQmfEgAXMExdN3klINmMjZ2T33ZIDX72jh8qA== + dependencies: + "@bufbuild/protobuf" "^1.2.0" + "@keystonehq/bc-ur-registry" "^0.6.4" + "@keystonehq/bc-ur-registry-aptos" "^0.6.3" + "@keystonehq/bc-ur-registry-arweave" "^0.5.3" + "@keystonehq/bc-ur-registry-btc" "^0.1.1" + "@keystonehq/bc-ur-registry-cardano" "^0.3.4" + "@keystonehq/bc-ur-registry-cosmos" "^0.5.3" + "@keystonehq/bc-ur-registry-eth" "^0.20.1" + "@keystonehq/bc-ur-registry-evm" "^0.5.3" + "@keystonehq/bc-ur-registry-keystone" "^0.4.3" + "@keystonehq/bc-ur-registry-near" "^0.9.3" + "@keystonehq/bc-ur-registry-sol" "^0.9.3" + "@keystonehq/bc-ur-registry-stellar" "^0.0.4" + "@keystonehq/bc-ur-registry-sui" "^0.3.1" + "@keystonehq/bc-ur-registry-ton" "^0.1.2" + "@ngraveio/bc-ur" "^1.1.6" + bs58check "^3.0.1" + pako "^2.1.0" + ripple-binary-codec "^1.4.3" + uuid "^9.0.0" + "@ledgerhq/devices@^5.48.0", "@ledgerhq/devices@^5.51.1": version "5.51.1" resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" @@ -2491,6 +2660,19 @@ rxjs "^7.8.1" uuid "^9.0.1" +"@ngraveio/bc-ur@^1.1.5", "@ngraveio/bc-ur@^1.1.6": + version "1.1.13" + resolved "https://registry.yarnpkg.com/@ngraveio/bc-ur/-/bc-ur-1.1.13.tgz#27719fd3e745ccdbe97a7950905edcd1fed4844b" + integrity sha512-j73akJMV4+vLR2yQ4AphPIT5HZmxVjn/LxpL7YHoINnXoH6ccc90Zzck6/n6a3bCXOVZwBxq+YHwbAKRV+P8Zg== + dependencies: + "@keystonehq/alias-sampling" "^0.1.1" + assert "^2.0.0" + bignumber.js "^9.0.1" + cbor-sync "^1.0.4" + crc "^3.8.0" + jsbi "^3.1.5" + sha.js "^2.4.11" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -2498,6 +2680,13 @@ dependencies: eslint-scope "5.1.1" +"@noble/curves@1.4.2", "@noble/curves@~1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/ed25519@1.7.3": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -2508,6 +2697,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== +"@noble/hashes@1.4.0", "@noble/hashes@^1.2.0", "@noble/hashes@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + "@noble/secp256k1@1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -2999,6 +3193,28 @@ redux-thunk "^2.4.2" reselect "^4.1.8" +"@scure/base@~1.1.6": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== + +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== + dependencies: + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== + dependencies: + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + "@segment/loosely-validate-event@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz#87dfc979e5b4e7b82c5f1d8b722dfd5d77644681" @@ -4211,6 +4427,17 @@ assert@^1.1.1, assert@^1.4.1: object-assign "^4.1.1" util "0.10.3" +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -4277,6 +4504,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + axios@^0.27.2: version "0.27.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" @@ -4509,6 +4743,18 @@ base-64@^0.1.0: resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA== +base-x@^3.0.2, base-x@^3.0.9: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base64-js@*, base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -4549,6 +4795,11 @@ big-integer@1.6.x, big-integer@^1.6.16: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +big-integer@^1.6.48: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4846,6 +5097,37 @@ browserslist@^4.0.0, browserslist@^4.21.9: node-releases "^2.0.12" update-browserslist-db "^1.0.11" +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bs58check@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^5.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -4891,6 +5173,14 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== +buffer@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffer@^4.3.0, buffer@^4.9.1: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -4900,7 +5190,7 @@ buffer@^4.3.0, buffer@^4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.0, buffer@^5.2.0, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.0, buffer@^5.1.0, buffer@^5.2.0, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4996,6 +5286,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + call-me-maybe@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" @@ -5063,6 +5364,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001503: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== +cbor-sync@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cbor-sync/-/cbor-sync-1.0.4.tgz#5a11a1ab75c2a14d1af1b237fd84aa8c1593662f" + integrity sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA== + chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -5583,6 +5889,13 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -5940,6 +6253,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -5999,6 +6317,15 @@ deferred-leveldown@~0.2.0: dependencies: abstract-leveldown "~0.12.1" +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -6012,6 +6339,15 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -6389,6 +6725,19 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + eme-encryption-scheme-polyfill@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.1.1.tgz#91c823ed584e8ec5a9f03a6a676def8f80c57a4c" @@ -6549,6 +6898,18 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -6808,6 +7169,16 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== +ethereum-cryptography@^2.1.3: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== + dependencies: + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" + ethers@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.7.1.tgz#9c65e8b5d8e9ad77b7e8cf1c46099892cfafad49" @@ -7657,6 +8028,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -7699,6 +8075,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7957,6 +8344,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -7979,6 +8373,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -8034,6 +8435,23 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hdkey@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.1.0.tgz#755b30b73f54e93c31919c1b2f19205a8e57cb92" + integrity sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA== + dependencies: + bs58check "^2.1.2" + ripemd160 "^2.0.2" + safe-buffer "^5.1.1" + secp256k1 "^4.0.0" + he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -8689,6 +9107,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -8727,6 +9152,14 @@ is-invalid-path@^0.1.0: dependencies: is-glob "^2.0.0" +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -8853,6 +9286,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -9457,7 +9897,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbi@^3.2.1: +jsbi@^3.1.5, jsbi@^3.2.1: version "3.2.5" resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== @@ -10821,6 +11261,11 @@ node-abort-controller@^3.1.1: resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -10883,6 +11328,11 @@ node-forge@^1.2.1, node-forge@^1.3.1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp-build@^4.2.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + node-html-parser@^1.2.12: version "1.4.9" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" @@ -11118,6 +11568,14 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -11437,6 +11895,11 @@ pako@^1.0.5, pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -11779,6 +12242,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-calc@^7.0.1: version "7.0.5" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" @@ -13458,7 +13926,7 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -13466,6 +13934,26 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +ripple-address-codec@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-4.3.1.tgz#68fbaf646bb8567f70743af7f1ce4479f73efbf6" + integrity sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ== + dependencies: + base-x "^3.0.9" + create-hash "^1.1.2" + +ripple-binary-codec@^1.4.3: + version "1.11.0" + resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.11.0.tgz#d99c848c51a19746b738785001fb7208704bfe30" + integrity sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw== + dependencies: + assert "^2.0.0" + big-integer "^1.6.48" + buffer "6.0.3" + create-hash "^1.2.0" + decimal.js "^10.2.0" + ripple-address-codec "^4.3.1" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -13586,6 +14074,15 @@ schema-utils@^3.0.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +secp256k1@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -13705,6 +14202,18 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -13730,7 +14239,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -14917,6 +15426,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.3.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -15349,6 +15863,17 @@ util@^0.11.0: dependencies: inherits "2.0.3" +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -15374,7 +15899,7 @@ uuid@^8.0.0, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.1: +uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -15677,6 +16202,17 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 7e69bce4e4dcab76b7f295f0efef38672329bc07 Mon Sep 17 00:00:00 2001 From: soralit Date: Sat, 13 Jul 2024 14:59:27 +0800 Subject: [PATCH 2/7] feat(keystone): add connection progress --- .../core/KeystoneScanQR/KeystoneScanQR.tsx | 4 +- .../mobile/src/modals/PairKeystoneModal.tsx | 94 +++++++++++++ .../ImportWalletStack/ImportWalletStack.tsx | 6 +- .../src/navigation/ImportWalletStack/types.ts | 5 + packages/mobile/src/navigation/ModalStack.tsx | 4 + packages/mobile/src/navigation/helper.ts | 6 + .../ConfirmKeystoneWallet.tsx | 125 ++++++++++++++++++ .../screens/ConfirmKeystoneWallet/index.ts | 1 + packages/mobile/src/screens/index.ts | 1 + packages/mobile/src/wallet/Tonkeeper.ts | 68 ++++++++++ .../mobile/src/wallet/Wallet/WalletBase.ts | 6 +- packages/mobile/src/wallet/WalletTypes.ts | 5 + .../shared/i18n/locales/tonkeeper/en.json | 7 + packages/shared/modals/AddWalletModal.tsx | 15 +++ 14 files changed, 343 insertions(+), 4 deletions(-) create mode 100644 packages/mobile/src/modals/PairKeystoneModal.tsx create mode 100644 packages/mobile/src/screens/ConfirmKeystoneWallet/ConfirmKeystoneWallet.tsx create mode 100644 packages/mobile/src/screens/ConfirmKeystoneWallet/index.ts diff --git a/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx index bf82dd59a..356e6a330 100644 --- a/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx +++ b/packages/mobile/src/core/KeystoneScanQR/KeystoneScanQR.tsx @@ -114,12 +114,12 @@ export const KeystoneScanQR: FC = ({ route }) => { } else { //alert error message await delay(400); - setDecoder(new URDecoder); + setDecoder(new URDecoder()); scannerRef.current?.reactivate(); } } else if (decoder.isError()) { await delay(400); - setDecoder(new URDecoder); + setDecoder(new URDecoder()); scannerRef.current?.reactivate(); } } diff --git a/packages/mobile/src/modals/PairKeystoneModal.tsx b/packages/mobile/src/modals/PairKeystoneModal.tsx new file mode 100644 index 000000000..505ebb63f --- /dev/null +++ b/packages/mobile/src/modals/PairKeystoneModal.tsx @@ -0,0 +1,94 @@ +import { Button, Modal, Spacer, Steezy, View } from '@tonkeeper/uikit'; +import { FC, useCallback, useMemo } from 'react'; +import { t } from '@tonkeeper/shared/i18n'; +import { useNavigation } from '@tonkeeper/router'; +import { MainStackRouteNames, openKeystoneScanQR, openSetupNotifications, openSetupWalletDone } from '$navigation'; +import KeystoneSDK, { UR } from '@keystonehq/keystone-sdk'; +import { KeystoneScanState } from '$core/KeystoneScanQR/KeystoneScanQR.interface'; +import { tk } from '$wallet'; +import { InteractionManager } from 'react-native'; +import { ImportWalletStackRouteNames } from '$navigation/ImportWalletStack/types'; + +interface Props {} + +export const PairKeystoneModal: FC = () => { + const nav = useNavigation(); + const keystoneSdk = useMemo(() => { + return new KeystoneSDK(); + }, []); + const handleScanResult = useCallback(async (ur: UR) => { + if (ur.type != 'crypto-hdkey') { + return { + state: KeystoneScanState.FAILED, + errorMessage: 'invalid qrcode type', + }; + } + const account = keystoneSdk.parseTonAccount(ur); + const walletsInfo = await tk.getKeystoneWalletInfo(account.publicKey); + nav.goBack(); + InteractionManager.runAfterInteractions(() => { + nav.navigate(MainStackRouteNames.ImportWalletStack, { + screen: ImportWalletStackRouteNames.ConfirmKeystoneWallet, + params: { + walletsInfo, + onDone: async () => { + const extra = + !!account.xfp && !!account.path + ? { xfp: account.xfp, path: account.path } + : undefined; + const identifiers = await tk.addKeystoneWallet( + account.publicKey, + account.name, + extra, + ); + + const isNotificationsDenied = await tk.wallet.notifications.getIsDenied(); + + if (isNotificationsDenied) { + openSetupWalletDone(identifiers); + } else { + openSetupNotifications(identifiers); + } + }, + }, + }); + }); + return { + state: KeystoneScanState.SUCCESS, + errorMessage: '', + }; + }, [keystoneSdk]); + + const handleContinue = useCallback(() => { + openKeystoneScanQR(handleScanResult); + }, [handleScanResult]); + return ( + + + + + +