@shapeshiftoss/hdwallet-gridplus 1.62.15 → 1.62.16

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/dist/adapter.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  import * as core from "@shapeshiftoss/hdwallet-core";
2
- import { GridPlusHDWallet } from "./gridplus";
2
+ import { GridPlusHDWallet, SafeCardType } from "./gridplus";
3
3
  export declare class GridPlusAdapter {
4
4
  keyring: core.Keyring;
5
5
  private client?;
6
6
  constructor(keyring: core.Keyring);
7
7
  static useKeyring(keyring: core.Keyring): GridPlusAdapter;
8
- connectDevice(deviceId: string, password?: string): Promise<GridPlusHDWallet | undefined>;
9
- pairDevice(pairingCode: string): Promise<GridPlusHDWallet>;
8
+ connectDevice(deviceId: string, expectedActiveWalletId?: string, expectedType?: SafeCardType): Promise<GridPlusHDWallet | undefined>;
9
+ pairDevice(pairingCode: string): Promise<{
10
+ wallet: GridPlusHDWallet;
11
+ activeWalletId: string;
12
+ type: SafeCardType;
13
+ }>;
10
14
  }
11
15
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9C,qBAAa,eAAe;IAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IAEtB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,EAAE,IAAI,CAAC,OAAO;WAInB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO;IAIjC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAiBrF,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAWxE"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK5D,qBAAa,eAAe;IAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IAEtB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,EAAE,IAAI,CAAC,OAAO;WAInB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO;IAIjC,aAAa,CACxB,QAAQ,EAAE,MAAM,EAChB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAuB3B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACpD,MAAM,EAAE,gBAAgB,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,YAAY,CAAC;KACpB,CAAC;CAqBH"}
package/dist/adapter.js CHANGED
@@ -22,10 +22,10 @@ class GridPlusAdapter {
22
22
  static useKeyring(keyring) {
23
23
  return new GridPlusAdapter(keyring);
24
24
  }
25
- connectDevice(deviceId_1) {
26
- return __awaiter(this, arguments, void 0, function* (deviceId, password = "") {
25
+ connectDevice(deviceId, expectedActiveWalletId, expectedType) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
27
  const privKey = (0, crypto_1.createHash)("sha256")
28
- .update(deviceId + password + name)
28
+ .update(deviceId + name)
29
29
  .digest();
30
30
  if (!this.client) {
31
31
  this.client = new gridplus_sdk_1.Client({ name, baseUrl, privKey, deviceId });
@@ -36,8 +36,12 @@ class GridPlusAdapter {
36
36
  this.client.resetActiveWallets();
37
37
  }
38
38
  const isPaired = yield this.client.connect(deviceId);
39
- if (isPaired)
40
- return new gridplus_1.GridPlusHDWallet(this.client);
39
+ if (!isPaired)
40
+ return undefined;
41
+ const wallet = new gridplus_1.GridPlusHDWallet(this.client);
42
+ if (expectedActiveWalletId)
43
+ yield wallet.validateActiveWallet(expectedActiveWalletId, expectedType);
44
+ return wallet;
41
45
  });
42
46
  }
43
47
  pairDevice(pairingCode) {
@@ -49,7 +53,16 @@ class GridPlusAdapter {
49
53
  throw new Error("Failed to pair.");
50
54
  const wallet = new gridplus_1.GridPlusHDWallet(this.client);
51
55
  this.keyring.add(wallet, this.client.getDeviceId());
52
- return wallet;
56
+ const activeWallet = this.client.getActiveWallet();
57
+ if (!activeWallet)
58
+ throw new Error("No active wallet found on device");
59
+ const activeWalletId = activeWallet.uid.toString("hex");
60
+ const type = activeWallet.external ? "external" : "internal";
61
+ return {
62
+ wallet,
63
+ activeWalletId,
64
+ type,
65
+ };
53
66
  });
54
67
  }
55
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mCAAoC;AACpC,+CAAsC;AAEtC,yCAA8C;AAE9C,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAE5C,MAAa,eAAe;IAK1B,YAAY,OAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAqB;QAC5C,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEY,aAAa;6DAAC,QAAgB,EAAE,QAAQ,GAAG,EAAE;YACxD,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;iBACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;iBAClC,MAAM,EAAE,CAAC;YAEZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,uFAAuF;gBACvF,6FAA6F;gBAC7F,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,QAAQ;gBAAE,OAAO,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;KAAA;IAEY,UAAU,CAAC,WAAmB;;YACzC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAEpD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AAzCD,0CAyCC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mCAAoC;AACpC,+CAAsC;AAEtC,yCAA4D;AAE5D,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAE5C,MAAa,eAAe;IAK1B,YAAY,OAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAqB;QAC5C,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEY,aAAa,CACxB,QAAgB,EAChB,sBAA+B,EAC/B,YAA2B;;YAE3B,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;iBACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACvB,MAAM,EAAE,CAAC;YAEZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,uFAAuF;gBACvF,6FAA6F;gBAC7F,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAEhC,MAAM,MAAM,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,sBAAsB;gBAAE,MAAM,MAAM,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;YAEpG,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEY,UAAU,CAAC,WAAmB;;YAKzC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAEvE,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAE7D,OAAO;gBACL,MAAM;gBACN,cAAc;gBACd,IAAI;aACL,CAAC;QACJ,CAAC;KAAA;CACF;AAjED,0CAiEC"}
@@ -1,5 +1,6 @@
1
1
  import * as core from "@shapeshiftoss/hdwallet-core";
2
2
  import { Client } from "gridplus-sdk";
3
+ export type SafeCardType = "external" | "internal";
3
4
  export declare function isGridPlus(wallet: core.HDWallet): wallet is GridPlusHDWallet;
4
5
  export declare class GridPlusWalletInfo implements core.HDWalletInfo, core.BTCWalletInfo, core.CosmosWalletInfo, core.ETHWalletInfo, core.MayachainWalletInfo, core.SolanaWalletInfo, core.ThorchainWalletInfo {
5
6
  readonly _supportsBTCInfo = true;
@@ -63,7 +64,10 @@ export declare class GridPlusHDWallet extends GridPlusWalletInfo implements core
63
64
  readonly _supportsThorchain = true;
64
65
  readonly _isGridPlus = true;
65
66
  client: Client | undefined;
67
+ private expectedActiveWalletId?;
68
+ private expectedType?;
66
69
  constructor(client: Client);
70
+ setExpectedActiveWalletId(activeWalletId: string, type?: SafeCardType): void;
67
71
  cancel(): Promise<void>;
68
72
  clearSession(): Promise<void>;
69
73
  initialize(): Promise<void>;
@@ -85,6 +89,14 @@ export declare class GridPlusHDWallet extends GridPlusWalletInfo implements core
85
89
  ping(msg: core.Ping): Promise<core.Pong>;
86
90
  disconnect(): Promise<void>;
87
91
  getActiveWalletId(): Promise<string | undefined>;
92
+ /**
93
+ * Validate that the currently active wallet matches expectations
94
+ * Throws if expectedActiveWalletId is provided and doesn't match
95
+ */
96
+ validateActiveWallet(expectedActiveWalletId?: string, expectedType?: SafeCardType): Promise<{
97
+ activeWalletId: string;
98
+ type: SafeCardType;
99
+ }>;
88
100
  getPublicKeys(msg: Array<core.GetPublicKey>): Promise<Array<core.PublicKey | null>>;
89
101
  btcGetAddress(msg: core.BTCGetAddress): Promise<string | null>;
90
102
  btcSignTx(msg: core.BTCSignTx): Promise<core.BTCSignedTx | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"gridplus.d.ts","sourceRoot":"","sources":["../src/gridplus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridplus.d.ts","sourceRoot":"","sources":["../src/gridplus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AAWjD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAInD,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,gBAAgB,CAE5E;AAED,qBAAa,kBACX,YACE,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB;IAE1B,QAAQ,CAAC,gBAAgB,QAAQ;IACjC,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,gBAAgB,QAAQ;IACjC,QAAQ,CAAC,sBAAsB,QAAQ;IACvC,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,sBAAsB,QAAQ;IAEvC,SAAS,IAAI,MAAM;IAInB,mBAAmB,IAAI,OAAO;IAI9B,qBAAqB,IAAI,OAAO;IAIhC,kBAAkB,IAAI,OAAO;IAI7B,mBAAmB,IAAI,OAAO;IAI9B,mBAAmB,IAAI,OAAO;IAI9B,qBAAqB,IAAI,OAAO;IAIhC,sBAAsB,IAAI,OAAO;IAIjC,iBAAiB,IAAI,OAAO;IAI5B,YAAY,IAAI,IAAI,CAAC,eAAe;IAQpC;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAa7F,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAInD,2BAA2B,IAAI,OAAO;IAItC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;IAwB5E,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS;IAmB7E;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAInD,2BAA2B,IAAI,OAAO;IAIhC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;IAc3E,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS;IAmB7E,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAIrF,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS;IAWtF,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;IASrF,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS;IAStF,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAS9F,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,GAAG,SAAS;IAQ/F,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAS9F,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,GAAG,SAAS;CAOhG;AAED,qBAAa,gBACX,SAAQ,kBACR,YACE,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe;IAEtB,QAAQ,CAAC,iBAAiB,QAAQ;IAClC,QAAQ,CAAC,qBAAqB,SAAS;IACvC,QAAQ,CAAC,kBAAkB,QAAQ;IACnC,QAAQ,CAAC,YAAY,QAAQ;IAC7B,QAAQ,CAAC,YAAY,QAAQ;IAC7B,QAAQ,CAAC,aAAa,QAAQ;IAC9B,QAAQ,CAAC,eAAe,QAAQ;IAChC,QAAQ,CAAC,YAAY,QAAQ;IAC7B,QAAQ,CAAC,uBAAuB,SAAS;IACzC,QAAQ,CAAC,eAAe,QAAQ;IAChC,QAAQ,CAAC,kBAAkB,QAAQ;IACnC,QAAQ,CAAC,iBAAiB,QAAQ;IAClC,QAAQ,CAAC,gBAAgB,QAAQ;IACjC,QAAQ,CAAC,eAAe,QAAQ;IAChC,QAAQ,CAAC,kBAAkB,QAAQ;IAEnC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,sBAAsB,CAAC,CAAS;IACxC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAExB,MAAM,EAAE,MAAM;IAKnB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI;IAK7E,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IACvB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAU3C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5B,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAIxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAStD;;;OAGG;IACU,oBAAoB,CAC/B,sBAAsB,CAAC,EAAE,MAAM,EAC/B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,YAAY,CAAC;KACpB,CAAC;IA2BI,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAgDnF,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK9D,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAQhE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAIvD,gBAAgB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI3C,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IAKpE,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAQzD,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAQ9E,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAQxE,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C,OAAO,CAAC,qBAAqB;IAYvB,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKpE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAQzE,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKpE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAQzE,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK1E,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQlF,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK1E,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAOzF"}
package/dist/gridplus.js CHANGED
@@ -40,13 +40,14 @@ exports.isGridPlus = isGridPlus;
40
40
  const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
41
41
  const gridplus_sdk_1 = require("gridplus-sdk");
42
42
  const isObject_1 = __importDefault(require("lodash/isObject"));
43
+ const viem_1 = require("viem");
43
44
  const btc = __importStar(require("./bitcoin"));
44
45
  const cosmos = __importStar(require("./cosmos"));
45
46
  const eth = __importStar(require("./ethereum"));
46
47
  const mayachain = __importStar(require("./mayachain"));
47
48
  const solana = __importStar(require("./solana"));
48
49
  const thorchain = __importStar(require("./thorchain"));
49
- const ZERO_BUFFER = Buffer.alloc(32);
50
+ const isSafecardConnected = (uid) => !!uid && `0x${uid.toString("hex")}` !== viem_1.zeroHash;
50
51
  function isGridPlus(wallet) {
51
52
  return (0, isObject_1.default)(wallet) && wallet._isGridPlus;
52
53
  }
@@ -288,6 +289,10 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
288
289
  this._isGridPlus = true;
289
290
  this.client = client;
290
291
  }
292
+ setExpectedActiveWalletId(activeWalletId, type) {
293
+ this.expectedActiveWalletId = activeWalletId;
294
+ this.expectedType = type;
295
+ }
291
296
  cancel() {
292
297
  return __awaiter(this, void 0, void 0, function* () { });
293
298
  }
@@ -382,12 +387,42 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
382
387
  if (!this.client)
383
388
  throw new Error("Device not connected");
384
389
  const { external, internal } = yield this.client.fetchActiveWallet();
385
- if (!external.uid.equals(ZERO_BUFFER))
390
+ if (isSafecardConnected(external.uid))
386
391
  return external.uid.toString("hex");
387
- if (!internal.uid.equals(ZERO_BUFFER))
392
+ if (isSafecardConnected(internal.uid))
388
393
  return internal.uid.toString("hex");
389
394
  });
390
395
  }
396
+ /**
397
+ * Validate that the currently active wallet matches expectations
398
+ * Throws if expectedActiveWalletId is provided and doesn't match
399
+ */
400
+ validateActiveWallet(expectedActiveWalletId, expectedType) {
401
+ return __awaiter(this, void 0, void 0, function* () {
402
+ if (!this.client)
403
+ throw new Error("Device not connected");
404
+ const activeWallets = yield this.client.fetchActiveWallet();
405
+ // Determine active wallet type (external SafeCard takes priority)
406
+ const type = (() => {
407
+ var _a, _b;
408
+ if (isSafecardConnected((_a = activeWallets.external) === null || _a === void 0 ? void 0 : _a.uid))
409
+ return "external";
410
+ if (isSafecardConnected((_b = activeWallets.internal) === null || _b === void 0 ? void 0 : _b.uid))
411
+ return "internal";
412
+ throw new Error("No active wallet found on device");
413
+ })();
414
+ const activeWallet = activeWallets[type];
415
+ const activeWalletId = activeWallet.uid.toString("hex");
416
+ // Validate against expected activeWalletId if provided
417
+ if (expectedActiveWalletId && activeWalletId !== expectedActiveWalletId) {
418
+ if (expectedType === "internal") {
419
+ throw new Error("Remove inserted SafeCard to access internal GridPlus wallet");
420
+ }
421
+ throw new Error("Active SafeCard doesn't match expected SafeCard");
422
+ }
423
+ return { activeWalletId, type };
424
+ });
425
+ }
391
426
  getPublicKeys(msg) {
392
427
  return __awaiter(this, void 0, void 0, function* () {
393
428
  if (!this.client)
@@ -442,6 +477,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
442
477
  return __awaiter(this, void 0, void 0, function* () {
443
478
  if (!this.client)
444
479
  throw new Error("Device not connected");
480
+ if (!this.expectedActiveWalletId)
481
+ throw new Error("Expected SafeCard ID not set");
482
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
445
483
  return btc.btcSignTx(this.client, msg);
446
484
  });
447
485
  }
@@ -466,6 +504,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
466
504
  return __awaiter(this, void 0, void 0, function* () {
467
505
  if (!this.client)
468
506
  throw new Error("Device not connected");
507
+ if (!this.expectedActiveWalletId)
508
+ throw new Error("Expected SafeCard ID not set");
509
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
469
510
  return eth.ethSignTx(this.client, msg);
470
511
  });
471
512
  }
@@ -473,6 +514,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
473
514
  return __awaiter(this, void 0, void 0, function* () {
474
515
  if (!this.client)
475
516
  throw new Error("Device not connected");
517
+ if (!this.expectedActiveWalletId)
518
+ throw new Error("Expected SafeCard ID not set");
519
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
476
520
  return eth.ethSignTypedData(this.client, msg);
477
521
  });
478
522
  }
@@ -480,6 +524,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
480
524
  return __awaiter(this, void 0, void 0, function* () {
481
525
  if (!this.client)
482
526
  throw new Error("Device not connected");
527
+ if (!this.expectedActiveWalletId)
528
+ throw new Error("Expected SafeCard ID not set");
529
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
483
530
  return eth.ethSignMessage(this.client, msg);
484
531
  });
485
532
  }
@@ -505,6 +552,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
505
552
  solanaSignTx(msg) {
506
553
  return __awaiter(this, void 0, void 0, function* () {
507
554
  this.assertSolanaFwSupport();
555
+ if (!this.expectedActiveWalletId)
556
+ throw new Error("Expected SafeCard ID not set");
557
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
508
558
  return solana.solanaSignTx(this.client, msg);
509
559
  });
510
560
  }
@@ -519,6 +569,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
519
569
  return __awaiter(this, void 0, void 0, function* () {
520
570
  if (!this.client)
521
571
  throw new Error("Device not connected");
572
+ if (!this.expectedActiveWalletId)
573
+ throw new Error("Expected SafeCard ID not set");
574
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
522
575
  return cosmos.cosmosSignTx(this.client, msg);
523
576
  });
524
577
  }
@@ -533,6 +586,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
533
586
  return __awaiter(this, void 0, void 0, function* () {
534
587
  if (!this.client)
535
588
  throw new Error("Device not connected");
589
+ if (!this.expectedActiveWalletId)
590
+ throw new Error("Expected SafeCard ID not set");
591
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
536
592
  return thorchain.thorchainSignTx(this.client, msg);
537
593
  });
538
594
  }
@@ -547,6 +603,9 @@ class GridPlusHDWallet extends GridPlusWalletInfo {
547
603
  return __awaiter(this, void 0, void 0, function* () {
548
604
  if (!this.client)
549
605
  throw new Error("Device not connected");
606
+ if (!this.expectedActiveWalletId)
607
+ throw new Error("Expected SafeCard ID not set");
608
+ yield this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
550
609
  return mayachain.mayachainSignTx(this.client, msg);
551
610
  });
552
611
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gridplus.js","sourceRoot":"","sources":["../src/gridplus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridplus.js","sourceRoot":"","sources":["../src/gridplus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshiftoss/hdwallet-gridplus",
3
- "version": "1.62.15",
3
+ "version": "1.62.16",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -20,7 +20,7 @@
20
20
  "@ethereumjs/rlp": "5.0.2",
21
21
  "@ethereumjs/tx": "5.4.0",
22
22
  "@metamask/eth-sig-util": "^7.0.0",
23
- "@shapeshiftoss/hdwallet-core": "1.62.15",
23
+ "@shapeshiftoss/hdwallet-core": "1.62.16",
24
24
  "bech32": "^1.1.4",
25
25
  "bs58": "^5.0.0",
26
26
  "crypto-js": "^4.2.0",
@@ -35,5 +35,5 @@
35
35
  "@ethereumjs/common",
36
36
  "@ethereumjs/tx"
37
37
  ],
38
- "gitHead": "040fd1f6fc0083d0cd9c2601adc560e9f392f813"
38
+ "gitHead": "7e373a3d0b92ae899c8f7079bb2e81b1ff11b638"
39
39
  }
package/src/adapter.ts CHANGED
@@ -2,7 +2,7 @@ import * as core from "@shapeshiftoss/hdwallet-core";
2
2
  import { createHash } from "crypto";
3
3
  import { Client } from "gridplus-sdk";
4
4
 
5
- import { GridPlusHDWallet } from "./gridplus";
5
+ import { GridPlusHDWallet, SafeCardType } from "./gridplus";
6
6
 
7
7
  const name = "ShapeShift";
8
8
  const baseUrl = "https://signing.gridpl.us";
@@ -20,9 +20,13 @@ export class GridPlusAdapter {
20
20
  return new GridPlusAdapter(keyring);
21
21
  }
22
22
 
23
- public async connectDevice(deviceId: string, password = ""): Promise<GridPlusHDWallet | undefined> {
23
+ public async connectDevice(
24
+ deviceId: string,
25
+ expectedActiveWalletId?: string,
26
+ expectedType?: SafeCardType
27
+ ): Promise<GridPlusHDWallet | undefined> {
24
28
  const privKey = createHash("sha256")
25
- .update(deviceId + password + name)
29
+ .update(deviceId + name)
26
30
  .digest();
27
31
 
28
32
  if (!this.client) {
@@ -34,10 +38,20 @@ export class GridPlusAdapter {
34
38
  }
35
39
 
36
40
  const isPaired = await this.client.connect(deviceId);
37
- if (isPaired) return new GridPlusHDWallet(this.client);
41
+ if (!isPaired) return undefined;
42
+
43
+ const wallet = new GridPlusHDWallet(this.client);
44
+
45
+ if (expectedActiveWalletId) await wallet.validateActiveWallet(expectedActiveWalletId, expectedType);
46
+
47
+ return wallet;
38
48
  }
39
49
 
40
- public async pairDevice(pairingCode: string): Promise<GridPlusHDWallet> {
50
+ public async pairDevice(pairingCode: string): Promise<{
51
+ wallet: GridPlusHDWallet;
52
+ activeWalletId: string;
53
+ type: SafeCardType;
54
+ }> {
41
55
  if (!this.client) throw new Error("No client connected. Call connectDevice first.");
42
56
 
43
57
  const success = await this.client.pair(pairingCode);
@@ -46,6 +60,16 @@ export class GridPlusAdapter {
46
60
  const wallet = new GridPlusHDWallet(this.client);
47
61
  this.keyring.add(wallet, this.client.getDeviceId());
48
62
 
49
- return wallet;
63
+ const activeWallet = this.client.getActiveWallet();
64
+ if (!activeWallet) throw new Error("No active wallet found on device");
65
+
66
+ const activeWalletId = activeWallet.uid.toString("hex");
67
+ const type = activeWallet.external ? "external" : "internal";
68
+
69
+ return {
70
+ wallet,
71
+ activeWalletId,
72
+ type,
73
+ };
50
74
  }
51
75
  }
package/src/gridplus.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as core from "@shapeshiftoss/hdwallet-core";
2
2
  import { Client, Constants } from "gridplus-sdk";
3
3
  import isObject from "lodash/isObject";
4
+ import { zeroHash } from "viem";
4
5
 
5
6
  import * as btc from "./bitcoin";
6
7
  import * as cosmos from "./cosmos";
@@ -9,7 +10,9 @@ import * as mayachain from "./mayachain";
9
10
  import * as solana from "./solana";
10
11
  import * as thorchain from "./thorchain";
11
12
 
12
- const ZERO_BUFFER = Buffer.alloc(32);
13
+ export type SafeCardType = "external" | "internal";
14
+
15
+ const isSafecardConnected = (uid?: Buffer): boolean => !!uid && `0x${uid.toString("hex")}` !== zeroHash;
13
16
 
14
17
  export function isGridPlus(wallet: core.HDWallet): wallet is GridPlusHDWallet {
15
18
  return isObject(wallet) && (wallet as any)._isGridPlus;
@@ -299,12 +302,19 @@ export class GridPlusHDWallet
299
302
  readonly _isGridPlus = true;
300
303
 
301
304
  client: Client | undefined;
305
+ private expectedActiveWalletId?: string;
306
+ private expectedType?: SafeCardType;
302
307
 
303
308
  constructor(client: Client) {
304
309
  super();
305
310
  this.client = client;
306
311
  }
307
312
 
313
+ public setExpectedActiveWalletId(activeWalletId: string, type?: SafeCardType): void {
314
+ this.expectedActiveWalletId = activeWalletId;
315
+ this.expectedType = type;
316
+ }
317
+
308
318
  async cancel(): Promise<void> {}
309
319
  async clearSession(): Promise<void> {}
310
320
  async initialize(): Promise<void> {}
@@ -367,8 +377,45 @@ export class GridPlusHDWallet
367
377
 
368
378
  const { external, internal } = await this.client.fetchActiveWallet();
369
379
 
370
- if (!external.uid.equals(ZERO_BUFFER)) return external.uid.toString("hex");
371
- if (!internal.uid.equals(ZERO_BUFFER)) return internal.uid.toString("hex");
380
+ if (isSafecardConnected(external.uid)) return external.uid.toString("hex");
381
+ if (isSafecardConnected(internal.uid)) return internal.uid.toString("hex");
382
+ }
383
+
384
+ /**
385
+ * Validate that the currently active wallet matches expectations
386
+ * Throws if expectedActiveWalletId is provided and doesn't match
387
+ */
388
+ public async validateActiveWallet(
389
+ expectedActiveWalletId?: string,
390
+ expectedType?: SafeCardType
391
+ ): Promise<{
392
+ activeWalletId: string;
393
+ type: SafeCardType;
394
+ }> {
395
+ if (!this.client) throw new Error("Device not connected");
396
+
397
+ const activeWallets = await this.client.fetchActiveWallet();
398
+
399
+ // Determine active wallet type (external SafeCard takes priority)
400
+ const type: SafeCardType = (() => {
401
+ if (isSafecardConnected(activeWallets.external?.uid)) return "external";
402
+ if (isSafecardConnected(activeWallets.internal?.uid)) return "internal";
403
+
404
+ throw new Error("No active wallet found on device");
405
+ })();
406
+
407
+ const activeWallet = activeWallets[type];
408
+ const activeWalletId = activeWallet.uid.toString("hex");
409
+
410
+ // Validate against expected activeWalletId if provided
411
+ if (expectedActiveWalletId && activeWalletId !== expectedActiveWalletId) {
412
+ if (expectedType === "internal") {
413
+ throw new Error("Remove inserted SafeCard to access internal GridPlus wallet");
414
+ }
415
+ throw new Error("Active SafeCard doesn't match expected SafeCard");
416
+ }
417
+
418
+ return { activeWalletId, type };
372
419
  }
373
420
 
374
421
  async getPublicKeys(msg: Array<core.GetPublicKey>): Promise<Array<core.PublicKey | null>> {
@@ -426,6 +473,9 @@ export class GridPlusHDWallet
426
473
 
427
474
  async btcSignTx(msg: core.BTCSignTx): Promise<core.BTCSignedTx | null> {
428
475
  if (!this.client) throw new Error("Device not connected");
476
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
477
+
478
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
429
479
  return btc.btcSignTx(this.client, msg);
430
480
  }
431
481
 
@@ -444,16 +494,25 @@ export class GridPlusHDWallet
444
494
 
445
495
  async ethSignTx(msg: core.ETHSignTx): Promise<core.ETHSignedTx> {
446
496
  if (!this.client) throw new Error("Device not connected");
497
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
498
+
499
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
447
500
  return eth.ethSignTx(this.client, msg);
448
501
  }
449
502
 
450
503
  async ethSignTypedData(msg: core.ETHSignTypedData): Promise<core.ETHSignedTypedData> {
451
504
  if (!this.client) throw new Error("Device not connected");
505
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
506
+
507
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
452
508
  return eth.ethSignTypedData(this.client, msg);
453
509
  }
454
510
 
455
511
  async ethSignMessage(msg: core.ETHSignMessage): Promise<core.ETHSignedMessage> {
456
512
  if (!this.client) throw new Error("Device not connected");
513
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
514
+
515
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
457
516
  return eth.ethSignMessage(this.client, msg);
458
517
  }
459
518
 
@@ -480,6 +539,9 @@ export class GridPlusHDWallet
480
539
 
481
540
  async solanaSignTx(msg: core.SolanaSignTx): Promise<core.SolanaSignedTx | null> {
482
541
  this.assertSolanaFwSupport();
542
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
543
+
544
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
483
545
  return solana.solanaSignTx(this.client, msg);
484
546
  }
485
547
 
@@ -490,6 +552,9 @@ export class GridPlusHDWallet
490
552
 
491
553
  async cosmosSignTx(msg: core.CosmosSignTx): Promise<core.CosmosSignedTx | null> {
492
554
  if (!this.client) throw new Error("Device not connected");
555
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
556
+
557
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
493
558
  return cosmos.cosmosSignTx(this.client, msg);
494
559
  }
495
560
 
@@ -500,6 +565,9 @@ export class GridPlusHDWallet
500
565
 
501
566
  async thorchainSignTx(msg: core.ThorchainSignTx): Promise<core.ThorchainSignedTx | null> {
502
567
  if (!this.client) throw new Error("Device not connected");
568
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
569
+
570
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
503
571
  return thorchain.thorchainSignTx(this.client, msg);
504
572
  }
505
573
 
@@ -510,6 +578,9 @@ export class GridPlusHDWallet
510
578
 
511
579
  async mayachainSignTx(msg: core.MayachainSignTx): Promise<core.MayachainSignedTx | null> {
512
580
  if (!this.client) throw new Error("Device not connected");
581
+ if (!this.expectedActiveWalletId) throw new Error("Expected SafeCard ID not set");
582
+
583
+ await this.validateActiveWallet(this.expectedActiveWalletId, this.expectedType);
513
584
  return mayachain.mayachainSignTx(this.client, msg);
514
585
  }
515
586
  }