diff --git a/electron/main/index.ts b/electron/main/index.ts index a3d22464..16dc48fd 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -63,6 +63,7 @@ import { Algo, Talgo } from '@bitgo/sdk-coin-algo'; import { EthLikeCoin, TethLikeCoin } from '@bitgo/sdk-coin-ethlike'; import { Sui, Tsui } from '@bitgo/sdk-coin-sui'; import { loadWebAssembly } from '@bitgo/sdk-opensslbytes'; +import { Bera, Tbera } from '@bitgo/sdk-coin-bera'; const bip32 = BIP32Factory(ecc); @@ -156,6 +157,8 @@ sdk.register('sui', Sui.createInstance); sdk.register('tsui', Tsui.createInstance); sdk.register('thorchain:rune', Rune.createInstance); sdk.register('tthorchain:rune', Trune.createInstance); +sdk.register('bera', Bera.createInstance); +sdk.register('tbera', Tbera.createInstance); Erc20Token.createTokenConstructors().forEach(({ name, coinConstructor }) => { sdk.register(name, coinConstructor); @@ -304,6 +307,11 @@ async function createWindow() { case 'bsc': case 'tbsc': sdk = new BitGoAPI({ env: environment, bscscanApiToken: apiKey }); + break; + case 'bera': + case 'tbera': + sdk = new BitGoAPI({ env: environment }); + break; default: sdk = new BitGoAPI({ env: environment }); } diff --git a/package-lock.json b/package-lock.json index 6c93aa37..c55e06c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@bitgo/sdk-coin-avaxc": "5.2.8", "@bitgo/sdk-coin-bch": "2.1.8", "@bitgo/sdk-coin-bcha": "2.2.8", + "@bitgo/sdk-coin-bera": "^2.3.4", "@bitgo/sdk-coin-bld": "3.0.27", "@bitgo/sdk-coin-bsc": "22.2.11", "@bitgo/sdk-coin-bsv": "2.1.8", @@ -133,35 +134,6 @@ "node": ">=6.0.0" } }, - "node_modules/@api-ts/io-ts-http": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@api-ts/io-ts-http/-/io-ts-http-1.0.0.tgz", - "integrity": "sha512-eP3pyoR9r7y7YCkJY5avi7NMKBWFGTs4CB1RE053yXcEDgVcq+X8Oxsq4Jaq+g6IPkhGGueCo7APefRiHjTxMw==", - "dependencies": { - "@api-ts/response": "1.0.0", - "fp-ts": "2.12.3", - "io-ts": "2.1.3", - "io-ts-types": "0.5.16" - } - }, - "node_modules/@api-ts/io-ts-http/node_modules/fp-ts": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.12.3.tgz", - "integrity": "sha512-8m0XvW8kZbfnJOA4NvSVXu95mLbPf4LQGwQyqVukIYS4KzSNJiyKSmuZUmbVHteUi6MGkAJGPb0goPZqI+Tsqg==" - }, - "node_modules/@api-ts/io-ts-http/node_modules/io-ts": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.1.3.tgz", - "integrity": "sha512-QFMR2QEBSP6w1TPmkpfca6xkzBbXO+K7ubdbV26GlCGI7CP9LV59bfty422JYtWgbBITuL/zBb1+mziv9f5Wfg==", - "peerDependencies": { - "fp-ts": "^2.0.0" - } - }, - "node_modules/@api-ts/response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@api-ts/response/-/response-1.0.0.tgz", - "integrity": "sha512-OTrMH5yyxNzzkC3fZPcz7KFN2j8A9ZD8YhwiYxy8zGKkE5aOJ4wWQO+q44H5mQLi3txD8AlvwQfkbpo3KyCmGw==" - }, "node_modules/@babel/code-frame": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", @@ -2371,12 +2343,12 @@ } }, "node_modules/@bitgo/abstract-eth": { - "version": "22.4.8", - "resolved": "https://registry.npmjs.org/@bitgo/abstract-eth/-/abstract-eth-22.4.8.tgz", - "integrity": "sha512-DgSut6gyJ23FX/RueLgXSLTfCp5AtsqhuC1WxpJgqwcA27AypKyTF4KvR1WEHvIC9VEIeJ7RO4zwnWuBE/tR6A==", + "version": "22.4.10", + "resolved": "https://registry.npmjs.org/@bitgo/abstract-eth/-/abstract-eth-22.4.10.tgz", + "integrity": "sha512-phcnbNIqrPbFm9/dThkXrNczTqZ/BaUsstMS9w6mJX96lidpi9wYn0tGB21rZhNXnieqUIMaRF7Ifo5sYhHPdg==", "dependencies": { - "@bitgo/sdk-core": "^28.19.0", - "@bitgo/statics": "^50.18.0", + "@bitgo/sdk-core": "^28.20.0", + "@bitgo/statics": "^50.20.0", "@bitgo/utxo-lib": "^11.2.1", "@ethereumjs/common": "^2.6.5", "@ethereumjs/tx": "^3.3.0", @@ -2513,23 +2485,17 @@ } }, "node_modules/@bitgo/public-types": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@bitgo/public-types/-/public-types-3.6.0.tgz", - "integrity": "sha512-dvv5WOHFi1E9WnHMkLrPP8FtsVZ+956Gf8VsdFIS6EiVJMiuWVYtN4gaGN+OxqJ0ZZRUDELwkCmNn31LBlpNpw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@bitgo/public-types/-/public-types-4.9.2.tgz", + "integrity": "sha512-yVP/duh0ION0pfSVMJt24qCQ66Vxjlg7eP9iewlaDpod1q1aGX4m0sP9GNcAWSVBHo1S0+r9YgWZIdcB/DHxTg==", "dependencies": { - "@api-ts/io-ts-http": "1.0.0", - "fp-ts": "2.16.2", + "fp-ts": "^2.0.0", "io-ts": "npm:@bitgo-forks/io-ts@2.1.4", - "io-ts-types": "0.5.16", - "monocle-ts": "2.3.13", - "newtype-ts": "0.3.5" + "io-ts-types": "^0.5.16", + "monocle-ts": "^2.3.13", + "newtype-ts": "^0.3.5" } }, - "node_modules/@bitgo/public-types/node_modules/fp-ts": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.2.tgz", - "integrity": "sha512-CkqAjnIKFqvo3sCyoBTqgJvF+bHrSik584S9nhTjtBESLx26cbtVMR/T9a6ApChOcSDAaM3JydDmWDUn4EEXng==" - }, "node_modules/@bitgo/sdk-api": { "version": "1.58.0", "resolved": "https://registry.npmjs.org/@bitgo/sdk-api/-/sdk-api-1.58.0.tgz", @@ -2753,6 +2719,21 @@ "node": ">=18 <21" } }, + "node_modules/@bitgo/sdk-coin-bera": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@bitgo/sdk-coin-bera/-/sdk-coin-bera-2.3.4.tgz", + "integrity": "sha512-mBsyYT1YAWhyD2zYAF/Ta+xgmecanx6GLx/OT14W4V0uZOmtxQMtc4kh3qFi7ZpxMu+A7zsBJe7V/rnI0OWgEw==", + "dependencies": { + "@bitgo/abstract-eth": "^22.4.10", + "@bitgo/sdk-core": "^28.20.0", + "@bitgo/statics": "^50.20.0", + "@bitgo/utxo-lib": "^11.2.1", + "@ethereumjs/common": "^2.6.5" + }, + "engines": { + "node": ">=18 <21" + } + }, "node_modules/@bitgo/sdk-coin-bld": { "version": "3.0.27", "resolved": "https://registry.npmjs.org/@bitgo/sdk-coin-bld/-/sdk-coin-bld-3.0.27.tgz", @@ -4688,15 +4669,15 @@ } }, "node_modules/@bitgo/sdk-core": { - "version": "28.19.0", - "resolved": "https://registry.npmjs.org/@bitgo/sdk-core/-/sdk-core-28.19.0.tgz", - "integrity": "sha512-u3eCuu7z71vF8RAl50LEPFRsox1FtoAobxO5o4pSsZkOYHjFTgjvUQqCIQ2Tf57GYDYXLJVqBhJg55B4BmyeWQ==", + "version": "28.20.0", + "resolved": "https://registry.npmjs.org/@bitgo/sdk-core/-/sdk-core-28.20.0.tgz", + "integrity": "sha512-ieOAVMR1aOpYcpuG3sM4NBuFUeTMMO2TIKdbGQ1BHS4A3mgl+youFytYbbMRJsHE4NDyzyKD2+G+q2e4aWBJ0w==", "dependencies": { "@bitgo/bls-dkg": "^1.3.1", - "@bitgo/public-types": "3.6.0", + "@bitgo/public-types": "4.9.2", "@bitgo/sdk-lib-mpc": "^10.1.0", "@bitgo/sjcl": "^1.0.1", - "@bitgo/statics": "^50.18.0", + "@bitgo/statics": "^50.20.0", "@bitgo/utxo-lib": "^11.2.1", "@noble/secp256k1": "1.6.3", "@stablelib/hex": "^1.0.0", @@ -4716,7 +4697,7 @@ "ethereumjs-util": "7.1.5", "fp-ts": "^2.12.2", "io-ts": "npm:@bitgo-forks/io-ts@2.1.4", - "io-ts-types": "0.5.16", + "io-ts-types": "^0.5.16", "keccak": "3.0.3", "libsodium-wrappers-sumo": "^0.7.9", "lodash": "^4.17.15", @@ -4897,9 +4878,9 @@ "license": "(BSD-2-Clause OR GPL-2.0-only)" }, "node_modules/@bitgo/statics": { - "version": "50.18.0", - "resolved": "https://registry.npmjs.org/@bitgo/statics/-/statics-50.18.0.tgz", - "integrity": "sha512-aFlJmOvj3ha3xMAjVqrThEoUJEourOEeKmSov+Pc34CK/hI6K8rmIrKf9yNHC7NnZkV09p1mcYPulm5xZ5tO1w==" + "version": "50.20.0", + "resolved": "https://registry.npmjs.org/@bitgo/statics/-/statics-50.20.0.tgz", + "integrity": "sha512-smbJsJ7fFDMY2qdqikjKuMsuIKbUqRzlh04lIyMQFBs4KvQK/PpDzHnJqVdiTobvbjEf12aW8NgAO/FbP3ai/w==" }, "node_modules/@bitgo/unspents": { "version": "0.47.17", @@ -32686,9 +32667,9 @@ } }, "node_modules/io-ts-types": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/io-ts-types/-/io-ts-types-0.5.16.tgz", - "integrity": "sha512-h9noYVfY9rlbmKI902SJdnV/06jgiT2chxG6lYDxaYNp88HscPi+SBCtmcU+m0E7WT5QSwt7sIMj93+qu0FEwQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/io-ts-types/-/io-ts-types-0.5.19.tgz", + "integrity": "sha512-kQOYYDZG5vKre+INIDZbLeDJe+oM+4zLpUkjXyTMyUfoCpjJNyi29ZLkuEAwcPufaYo3yu/BsemZtbdD+NtRfQ==", "peerDependencies": { "fp-ts": "^2.0.0", "io-ts": "^2.0.0", diff --git a/package.json b/package.json index 4832a61a..94fedab2 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@bitgo/sdk-coin-avaxc": "5.2.8", "@bitgo/sdk-coin-bch": "2.1.8", "@bitgo/sdk-coin-bcha": "2.2.8", + "@bitgo/sdk-coin-bera": "^2.3.4", "@bitgo/sdk-coin-bld": "3.0.27", "@bitgo/sdk-coin-bsc": "22.2.11", "@bitgo/sdk-coin-bsv": "2.1.8", diff --git a/scripts/build-icons.js b/scripts/build-icons.js index 2a367564..ee1fb7e7 100644 --- a/scripts/build-icons.js +++ b/scripts/build-icons.js @@ -40,7 +40,8 @@ const coins = [ 'algo', 'bsc', 'sui', - 'thorchain:rune' + 'thorchain:rune', + 'bera' ]; const paths = fs diff --git a/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx b/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx index bf8c0568..65810b32 100644 --- a/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx +++ b/src/components/CryptocurrencyIcon/CryptocurrencyIcon.tsx @@ -38,14 +38,15 @@ export interface CryptocurrencyIconProps { | 'algo' | 'etc' | 'sui' - | 'thorchain:rune'; + | 'thorchain:rune' + | 'bera'; Size: 'small' | 'medium' | 'large'; } export function CryptocurrencyIcon({ - Name, - Size, - ...hostProps + Name, + Size, + ...hostProps }: CryptocurrencyIconProps & JSX.IntrinsicElements['svg']) { switch (Name) { case 'ada': @@ -1824,7 +1825,33 @@ export function CryptocurrencyIcon({ - ) + ); + case 'bera': + return ( + + + + + + + + + + ); default: return null; } diff --git a/src/containers/BuildUnsignedSweepCoin/BuildUnsignedSweepCoin.tsx b/src/containers/BuildUnsignedSweepCoin/BuildUnsignedSweepCoin.tsx index 8574ecd5..d7284d3c 100644 --- a/src/containers/BuildUnsignedSweepCoin/BuildUnsignedSweepCoin.tsx +++ b/src/containers/BuildUnsignedSweepCoin/BuildUnsignedSweepCoin.tsx @@ -122,6 +122,8 @@ function Form() { case 'tarbeth': case 'opeth': case 'topeth': + case 'bera': + case 'tbera': return ( = { Icon: 'thorchain:rune', value: 'thorchain:rune' }, + bera: { + Title: 'BERA', + Description: 'Bera', + Icon: 'bera', + value: 'bera', + ApiKeyProvider: 'bartio.beratrail.io' + }, suiToken: { Title: 'SUI Token', Description: 'Sui Token', @@ -622,6 +629,13 @@ export const allCoinMetas: Record = { Icon: 'baseeth', value: 'tbaseeth', }, + tbera: { + Title: 'TBERA', + Description: 'Bera Testnet', + Icon: 'bera', + value: 'tbera', + ApiKeyProvider: 'bartio.beratrail.io' + } } as const; export const buildUnsignedConsolidationCoins: Record< @@ -689,6 +703,7 @@ export const buildUnsignedSweepCoins: Record< allCoinMetas.algo, allCoinMetas.sui, allCoinMetas.suiToken, + allCoinMetas.bera ] as const, test: [ allCoinMetas.tbtc, @@ -719,6 +734,7 @@ export const buildUnsignedSweepCoins: Record< allCoinMetas.tbsc, allCoinMetas.tsui, allCoinMetas.tsuiToken, + allCoinMetas.tbera ] as const, }; @@ -770,6 +786,7 @@ export const nonBitgoRecoveryCoins: Record = allCoinMetas.sui, allCoinMetas.suiToken, allCoinMetas['thorchain:rune'], + allCoinMetas.bera, ] as const, test: [ allCoinMetas.tbtc, @@ -811,6 +828,7 @@ export const nonBitgoRecoveryCoins: Record = allCoinMetas.tsui, allCoinMetas.tsuiToken, allCoinMetas['tthorchain:rune'], + allCoinMetas.tbera ] as const, };