@ledgerhq/vault-common 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +25 -25
- package/CHANGELOG.md +11 -0
- package/lib/{chunk-5E5DWDE6.js → chunk-2JI4TYQ5.js} +3 -3
- package/lib/{chunk-5E5DWDE6.js.map → chunk-2JI4TYQ5.js.map} +1 -1
- package/lib/{chunk-ICZVM5JG.js → chunk-54TW5QWG.js} +3 -3
- package/lib/{chunk-ICZVM5JG.js.map → chunk-54TW5QWG.js.map} +1 -1
- package/lib/{chunk-OF5KFUYG.mjs → chunk-7QMDKSJQ.mjs} +199 -1
- package/lib/chunk-7QMDKSJQ.mjs.map +1 -0
- package/lib/{chunk-VJX754TS.js → chunk-KDIUPKOI.js} +21 -21
- package/lib/{chunk-VJX754TS.js.map → chunk-KDIUPKOI.js.map} +1 -1
- package/lib/{chunk-QTAB7ADK.js → chunk-KTWGBZVH.js} +199 -1
- package/lib/chunk-KTWGBZVH.js.map +1 -0
- package/lib/{chunk-LTTHONLK.js → chunk-N3BTCH3V.js} +13 -13
- package/lib/{chunk-LTTHONLK.js.map → chunk-N3BTCH3V.js.map} +1 -1
- package/lib/{chunk-PB4BEIPE.mjs → chunk-OKAHQ7XI.mjs} +2 -2
- package/lib/{chunk-63T7EDKZ.mjs → chunk-PG4G7C6U.mjs} +2 -2
- package/lib/{chunk-S6YY774N.mjs → chunk-UF4TTNDL.mjs} +2 -2
- package/lib/{chunk-VQYIVPMU.mjs → chunk-US3UTA6G.mjs} +3 -3
- package/lib/createHSMBridge.js +4 -4
- package/lib/createHSMBridge.mjs +3 -3
- package/lib/index.js +64 -64
- package/lib/index.mjs +5 -5
- package/lib/recipeManifest.js +3 -3
- package/lib/recipeManifest.mjs +2 -2
- package/lib/reviewAPIRequest.js +4 -4
- package/lib/reviewAPIRequest.mjs +3 -3
- package/lib/utils.js +2 -2
- package/lib/utils.mjs +1 -1
- package/package.json +3 -3
- package/lib/chunk-OF5KFUYG.mjs.map +0 -1
- package/lib/chunk-QTAB7ADK.js.map +0 -1
- /package/lib/{chunk-PB4BEIPE.mjs.map → chunk-OKAHQ7XI.mjs.map} +0 -0
- /package/lib/{chunk-63T7EDKZ.mjs.map → chunk-PG4G7C6U.mjs.map} +0 -0
- /package/lib/{chunk-S6YY774N.mjs.map → chunk-UF4TTNDL.mjs.map} +0 -0
- /package/lib/{chunk-VQYIVPMU.mjs.map → chunk-US3UTA6G.mjs.map} +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/vault-common@2.0
|
|
2
|
+
> @ledgerhq/vault-common@2.1.0 build /home/runner/work/vault-ts/vault-ts/packages/common
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/createHSMBridge.ts, src/index.ts, src/recipeManifest.ts, src/reviewAPIRequest.ts, src/utils.ts, src/crypto/utils.ts, src/types/index.ts
|
|
@@ -10,48 +10,47 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[34mDTS[39m Build start
|
|
14
13
|
[32mESM[39m [1mlib/createHSMBridge.mjs [22m[32m252.00 B[39m
|
|
15
14
|
[32mESM[39m [1mlib/crypto/utils.mjs [22m[32m183.00 B[39m
|
|
16
15
|
[32mESM[39m [1mlib/types/index.mjs [22m[32m201.00 B[39m
|
|
17
16
|
[32mESM[39m [1mlib/index.mjs [22m[32m113.68 KB[39m
|
|
18
|
-
[32mESM[39m [1mlib/chunk-
|
|
17
|
+
[32mESM[39m [1mlib/chunk-PG4G7C6U.mjs [22m[32m3.16 KB[39m
|
|
19
18
|
[32mESM[39m [1mlib/recipeManifest.mjs [22m[32m238.00 B[39m
|
|
20
|
-
[32mESM[39m [1mlib/chunk-
|
|
19
|
+
[32mESM[39m [1mlib/chunk-UF4TTNDL.mjs [22m[32m16.35 KB[39m
|
|
21
20
|
[32mESM[39m [1mlib/reviewAPIRequest.mjs [22m[32m286.00 B[39m
|
|
22
|
-
[32mESM[39m [1mlib/chunk-
|
|
23
|
-
[32mESM[39m [1mlib/chunk-
|
|
21
|
+
[32mESM[39m [1mlib/chunk-US3UTA6G.mjs [22m[32m35.51 KB[39m
|
|
22
|
+
[32mESM[39m [1mlib/chunk-OKAHQ7XI.mjs [22m[32m3.00 KB[39m
|
|
24
23
|
[32mESM[39m [1mlib/utils.mjs [22m[32m767.00 B[39m
|
|
24
|
+
[32mESM[39m [1mlib/chunk-7QMDKSJQ.mjs [22m[32m28.28 KB[39m
|
|
25
25
|
[32mESM[39m [1mlib/chunk-HU7O2ZFW.mjs [22m[32m7.90 KB[39m
|
|
26
26
|
[32mESM[39m [1mlib/chunk-C5XQJPYC.mjs [22m[32m280.00 B[39m
|
|
27
27
|
[32mESM[39m [1mlib/chunk-J5LGTIGS.mjs [22m[32m234.00 B[39m
|
|
28
|
-
[32mESM[39m [1mlib/chunk-OF5KFUYG.mjs [22m[32m24.07 KB[39m
|
|
29
28
|
[32mESM[39m [1mlib/createHSMBridge.mjs.map [22m[32m71.00 B[39m
|
|
30
29
|
[32mESM[39m [1mlib/crypto/utils.mjs.map [22m[32m71.00 B[39m
|
|
31
30
|
[32mESM[39m [1mlib/types/index.mjs.map [22m[32m71.00 B[39m
|
|
32
31
|
[32mESM[39m [1mlib/index.mjs.map [22m[32m217.28 KB[39m
|
|
33
|
-
[32mESM[39m [1mlib/chunk-
|
|
32
|
+
[32mESM[39m [1mlib/chunk-PG4G7C6U.mjs.map [22m[32m6.51 KB[39m
|
|
34
33
|
[32mESM[39m [1mlib/recipeManifest.mjs.map [22m[32m71.00 B[39m
|
|
35
|
-
[32mESM[39m [1mlib/chunk-
|
|
34
|
+
[32mESM[39m [1mlib/chunk-UF4TTNDL.mjs.map [22m[32m35.81 KB[39m
|
|
36
35
|
[32mESM[39m [1mlib/reviewAPIRequest.mjs.map [22m[32m71.00 B[39m
|
|
37
|
-
[32mESM[39m [1mlib/chunk-
|
|
38
|
-
[32mESM[39m [1mlib/chunk-
|
|
36
|
+
[32mESM[39m [1mlib/chunk-US3UTA6G.mjs.map [22m[32m82.06 KB[39m
|
|
37
|
+
[32mESM[39m [1mlib/chunk-OKAHQ7XI.mjs.map [22m[32m5.96 KB[39m
|
|
39
38
|
[32mESM[39m [1mlib/utils.mjs.map [22m[32m71.00 B[39m
|
|
39
|
+
[32mESM[39m [1mlib/chunk-7QMDKSJQ.mjs.map [22m[32m48.89 KB[39m
|
|
40
40
|
[32mESM[39m [1mlib/chunk-HU7O2ZFW.mjs.map [22m[32m16.67 KB[39m
|
|
41
41
|
[32mESM[39m [1mlib/chunk-C5XQJPYC.mjs.map [22m[32m51.86 KB[39m
|
|
42
42
|
[32mESM[39m [1mlib/chunk-J5LGTIGS.mjs.map [22m[32m71.00 B[39m
|
|
43
|
-
[32mESM[39m
|
|
44
|
-
[32mESM[39m ⚡️ Build success in 1016ms
|
|
43
|
+
[32mESM[39m ⚡️ Build success in 908ms
|
|
45
44
|
[32mCJS[39m [1mlib/createHSMBridge.js [22m[32m331.00 B[39m
|
|
46
45
|
[32mCJS[39m [1mlib/index.js [22m[32m120.10 KB[39m
|
|
47
|
-
[32mCJS[39m [1mlib/chunk-
|
|
46
|
+
[32mCJS[39m [1mlib/chunk-54TW5QWG.js [22m[32m3.52 KB[39m
|
|
48
47
|
[32mCJS[39m [1mlib/recipeManifest.js [22m[32m349.00 B[39m
|
|
49
|
-
[32mCJS[39m [1mlib/chunk-
|
|
48
|
+
[32mCJS[39m [1mlib/chunk-KDIUPKOI.js [22m[32m17.66 KB[39m
|
|
50
49
|
[32mCJS[39m [1mlib/reviewAPIRequest.js [22m[32m365.00 B[39m
|
|
51
|
-
[32mCJS[39m [1mlib/chunk-
|
|
52
|
-
[32mCJS[39m [1mlib/chunk-
|
|
50
|
+
[32mCJS[39m [1mlib/chunk-N3BTCH3V.js [22m[32m37.23 KB[39m
|
|
51
|
+
[32mCJS[39m [1mlib/chunk-2JI4TYQ5.js [22m[32m3.39 KB[39m
|
|
53
52
|
[32mCJS[39m [1mlib/utils.js [22m[32m1.20 KB[39m
|
|
54
|
-
[32mCJS[39m [1mlib/chunk-
|
|
53
|
+
[32mCJS[39m [1mlib/chunk-KTWGBZVH.js [22m[32m28.99 KB[39m
|
|
55
54
|
[32mCJS[39m [1mlib/crypto/utils.js [22m[32m335.00 B[39m
|
|
56
55
|
[32mCJS[39m [1mlib/chunk-3L2XDBZ2.js [22m[32m8.65 KB[39m
|
|
57
56
|
[32mCJS[39m [1mlib/types/index.js [22m[32m329.00 B[39m
|
|
@@ -59,21 +58,22 @@
|
|
|
59
58
|
[32mCJS[39m [1mlib/chunk-PZ5AY32C.js [22m[32m314.00 B[39m
|
|
60
59
|
[32mCJS[39m [1mlib/createHSMBridge.js.map [22m[32m293.00 B[39m
|
|
61
60
|
[32mCJS[39m [1mlib/index.js.map [22m[32m178.12 KB[39m
|
|
62
|
-
[32mCJS[39m [1mlib/chunk-
|
|
61
|
+
[32mCJS[39m [1mlib/chunk-54TW5QWG.js.map [22m[32m6.86 KB[39m
|
|
63
62
|
[32mCJS[39m [1mlib/recipeManifest.js.map [22m[32m288.00 B[39m
|
|
64
|
-
[32mCJS[39m [1mlib/chunk-
|
|
63
|
+
[32mCJS[39m [1mlib/chunk-KDIUPKOI.js.map [22m[32m36.38 KB[39m
|
|
65
64
|
[32mCJS[39m [1mlib/reviewAPIRequest.js.map [22m[32m308.00 B[39m
|
|
66
|
-
[32mCJS[39m [1mlib/chunk-
|
|
67
|
-
[32mCJS[39m [1mlib/chunk-
|
|
65
|
+
[32mCJS[39m [1mlib/chunk-N3BTCH3V.js.map [22m[32m71.09 KB[39m
|
|
66
|
+
[32mCJS[39m [1mlib/chunk-2JI4TYQ5.js.map [22m[32m5.19 KB[39m
|
|
68
67
|
[32mCJS[39m [1mlib/utils.js.map [22m[32m398.00 B[39m
|
|
69
|
-
[32mCJS[39m [1mlib/chunk-
|
|
68
|
+
[32mCJS[39m [1mlib/chunk-KTWGBZVH.js.map [22m[32m54.35 KB[39m
|
|
70
69
|
[32mCJS[39m [1mlib/crypto/utils.js.map [22m[32m281.00 B[39m
|
|
71
70
|
[32mCJS[39m [1mlib/chunk-3L2XDBZ2.js.map [22m[32m20.30 KB[39m
|
|
72
71
|
[32mCJS[39m [1mlib/types/index.js.map [22m[32m269.00 B[39m
|
|
73
72
|
[32mCJS[39m [1mlib/chunk-XLTLYFIA.js.map [22m[32m52.11 KB[39m
|
|
74
73
|
[32mCJS[39m [1mlib/chunk-PZ5AY32C.js.map [22m[32m479.00 B[39m
|
|
75
|
-
[32mCJS[39m ⚡️ Build success in
|
|
76
|
-
[
|
|
74
|
+
[32mCJS[39m ⚡️ Build success in 922ms
|
|
75
|
+
[34mDTS[39m Build start
|
|
76
|
+
[32mDTS[39m ⚡️ Build success in 11437ms
|
|
77
77
|
[32mDTS[39m [1mlib/createHSMBridge.d.mts [22m[32m953.00 B[39m
|
|
78
78
|
[32mDTS[39m [1mlib/index.d.mts [22m[32m12.50 KB[39m
|
|
79
79
|
[32mDTS[39m [1mlib/reviewAPIRequest.d.mts [22m[32m837.00 B[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @ledgerhq/vault-common
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9fdfbdb: feat: add currencies definition for multiple EVMs
|
|
8
|
+
VG-23770: add Viction currency definition
|
|
9
|
+
VG-24194: add Ethereum Hoodi testnet currency definition
|
|
10
|
+
VG-24195: add Polygon Amoy testnet currency definition
|
|
11
|
+
VG-24384: add Mantle currency definition
|
|
12
|
+
VG-24854: add Sonic currency definition
|
|
13
|
+
|
|
3
14
|
## 2.0.2
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKTWGBZVHjs = require('./chunk-KTWGBZVH.js');
|
|
4
4
|
|
|
5
5
|
// src/createNetwork.ts
|
|
6
6
|
var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
|
|
@@ -64,7 +64,7 @@ function createNetwork(networkOptions) {
|
|
|
64
64
|
console.log(_chalk2.default`{grey ${msg}}`);
|
|
65
65
|
}
|
|
66
66
|
if (typeof networkDelay === "number") {
|
|
67
|
-
await
|
|
67
|
+
await _chunkKTWGBZVHjs.wait.call(void 0, networkDelay);
|
|
68
68
|
}
|
|
69
69
|
const res = await _axios2.default.request(axiosParams);
|
|
70
70
|
if (networkOptions.interceptToken && res.headers && res.headers["set-cookie"]) {
|
|
@@ -94,4 +94,4 @@ function createNetwork(networkOptions) {
|
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
exports.createNetwork = createNetwork;
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-2JI4TYQ5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-2JI4TYQ5.js","../src/createNetwork.ts"],"names":["token"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACJA,4EAAkB;AAClB,4EAAkB;AAClB,4EAA6B;AAmBtB,IAAM,UAAA,EAAN,MAAM,WAAA,QAAkB,MAAM;AAAA,EACnC,WAAA,CAAY,EAAE,IAAA,EAAM,OAAA,EAAS,KAAK,CAAA,EAAqB;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,QAAA,EAAU,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA;AACvB,IAAA;AACkB,IAAA;AAChC,EAAA;AACF;AAOa;AAC+C,EAAA;AACzB,IAAA;AACH,IAAA;AAEK,IAAA;AAER,MAAA;AACzB,IAAA;AACa,IAAA;AACE,IAAA;AACqB,IAAA;AACN,IAAA;AAChC,EAAA;AACF;AAEsE;AAGlE,EAAA;AAIkB,IAAA;AACd,IAAA;AACyB,MAAA;AACM,MAAA;AACD,MAAA;AACP,QAAA;AACzB,MAAA;AACgB,MAAA;AACE,QAAA;AACa,QAAA;AACE,QAAA;AACjC,MAAA;AACoB,MAAA;AAClB,QAAA;AAC8B,QAAA;AAC9B,QAAA;AACA,QAAA;AAGM,QAAA;AACkB,UAAA;AACrB,QAAA;AACL,MAAA;AAGwB,MAAA;AACI,QAAA;AACG,QAAA;AAC/B,MAAA;AAE6B,MAAA;AAGN,MAAA;AACX,QAAA;AACsB,QAAA;AACF,QAAA;AACF,UAAA;AAC5B,QAAA;AAEgC,QAAA;AAClC,MAAA;AAC4B,MAAA;AACH,QAAA;AACzB,MAAA;AAEgC,MAAA;AAEb,MAAA;AACY,QAAA;AACd,UAAA;AACf,QAAA;AACc,QAAA;AACgB,UAAA;AACL,UAAA;AACOA,UAAAA;AAChC,QAAA;AACF,MAAA;AACW,MAAA;AACC,IAAA;AAEO,MAAA;AACX,QAAA;AACR,MAAA;AAEqB,MAAA;AACS,MAAA;AACJ,QAAA;AAC1B,MAAA;AAE2B,MAAA;AAC7B,IAAA;AACF,EAAA;AACF;ADvCwC;AACA;AACA;AACA","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-2JI4TYQ5.js","sourcesContent":[null,"import axios from \"axios\";\nimport chalk from \"chalk\";\nimport https, { Agent } from \"https\";\n\nimport { wait } from \"./utils\";\n\ninterface NetworkOptions {\n baseURL: string;\n token?: string;\n interceptToken?: (token: string) => void;\n injectToken?: () => string | null;\n httpsAgent?: Agent;\n networkDelay?: number;\n}\n\ninterface GateErrorPayload {\n code: number;\n message: string;\n name: string;\n}\n\nexport class GateError extends Error {\n constructor({ code, message, name }: GateErrorPayload) {\n super(message);\n this.message = `(${code}) ${message}`;\n this.name = name;\n Error.captureStackTrace(this, GateError);\n }\n}\n\ntype NetworkErrorPayload = {\n status: number;\n statusText: string;\n};\n\nexport class NetworkError extends Error {\n constructor(payload: NetworkErrorPayload, prefix: string) {\n const { status, statusText } = payload;\n let message = statusText || \"Unknown error\";\n // @ts-ignore\n if (payload.data && payload.data.message) {\n // @ts-ignore\n message = payload.data.message;\n }\n super(message);\n this.message = \"\";\n this.name = `Network error (${prefix}) ${status}: ${message}`;\n Error.captureStackTrace(this, NetworkError);\n }\n}\n\nexport default function createNetwork(networkOptions: NetworkOptions) {\n return async function request<T = any>(\n method: \"POST\" | \"GET\" | \"DELETE\" | \"PUT\",\n url: string,\n data: any = {},\n requestOptions: any = {},\n ): Promise<T> {\n let debugPrefix = \"\";\n try {\n let token = networkOptions.token || null;\n const { networkDelay, httpsAgent } = networkOptions;\n if (networkOptions.injectToken) {\n token = networkOptions.injectToken();\n }\n const headers = {\n \"Content-Type\": \"application/json\",\n ...(requestOptions.headers ? requestOptions.headers : {}),\n ...(token ? { \"X-Ledger-Auth\": token } : {}),\n };\n const axiosParams = {\n method,\n url: `${networkOptions.baseURL}${url}`,\n data,\n headers,\n httpsAgent:\n httpsAgent ||\n new https.Agent({\n rejectUnauthorized: false,\n }),\n };\n\n // ability to request raw data (as Buffer)\n if (requestOptions.raw) {\n Object.assign(axiosParams.headers, { \"Content-Type\": \"application/octet-stream\" });\n Object.assign(axiosParams, { responseType: \"arraybuffer\" });\n }\n\n debugPrefix = `${axiosParams.method} ${axiosParams.url}`;\n\n /* istanbul ignore next */\n if (process.env.DEBUG) {\n let msg = \"\";\n msg += `${axiosParams.method} ${axiosParams.url} `;\n if (data && Object.keys(data).length > 0) {\n msg += JSON.stringify(data);\n }\n // eslint-disable-next-line no-console\n console.log(chalk`{grey ${msg}}`);\n }\n if (typeof networkDelay === \"number\") {\n await wait(networkDelay);\n }\n\n const res = await axios.request(axiosParams);\n\n if (networkOptions.interceptToken && res.headers && res.headers[\"set-cookie\"]) {\n const tokenRow = res.headers[\"set-cookie\"].find((h: string) =>\n h.startsWith(\"ledger_token\"),\n );\n if (tokenRow) {\n const [leftPart] = tokenRow.split(\";\");\n const token = leftPart.substr(\"ledger_token=\".length);\n networkOptions.interceptToken(token);\n }\n }\n return res.data;\n } catch (err) {\n // @ts-expect-error\n if (!err.response) {\n throw err;\n }\n // @ts-expect-error\n const { data } = err.response;\n if (data && data.code && data.message && data.name) {\n throw new GateError(data);\n }\n // @ts-expect-error\n throw new NetworkError(err.response, debugPrefix);\n }\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk2JI4TYQ5js = require('./chunk-2JI4TYQ5.js');
|
|
4
4
|
|
|
5
5
|
// src/createHSMBridge.ts
|
|
6
6
|
var _vaultutils = require('@ledgerhq/vault-utils');
|
|
@@ -17,7 +17,7 @@ function createHSMBridge(options) {
|
|
|
17
17
|
baseURL: hsmEndpoint,
|
|
18
18
|
httpsAgent
|
|
19
19
|
};
|
|
20
|
-
const hsmNetwork =
|
|
20
|
+
const hsmNetwork = _chunk2JI4TYQ5js.createNetwork.call(void 0, hsmNetworkOptions);
|
|
21
21
|
const raw = _axios2.default.create({ baseURL: hsmEndpoint, httpsAgent });
|
|
22
22
|
return {
|
|
23
23
|
backupCompartment: async (cid) => {
|
|
@@ -80,4 +80,4 @@ var createHSMBridge_default = createHSMBridge;
|
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
exports.createHSMBridge_default = createHSMBridge_default;
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-54TW5QWG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-54TW5QWG.js","../src/createHSMBridge.ts"],"names":[],"mappings":"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","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-54TW5QWG.js","sourcesContent":[null,"import { SILENT_LOGGER } from \"@ledgerhq/vault-utils\";\nimport axios from \"axios\";\nimport https from \"https\";\n\nimport createNetwork from \"./createNetwork\";\nimport { RunnableOptions } from \"./types\";\n\ntype HSMBridge = {\n backupCompartment: (cid: number) => Promise<HSMCompartmentBackup>;\n restoreCompartment: (\n cid: number,\n data: HSMCompartmentBackup,\n options?: RunnableOptions,\n ) => Promise<void>;\n initCompartment: (options?: RunnableOptions) => Promise<number>;\n resetCompartment: (compartmentID: number, options: RunnableOptions) => Promise<void>;\n};\n\ntype HSMSlot = {\n id: number;\n userId: number;\n lastUsed: string;\n};\n\ntype CreateHSMBridgeOptions = {\n hsmEndpoint: string;\n hsmCert: Buffer;\n hsmCertKey: Buffer;\n monotonicCountersSize?: number;\n fileSystemSize?: number;\n};\n\ntype HSMCompartmentBackup = {\n internalfs: string;\n counters: string;\n};\n\nfunction createHSMBridge(options: CreateHSMBridgeOptions): HSMBridge {\n const { monotonicCountersSize, fileSystemSize } = options;\n\n const httpsAgent = new https.Agent({\n cert: options.hsmCert,\n key: options.hsmCertKey,\n });\n\n // cf hsmaas code\n const hsmEndpoint = options.hsmEndpoint.replace(\"/process\", \"\");\n\n const hsmNetworkOptions = {\n baseURL: hsmEndpoint,\n httpsAgent,\n };\n\n const hsmNetwork = createNetwork(hsmNetworkOptions);\n const raw = axios.create({ baseURL: hsmEndpoint, httpsAgent });\n\n return {\n backupCompartment: async (cid: number): Promise<HSMCompartmentBackup> => {\n const [internalfs, counters] = await Promise.all([\n raw.get<Buffer>(`/compartments/${cid}/internalfs`, { responseType: \"arraybuffer\" }),\n raw.get<Buffer>(`/compartments/${cid}/counters`, { responseType: \"arraybuffer\" }),\n ]);\n return {\n internalfs: internalfs.data.toString(\"hex\"),\n counters: counters.data.toString(\"hex\"),\n };\n },\n restoreCompartment: async (\n cid: number,\n data: HSMCompartmentBackup,\n { logger = SILENT_LOGGER }: RunnableOptions = {},\n ): Promise<void> => {\n logger.info(\"Restoring internalfs...\");\n await raw.put(`/compartments/${cid}/internalfs`, Buffer.from(data.internalfs, \"hex\"));\n logger.info(\"Restoring counters...\");\n await raw.put(`/compartments/${cid}/counters`, Buffer.from(data.counters, \"hex\"));\n logger.success(\"Successfully restored compartment\");\n },\n initCompartment: async ({ logger = SILENT_LOGGER }: RunnableOptions = {}) => {\n const res = (await hsmNetwork(\"POST\", \"/compartments\", {})) as { id: number };\n logger.info(`Created compartment ${res.id}`);\n return res.id;\n },\n resetCompartment: async (\n compartmentID: number,\n { logger = SILENT_LOGGER }: RunnableOptions,\n ) => {\n try {\n await hsmNetwork(\"DELETE\", `/compartments/${compartmentID}`);\n logger.info(`Removed compartment ${compartmentID}`);\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Arf! Problem deleting compartment apparently: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"But let's pretend we don't care and let's continue\");\n }\n try {\n const slots: HSMSlot[] = await hsmNetwork(\"GET\", \"/slots\");\n const compartmentSlots = slots.filter((slot) => slot.userId === compartmentID);\n for (let i = 0; i < compartmentSlots.length; i++) {\n const slot = compartmentSlots[i];\n /* istanbul ignore if */\n if (!slot) throw new Error(\"Invalid slot\");\n await hsmNetwork(\"DELETE\", `/slots/${slot.id}`);\n logger.info(`Removed slot ${slot.id}`);\n }\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Ouch! Little error there: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"There was a problem getting slots, but let's continue anyway, i mean.\");\n }\n const payload = { id: compartmentID };\n if (monotonicCountersSize) {\n Object.assign(payload, { monotonicCountersSize });\n }\n if (fileSystemSize) {\n Object.assign(payload, { fileSystemSize });\n }\n await hsmNetwork(\"POST\", \"/compartments\", payload);\n logger.info(`Created compartment ${compartmentID}`);\n },\n };\n}\n\nexport default createHSMBridge;\n"]}
|
|
@@ -8,6 +8,204 @@ import {
|
|
|
8
8
|
listCryptoCurrencies as listCC
|
|
9
9
|
} from "@ledgerhq/cryptoassets/lib/currencies";
|
|
10
10
|
var vaultCoins = [
|
|
11
|
+
{
|
|
12
|
+
type: "CryptoCurrency",
|
|
13
|
+
// @ts-expect-error
|
|
14
|
+
id: "sonic",
|
|
15
|
+
coinType: 60,
|
|
16
|
+
name: "Sonic",
|
|
17
|
+
managerAppName: "Sonic",
|
|
18
|
+
ticker: "S",
|
|
19
|
+
countervalueTicker: "S",
|
|
20
|
+
scheme: "sonic",
|
|
21
|
+
color: "#FE7823",
|
|
22
|
+
family: "evm",
|
|
23
|
+
ethereumLikeInfo: {
|
|
24
|
+
// @ts-expect-error
|
|
25
|
+
baseChain: "mainnet",
|
|
26
|
+
chainId: 146,
|
|
27
|
+
networkId: 146
|
|
28
|
+
},
|
|
29
|
+
units: [
|
|
30
|
+
{
|
|
31
|
+
name: "S",
|
|
32
|
+
code: "S",
|
|
33
|
+
magnitude: 18
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
explorerViews: [
|
|
37
|
+
{
|
|
38
|
+
tx: "https://sonicscan.org/tx/$hash",
|
|
39
|
+
address: "https://sonicscan.org/address/$address",
|
|
40
|
+
token: "https://sonicscan.org/token/$address"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: "CryptoCurrency",
|
|
46
|
+
// @ts-expect-error
|
|
47
|
+
id: "mantle",
|
|
48
|
+
coinType: 60,
|
|
49
|
+
name: "Mantle",
|
|
50
|
+
managerAppName: "Mantle",
|
|
51
|
+
ticker: "MNT",
|
|
52
|
+
countervalueTicker: "MNT",
|
|
53
|
+
scheme: "mantle",
|
|
54
|
+
color: "#003827",
|
|
55
|
+
family: "evm",
|
|
56
|
+
ethereumLikeInfo: {
|
|
57
|
+
// @ts-expect-error
|
|
58
|
+
baseChain: "mainnet",
|
|
59
|
+
chainId: 5e3,
|
|
60
|
+
networkId: 5e3
|
|
61
|
+
},
|
|
62
|
+
units: [
|
|
63
|
+
{
|
|
64
|
+
name: "MNT",
|
|
65
|
+
code: "MNT",
|
|
66
|
+
magnitude: 18
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
explorerViews: [
|
|
70
|
+
{
|
|
71
|
+
tx: "https://https://explorer.mantle.xyz/tx/$hash",
|
|
72
|
+
address: "https://https://explorer.mantle.xyz/address/$address",
|
|
73
|
+
token: "https://explorer.mantle.xyz/token/$address"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: "CryptoCurrency",
|
|
79
|
+
// @ts-expect-error
|
|
80
|
+
id: "viction",
|
|
81
|
+
coinType: 60,
|
|
82
|
+
name: "Viction",
|
|
83
|
+
managerAppName: "Viction",
|
|
84
|
+
ticker: "VIC",
|
|
85
|
+
countervalueTicker: "VIC",
|
|
86
|
+
scheme: "viction",
|
|
87
|
+
color: "#101010",
|
|
88
|
+
family: "evm",
|
|
89
|
+
ethereumLikeInfo: {
|
|
90
|
+
// @ts-expect-error
|
|
91
|
+
baseChain: "mainnet",
|
|
92
|
+
chainId: 88,
|
|
93
|
+
networkId: 88
|
|
94
|
+
},
|
|
95
|
+
units: [
|
|
96
|
+
{
|
|
97
|
+
name: "VIC",
|
|
98
|
+
code: "VIC",
|
|
99
|
+
magnitude: 18
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
explorerViews: [
|
|
103
|
+
{
|
|
104
|
+
tx: "https://vicscan.xyz/tx/$hash",
|
|
105
|
+
address: "https://vicscan.xyz/address/$address",
|
|
106
|
+
token: "https://vicscan.xyz/token/$address"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: "CryptoCurrency",
|
|
112
|
+
// @ts-expect-error
|
|
113
|
+
id: "viction_testnet",
|
|
114
|
+
coinType: 60,
|
|
115
|
+
name: "VictionTestnet",
|
|
116
|
+
managerAppName: "VictionTestnet",
|
|
117
|
+
ticker: "tVIC",
|
|
118
|
+
countervalueTicker: "tVIC",
|
|
119
|
+
scheme: "viction_testnet",
|
|
120
|
+
color: "#A020F0",
|
|
121
|
+
family: "evm",
|
|
122
|
+
ethereumLikeInfo: {
|
|
123
|
+
// @ts-expect-error
|
|
124
|
+
baseChain: "testnet",
|
|
125
|
+
chainId: 89,
|
|
126
|
+
networkId: 89
|
|
127
|
+
},
|
|
128
|
+
units: [
|
|
129
|
+
{
|
|
130
|
+
name: "tVIC",
|
|
131
|
+
code: "tVIC",
|
|
132
|
+
magnitude: 18
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
explorerViews: [
|
|
136
|
+
{
|
|
137
|
+
tx: "https://testnet.vicscan.xyz/tx/$hash",
|
|
138
|
+
address: "https://testnet.vicscan.xyz/address/$address",
|
|
139
|
+
token: "https://testnet.vicscan.xyz/token/$address"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: "CryptoCurrency",
|
|
145
|
+
// @ts-expect-error
|
|
146
|
+
id: "polygon_amoy",
|
|
147
|
+
coinType: 60,
|
|
148
|
+
name: "Polygon Amoy",
|
|
149
|
+
managerAppName: "Polygon Amoy",
|
|
150
|
+
ticker: "tPOL",
|
|
151
|
+
countervalueTicker: "POL",
|
|
152
|
+
scheme: "polygon_amoy",
|
|
153
|
+
color: "#A020F0",
|
|
154
|
+
family: "evm",
|
|
155
|
+
ethereumLikeInfo: {
|
|
156
|
+
// @ts-expect-error
|
|
157
|
+
baseChain: "testnet",
|
|
158
|
+
chainId: 80002,
|
|
159
|
+
networkId: 80002
|
|
160
|
+
},
|
|
161
|
+
units: [
|
|
162
|
+
{
|
|
163
|
+
name: "tPOL",
|
|
164
|
+
code: "tPOL",
|
|
165
|
+
magnitude: 18
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
explorerViews: [
|
|
169
|
+
{
|
|
170
|
+
tx: "https://amoy.polygonscan.com/tx/$hash",
|
|
171
|
+
address: "https://amoy.polygonscan.com/address/$address",
|
|
172
|
+
token: "https://amoy.polygonscan.com//token/$address"
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: "CryptoCurrency",
|
|
178
|
+
// @ts-expect-error
|
|
179
|
+
id: "ethereum_hoodi",
|
|
180
|
+
coinType: 60,
|
|
181
|
+
name: "Ethereum Hoodi",
|
|
182
|
+
managerAppName: "Ethereum Hoodi",
|
|
183
|
+
ticker: "tETH",
|
|
184
|
+
countervalueTicker: "tETH",
|
|
185
|
+
scheme: "ethereum_hoodi",
|
|
186
|
+
color: "#A020F0",
|
|
187
|
+
family: "evm",
|
|
188
|
+
ethereumLikeInfo: {
|
|
189
|
+
// @ts-expect-error
|
|
190
|
+
baseChain: "testnet",
|
|
191
|
+
chainId: 560048,
|
|
192
|
+
networkId: 560048
|
|
193
|
+
},
|
|
194
|
+
units: [
|
|
195
|
+
{
|
|
196
|
+
name: "ether",
|
|
197
|
+
code: "tETH",
|
|
198
|
+
magnitude: 18
|
|
199
|
+
}
|
|
200
|
+
],
|
|
201
|
+
explorerViews: [
|
|
202
|
+
{
|
|
203
|
+
tx: "https://hoodi.etherscan.io/tx/$hash",
|
|
204
|
+
address: "https://hoodi.etherscan.io/account/$address",
|
|
205
|
+
token: "https://hoodi.etherscan.io/token/$address"
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
},
|
|
11
209
|
{
|
|
12
210
|
type: "CryptoCurrency",
|
|
13
211
|
// @ts-expect-error
|
|
@@ -1051,4 +1249,4 @@ export {
|
|
|
1051
1249
|
extractSecureChannel,
|
|
1052
1250
|
wait
|
|
1053
1251
|
};
|
|
1054
|
-
//# sourceMappingURL=chunk-
|
|
1252
|
+
//# sourceMappingURL=chunk-7QMDKSJQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/currencies.ts"],"sourcesContent":["import { BigNumber } from \"bignumber.js\";\nimport bs58 from \"bs58\";\n\nimport { getCryptoCurrencyById } from \"./currencies\";\nimport {\n AccountType,\n Connection,\n CurrencyOrToken,\n GateAccount,\n GateTokenCurrency,\n ManifestAccount,\n SecureChannel,\n TokenCurrency,\n Unit,\n} from \"./types\";\n\nexport function getWorkspaceFromGate(gate: string): string {\n const s = gate.split(\"/\");\n const workspace = s[s.length - 1];\n /* istanbul ignore if */\n if (!workspace) throw new Error(`Could not extract workspace from gate ${gate}`);\n return workspace;\n}\n\nexport type ExtendedPubKey = {\n chain_code: string;\n public_key: string;\n};\n\nexport function xpubToExtendedPubKey(xpub: string): ExtendedPubKey {\n const decoded = bs58.decode(xpub);\n const extendedPubKey = {\n chain_code: decoded\n .slice(13, 13 + 32)\n .toString(\"hex\")\n .toUpperCase(),\n public_key: decoded\n .slice(13 + 32, 13 + 32 + 33)\n .toString(\"hex\")\n .toUpperCase(),\n };\n return extendedPubKey;\n}\n\nexport const queue = <T>(items: T[], job: (output: T) => Promise<void>): Promise<void> =>\n items.reduce((promise, item) => promise.then(() => job(item)), Promise.resolve());\n\nexport function serializeUnitValue(unit: Unit, value: number | string): string {\n const multi = new BigNumber(10).exponentiatedBy(unit.magnitude);\n return new BigNumber(value).times(multi).toFixed();\n}\n\nexport function getAccountUnit(account: ManifestAccount, tokens: GateTokenCurrency[]): Unit {\n const unit =\n \"contractAddress\" in account\n ? getTokenUnit(account.contractAddress, tokens)\n : getCurrencyUnit(account.currency);\n return unit;\n}\n\nexport function getGateAccountUnit(account: GateAccount, tokens: GateTokenCurrency[]): Unit {\n const unit = account.contract_address\n ? getTokenUnit(account.contract_address, tokens)\n : getCurrencyUnit(account.currency);\n return unit;\n}\n\nexport function getTokenUnit(contractAddress: string, tokens: GateTokenCurrency[]): Unit {\n const token = tokens.find((t) => t.contract_address === contractAddress);\n if (!token) {\n throw new Error(`Can't find token with contract address ${contractAddress}`);\n }\n return token.units[0];\n}\n\nexport function getCurrencyUnit(currencyName: string): Unit {\n const currency = getCryptoCurrencyById(currencyName);\n return currency.units[0]!;\n}\n\nexport function deserializeUnitValue(unit: Unit, value: string): number {\n const multi = new BigNumber(10).exponentiatedBy(unit.magnitude);\n return new BigNumber(value).div(multi).toNumber();\n}\n\nexport const LIGHT_EVM_CURRENCIES = [\n \"ethereum_sepolia\",\n \"polygon_mumbai\",\n \"klaytn\",\n \"klaytn_baobab\",\n \"arbitrum\",\n \"arbitrum_goerli\",\n \"base_goerli\",\n \"optimism\",\n \"optimism_goerli\",\n \"flare\",\n \"flare_coston\",\n \"fantom\",\n \"fantom_testnet\",\n \"avalanche_c_chain\",\n \"avalanche_c_chain_fuji\",\n \"celo\",\n \"celo_alfajores\",\n \"cronos\",\n \"cronos_testnet\",\n \"filecoin\",\n \"filecoin_calibration\",\n \"kava_evm\",\n \"kava_evm_testnet\",\n \"tomo\",\n \"tomo_testnet\",\n];\n\nconst ETHEREUM_LIKE_CURRENCIES = [\n \"ethereum\",\n \"ethereum_ropsten\",\n \"ethereum_goerli\",\n \"ethereum_classic\",\n \"ethereum_holesky\",\n \"polygon\",\n \"bsc\",\n ...LIGHT_EVM_CURRENCIES,\n];\nexport const getAccountTypeByCurrency = (currency: string): AccountType => {\n return ETHEREUM_LIKE_CURRENCIES.includes(currency)\n ? \"Ethereum\"\n : currency === \"ripple\"\n ? \"Ripple\"\n : currency === \"stellar\"\n ? \"Stellar\"\n : currency === \"tezos\"\n ? \"Tezos\"\n : currency === \"polkadot\" || currency == \"westend\"\n ? \"Polkadot\"\n : currency === \"solana\" || currency === \"solana_testnet\" || currency === \"solana_devnet\"\n ? \"Solana\"\n : currency === \"cardano\" || currency === \"cardano_testnet\" || currency === \"cardano_devnet\"\n ? \"Cardano\"\n : currency === \"tron\"\n ? \"Tron\"\n : \"Bitcoin\";\n};\n\nconst toToken = (t: GateTokenCurrency): TokenCurrency => {\n const parentCurrency = getCryptoCurrencyById(t.parent_currency);\n return {\n type: \"TokenCurrency\",\n id: t.ticker,\n name: t.name,\n ticker: t.ticker,\n units: t.units,\n contractAddress: t.contract_address,\n // the currency it belongs to. e.g. 'ethereum,\n parentCurrency,\n // the type of token in the blockchain it belongs. e.g. 'erc20,\n tokenType: t.token_type,\n };\n};\n\nexport function getCurrencyOrToken(\n account: GateAccount,\n tokens: GateTokenCurrency[],\n): CurrencyOrToken {\n const isTokenAccount = !!account.contract_address;\n\n if (isTokenAccount) {\n const token = tokens.find((t) => t.contract_address === account.contract_address);\n if (!token) {\n throw new Error(`Cannot find token with contract address: ${account.contract_address}`);\n }\n return toToken(token);\n }\n return getCryptoCurrencyById(account.currency);\n}\n\nexport function getDefaultUsername(role: \"admin\" | \"operator\", device: number): string {\n return `${role === \"admin\" ? \"Admin\" : \"Operator\"} ${\n role === \"admin\" ? (device < 10 ? device - 3 : device) : device\n }`;\n}\n\nexport const unwrapConnection = <T>(c: Connection<T>): T[] => c.edges.map((n) => n.node);\n\nexport function extractSecureChannel(\n object: Record<string, unknown>,\n pub_key: string,\n): SecureChannel {\n if (object.request_id) return object as SecureChannel;\n if (object[pub_key]) return object[pub_key] as SecureChannel;\n throw new Error(\"No channel found\");\n}\n\nexport const wait = (duration: number): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, duration));\n","import {\n getCryptoCurrencyById as byId,\n listCryptoCurrencies as listCC,\n} from \"@ledgerhq/cryptoassets/lib/currencies\";\n\nimport { CryptoCurrency } from \"./types\";\n\nexport const vaultCoins: CryptoCurrency[] = [\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"sonic\",\n coinType: 60,\n name: \"Sonic\",\n managerAppName: \"Sonic\",\n ticker: \"S\",\n countervalueTicker: \"S\",\n scheme: \"sonic\",\n color: \"#FE7823\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 146,\n networkId: 146,\n },\n units: [\n {\n name: \"S\",\n code: \"S\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://sonicscan.org/tx/$hash\",\n address: \"https://sonicscan.org/address/$address\",\n token: \"https://sonicscan.org/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"mantle\",\n coinType: 60,\n name: \"Mantle\",\n managerAppName: \"Mantle\",\n ticker: \"MNT\",\n countervalueTicker: \"MNT\",\n scheme: \"mantle\",\n color: \"#003827\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 5000,\n networkId: 5000,\n },\n units: [\n {\n name: \"MNT\",\n code: \"MNT\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://https://explorer.mantle.xyz/tx/$hash\",\n address: \"https://https://explorer.mantle.xyz/address/$address\",\n token: \"https://explorer.mantle.xyz/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"viction\",\n coinType: 60,\n name: \"Viction\",\n managerAppName: \"Viction\",\n ticker: \"VIC\",\n countervalueTicker: \"VIC\",\n scheme: \"viction\",\n color: \"#101010\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 88,\n networkId: 88,\n },\n units: [\n {\n name: \"VIC\",\n code: \"VIC\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://vicscan.xyz/tx/$hash\",\n address: \"https://vicscan.xyz/address/$address\",\n token: \"https://vicscan.xyz/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"viction_testnet\",\n coinType: 60,\n name: \"VictionTestnet\",\n managerAppName: \"VictionTestnet\",\n ticker: \"tVIC\",\n countervalueTicker: \"tVIC\",\n scheme: \"viction_testnet\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 89,\n networkId: 89,\n },\n units: [\n {\n name: \"tVIC\",\n code: \"tVIC\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://testnet.vicscan.xyz/tx/$hash\",\n address: \"https://testnet.vicscan.xyz/address/$address\",\n token: \"https://testnet.vicscan.xyz/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"polygon_amoy\",\n coinType: 60,\n name: \"Polygon Amoy\",\n managerAppName: \"Polygon Amoy\",\n ticker: \"tPOL\",\n countervalueTicker: \"POL\",\n scheme: \"polygon_amoy\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 80002,\n networkId: 80002,\n },\n units: [\n {\n name: \"tPOL\",\n code: \"tPOL\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://amoy.polygonscan.com/tx/$hash\",\n address: \"https://amoy.polygonscan.com/address/$address\",\n token: \"https://amoy.polygonscan.com//token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"ethereum_hoodi\",\n coinType: 60,\n name: \"Ethereum Hoodi\",\n managerAppName: \"Ethereum Hoodi\",\n ticker: \"tETH\",\n countervalueTicker: \"tETH\",\n scheme: \"ethereum_hoodi\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 560048,\n networkId: 560048,\n },\n units: [\n {\n name: \"ether\",\n code: \"tETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://hoodi.etherscan.io/tx/$hash\",\n address: \"https://hoodi.etherscan.io/account/$address\",\n token: \"https://hoodi.etherscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"polymesh\",\n // @ts-expect-error\n coinType: 595,\n name: \"Polymesh\",\n managerAppName: \"Polymesh\",\n ticker: \"POLYX\",\n scheme: \"polymesh\",\n color: \"#ff2e72\",\n family: \"polymesh\",\n units: [\n {\n name: \"polyx\",\n code: \"POLYX\",\n magnitude: 8,\n },\n ],\n explorerViews: [\n {\n address: \"https://polymesh.subscan.io/account/$address\",\n tx: \"https://polymesh.subscan.io/extrinsic/$hash\",\n },\n ],\n // @ts-expect-error\n explorerId: \"polymesh\",\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"pivx\",\n // @ts-expect-error\n coinType: 77,\n name: \"PivX\",\n managerAppName: \"PivX\",\n ticker: \"PIVX\",\n scheme: \"pivx\",\n color: \"#46385d\",\n family: \"bitcoin\",\n blockAvgTime: 150,\n bitcoinLikeInfo: {\n P2PKH: 30,\n P2SH: 13,\n XPUBVersion: 0x022d2533,\n },\n units: [\n {\n name: \"pivx\",\n code: \"PIVX\",\n magnitude: 8,\n },\n {\n name: \"satoshi\",\n code: \"sat\",\n magnitude: 0,\n },\n ],\n explorerViews: [\n {\n tx: \"https://chainz.cryptoid.info/pivx/tx.dws?$hash.htm\",\n address: \"https://chainz.cryptoid.info/pivx/address.dws?$address.htm\",\n },\n ],\n // @ts-expect-error\n explorerId: \"pivx\",\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"westend\",\n // @ts-expect-error\n coinType: 23519,\n name: \"Westend\",\n managerAppName: \"Polkadot\",\n ticker: \"WND\",\n countervalueTicker: \"PDOT\",\n scheme: \"polkadot\",\n color: \"#E6007A\",\n family: \"polkadot\",\n units: [\n {\n name: \"WND\",\n code: \"WND\",\n magnitude: 12,\n },\n ],\n explorerViews: [\n {\n address: \"https://westend.subscan.io/account/$address\",\n tx: \"https://westend.subscan.io/extrinsic/$hash\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"ethereum_pow\",\n coinType: 60,\n name: \"Ethereum PoW\",\n managerAppName: \"Ethereum PoW\",\n ticker: \"ETHW\",\n countervalueTicker: \"ETHW\",\n scheme: \"ethereum_pow\",\n color: \"#6E89D5\",\n family: \"ethereum\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 10001,\n networkId: 10001,\n },\n units: [\n {\n name: \"ETHW\",\n code: \"ETHW\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://www.oklink.com/en/ethw/tx/$hash\",\n address: \"https://www.oklink.com/en/ethw/address/$address\",\n token: \"https://www.oklink.com/en/ethw/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n id: \"klaytn\",\n // @ts-expect-error\n coinType: 8217,\n name: \"Klaytn\",\n managerAppName: \"Klaytn\",\n ticker: \"KLAY\",\n countervalueTicker: \"KLAY\",\n scheme: \"klaytn\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 8217,\n networkId: 8217,\n },\n units: [\n {\n name: \"KLAY\",\n code: \"KLAY\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://scope.klaytn.com/tx/$hash\",\n address: \"https://scope.klaytn.com/account/$address\",\n token: \"https://scope.klaytn.com/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"klaytn_baobab\",\n // @ts-expect-error\n coinType: 8217,\n name: \"Klaytn Baobab\",\n managerAppName: \"Klaytn Baobab\",\n ticker: \"tKLAY\",\n countervalueTicker: \"tKLAY\",\n scheme: \"klaytn\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 1001,\n networkId: 1001,\n },\n units: [\n {\n name: \"tKLAY\",\n code: \"tKLAY\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://baobab.scope.klaytn.com/tx/$hash\",\n address: \"https://baobab.scope.klaytn.com/account/$address\",\n token: \"https://baobab.scope.klaytn.com/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n id: \"ethereum_holesky\",\n coinType: 60,\n name: \"Ethereum Holesky\",\n managerAppName: \"Ethereum Holesky\",\n ticker: \"tETH\",\n countervalueTicker: \"tETH\",\n scheme: \"ethereum_holesky\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 17000,\n networkId: 17000,\n },\n units: [\n {\n name: \"ether\",\n code: \"tETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://holesky.etherscan.io/tx/$hash\",\n address: \"https://holesky.etherscan.io/account/$address\",\n token: \"https://holesky.etherscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n id: \"ethereum_sepolia\",\n coinType: 60,\n name: \"Ethereum Sepolia\",\n managerAppName: \"Ethereum Sepolia\",\n ticker: \"sETH\",\n countervalueTicker: \"sETH\",\n scheme: \"ethereum_sepolia\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 11155111,\n networkId: 11155111,\n },\n units: [\n {\n name: \"ether\",\n code: \"sETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://sepolia.etherscan.io/tx/$hash\",\n address: \"https://sepolia.etherscan.io/account/$address\",\n token: \"https://sepolia.etherscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"base_goerli\",\n // @ts-expect-error\n coinType: 614,\n name: \"Base Goerli\",\n managerAppName: \"Base Goerli\",\n ticker: \"gETH\",\n countervalueTicker: \"gETH\",\n scheme: \"base_goerli\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 84531,\n networkId: 84531,\n },\n units: [\n {\n name: \"ether\",\n code: \"gETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://base-goerli.blockscout.com/tx/$hash\",\n address: \"https://base-goerli.blockscout.com/account/$address\",\n token: \"https://base-goerli.blockscout.com/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"arbitrum_goerli\",\n // @ts-expect-error\n coinType: 9001,\n name: \"Arbitrum Goerli\",\n managerAppName: \"Arbitrum Goerli\",\n ticker: \"gETH\",\n countervalueTicker: \"gETH\",\n scheme: \"arbitrum_goerli\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 421611,\n networkId: 421611,\n },\n units: [\n {\n name: \"ether\",\n code: \"gETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://testnet.arbiscan.io/tx/$hash\",\n address: \"https://testnet.arbiscan.io/account/$address\",\n token: \"https://testnet.arbiscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n id: \"avalanche_c_chain\",\n // @ts-expect-error\n coinType: 9005,\n name: \"Aavalanche C Chain\",\n managerAppName: \"Aavalanche C Chain\",\n ticker: \"AVAX\",\n countervalueTicker: \"AVAX\",\n scheme: \"avalanche_c_chain\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 43114,\n networkId: 43114,\n },\n units: [\n {\n name: \"AVAX\",\n code: \"AVAX\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://snowtrace.io/tx/$hash\",\n address: \"https://snowtrace.io/address/$address\",\n token: \"https://snowtrace.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"avalanche_c_chain_fuji\",\n // @ts-expect-error\n coinType: 9005,\n name: \"Aavalanche C Chain Fuji\",\n managerAppName: \"Aavalanche C Chain Fuji\",\n ticker: \"AVAX\",\n countervalueTicker: \"AVAX\",\n scheme: \"avalanche_c_chain_fuji\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 43113,\n networkId: 43113,\n },\n units: [\n {\n name: \"fAVAX\",\n code: \"fAVAX\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://testnet.snowtrace.io/tx/$hash\",\n address: \"https://testnet.snowtrace.io/address/$address\",\n token: \"https://testnet.snowtrace.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"fantom_testnet\",\n // @ts-expect-error\n coinType: 1007,\n name: \"Fantom Testnet\",\n managerAppName: \"Fantom Testnet\",\n ticker: \"tFTM\",\n countervalueTicker: \"tFTM\",\n scheme: \"fantom_testnet\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 4002,\n networkId: 4002,\n },\n units: [\n {\n name: \"tFTM\",\n code: \"tFTM\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://testnet.ftmscan.com/tx/$hash\",\n address: \"https://testnet.ftmscan.com/address/$address\",\n token: \"https://testnet.ftmscan.com/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"flare_coston\",\n coinType: 60,\n name: \"Flare Coston\",\n managerAppName: \"Flare Coston\",\n ticker: \"tFLR\",\n countervalueTicker: \"tFLR\",\n scheme: \"flare_coston\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 16,\n networkId: 16,\n },\n units: [\n {\n name: \"tFLR\",\n code: \"tFLR\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://coston-explorer.flare.network/tx/$hash\",\n address: \"https://coston-explorer.flare.network/$address\",\n token: \"https://coston-explorer.flare.network/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n id: \"optimism\",\n // @ts-expect-error\n coinType: 614,\n name: \"Optimism\",\n managerAppName: \"Optimism\",\n ticker: \"ETH\",\n countervalueTicker: \"ETH\",\n scheme: \"optimism\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 10,\n networkId: 10,\n },\n units: [\n {\n name: \"ether\",\n code: \"ETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://optimistic.etherscan.io/tx/$hash\",\n address: \"https://optimistic.etherscan.io/account/$address\",\n token: \"https://optimistic.etherscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"polygon_mumbai\",\n coinType: 60,\n name: \"Polygon Mumbai\",\n managerAppName: \"Polygon Mumbai\",\n ticker: \"tMATIC\",\n countervalueTicker: \"MATIC\",\n scheme: \"polygon_mumbai\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 80001,\n networkId: 80001,\n },\n units: [\n {\n name: \"tMATIC\",\n code: \"tMATIC\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://mumbai.polygonscan.com/tx/$hash\",\n address: \"https://mumbai.polygonscan.com/address/$address\",\n token: \"https://mumbai.polygonscan.com//token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"optimism_goerli\",\n // @ts-expect-error\n coinType: 614,\n name: \"Optimism Goerli\",\n managerAppName: \"Optimism Goerli\",\n ticker: \"gETH\",\n countervalueTicker: \"gETH\",\n scheme: \"optimism_goerli\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 420,\n networkId: 420,\n },\n units: [\n {\n name: \"gether\",\n code: \"gETH\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://goerli-optimism.etherscan.io/tx/$hash\",\n address: \"https://goerli-optimism.etherscan.io/account/$address\",\n token: \"https://goerli-optimism.etherscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"celo_alfajores\",\n coinType: 60,\n name: \"Celo Alfajores\",\n managerAppName: \"Celo Alfajores\",\n ticker: \"tCELO\",\n countervalueTicker: \"tCELO\",\n scheme: \"celo_alfojores\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 44787,\n networkId: 44787,\n },\n units: [\n {\n name: \"tCELO\",\n code: \"tCELO\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://alfajores.celoscan.io/tx/$hash\",\n address: \"https://alfajores.celoscan.io/address/$address\",\n token: \"https://alfajores.celoscan.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"cronos_testnet\",\n coinType: 60,\n name: \"Cronos Testnet\",\n managerAppName: \"Cronos Testnet\",\n ticker: \"tCRO\",\n countervalueTicker: \"tCRO\",\n scheme: \"cronos_testnet\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 338,\n networkId: 338,\n },\n units: [\n {\n name: \"tCRO\",\n code: \"tCRO\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://cronos.org/explorer/testnet3/tx/$hash\",\n address: \"https://cronos.org/explorer/testnet3/address/$address\",\n token: \"https://cronos.org/explorer/testnet3/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"kava_evm\",\n coinType: 60,\n name: \"Kava EVM\",\n managerAppName: \"Kava EVM\",\n ticker: \"KAVA\",\n countervalueTicker: \"KAVA\",\n scheme: \"kava_evm\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"mainnet\",\n chainId: 2222,\n networkId: 2222,\n },\n units: [\n {\n name: \"KAVA\",\n code: \"KAVA\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://explorer.kava.io/tx/$hash\",\n address: \"https://explorer.kava.io/address/$address\",\n token: \"https://explorer.kava.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"kava_evm_testnet\",\n coinType: 60,\n name: \"Kava EVM Testnet\",\n managerAppName: \"Kava EVM Testnet\",\n ticker: \"tKAVA\",\n countervalueTicker: \"tKAVA\",\n scheme: \"kava_evm_testnet\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 2221,\n networkId: 2221,\n },\n units: [\n {\n name: \"tKAVA\",\n code: \"tKAVA\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://explorer.testnet.kava.io/tx/$hash\",\n address: \"https://explorer.testnet.kava.io/address/$address\",\n token: \"https://explorer.testnet.kava.io/token/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"tomo_testnet\",\n coinType: 60,\n name: \"TomoTestnet\",\n managerAppName: \"TomoTestnet\",\n ticker: \"tTOMO\",\n countervalueTicker: \"tTOMO\",\n scheme: \"tomo_testnet\",\n color: \"#A020F0\",\n family: \"evm\",\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"testnet\",\n chainId: 88,\n networkId: 88,\n },\n units: [\n {\n name: \"tTOMO\",\n code: \"tTOMO\",\n magnitude: 18,\n },\n ],\n explorerViews: [\n {\n tx: \"https://scan.testnet.tomochain.com/txs/$hash\",\n address: \"https://scan.testnet.tomochain.com/address/$address\",\n token: \"https://scan.testnet.tomochain.com/tokens/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"ethereum_goerli\",\n name: \"Ethereum Goerli\",\n family: \"ethereum\",\n coinType: 1,\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"goerli\",\n chainId: 5, // goerli\n networkId: 5,\n hardfork: \"petersburg\",\n },\n units: [\n {\n code: \"wei\",\n magnitude: 0,\n name: \"wei\",\n },\n {\n code: \"Kwei\",\n magnitude: 3,\n name: \"Kwei\",\n },\n {\n code: \"Mwei\",\n magnitude: 6,\n name: \"Mwei\",\n },\n {\n code: \"Gwei\",\n magnitude: 9,\n name: \"Gwei\",\n },\n {\n code: \"ether\",\n magnitude: 18,\n name: \"ether\",\n },\n ],\n explorerViews: [\n {\n tx: \"https://goerli.etherscan.io/tx/$hash\",\n address: \"https://goerli.etherscan.io/address/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"ethereum_ropsten\",\n name: \"Ethereum Ropsten\",\n cointype: 60,\n family: \"ethereum\",\n units: [\n {\n code: \"wei\",\n magnitude: 0,\n name: \"wei\",\n },\n {\n code: \"Kwei\",\n magnitude: 3,\n name: \"Kwei\",\n },\n {\n code: \"Mwei\",\n magnitude: 6,\n name: \"Mwei\",\n },\n {\n code: \"Gwei\",\n magnitude: 9,\n name: \"Gwei\",\n },\n {\n code: \"ether\",\n magnitude: 18,\n name: \"ether\",\n },\n ],\n ethereumLikeInfo: {\n // @ts-expect-error\n baseChain: \"ropsten\",\n chainId: 3, // ropsten\n networkId: 3,\n hardfork: \"petersburg\",\n },\n explorerViews: [\n {\n tx: \"https://ropsten.etherscan.io/tx/$hash\",\n address: \"https://ropsten.etherscan.io/address/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"vertcoin\",\n // @ts-expect-error\n coinType: 28,\n name: \"Vertcoin\",\n managerAppName: \"Vertcoin\",\n ticker: \"VTC\",\n scheme: \"vertcoin\",\n color: \"#1b5c2e\",\n supportsSegwit: true,\n family: \"bitcoin\",\n blockAvgTime: 150,\n bitcoinLikeInfo: {\n P2PKH: 71,\n P2SH: 5,\n XPUBVersion: 0x0488b21e,\n },\n units: [\n {\n name: \"vertcoin\",\n code: \"VTC\",\n magnitude: 8,\n },\n {\n name: \"satoshi\",\n code: \"sat\",\n magnitude: 0,\n },\n ],\n explorerViews: [\n {\n tx: \"https://vtcblocks.com/tx/$hash\",\n address: \"https://vtcblocks.com/address/$address\",\n },\n ],\n },\n {\n type: \"CryptoCurrency\",\n // @ts-expect-error\n id: \"viacoin\",\n // @ts-expect-error\n coinType: 14,\n name: \"Viacoin\",\n managerAppName: \"Viacoin\",\n ticker: \"VIA\",\n scheme: \"viacoin\",\n color: \"#414141\",\n supportsSegwit: true,\n family: \"bitcoin\",\n blockAvgTime: 24,\n bitcoinLikeInfo: {\n P2PKH: 71,\n P2SH: 33,\n XPUBVersion: 0x0488b21e,\n },\n units: [\n {\n name: \"viacoin\",\n code: \"VIA\",\n magnitude: 8,\n },\n {\n name: \"satoshi\",\n code: \"sat\",\n magnitude: 0,\n },\n ],\n explorerViews: [\n {\n tx: \"https://explorer.viacoin.org/tx/$hash\",\n address: \"https://explorer.viacoin.org/address/$address\",\n },\n ],\n },\n];\n\nexport function getCryptoCurrencyById(id: string): CryptoCurrency {\n return vaultCoins.find((currency) => currency.id === id) || byId(id);\n}\n\n// istanbul ignore next\nconst listCryptoCurrencies = listCC;\nexport { listCryptoCurrencies };\n"],"mappings":"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","names":[]}
|