From 62b12e3aa84c71a8d2739790fefc165300287bf7 Mon Sep 17 00:00:00 2001 From: Bhavi Dhingra Date: Fri, 2 Aug 2024 01:18:23 +0530 Subject: [PATCH] feat(sui): non-bitgo recovery for hot wallets WIN-3274 --- .gitignore | 3 + electron/main/index.ts | 3 + package-lock.json | 223 ++++++++++++++++-- package.json | 3 +- scripts/build-icons.js | 1 + .../CryptocurrencyIcon/CryptocurrencyIcon.tsx | 21 +- .../NonBitGoRecoveryCoin.tsx | 2 + src/helpers/config.ts | 14 ++ 8 files changed, 246 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index bb1bad02..0465b6dd 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ playwright/.cache/ # electron-vite-react .vscode/.debug.env + +# Idea IntelliJ +.idea/ diff --git a/electron/main/index.ts b/electron/main/index.ts index 95a6e358..77f32aeb 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -52,6 +52,7 @@ import { join } from 'path'; import * as ecc from 'tiny-secp256k1'; import { Hbar, Thbar } from '@bitgo/sdk-coin-hbar'; import { Algo, Talgo } from '@bitgo/sdk-coin-algo'; +import { Sui, Tsui } from '@bitgo-beta/sdk-coin-sui'; const bip32 = BIP32Factory(ecc); @@ -137,6 +138,8 @@ sdk.register('hbar', Hbar.createInstance); sdk.register('thbar', Thbar.createInstance); sdk.register('algo', Algo.createInstance); sdk.register('talgo', Talgo.createInstance); +sdk.register('sui', Sui.createInstance); +sdk.register('tsui', Tsui.createInstance); Erc20Token.createTokenConstructors().forEach(({ name, coinConstructor }) => { sdk.register(name, coinConstructor); }); diff --git a/package-lock.json b/package-lock.json index 3e804a11..20b65521 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "@bitgo/sdk-coin-polygon": "20.5.8", "@bitgo/sdk-coin-sei": "2.0.24", "@bitgo/sdk-coin-sol": "4.3.2", + "@bitgo/sdk-coin-sui": "^5.4.0", "@bitgo/sdk-coin-tia": "2.1.10", "@bitgo/sdk-coin-trx": "2.0.24", "@bitgo/sdk-coin-xlm": "3.1.2", @@ -2401,9 +2402,9 @@ } }, "node_modules/@bitgo/public-types": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/@bitgo/public-types/-/public-types-2.25.1.tgz", - "integrity": "sha512-85K8W5rXJYjd/ueqrL2sZpPLK0aMxF14Jk6CkogSBHUpFWp6ZZsylmKnRAUFuhzfM6Tf9F0Nt7MXHyrxKOjsxw==", + "version": "2.33.3", + "resolved": "https://registry.npmjs.org/@bitgo/public-types/-/public-types-2.33.3.tgz", + "integrity": "sha512-yPsrMRx+bgLYvFGu6mlIXuZ5cdOoqv3pVcShlHUsRnngLdd0BSq9U11MN6zjKVCFHYIFKsnxoGKUpopuRn06jQ==", "dependencies": { "@api-ts/io-ts-http": "1.0.0", "fp-ts": "2.16.2", @@ -4047,6 +4048,129 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/@bitgo/sdk-coin-sui": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@bitgo/sdk-coin-sui/-/sdk-coin-sui-5.4.0.tgz", + "integrity": "sha512-9B70n4RXzsFCfGRRKWEsKqGWeziWdsAWw1SJyRqm4GJU5SRBh6EDyxTf6m3pkMjGWMgVH8u/CCV13/XO3NcxLA==", + "dependencies": { + "@bitgo/blake2b": "^3.2.4", + "@bitgo/sdk-core": "^27.8.0", + "@bitgo/sdk-lib-mpc": "^9.11.0", + "@bitgo/statics": "^48.27.0", + "@mysten/bcs": "^0.7.0", + "bignumber.js": "^9.0.0", + "bs58": "^4.0.1", + "lodash": "^4.17.21", + "superagent": "3.8.2", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=18 <21" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/@bitgo/sdk-coin-sui/node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@bitgo/sdk-coin-tia": { "version": "2.1.10", "resolved": "https://registry.npmjs.org/@bitgo/sdk-coin-tia/-/sdk-coin-tia-2.1.10.tgz", @@ -4171,16 +4295,16 @@ } }, "node_modules/@bitgo/sdk-core": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@bitgo/sdk-core/-/sdk-core-27.4.0.tgz", - "integrity": "sha512-Fcy/+wyOELb6SsBy52WVYU+p2a6XdpdvBIxsRR5yxQR+JcKE21+oAnu9gar46rRGOCwGJfq/lqFIOv/fRsBH8g==", + "version": "27.8.0", + "resolved": "https://registry.npmjs.org/@bitgo/sdk-core/-/sdk-core-27.8.0.tgz", + "integrity": "sha512-JsqP/h8u5AWjU+7BW0jCvwRLalac//Q/ZjTm83FFV2A0uIredjbkup//sY6cm/bZbxd12ySWNCTf4b2zRzvtWA==", "dependencies": { "@bitgo/bls-dkg": "^1.3.1", - "@bitgo/public-types": "2.25.1", - "@bitgo/sdk-lib-mpc": "^9.9.0", + "@bitgo/public-types": "2.33.3", + "@bitgo/sdk-lib-mpc": "^9.11.0", "@bitgo/sjcl": "^1.0.1", - "@bitgo/statics": "^48.22.0", - "@bitgo/utxo-lib": "^9.39.0", + "@bitgo/statics": "^48.27.0", + "@bitgo/utxo-lib": "^10.1.0", "@noble/secp256k1": "1.6.3", "@stablelib/hex": "^1.0.0", "@types/elliptic": "^6.4.12", @@ -4212,6 +4336,35 @@ "uuid": "^8.3.2" } }, + "node_modules/@bitgo/sdk-core/node_modules/@bitgo/utxo-lib": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@bitgo/utxo-lib/-/utxo-lib-10.1.0.tgz", + "integrity": "sha512-jPy4sCppQaF4j0QtJFuhLVLSjWnDMn8XSVcj+N1fYFEJa1a45O3RLGmGDeni1GEINOCgNxRrPJkLOCJTH1DuFA==", + "dependencies": { + "@bitgo/blake2b": "^3.2.4", + "@brandonblack/musig": "^0.0.1-alpha.0", + "@noble/secp256k1": "1.6.3", + "bech32": "^2.0.0", + "bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4", + "bip32": "^3.0.1", + "bitcoin-ops": "^1.3.0", + "bitcoinjs-lib": "npm:@bitgo-forks/bitcoinjs-lib@7.1.0-master.9", + "bn.js": "^5.2.1", + "bs58check": "^2.1.2", + "cashaddress": "^1.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ecpair": "npm:@bitgo/ecpair@2.1.0-rc.0", + "elliptic": "^6.5.2", + "fastpriorityqueue": "^0.7.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.1.2" + }, + "engines": { + "node": ">=10.22.0 <21", + "npm": ">=3.10.10" + } + }, "node_modules/@bitgo/sdk-core/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -4259,9 +4412,9 @@ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, "node_modules/@bitgo/sdk-lib-mpc": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@bitgo/sdk-lib-mpc/-/sdk-lib-mpc-9.9.0.tgz", - "integrity": "sha512-16Zn9qcjKtZ4V6lVA65HRoHOsXDcMiBFjSltc4DIIEGsQ9D5LEux+ve9N9wJY792BQR4w715hzVMSQABRTV1oQ==", + "version": "9.11.0", + "resolved": "https://registry.npmjs.org/@bitgo/sdk-lib-mpc/-/sdk-lib-mpc-9.11.0.tgz", + "integrity": "sha512-WDSo4MnJbLygZH8My8XPG5J9ZTKIMGXrNJa/Fb7j4yJSMiTvKekUOD17VSWFmNHR07YjNEhIJ2ypbjfXKIvA1Q==", "dependencies": { "@noble/curves": "1.4.0", "@silencelaboratories/dkls-wasm-ll-node": "1.1.2", @@ -4277,6 +4430,14 @@ "openpgp": "5.10.1", "paillier-bigint": "3.3.0", "secp256k1": "5.0.0" + }, + "peerDependencies": { + "@silencelaboratories/dkls-wasm-ll-bundler": "1.1.2" + }, + "peerDependenciesMeta": { + "@silencelaboratories/dkls-wasm-ll-bundler": { + "optional": true + } } }, "node_modules/@bitgo/sdk-lib-mpc/node_modules/@noble/curves": { @@ -4331,9 +4492,9 @@ "integrity": "sha512-dBICMzShC8gXdpSj9cvl4wl9Jkt4h14wt4XQ+/6V6qcC2IObyKRJfaG5TYUU6RvVknhPBPyBx9v84vNKODM5fQ==" }, "node_modules/@bitgo/statics": { - "version": "48.22.0", - "resolved": "https://registry.npmjs.org/@bitgo/statics/-/statics-48.22.0.tgz", - "integrity": "sha512-MrUgsJzqCXr4IFp+WtA6fw9vIUUAQEn61XUFFv6g9SIiKRDgFueQBQ5E+j22L0uJlLLZJzn1HxSzDwqMVfHdsw==" + "version": "48.27.0", + "resolved": "https://registry.npmjs.org/@bitgo/statics/-/statics-48.27.0.tgz", + "integrity": "sha512-IjQZ4AIa/eXAZZ6yh0Oq/ZwLbR3HhXqqqb2TFfev6QZEXISjLWgM4QlTYTckl4dwf+AhgS9yP+Y3DRIHLkoqQg==" }, "node_modules/@bitgo/unspents": { "version": "0.47.5", @@ -10639,6 +10800,27 @@ "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", "dev": true }, + "node_modules/@mysten/bcs": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.7.4.tgz", + "integrity": "sha512-6DKzM4L10Au3Og5EJRBqJZmXWZ7hS/clVjbVUH4sA0aFtS3AZo2xc+r5fUFfdJbaWZUxVaDiQ8BNiEZWkAnEOw==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@mysten/bcs/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@mysten/bcs/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, "node_modules/@noble/curves": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", @@ -21361,8 +21543,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "devOptional": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/corser": { "version": "2.0.1", @@ -26048,8 +26229,7 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extend-shallow": { "version": "3.0.2", @@ -38710,8 +38890,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-on-spawn": { "version": "1.0.0", diff --git a/package.json b/package.json index 24112037..44ac1586 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@bitgo/abstract-utxo": "8.9.0", "@bitgo/sdk-api": "1.50.0", "@bitgo/sdk-coin-ada": "4.2.2", + "@bitgo/sdk-coin-algo": "2.1.22", "@bitgo/sdk-coin-arbeth": "21.0.16", "@bitgo/sdk-coin-atom": "12.0.24", "@bitgo/sdk-coin-avaxc": "5.0.16", @@ -40,13 +41,13 @@ "@bitgo/sdk-coin-polygon": "20.5.8", "@bitgo/sdk-coin-sei": "2.0.24", "@bitgo/sdk-coin-sol": "4.3.2", + "@bitgo/sdk-coin-sui": "^5.4.0", "@bitgo/sdk-coin-tia": "2.1.10", "@bitgo/sdk-coin-trx": "2.0.24", "@bitgo/sdk-coin-xlm": "3.1.2", "@bitgo/sdk-coin-xrp": "2.1.5", "@bitgo/sdk-coin-zec": "2.0.24", "@bitgo/sdk-coin-zeta": "2.0.24", - "@bitgo/sdk-coin-algo": "2.1.22", "@bitgo/utxo-lib": "9.39.0", "@ethereumjs/common": "2.6.5", "@lottiefiles/react-lottie-player": "3.4.9", diff --git a/scripts/build-icons.js b/scripts/build-icons.js index 09573f67..66893027 100644 --- a/scripts/build-icons.js +++ b/scripts/build-icons.js @@ -38,6 +38,7 @@ const coins = [ 'hbar', 'algo', 'bsc', + 'sui' ]; const paths = fs diff --git a/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx b/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx index 92ed6ad4..308d95c6 100644 --- a/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx +++ b/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx @@ -35,7 +35,8 @@ export interface CryptocurrencyIconProps { | 'zeta' | 'hbar' | 'algo' - | 'etc'; + | 'etc' + | 'sui'; Size: 'small' | 'medium' | 'large'; } @@ -1770,6 +1771,24 @@ export function CryptocurrencyIcon({ ); + case 'sui': + return ( + + + + + ); default: return null; } diff --git a/src/containers/NonBitGoRecoveryCoin/NonBitGoRecoveryCoin.tsx b/src/containers/NonBitGoRecoveryCoin/NonBitGoRecoveryCoin.tsx index c3c6c0b0..790301ed 100644 --- a/src/containers/NonBitGoRecoveryCoin/NonBitGoRecoveryCoin.tsx +++ b/src/containers/NonBitGoRecoveryCoin/NonBitGoRecoveryCoin.tsx @@ -1112,6 +1112,8 @@ function Form() { case 'tzeta': case 'coreum': case 'tcoreum': + case 'sui': + case 'tsui': return ( = { Icon: 'algo', value: 'algo', }, + sui: { + Title: 'SUI', + Description: 'Sui', + Icon: 'sui', + value: 'sui', + }, + tsui: { + Title: 'TSUI', + Description: 'Testnet Sui', + Icon: 'sui', + value: 'tsui', + }, tbtc: { Title: 'TBTC', Description: 'Testnet Bitcoin', @@ -700,6 +712,7 @@ export const nonBitgoRecoveryCoins: Record = allCoinMetas.coreum, allCoinMetas.hbar, allCoinMetas.algo, + allCoinMetas.sui, ] as const, test: [ allCoinMetas.tbtc, @@ -736,6 +749,7 @@ export const nonBitgoRecoveryCoins: Record = allCoinMetas.tcoreum, allCoinMetas.thbar, allCoinMetas.talgo, + allCoinMetas.tsui ] as const, };