@shapeshiftoss/hdwallet-vultisig 1.62.5

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.
Files changed (50) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/adapter.d.ts +22 -0
  3. package/dist/adapter.d.ts.map +1 -0
  4. package/dist/adapter.js +84 -0
  5. package/dist/adapter.js.map +1 -0
  6. package/dist/bitcoin.d.ts +6 -0
  7. package/dist/bitcoin.d.ts.map +1 -0
  8. package/dist/bitcoin.js +184 -0
  9. package/dist/bitcoin.js.map +1 -0
  10. package/dist/cosmos.d.ts +6 -0
  11. package/dist/cosmos.d.ts.map +1 -0
  12. package/dist/cosmos.js +47 -0
  13. package/dist/cosmos.js.map +1 -0
  14. package/dist/ethereum.d.ts +12 -0
  15. package/dist/ethereum.d.ts.map +1 -0
  16. package/dist/ethereum.js +193 -0
  17. package/dist/ethereum.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +19 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/solana.d.ts +9 -0
  23. package/dist/solana.d.ts.map +1 -0
  24. package/dist/solana.js +55 -0
  25. package/dist/solana.js.map +1 -0
  26. package/dist/thorchain.d.ts +6 -0
  27. package/dist/thorchain.d.ts.map +1 -0
  28. package/dist/thorchain.js +46 -0
  29. package/dist/thorchain.js.map +1 -0
  30. package/dist/types.d.ts +50 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +3 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/vultisig.d.ts +123 -0
  35. package/dist/vultisig.d.ts.map +1 -0
  36. package/dist/vultisig.js +482 -0
  37. package/dist/vultisig.js.map +1 -0
  38. package/package.json +31 -0
  39. package/src/adapter.ts +72 -0
  40. package/src/bitcoin.ts +171 -0
  41. package/src/cosmos.ts +43 -0
  42. package/src/ethereum.ts +169 -0
  43. package/src/index.ts +2 -0
  44. package/src/solana.ts +31 -0
  45. package/src/thorchain.ts +43 -0
  46. package/src/types.ts +62 -0
  47. package/src/vultisig.test.ts +253 -0
  48. package/src/vultisig.ts +459 -0
  49. package/tsconfig.json +10 -0
  50. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,482 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.VultisigHDWallet = exports.VultisigHDWalletInfo = void 0;
39
+ exports.isVultisig = isVultisig;
40
+ const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
41
+ const base64_js_1 = __importDefault(require("base64-js"));
42
+ const bitcoinMsg = __importStar(require("bitcoinjs-message"));
43
+ const utils_js_1 = require("ethers/lib/utils.js");
44
+ const isObject_1 = __importDefault(require("lodash/isObject"));
45
+ const btc = __importStar(require("./bitcoin"));
46
+ const cosmos = __importStar(require("./cosmos"));
47
+ const eth = __importStar(require("./ethereum"));
48
+ const solana_1 = require("./solana");
49
+ const thorchain = __importStar(require("./thorchain"));
50
+ function isVultisig(wallet) {
51
+ return (0, isObject_1.default)(wallet) && wallet._isVultisig;
52
+ }
53
+ class VultisigHDWalletInfo {
54
+ constructor() {
55
+ // TODO(gomes): turn me back once signPSBT is fixed upstream
56
+ this._supportsBTCInfo = false;
57
+ this._supportsETHInfo = true;
58
+ this._supportsSolanaInfo = true;
59
+ this._supportsThorchainInfo = true;
60
+ this._supportsCosmosInfo = true;
61
+ }
62
+ getVendor() {
63
+ return "Vultisig";
64
+ }
65
+ hasOnDevicePinEntry() {
66
+ return false;
67
+ }
68
+ hasOnDevicePassphrase() {
69
+ return false;
70
+ }
71
+ hasOnDeviceDisplay() {
72
+ return true;
73
+ }
74
+ hasOnDeviceRecovery() {
75
+ return true;
76
+ }
77
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
+ hasNativeShapeShift(srcCoin, dstCoin) {
79
+ return false;
80
+ }
81
+ supportsBip44Accounts() {
82
+ return false;
83
+ }
84
+ supportsOfflineSigning() {
85
+ return false;
86
+ }
87
+ supportsBroadcast() {
88
+ return true;
89
+ }
90
+ describePath(msg) {
91
+ switch (msg.coin.toLowerCase()) {
92
+ case "bitcoin": {
93
+ // case "zcash": // case "bitcoincash": // case "dogecoin": // case "litecoin":
94
+ const unknown = core.unknownUTXOPath(msg.path, msg.coin, msg.scriptType);
95
+ if (!msg.scriptType)
96
+ return unknown;
97
+ if (!this.btcSupportsCoin(msg.coin))
98
+ return unknown;
99
+ if (!this.btcSupportsScriptType(msg.coin, msg.scriptType))
100
+ return unknown;
101
+ return core.describeUTXOPath(msg.path, msg.coin, msg.scriptType);
102
+ }
103
+ case "ethereum": {
104
+ return core.describeETHPath(msg.path);
105
+ }
106
+ case "solana":
107
+ return core.solanaDescribePath(msg.path);
108
+ case "cosmos":
109
+ return core.cosmosDescribePath(msg.path);
110
+ case "thorchain":
111
+ return core.thorchainDescribePath(msg.path);
112
+ default:
113
+ throw new Error(`Unsupported path for coin: ${msg.coin}`);
114
+ }
115
+ }
116
+ /** Ethereum */
117
+ ethSupportsNetwork() {
118
+ return __awaiter(this, arguments, void 0, function* (chainId = 1) {
119
+ return chainId === 1;
120
+ });
121
+ }
122
+ ethSupportsSecureTransfer() {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ return false;
125
+ });
126
+ }
127
+ ethSupportsNativeShapeShift() {
128
+ return false;
129
+ }
130
+ ethSupportsEIP1559() {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ return true;
133
+ });
134
+ }
135
+ ethGetAccountPaths(msg) {
136
+ return eth.ethGetAccountPaths(msg);
137
+ }
138
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
+ ethNextAccountPath(msg) {
140
+ console.error("Method not implemented");
141
+ return undefined;
142
+ }
143
+ /** Bitcoin */
144
+ btcSupportsCoin(coin) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ const vultisigSupportedCoins = ["bitcoin"]; // Just BTC for first part of integration, we will enable it progressively
147
+ return vultisigSupportedCoins.includes(coin.toLowerCase());
148
+ });
149
+ }
150
+ btcSupportsScriptType(coin, scriptType) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ if (!this.btcSupportsCoin(coin))
153
+ return false;
154
+ const c = coin.toLowerCase();
155
+ switch (scriptType) {
156
+ case core.BTCInputScriptType.SpendAddress:
157
+ return ["bitcoin"].includes(c);
158
+ case core.BTCInputScriptType.SpendWitness:
159
+ return ["bitcoin"].includes(c);
160
+ default:
161
+ return false;
162
+ }
163
+ });
164
+ }
165
+ btcSupportsSecureTransfer() {
166
+ return __awaiter(this, void 0, void 0, function* () {
167
+ return false;
168
+ });
169
+ }
170
+ btcSupportsNativeShapeShift() {
171
+ return false;
172
+ }
173
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
174
+ btcGetAccountPaths(msg) {
175
+ return btc.btcGetAccountPaths(msg);
176
+ }
177
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
178
+ btcNextAccountPath(msg) {
179
+ throw new Error("Method not implemented");
180
+ }
181
+ /** Solana */
182
+ solanaGetAccountPaths(msg) {
183
+ return core.solanaGetAccountPaths(msg);
184
+ }
185
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
186
+ solanaNextAccountPath(msg) {
187
+ throw new Error("Method not implemented");
188
+ }
189
+ thorchainGetAccountPaths(msg) {
190
+ return thorchain.thorchainGetAccountPaths(msg);
191
+ }
192
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
193
+ thorchainNextAccountPath(msg) {
194
+ throw new Error("Method not implemented.");
195
+ }
196
+ cosmosGetAccountPaths(msg) {
197
+ return cosmos.cosmosGetAccountPaths(msg);
198
+ }
199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
200
+ cosmosNextAccountPath(_msg) {
201
+ throw new Error("Method not implemented.");
202
+ }
203
+ }
204
+ exports.VultisigHDWalletInfo = VultisigHDWalletInfo;
205
+ class VultisigHDWallet extends VultisigHDWalletInfo {
206
+ constructor(providers) {
207
+ super();
208
+ // TODO(gomes): turn me back once signPSBT is fixed upstream
209
+ this._supportsBTC = false;
210
+ this._supportsETH = true;
211
+ this._supportsEthSwitchChain = true;
212
+ this._supportsAvalanche = true;
213
+ this._supportsOptimism = true;
214
+ this._supportsPolygon = true;
215
+ this._supportsGnosis = false;
216
+ this._supportsArbitrum = true;
217
+ this._supportsArbitrumNova = false;
218
+ this._supportsBase = true;
219
+ this._supportsBSC = true;
220
+ this._supportsSolana = true;
221
+ this._supportsThorchain = true;
222
+ this._supportsCosmos = true;
223
+ this._isVultisig = true;
224
+ this.evmProvider = providers.evmProvider;
225
+ this.bitcoinProvider = providers.bitcoinProvider;
226
+ this.solanaProvider = providers.solanaProvider;
227
+ this.thorchainProvider = providers.thorchainProvider;
228
+ this.cosmosProvider = providers.cosmosProvider;
229
+ }
230
+ getDeviceID() {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ return "vultisig:" + (yield this.getVault());
233
+ });
234
+ }
235
+ getFeatures() {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ return {};
238
+ });
239
+ }
240
+ getFirmwareVersion() {
241
+ return __awaiter(this, void 0, void 0, function* () {
242
+ return "vultisig";
243
+ });
244
+ }
245
+ getModel() {
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ return "Vultisig";
248
+ });
249
+ }
250
+ getLabel() {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ return "Vultisig";
253
+ });
254
+ }
255
+ isInitialized() {
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ return true;
258
+ });
259
+ }
260
+ isLocked() {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ return false;
263
+ });
264
+ }
265
+ clearSession() {
266
+ return __awaiter(this, void 0, void 0, function* () { });
267
+ }
268
+ initialize() {
269
+ return __awaiter(this, void 0, void 0, function* () { });
270
+ }
271
+ ping(msg) {
272
+ return __awaiter(this, void 0, void 0, function* () {
273
+ return { msg: msg.msg };
274
+ });
275
+ }
276
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
277
+ sendPin(pin) {
278
+ return __awaiter(this, void 0, void 0, function* () { });
279
+ }
280
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
281
+ sendPassphrase(passphrase) {
282
+ return __awaiter(this, void 0, void 0, function* () { });
283
+ }
284
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
285
+ sendCharacter(charater) {
286
+ return __awaiter(this, void 0, void 0, function* () { });
287
+ }
288
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
289
+ sendWord(word) {
290
+ return __awaiter(this, void 0, void 0, function* () { });
291
+ }
292
+ cancel() {
293
+ return __awaiter(this, void 0, void 0, function* () { });
294
+ }
295
+ wipe() {
296
+ return __awaiter(this, void 0, void 0, function* () { });
297
+ }
298
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
299
+ reset(msg) {
300
+ return __awaiter(this, void 0, void 0, function* () { });
301
+ }
302
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
303
+ recover(msg) {
304
+ return __awaiter(this, void 0, void 0, function* () { });
305
+ }
306
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
307
+ loadDevice(msg) {
308
+ return __awaiter(this, void 0, void 0, function* () { });
309
+ }
310
+ disconnect() {
311
+ return __awaiter(this, void 0, void 0, function* () { });
312
+ }
313
+ getPublicKeys(msg) {
314
+ return __awaiter(this, void 0, void 0, function* () {
315
+ return yield Promise.all(msg.map((getPublicKey) => __awaiter(this, void 0, void 0, function* () {
316
+ const { coin, scriptType } = getPublicKey;
317
+ if (scriptType !== undefined) {
318
+ const isSupported = yield this.btcSupportsScriptType(coin, scriptType);
319
+ if (!isSupported) {
320
+ return null;
321
+ }
322
+ }
323
+ switch (coin) {
324
+ case "Bitcoin": {
325
+ // Note this is a pubKey, not an xpub, however vultisig does not support utxo derivation,
326
+ // so this functions as an account (xpub) for all intents and purposes
327
+ const pubKey = yield this.btcGetAddress({ coin, scriptType });
328
+ return { xpub: pubKey };
329
+ }
330
+ default:
331
+ break;
332
+ }
333
+ throw new Error("Vultisig does not support");
334
+ })));
335
+ });
336
+ }
337
+ /** Ethereum */
338
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
339
+ ethGetAddress(_msg) {
340
+ return __awaiter(this, void 0, void 0, function* () {
341
+ const address = yield eth.ethGetAddress(this.evmProvider);
342
+ if (address) {
343
+ this.ethAddress = address;
344
+ return address;
345
+ }
346
+ else {
347
+ this.ethAddress = null;
348
+ return null;
349
+ }
350
+ });
351
+ }
352
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
353
+ ethSignTx(msg) {
354
+ return __awaiter(this, void 0, void 0, function* () {
355
+ console.error("Method not implemented");
356
+ return null;
357
+ });
358
+ }
359
+ ethSendTx(msg) {
360
+ return __awaiter(this, void 0, void 0, function* () {
361
+ const address = yield this.ethGetAddress({ addressNList: [] });
362
+ return address ? eth.ethSendTx(msg, this.evmProvider, address) : null;
363
+ });
364
+ }
365
+ ethSignMessage(msg) {
366
+ return __awaiter(this, void 0, void 0, function* () {
367
+ const address = yield this.ethGetAddress({ addressNList: [] });
368
+ return address ? eth.ethSignMessage(msg, this.evmProvider, address) : null;
369
+ });
370
+ }
371
+ ethSignTypedData(msg) {
372
+ return __awaiter(this, void 0, void 0, function* () {
373
+ const address = yield this.ethGetAddress({ addressNList: [] });
374
+ return address ? eth.ethSignTypedData(msg, this.evmProvider, address) : null;
375
+ });
376
+ }
377
+ ethVerifyMessage(msg) {
378
+ return __awaiter(this, void 0, void 0, function* () {
379
+ if (!msg.signature.startsWith("0x"))
380
+ msg.signature = `0x${msg.signature}`;
381
+ const digest = (0, utils_js_1.keccak256)(core.buildMessage(msg.message));
382
+ return (0, utils_js_1.recoverAddress)(digest, msg.signature) === msg.address;
383
+ });
384
+ }
385
+ ethGetChainId() {
386
+ return __awaiter(this, void 0, void 0, function* () {
387
+ return eth.ethGetChainId(this.evmProvider);
388
+ });
389
+ }
390
+ ethAddChain(params) {
391
+ return __awaiter(this, void 0, void 0, function* () {
392
+ return eth.ethAddChain(this.evmProvider, params);
393
+ });
394
+ }
395
+ ethSwitchChain(params) {
396
+ return __awaiter(this, void 0, void 0, function* () {
397
+ return eth.ethSwitchChain(this.evmProvider, params);
398
+ });
399
+ }
400
+ /** Bitcoin */
401
+ btcGetAddress(msg) {
402
+ return __awaiter(this, void 0, void 0, function* () {
403
+ return btc.btcGetAddress(this.bitcoinProvider, msg);
404
+ });
405
+ }
406
+ btcSignTx(msg) {
407
+ return __awaiter(this, void 0, void 0, function* () {
408
+ const { coin } = msg;
409
+ switch (coin) {
410
+ case "Bitcoin":
411
+ return btc.bitcoinSignTx(msg, this.bitcoinProvider);
412
+ default:
413
+ throw new Error("Vultisig does not support");
414
+ }
415
+ });
416
+ }
417
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
418
+ btcSignMessage(msg) {
419
+ return __awaiter(this, void 0, void 0, function* () {
420
+ throw new Error("not supported");
421
+ });
422
+ }
423
+ btcVerifyMessage(msg) {
424
+ return __awaiter(this, void 0, void 0, function* () {
425
+ const signature = base64_js_1.default.fromByteArray(core.fromHexString(msg.signature));
426
+ return bitcoinMsg.verify(msg.message, msg.address, signature);
427
+ });
428
+ }
429
+ /** get vault */
430
+ getVault() {
431
+ return __awaiter(this, void 0, void 0, function* () {
432
+ var _a;
433
+ const vault = yield ((_a = window.vultisig) === null || _a === void 0 ? void 0 : _a.getVault());
434
+ return (vault === null || vault === void 0 ? void 0 : vault.uid) || null;
435
+ });
436
+ }
437
+ /** Solana */
438
+ solanaGetAddress() {
439
+ return __awaiter(this, void 0, void 0, function* () {
440
+ const { publicKey } = yield this.solanaProvider.connect();
441
+ return publicKey.toString();
442
+ });
443
+ }
444
+ solanaSignTx(msg) {
445
+ return __awaiter(this, void 0, void 0, function* () {
446
+ const address = yield this.solanaGetAddress();
447
+ return address ? (0, solana_1.solanaSignTx)(msg, this.solanaProvider, address) : null;
448
+ });
449
+ }
450
+ solanaSendTx(msg) {
451
+ return __awaiter(this, void 0, void 0, function* () {
452
+ const address = yield this.solanaGetAddress();
453
+ return address ? (0, solana_1.solanaSendTx)(msg, this.solanaProvider, address) : null;
454
+ });
455
+ }
456
+ /** THORChain */
457
+ thorchainGetAddress() {
458
+ return __awaiter(this, void 0, void 0, function* () {
459
+ const address = yield thorchain.thorchainGetAddress(this.thorchainProvider);
460
+ return address || null;
461
+ });
462
+ }
463
+ thorchainSignTx(msg) {
464
+ return __awaiter(this, void 0, void 0, function* () {
465
+ return thorchain.thorchainSignTx(this.thorchainProvider, msg);
466
+ });
467
+ }
468
+ /** Cosmos */
469
+ cosmosGetAddress() {
470
+ return __awaiter(this, void 0, void 0, function* () {
471
+ const address = yield cosmos.cosmosGetAddress(this.cosmosProvider);
472
+ return address || null;
473
+ });
474
+ }
475
+ cosmosSignTx(msg) {
476
+ return __awaiter(this, void 0, void 0, function* () {
477
+ return cosmos.cosmosSignTx(this.cosmosProvider, msg);
478
+ });
479
+ }
480
+ }
481
+ exports.VultisigHDWallet = VultisigHDWallet;
482
+ //# sourceMappingURL=vultisig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vultisig.js","sourceRoot":"","sources":["../src/vultisig.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@shapeshiftoss/hdwallet-vultisig",
3
+ "version": "1.62.5",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "main": "dist/index.js",
9
+ "source": "src/index.ts",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "build": "tsc --build",
13
+ "clean": "rm -rf dist node_modules tsconfig.tsbuildinfo",
14
+ "prepublishOnly": "yarn clean && yarn build"
15
+ },
16
+ "dependencies": {
17
+ "@cosmjs/amino": "^0.28.13",
18
+ "@cosmjs/stargate": "^0.28.13",
19
+ "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0",
20
+ "@shapeshiftoss/hdwallet-core": "1.62.5",
21
+ "@solana/web3.js": "1.95.8",
22
+ "base64-js": "^1.5.1",
23
+ "bitcoinjs-message": "^2.0.0",
24
+ "ethers": "5.7.2",
25
+ "lodash": "^4.17.21"
26
+ },
27
+ "devDependencies": {
28
+ "@types/lodash": "^4.14.168"
29
+ },
30
+ "gitHead": "33d4d52dbd26dc30004ac04cd254f3df508b1745"
31
+ }
package/src/adapter.ts ADDED
@@ -0,0 +1,72 @@
1
+ import * as core from "@shapeshiftoss/hdwallet-core";
2
+
3
+ import {
4
+ VultisigEvmProvider,
5
+ VultisigGetVault,
6
+ VultisigOfflineProvider,
7
+ VultisigSolanaProvider,
8
+ VultisigUtxoProvider,
9
+ } from "./types";
10
+ import { VultisigHDWallet } from "./vultisig";
11
+
12
+ declare global {
13
+ interface Window {
14
+ vultisig?: {
15
+ getVault: () => Promise<VultisigGetVault>;
16
+ ethereum?: VultisigEvmProvider;
17
+ bitcoin?: VultisigUtxoProvider;
18
+ solana?: VultisigSolanaProvider;
19
+ keplr?: VultisigOfflineProvider;
20
+ };
21
+ }
22
+ }
23
+
24
+ export class VultisigAdapter {
25
+ keyring: core.Keyring;
26
+
27
+ private constructor(keyring: core.Keyring) {
28
+ this.keyring = keyring;
29
+ }
30
+
31
+ public static useKeyring(keyring: core.Keyring) {
32
+ return new VultisigAdapter(keyring);
33
+ }
34
+
35
+ public async initialize(): Promise<number> {
36
+ return Object.keys(this.keyring.wallets).length;
37
+ }
38
+
39
+ public async pairDevice(): Promise<VultisigHDWallet | undefined> {
40
+ const evmProvider = window.vultisig?.ethereum;
41
+ const bitcoinProvider = window.vultisig?.bitcoin;
42
+ const solanaProvider = window.vultisig?.solana;
43
+ const thorchainProvider = window.vultisig?.keplr;
44
+ const cosmosProvider = window.vultisig?.keplr;
45
+
46
+ if (!evmProvider || !bitcoinProvider || !solanaProvider || !thorchainProvider || !cosmosProvider) {
47
+ window.open("https://vultisig.com/", "_blank");
48
+ console.error("Please install Vultisig!");
49
+ throw new Error("Vultisig provider not found");
50
+ }
51
+
52
+ // Request authorization before accessing vault
53
+ if (!evmProvider.request) {
54
+ throw new Error("Vultisig EVM provider missing request method");
55
+ }
56
+ await evmProvider.request({ method: "eth_requestAccounts", params: [] });
57
+
58
+ const wallet = new VultisigHDWallet({
59
+ evmProvider,
60
+ bitcoinProvider,
61
+ solanaProvider,
62
+ thorchainProvider,
63
+ cosmosProvider,
64
+ });
65
+ await wallet.initialize();
66
+ const deviceID = await wallet.getDeviceID();
67
+ this.keyring.add(wallet, deviceID);
68
+ this.keyring.emit(["Vultisig", deviceID, core.Events.CONNECT], deviceID);
69
+
70
+ return wallet;
71
+ }
72
+ }