@cardano-sdk/hardware-ledger 0.8.19 → 0.9.1

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.
@@ -1,6 +1,8 @@
1
+ /// <reference types="w3c-web-usb" />
1
2
  import * as Crypto from '@cardano-sdk/crypto';
2
3
  import { Cardano } from '@cardano-sdk/core';
3
4
  import { CommunicationType, KeyAgentBase, KeyAgentDependencies, SerializableLedgerKeyAgentData, SignBlobResult, SignTransactionContext } from '@cardano-sdk/key-management';
5
+ import { HID } from 'node-hid';
4
6
  import { LedgerTransportType } from './types';
5
7
  import _LedgerConnection, { GetVersionResponse, Transaction, TransactionSigningMode } from '@cardano-foundation/ledgerjs-hw-app-cardano';
6
8
  import type LedgerTransport from '@ledgerhq/hw-transport';
@@ -22,24 +24,36 @@ export interface GetLedgerXpubProps {
22
24
  }
23
25
  export interface CreateLedgerTransportProps {
24
26
  communicationType: CommunicationType;
25
- activeTransport?: LedgerTransportType;
26
- devicePath?: string;
27
+ nodeHidDevicePath?: string;
27
28
  }
28
- declare type LedgerConnectionWithCommunicationTypeAndDevicePath = {
29
+ declare const establishDeviceConnectionMethodName = "establishDeviceConnection";
30
+ declare type DeviceConnectionsWithTheirInitialParams = {
29
31
  deviceConnection: LedgerConnection;
30
- communicationType: CommunicationType;
31
- devicePath?: string;
32
- };
32
+ } & ({
33
+ communicationType: CommunicationType.Node;
34
+ device?: HID;
35
+ nodeHidDevicePath?: string;
36
+ } | {
37
+ communicationType: CommunicationType.Web;
38
+ device?: USBDevice;
39
+ });
33
40
  export declare class LedgerKeyAgent extends KeyAgentBase {
34
41
  #private;
35
42
  readonly deviceConnection?: LedgerConnection;
36
- static deviceConnections: LedgerConnectionWithCommunicationTypeAndDevicePath[];
43
+ static deviceConnections: DeviceConnectionsWithTheirInitialParams[];
37
44
  constructor({ deviceConnection, ...serializableData }: LedgerKeyAgentProps, dependencies: KeyAgentDependencies);
38
- static findKeyAgentByCommunicationTypeAndDevicePath(communicationType: CommunicationType, devicePath?: string): LedgerConnectionWithCommunicationTypeAndDevicePath | undefined;
39
- static getHidDeviceList(communicationType: CommunicationType): Promise<string[]>;
40
- static createTransport({ communicationType, activeTransport, devicePath }: CreateLedgerTransportProps): Promise<LedgerTransportType>;
45
+ private static findConnectionByCommunicationTypeAndDevicePath;
46
+ private static getHidDeviceList;
47
+ private static attachDisconnectionCleanupHandler;
48
+ private static openTransportForDevice;
49
+ static createTransport({ communicationType, nodeHidDevicePath }: CreateLedgerTransportProps): Promise<LedgerTransportType>;
50
+ private static testConnection;
41
51
  static createDeviceConnection(activeTransport: LedgerTransport): Promise<LedgerConnection>;
42
- static establishDeviceConnection(communicationType: CommunicationType, devicePath?: string): Promise<LedgerConnection>;
52
+ private static rememberConnection;
53
+ static [establishDeviceConnectionMethodName](communicationType: CommunicationType): Promise<LedgerConnection>;
54
+ static [establishDeviceConnectionMethodName](communicationType: CommunicationType, nodeHidDevicePath: string): Promise<LedgerConnection>;
55
+ static [establishDeviceConnectionMethodName](communicationType: CommunicationType.Node, device: HID): Promise<LedgerConnection>;
56
+ static [establishDeviceConnectionMethodName](communicationType: CommunicationType.Web, device: USBDevice): Promise<LedgerConnection>;
43
57
  static checkDeviceConnection(communicationType: CommunicationType, deviceConnection?: LedgerConnection): Promise<LedgerConnection>;
44
58
  static getXpub({ deviceConnection, communicationType, accountIndex }: GetLedgerXpubProps): Promise<Crypto.Bip32PublicKeyHex>;
45
59
  static getAppVersion(communicationType: CommunicationType, deviceConnection?: LedgerConnection): Promise<GetVersionResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"LedgerKeyAgent.d.ts","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LedgerKeyAgent.d.ts","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAuB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAGL,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EAEpB,8BAA8B,EAC9B,cAAc,EACd,sBAAsB,EAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAgB,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI5D,OAAO,iBAAiB,EAAE,EAGxB,kBAAkB,EAKlB,WAAW,EACX,sBAAsB,EAEvB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D,QAAA,MAAM,gBAAgB,0BAED,CAAC;AACtB,aAAK,gBAAgB,GAAG,iBAAiB,CAAC;AAiB1C,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC;IAC7F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAqBD,QAAA,MAAM,mCAAmC,8BAA8B,CAAC;AAuExE,aAAK,uCAAuC,GAAG;IAAE,gBAAgB,EAAE,gBAAgB,CAAA;CAAE,GAAG,CACpF;IACE,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,CAAC;IACzC,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CACJ,CAAC;AAOF,qBAAa,cAAe,SAAQ,YAAY;;IAC9C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAE7C,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,CAAM;gBAE7D,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,oBAAoB;mBAMzF,8CAA8C;mBAmC9C,gBAAgB;IAQrC,OAAO,CAAC,MAAM,CAAC,iCAAiC;mBAc3B,sBAAsB;WAoB9B,eAAe,CAAC,EAC3B,iBAAiB,EACjB,iBAAsB,EACvB,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC;mBAkBvC,cAAc;WAYtB,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAMhG,OAAO,CAAC,MAAM,CAAC,kBAAkB;WA6BpB,CAAC,mCAAmC,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;WACtG,CAAC,mCAAmC,CAAC,CAChD,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,gBAAgB,CAAC;WACf,CAAC,mCAAmC,CAAC,CAChD,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,EACzC,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,gBAAgB,CAAC;WACf,CAAC,mCAAmC,CAAC,CAChD,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EACxC,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,gBAAgB,CAAC;WAsDf,qBAAqB,CAChC,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,gBAAgB,CAAC;WAmBf,OAAO,CAAC,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACb,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;WAoB5C,aAAa,CACxB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,kBAAkB,CAAC;WASjB,gBAAgB,CAC3B,EAAE,OAAO,EAAE,YAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,yBAAyB,EAC7F,YAAY,EAAE,oBAAoB;IA8BpC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,sBAAsB;IAkCxD,eAAe,CACnB,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,cAAc,EACtC,EAAE,cAAc,EAAE,cAAc,EAAE,EAAE,sBAAsB,GACzD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;IA6CxB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAInC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;CAGjE"}
@@ -42,17 +42,19 @@ exports.LedgerKeyAgent = void 0;
42
42
  const Crypto = __importStar(require("@cardano-sdk/crypto"));
43
43
  const core_1 = require("@cardano-sdk/core");
44
44
  const key_management_1 = require("@cardano-sdk/key-management");
45
+ const node_hid_1 = require("node-hid");
45
46
  const address_1 = require("@cardano-foundation/ledgerjs-hw-app-cardano/dist/utils/address");
46
47
  const transformers_1 = require("./transformers");
47
48
  const hw_transport_node_hid_noevents_1 = __importDefault(require("@ledgerhq/hw-transport-node-hid-noevents"));
48
49
  const ledgerjs_hw_app_cardano_1 = __importStar(require("@cardano-foundation/ledgerjs-hw-app-cardano"));
49
- const hw_transport_webhid_1 = __importDefault(require("@ledgerhq/hw-transport-webhid"));
50
- const TransportWebHID = hw_transport_webhid_1.default.default
51
- ? hw_transport_webhid_1.default.default
52
- : hw_transport_webhid_1.default;
50
+ const hw_transport_webusb_1 = __importDefault(require("@ledgerhq/hw-transport-webusb"));
51
+ const TransportWebUSB = hw_transport_webusb_1.default.default
52
+ ? hw_transport_webusb_1.default.default
53
+ : hw_transport_webusb_1.default;
53
54
  const LedgerConnection = ledgerjs_hw_app_cardano_1.default.default
54
55
  ? ledgerjs_hw_app_cardano_1.default.default
55
56
  : ledgerjs_hw_app_cardano_1.default;
57
+ const isUsbDevice = (device) => typeof USBDevice !== 'undefined' && device instanceof USBDevice;
56
58
  const isDeviceAlreadyOpenError = (error) => {
57
59
  if (typeof error !== 'object')
58
60
  return false;
@@ -62,6 +64,7 @@ const isDeviceAlreadyOpenError = (error) => {
62
64
  return (innerError.code === 11 ||
63
65
  (typeof innerError.message === 'string' && innerError.message.includes('cannot open device with path')));
64
66
  };
67
+ const CARDANO_APP_CONNECTION_ERROR_MESSAGE = 'Cannot communicate with Ledger Cardano App';
65
68
  const transportTypedError = (error) => new key_management_1.errors.TransportError('Ledger transport failed', error);
66
69
  const hasRegistrationOrRetirementCerts = (certificates) => {
67
70
  if (!certificates)
@@ -72,6 +75,28 @@ const hasRegistrationOrRetirementCerts = (certificates) => {
72
75
  const stakeCredentialCert = (cert) => cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_REGISTRATION ||
73
76
  cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_DEREGISTRATION ||
74
77
  cert.type === ledgerjs_hw_app_cardano_1.CertificateType.STAKE_DELEGATION;
78
+ const isLedgerModelSupported = (deviceModelId) => ['nanoS', 'nanoX', 'nanoSP'].includes(deviceModelId);
79
+ const establishDeviceConnectionMethodName = 'establishDeviceConnection';
80
+ const parseEstablishDeviceConnectionSecondParam = (communicationType, nodeHidDevicePathOrDevice) => {
81
+ let device;
82
+ let nodeHidDevicePath;
83
+ const deviceObjectRecognized = (communicationType === key_management_1.CommunicationType.Node && nodeHidDevicePathOrDevice instanceof node_hid_1.HID) ||
84
+ (communicationType === key_management_1.CommunicationType.Web && isUsbDevice(nodeHidDevicePathOrDevice));
85
+ const devicePathRecognized = communicationType === key_management_1.CommunicationType.Node && typeof nodeHidDevicePathOrDevice === 'string';
86
+ if (deviceObjectRecognized) {
87
+ device = nodeHidDevicePathOrDevice;
88
+ }
89
+ else if (devicePathRecognized) {
90
+ nodeHidDevicePath = nodeHidDevicePathOrDevice;
91
+ }
92
+ else if (nodeHidDevicePathOrDevice !== undefined) {
93
+ throw new Error(`Invalid arguments of the '${establishDeviceConnectionMethodName}' method`);
94
+ }
95
+ return {
96
+ device,
97
+ nodeHidDevicePath
98
+ };
99
+ };
75
100
  const containsOnlyScriptHashCreds = (tx) => {
76
101
  const withdrawalsAllScriptHash = !tx.withdrawals?.some((withdrawal) => withdrawal.stakeCredential.type !== ledgerjs_hw_app_cardano_1.StakeCredentialParamsType.SCRIPT_HASH);
77
102
  if (tx.certificates) {
@@ -106,61 +131,129 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
106
131
  this.deviceConnection = deviceConnection;
107
132
  __classPrivateFieldSet(this, _LedgerKeyAgent_communicationType, serializableData.communicationType, "f");
108
133
  }
109
- static findKeyAgentByCommunicationTypeAndDevicePath(communicationType, devicePath) {
110
- return this.deviceConnections?.find((connection) => connection.communicationType === communicationType && connection.devicePath === devicePath);
134
+ static async findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device) {
135
+ const matchingConnectionData = this.deviceConnections?.find((connection) => {
136
+ const sameCommunication = communicationType === connection.communicationType;
137
+ if (connection.communicationType === key_management_1.CommunicationType.Web) {
138
+ return sameCommunication && device === connection.device;
139
+ }
140
+ if (connection.communicationType === key_management_1.CommunicationType.Node) {
141
+ return sameCommunication && device === connection.device && nodeHidDevicePath === connection.nodeHidDevicePath;
142
+ }
143
+ });
144
+ if (!matchingConnectionData)
145
+ return null;
146
+ try {
147
+ await this.testConnection(matchingConnectionData.deviceConnection);
148
+ }
149
+ catch (error) {
150
+ if (error instanceof key_management_1.errors.TransportError && error.message.includes(CARDANO_APP_CONNECTION_ERROR_MESSAGE)) {
151
+ this.deviceConnections = this.deviceConnections.filter((connectionData) => connectionData !== matchingConnectionData);
152
+ return null;
153
+ }
154
+ throw error;
155
+ }
156
+ return matchingConnectionData.deviceConnection;
111
157
  }
112
158
  static async getHidDeviceList(communicationType) {
113
159
  try {
114
- return communicationType === key_management_1.CommunicationType.Node ? hw_transport_node_hid_noevents_1.default.list() : TransportWebHID.list();
160
+ return communicationType === key_management_1.CommunicationType.Node ? hw_transport_node_hid_noevents_1.default.list() : TransportWebUSB.list();
115
161
  }
116
162
  catch (error) {
117
163
  throw new key_management_1.errors.TransportError('Cannot fetch device list', error);
118
164
  }
119
165
  }
120
- static async createTransport({ communicationType, activeTransport, devicePath = '' }) {
166
+ static attachDisconnectionCleanupHandler(transport) {
167
+ const onDisconnect = () => {
168
+ transport.off('disconnect', onDisconnect);
169
+ this.deviceConnections = this.deviceConnections.filter(({ deviceConnection }) => deviceConnection.transport !== transport);
170
+ void transport.close();
171
+ };
172
+ transport.on('disconnect', onDisconnect);
173
+ }
174
+ static async openTransportForDevice({ communicationType, device }) {
175
+ let transport;
121
176
  try {
122
- if (communicationType === key_management_1.CommunicationType.Node) {
123
- return await hw_transport_node_hid_noevents_1.default.open(devicePath);
177
+ if (communicationType === key_management_1.CommunicationType.Node && device instanceof node_hid_1.HID) {
178
+ transport = new hw_transport_node_hid_noevents_1.default(device);
179
+ }
180
+ else if (communicationType === key_management_1.CommunicationType.Web && isUsbDevice(device)) {
181
+ transport = await TransportWebUSB.open(device);
124
182
  }
125
- return await (activeTransport && activeTransport instanceof TransportWebHID
126
- ? TransportWebHID.open(activeTransport.device)
127
- : TransportWebHID.request());
183
+ else {
184
+ throw new key_management_1.errors.TransportError(`Invalid device object provided for communication type ${communicationType}`);
185
+ }
186
+ }
187
+ catch (error) {
188
+ throw new key_management_1.errors.TransportError('Failed to open a transport for a given device', error);
189
+ }
190
+ this.attachDisconnectionCleanupHandler(transport);
191
+ return transport;
192
+ }
193
+ static async createTransport({ communicationType, nodeHidDevicePath = '' }) {
194
+ let transport;
195
+ try {
196
+ transport =
197
+ communicationType === key_management_1.CommunicationType.Node
198
+ ? await hw_transport_node_hid_noevents_1.default.open(nodeHidDevicePath)
199
+ : await TransportWebUSB.request();
128
200
  }
129
201
  catch (error) {
130
202
  throw new key_management_1.errors.TransportError('Creating transport failed', error);
131
203
  }
204
+ this.attachDisconnectionCleanupHandler(transport);
205
+ return transport;
132
206
  }
133
- static async createDeviceConnection(activeTransport) {
207
+ static async testConnection(activeConnection) {
134
208
  try {
135
- const deviceConnection = new LedgerConnection(activeTransport);
136
- await deviceConnection.getVersion();
137
- return deviceConnection;
209
+ await activeConnection.getVersion();
138
210
  }
139
211
  catch (error) {
140
- throw new key_management_1.errors.TransportError('Cannot communicate with Ledger Cardano App', error);
212
+ throw new key_management_1.errors.TransportError(CARDANO_APP_CONNECTION_ERROR_MESSAGE, error);
141
213
  }
142
214
  }
143
- static async establishDeviceConnection(communicationType, devicePath) {
144
- const sameConnectionByTypeAndPath = this.findKeyAgentByCommunicationTypeAndDevicePath(communicationType, devicePath);
145
- if (sameConnectionByTypeAndPath)
146
- return sameConnectionByTypeAndPath.deviceConnection;
215
+ static async createDeviceConnection(activeTransport) {
216
+ const deviceConnection = new LedgerConnection(activeTransport);
217
+ await this.testConnection(deviceConnection);
218
+ return deviceConnection;
219
+ }
220
+ static rememberConnection({ communicationType, device, deviceConnection, nodeHidDevicePath }) {
221
+ this.deviceConnections.push({
222
+ deviceConnection,
223
+ ...(communicationType === key_management_1.CommunicationType.Node
224
+ ? {
225
+ communicationType,
226
+ ...(device instanceof node_hid_1.HID && { device }),
227
+ ...(nodeHidDevicePath !== undefined && { nodeHidDevicePath })
228
+ }
229
+ : {
230
+ communicationType,
231
+ ...(isUsbDevice(device) && { device })
232
+ })
233
+ });
234
+ }
235
+ static async [(_LedgerKeyAgent_communicationType = new WeakMap(), establishDeviceConnectionMethodName)](communicationType, nodeHidDevicePathOrDevice) {
236
+ const { device, nodeHidDevicePath } = parseEstablishDeviceConnectionSecondParam(communicationType, nodeHidDevicePathOrDevice);
237
+ const matchingOpenConnection = await this.findConnectionByCommunicationTypeAndDevicePath(communicationType, nodeHidDevicePath, device);
238
+ if (matchingOpenConnection)
239
+ return matchingOpenConnection;
147
240
  let transport;
148
241
  try {
149
- transport = await LedgerKeyAgent.createTransport({ communicationType, devicePath });
242
+ transport = device
243
+ ? await LedgerKeyAgent.openTransportForDevice({ communicationType, device })
244
+ : await LedgerKeyAgent.createTransport({ communicationType, nodeHidDevicePath });
150
245
  if (!transport || !transport.deviceModel) {
151
246
  throw new key_management_1.errors.TransportError('Missing transport');
152
247
  }
153
- const isSupportedLedgerModel = transport.deviceModel.id === 'nanoS' ||
154
- transport.deviceModel.id === 'nanoX' ||
155
- transport.deviceModel.id === 'nanoSP';
156
- if (!isSupportedLedgerModel) {
248
+ if (!isLedgerModelSupported(transport.deviceModel.id)) {
157
249
  throw new key_management_1.errors.TransportError(`Ledger device model: "${transport.deviceModel.id}" is not supported`);
158
250
  }
159
251
  const newConnection = await LedgerKeyAgent.createDeviceConnection(transport);
160
- this.deviceConnections.push({
252
+ this.rememberConnection({
161
253
  communicationType,
254
+ device,
162
255
  deviceConnection: newConnection,
163
- ...(!!devicePath && { devicePath })
256
+ nodeHidDevicePath
164
257
  });
165
258
  return newConnection;
166
259
  }
@@ -169,7 +262,7 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
169
262
  throw new key_management_1.errors.TransportError('Connection already established', error);
170
263
  }
171
264
  if (transport) {
172
- transport.close();
265
+ void transport.close();
173
266
  }
174
267
  throw new key_management_1.errors.TransportError('Establishing device connection failed', error);
175
268
  }
@@ -287,6 +380,5 @@ class LedgerKeyAgent extends key_management_1.KeyAgentBase {
287
380
  }
288
381
  }
289
382
  exports.LedgerKeyAgent = LedgerKeyAgent;
290
- _LedgerKeyAgent_communicationType = new WeakMap();
291
383
  LedgerKeyAgent.deviceConnections = [];
292
384
  //# sourceMappingURL=LedgerKeyAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LedgerKeyAgent.js","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LedgerKeyAgent.js","sourceRoot":"","sources":["../../src/LedgerKeyAgent.ts"],"names":[],"mappings":"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"}