@trezor/connect 9.2.3 → 9.2.4-beta.2

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 (119) hide show
  1. package/CHANGELOG.md +77 -5
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.d.ts +8 -1
  4. package/lib/api/applyFlags.js +3 -8
  5. package/lib/api/applySettings.d.ts +8 -1
  6. package/lib/api/applySettings.js +3 -8
  7. package/lib/api/backupDevice.d.ts +10 -2
  8. package/lib/api/backupDevice.js +12 -9
  9. package/lib/api/binance/api/binanceGetAddress.d.ts +4 -3
  10. package/lib/api/binance/api/binanceGetAddress.js +8 -22
  11. package/lib/api/binance/api/binanceGetPublicKey.d.ts +4 -2
  12. package/lib/api/binance/api/binanceGetPublicKey.js +6 -18
  13. package/lib/api/blockchainGetCurrentFiatRates.d.ts +1 -1
  14. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +1 -1
  15. package/lib/api/cardano/api/cardanoGetAddress.d.ts +4 -4
  16. package/lib/api/cardano/api/cardanoGetAddress.js +9 -39
  17. package/lib/api/cardano/api/cardanoGetPublicKey.d.ts +4 -3
  18. package/lib/api/cardano/api/cardanoGetPublicKey.js +9 -31
  19. package/lib/api/cardano/api/cardanoSignTransaction.d.ts +1 -13
  20. package/lib/api/cardano/api/cardanoSignTransaction.js +2 -75
  21. package/lib/api/cardano/cardanoAddressParameters.d.ts +1 -2
  22. package/lib/api/cardano/cardanoAddressParameters.js +4 -10
  23. package/lib/api/cardano/cardanoAuxiliaryData.d.ts +1 -2
  24. package/lib/api/cardano/cardanoAuxiliaryData.js +2 -2
  25. package/lib/api/changeLanguage.d.ts +8 -1
  26. package/lib/api/changeLanguage.js +3 -7
  27. package/lib/api/eos/api/eosGetPublicKey.d.ts +4 -2
  28. package/lib/api/eos/api/eosGetPublicKey.js +6 -18
  29. package/lib/api/ethereum/api/ethereumGetAddress.d.ts +4 -3
  30. package/lib/api/ethereum/api/ethereumGetAddress.js +4 -20
  31. package/lib/api/ethereum/api/ethereumGetPublicKey.d.ts +4 -2
  32. package/lib/api/ethereum/api/ethereumGetPublicKey.js +3 -10
  33. package/lib/api/firmware/index.d.ts +2 -0
  34. package/lib/api/firmware/index.js +5 -1
  35. package/lib/api/firmware/parseFirmwareHeaders.d.ts +5 -0
  36. package/lib/api/firmware/parseFirmwareHeaders.js +35 -0
  37. package/lib/api/firmware/uploadFirmware.d.ts +1 -1
  38. package/lib/api/firmware/uploadFirmware.js +9 -1
  39. package/lib/api/getAccountDescriptor.d.ts +5 -3
  40. package/lib/api/getAccountDescriptor.js +8 -21
  41. package/lib/api/getAccountInfo.d.ts +23 -7
  42. package/lib/api/getAccountInfo.js +12 -25
  43. package/lib/api/getAddress.d.ts +4 -3
  44. package/lib/api/getAddress.js +8 -22
  45. package/lib/api/getFeatures.d.ts +1 -0
  46. package/lib/api/getOwnershipId.d.ts +4 -2
  47. package/lib/api/getOwnershipId.js +4 -15
  48. package/lib/api/getOwnershipProof.d.ts +4 -2
  49. package/lib/api/getOwnershipProof.js +4 -15
  50. package/lib/api/getPublicKey.d.ts +5 -4
  51. package/lib/api/getPublicKey.js +12 -35
  52. package/lib/api/index.d.ts +0 -1
  53. package/lib/api/index.js +1 -3
  54. package/lib/api/nem/api/nemGetAddress.d.ts +4 -3
  55. package/lib/api/nem/api/nemGetAddress.js +4 -20
  56. package/lib/api/rebootToBootloader.d.ts +8 -2
  57. package/lib/api/rebootToBootloader.js +3 -10
  58. package/lib/api/recoveryDevice.d.ts +8 -1
  59. package/lib/api/recoveryDevice.js +3 -7
  60. package/lib/api/resetDevice.d.ts +4 -2
  61. package/lib/api/resetDevice.js +3 -10
  62. package/lib/api/ripple/api/rippleGetAddress.d.ts +4 -3
  63. package/lib/api/ripple/api/rippleGetAddress.js +4 -20
  64. package/lib/api/solana/api/solanaGetAddress.d.ts +4 -3
  65. package/lib/api/solana/api/solanaGetAddress.js +7 -28
  66. package/lib/api/solana/api/solanaGetPublicKey.d.ts +4 -3
  67. package/lib/api/solana/api/solanaGetPublicKey.js +7 -27
  68. package/lib/api/stellar/api/stellarGetAddress.d.ts +4 -3
  69. package/lib/api/stellar/api/stellarGetAddress.js +4 -20
  70. package/lib/api/tezos/api/tezosGetAddress.d.ts +4 -3
  71. package/lib/api/tezos/api/tezosGetAddress.js +4 -20
  72. package/lib/api/tezos/api/tezosGetPublicKey.d.ts +4 -2
  73. package/lib/api/tezos/api/tezosGetPublicKey.js +6 -18
  74. package/lib/api/wipeDevice.d.ts +8 -2
  75. package/lib/api/wipeDevice.js +3 -10
  76. package/lib/backend/Blockchain.d.ts +2 -2
  77. package/lib/constants/errors.d.ts +1 -0
  78. package/lib/constants/errors.js +1 -0
  79. package/lib/core/AbstractMethod.d.ts +4 -8
  80. package/lib/core/AbstractMethod.js +6 -28
  81. package/lib/core/index.d.ts +2 -1
  82. package/lib/core/index.js +258 -226
  83. package/lib/core/onCallFirmwareUpdate.d.ts +31 -0
  84. package/lib/core/onCallFirmwareUpdate.js +266 -0
  85. package/lib/data/DataManager.d.ts +10 -0
  86. package/lib/data/analyticsInfo.d.ts +2 -2
  87. package/lib/data/analyticsInfo.js +6 -7
  88. package/lib/data/config.d.ts +10 -0
  89. package/lib/data/config.js +15 -5
  90. package/lib/data/deviceAuthenticityConfig.js +8 -4
  91. package/lib/data/firmwareInfo.js +1 -1
  92. package/lib/data/version.d.ts +1 -1
  93. package/lib/data/version.js +5 -2
  94. package/lib/device/Device.d.ts +2 -2
  95. package/lib/device/Device.js +4 -4
  96. package/lib/device/DeviceCommands.d.ts +4 -16
  97. package/lib/device/DeviceCommands.js +10 -72
  98. package/lib/device/DeviceList.d.ts +7 -4
  99. package/lib/device/DeviceList.js +46 -40
  100. package/lib/events/blockchain.d.ts +2 -2
  101. package/lib/events/index.d.ts +1 -0
  102. package/lib/events/ui-request.d.ts +13 -1
  103. package/lib/events/ui-request.js +1 -0
  104. package/lib/index.js +2 -2
  105. package/lib/types/api/backupDevice.d.ts +2 -2
  106. package/lib/types/api/dispose.d.ts +1 -1
  107. package/lib/types/api/firmwareUpdate.d.ts +7 -6
  108. package/lib/types/api/firmwareUpdate.js +1 -3
  109. package/lib/types/index.d.ts +1 -1
  110. package/lib/types/settings.d.ts +1 -1
  111. package/lib/utils/popupPromiseManager.d.ts +8 -0
  112. package/lib/utils/popupPromiseManager.js +21 -0
  113. package/lib/utils/uiPromiseManager.d.ts +38 -0
  114. package/lib/utils/uiPromiseManager.js +47 -0
  115. package/lib/workers/workers-browser.d.ts +3 -1
  116. package/lib/workers/workers-browser.js +2 -2
  117. package/package.json +9 -9
  118. package/lib/api/firmwareUpdate.d.ts +0 -19
  119. package/lib/api/firmwareUpdate.js +0 -78
@@ -0,0 +1,31 @@
1
+ import { DeviceList } from '../device/DeviceList';
2
+ import { CoreEventMessage } from '../events';
3
+ import { CommonParams } from '../types';
4
+ import type { Log } from '../utils/debug';
5
+ import type { Device } from '../device/Device';
6
+ type PostMessage = (message: CoreEventMessage) => void;
7
+ export type Params = {
8
+ language?: string;
9
+ baseUrl?: string;
10
+ btcOnly?: boolean;
11
+ binary?: ArrayBuffer;
12
+ } & CommonParams;
13
+ type Context = {
14
+ deviceList: DeviceList;
15
+ postMessage: PostMessage;
16
+ initDevice: (path?: string) => Promise<Device>;
17
+ log: Log;
18
+ abortSignal: AbortSignal;
19
+ };
20
+ export declare const onCallFirmwareUpdate: ({ params, context: { deviceList, postMessage, initDevice, log, abortSignal }, }: {
21
+ params: Params;
22
+ context: Context;
23
+ }) => Promise<{
24
+ check: "other-error";
25
+ checkError: any;
26
+ } | {
27
+ check: string;
28
+ checkError?: undefined;
29
+ }>;
30
+ export {};
31
+ //# sourceMappingURL=onCallFirmwareUpdate.d.ts.map
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.onCallFirmwareUpdate = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const utils_1 = require("@trezor/utils");
6
+ const events_1 = require("../events");
7
+ const firmware_1 = require("../api/firmware");
8
+ const firmwareInfo_1 = require("../data/firmwareInfo");
9
+ const constants_1 = require("../constants");
10
+ const versionUtils_1 = require("@trezor/utils/lib/versionUtils");
11
+ const registerEvents = (device, postMessage) => {
12
+ device.on(events_1.DEVICE.BUTTON, (_d, request) => {
13
+ postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.BUTTON, {
14
+ code: request.code,
15
+ device: device.toMessageObject(),
16
+ }));
17
+ });
18
+ };
19
+ const waitForReconnectedDevice = async ({ bootloader, method, intermediary }, { deviceList, device, postMessage, log, abortSignal }) => {
20
+ const target = intermediary || !bootloader ? 'normal' : 'bootloader';
21
+ let i = 0;
22
+ if (method !== 'auto') {
23
+ log.debug('onCallFirmwareUpdate', 'waiting for device to disconnect');
24
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, {
25
+ device: device.toMessageObject(),
26
+ disconnected: false,
27
+ method,
28
+ target,
29
+ i,
30
+ }));
31
+ await new Promise(resolve => {
32
+ deviceList.once('device-disconnect', resolve);
33
+ });
34
+ }
35
+ log.debug('onCallFirmwareUpdate', `waiting for device to reconnect in ${bootloader ? 'bootloader' : 'normal'} mode`);
36
+ let reconnectedDevice;
37
+ do {
38
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, {
39
+ device: device.toMessageObject(),
40
+ disconnected: true,
41
+ method,
42
+ target,
43
+ i,
44
+ }));
45
+ await (0, utils_1.createTimeoutPromise)(2000);
46
+ try {
47
+ const path = deviceList.getFirstDevicePath();
48
+ reconnectedDevice = deviceList.getDevice(path);
49
+ }
50
+ catch { }
51
+ i++;
52
+ log.debug('onCallFirmwareUpdate', 'waiting for device to reconnect', i);
53
+ } while (!abortSignal.aborted &&
54
+ (!(reconnectedDevice === null || reconnectedDevice === void 0 ? void 0 : reconnectedDevice.features) ||
55
+ bootloader === !reconnectedDevice.features.bootloader_mode ||
56
+ (intermediary &&
57
+ !(0, versionUtils_1.isNewer)([
58
+ reconnectedDevice.features.major_version,
59
+ reconnectedDevice.features.minor_version,
60
+ reconnectedDevice.features.patch_version,
61
+ ], [
62
+ device.features.major_version,
63
+ device.features.minor_version,
64
+ device.features.patch_version,
65
+ ]))));
66
+ if (!reconnectedDevice) {
67
+ throw constants_1.ERRORS.TypedError('Method_Interrupted');
68
+ }
69
+ registerEvents(reconnectedDevice, postMessage);
70
+ await reconnectedDevice.waitForFirstRun();
71
+ await reconnectedDevice.acquire();
72
+ return reconnectedDevice;
73
+ };
74
+ const getInstallationParams = (device, binary) => {
75
+ var _a;
76
+ if (!device.features.bootloader_mode) {
77
+ const version = binary ? (0, firmware_1.parseFirmwareHeaders)(Buffer.from(binary)).version : undefined;
78
+ const isUpdatingToNewerVersion = !version
79
+ ? (_a = device.firmwareRelease) === null || _a === void 0 ? void 0 : _a.isNewer
80
+ : (0, versionUtils_1.isNewer)(version, [
81
+ device.features.major_version,
82
+ device.features.minor_version,
83
+ device.features.patch_version,
84
+ ]);
85
+ const upgrade = device.atLeast('2.6.3') && isUpdatingToNewerVersion;
86
+ const manual = !device.atLeast(['1.10.0', '2.6.0']) && !upgrade;
87
+ const language = device.atLeast('2.7.0');
88
+ return {
89
+ manual,
90
+ upgrade,
91
+ language,
92
+ };
93
+ }
94
+ else {
95
+ return {
96
+ manual: false,
97
+ upgrade: false,
98
+ language: false,
99
+ };
100
+ }
101
+ };
102
+ const getFwHeader = (binary) => Buffer.from(binary.slice(0, 6000)).toString('hex');
103
+ const getBinaryHelper = (device, params, log, postMessage, intermediaryVersion) => {
104
+ var _a;
105
+ if (!device.firmwareRelease) {
106
+ throw constants_1.ERRORS.TypedError('Runtime', 'device.firmwareRelease is not set');
107
+ }
108
+ const btcOnly = params.btcOnly || (params.btcOnly === undefined && device.firmwareType === 'bitcoin-only');
109
+ log.debug('onCallFirmwareUpdate loading binary', 'intermediaryVersion', intermediaryVersion, 'version', device.firmwareRelease.release.version, 'btcOnly', btcOnly);
110
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
111
+ device: device.toMessageObject(),
112
+ operation: 'downloading',
113
+ progress: 0,
114
+ }));
115
+ return (0, firmware_1.getBinary)({
116
+ features: device.features,
117
+ releases: (0, firmwareInfo_1.getReleases)((_a = device.features) === null || _a === void 0 ? void 0 : _a.internal_model),
118
+ baseUrl: params.baseUrl || 'https://data.trezor.io',
119
+ version: device.firmwareRelease.release.version,
120
+ btcOnly,
121
+ intermediaryVersion,
122
+ })
123
+ .then(res => {
124
+ if (res.byteLength < 200) {
125
+ throw constants_1.ERRORS.TypedError('Runtime', 'Firmware binary is too small');
126
+ }
127
+ return res;
128
+ })
129
+ .then(res => {
130
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
131
+ device: device.toMessageObject(),
132
+ operation: 'downloading',
133
+ progress: 100,
134
+ }));
135
+ return res;
136
+ });
137
+ };
138
+ const firmwareCheck = async (reconnectedDevice, device, stripped, postMessage) => {
139
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
140
+ device: device.toMessageObject(),
141
+ operation: 'validating',
142
+ progress: 0,
143
+ }));
144
+ const { hash, challenge } = (0, firmware_1.calculateFirmwareHash)(device.features.major_version, stripped, (0, crypto_1.randomBytes)(32));
145
+ const getFirmwareHashResponse = await reconnectedDevice
146
+ .getCommands()
147
+ .typedCall('GetFirmwareHash', 'FirmwareHash', { challenge });
148
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
149
+ device: device.toMessageObject(),
150
+ operation: 'validating',
151
+ progress: 100,
152
+ }));
153
+ return (getFirmwareHashResponse.message !== 'Unknown message' &&
154
+ getFirmwareHashResponse.message !== 'Unexpected message' &&
155
+ getFirmwareHashResponse.message.hash === hash);
156
+ };
157
+ const onCallFirmwareUpdate = async ({ params, context: { deviceList, postMessage, initDevice, log, abortSignal }, }) => {
158
+ var _a;
159
+ log.debug('onCallFirmwareUpdate with params: ', params);
160
+ const device = await initDevice((_a = params === null || params === void 0 ? void 0 : params.device) === null || _a === void 0 ? void 0 : _a.path);
161
+ if (!device.firmwareRelease) {
162
+ throw constants_1.ERRORS.TypedError('Runtime', 'device.firmwareRelease is not set');
163
+ }
164
+ if (deviceList.allDevices().length > 1) {
165
+ throw constants_1.ERRORS.TypedError('Device_MultipleNotSupported', 'Firmware update allowed with only 1 device connected');
166
+ }
167
+ log.debug('onCallFirmwareUpdate', 'device', device);
168
+ registerEvents(device, postMessage);
169
+ const { manual, upgrade, language } = getInstallationParams(device, params.binary);
170
+ log.debug('onCallFirmwareUpdate', 'installation params', { manual, upgrade, language });
171
+ const binary = params.binary ||
172
+ (await getBinaryHelper(device, params, log, postMessage, device.firmwareRelease.intermediaryVersion));
173
+ const deviceInitiallyConnectedInBootloader = device.features.bootloader_mode;
174
+ const deviceInitiallyConnectedWithoutFirmware = device.features.firmware_present === false;
175
+ let reconnectedDevice = device;
176
+ if (deviceInitiallyConnectedInBootloader) {
177
+ log.warn('onCallFirmwareUpdate', 'device is already in bootloader mode. language will not be updated');
178
+ await device.acquire();
179
+ }
180
+ else if (manual) {
181
+ reconnectedDevice = await waitForReconnectedDevice({ bootloader: true, method: 'manual' }, { deviceList, device, log, postMessage, abortSignal });
182
+ }
183
+ else {
184
+ const rebootParams = upgrade
185
+ ? {
186
+ boot_command: constants_1.PROTO.BootCommand.INSTALL_UPGRADE,
187
+ firmware_header: getFwHeader(binary),
188
+ }
189
+ : {};
190
+ await device.acquire();
191
+ const targetLanguage = params.language || device.features.language || 'en-US';
192
+ const languageBlob = language && targetLanguage !== 'en-US'
193
+ ? await (0, firmware_1.getLanguage)({
194
+ language: targetLanguage,
195
+ version: device.firmwareRelease.release.version,
196
+ internal_model: device.features.internal_model,
197
+ })
198
+ : null;
199
+ if (!languageBlob) {
200
+ await device.getCommands().typedCall('RebootToBootloader', 'Success', rebootParams);
201
+ }
202
+ else {
203
+ let rebootResponse = await device.getCommands().typedCall('RebootToBootloader', ['TranslationDataRequest', 'Success'], { ...rebootParams, language_data_length: languageBlob === null || languageBlob === void 0 ? void 0 : languageBlob.byteLength });
204
+ log.debug('onCallFirmwareUpdate', 'RebootToBootloader response', rebootResponse.message);
205
+ while (languageBlob && rebootResponse.type !== 'Success') {
206
+ const start = rebootResponse.message.data_offset;
207
+ const end = rebootResponse.message.data_offset + rebootResponse.message.data_length;
208
+ const chunk = languageBlob.slice(start, end);
209
+ rebootResponse = await device.getCommands().typedCall('TranslationDataAck', ['TranslationDataRequest', 'Success'], { data_chunk: Buffer.from(chunk).toString('hex') });
210
+ }
211
+ }
212
+ await device.release();
213
+ if (device.features.major_version === 1) {
214
+ await (0, utils_1.createTimeoutPromise)(2000);
215
+ }
216
+ reconnectedDevice = await waitForReconnectedDevice({ bootloader: true, method: 'auto' }, { deviceList, device, log, postMessage, abortSignal });
217
+ }
218
+ const intermediary = !params.binary && device.firmwareRelease.intermediaryVersion;
219
+ await reconnectedDevice.initialize(false, false);
220
+ let stripped = (0, firmware_1.stripFwHeaders)(binary);
221
+ await (0, firmware_1.uploadFirmware)(reconnectedDevice.getCommands().typedCall.bind(reconnectedDevice.getCommands()), postMessage, reconnectedDevice, { payload: !intermediary && (0, firmware_1.shouldStripFwHeaders)(device.features) ? stripped : binary });
222
+ await reconnectedDevice.release();
223
+ if (intermediary) {
224
+ reconnectedDevice = await waitForReconnectedDevice({ bootloader: true, method: 'manual', intermediary: true }, { deviceList, device: reconnectedDevice, log, postMessage, abortSignal });
225
+ stripped = (0, firmware_1.stripFwHeaders)(await getBinaryHelper(reconnectedDevice, params, log, postMessage));
226
+ await reconnectedDevice.initialize(false, false);
227
+ await (0, firmware_1.uploadFirmware)(reconnectedDevice.getCommands().typedCall.bind(reconnectedDevice.getCommands()), postMessage, reconnectedDevice, { payload: stripped });
228
+ await reconnectedDevice.release();
229
+ }
230
+ reconnectedDevice = await waitForReconnectedDevice({ bootloader: false, method: 'wait' }, { deviceList, device: reconnectedDevice, log, postMessage, abortSignal });
231
+ if (reconnectedDevice.atLeast('2.7.0') &&
232
+ deviceInitiallyConnectedWithoutFirmware &&
233
+ params.language) {
234
+ try {
235
+ log.info('onCallFirmwareUpdate', 'changing language for fresh device to: ', params.language);
236
+ await reconnectedDevice.changeLanguage({ language: params.language });
237
+ }
238
+ catch (err) {
239
+ log.error('onCallFirmwareUpdate', 'changeLanguage failed silently: ', err);
240
+ }
241
+ }
242
+ const checkSupported = reconnectedDevice.atLeast(['1.11.1', '2.5.1']) && !params.binary;
243
+ if (checkSupported) {
244
+ try {
245
+ log.debug('onCallFirmwareUpdate', 'getFirmwareHash supported, proceed with check', stripped);
246
+ const isValid = await firmwareCheck(reconnectedDevice, device, stripped, postMessage);
247
+ await reconnectedDevice.release();
248
+ if (isValid) {
249
+ log.debug('onCallFirmwareUpdate', 'installed fw hash and calculated hash match');
250
+ return { check: 'valid' };
251
+ }
252
+ else {
253
+ return { check: 'mismatch' };
254
+ }
255
+ }
256
+ catch (err) {
257
+ return { check: 'other-error', checkError: err.message };
258
+ }
259
+ }
260
+ else {
261
+ await reconnectedDevice.release();
262
+ return { check: 'omitted' };
263
+ }
264
+ };
265
+ exports.onCallFirmwareUpdate = onCallFirmwareUpdate;
266
+ //# sourceMappingURL=onCallFirmwareUpdate.js.map
@@ -56,6 +56,16 @@ export declare class DataManager {
56
56
  download: string;
57
57
  update: string;
58
58
  };
59
+ brave: {
60
+ version: number;
61
+ download: string;
62
+ update: string;
63
+ };
64
+ edge: {
65
+ version: number;
66
+ download: string;
67
+ update: string;
68
+ };
59
69
  };
60
70
  supportedFirmware: ({
61
71
  coin: string[];
@@ -1,6 +1,6 @@
1
1
  import { CoreEventMessage } from '../events';
2
2
  import type { Device } from '../types';
3
- export declare const enhancePostMessageWithAnalytics: (callback: (message: CoreEventMessage) => void, message: CoreEventMessage, data: {
3
+ export declare const enhanceMessageWithAnalytics: (message: CoreEventMessage, data: {
4
4
  device?: Device;
5
- }) => void;
5
+ }) => CoreEventMessage;
6
6
  //# sourceMappingURL=analyticsInfo.d.ts.map
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enhancePostMessageWithAnalytics = void 0;
3
+ exports.enhanceMessageWithAnalytics = void 0;
4
4
  const events_1 = require("../events");
5
- const enhancePostMessageWithAnalytics = (callback, message, data) => {
5
+ const enhanceMessageWithAnalytics = (message, data) => {
6
6
  var _a, _b, _c, _d, _e, _f, _g, _h;
7
7
  switch (message.type) {
8
8
  case events_1.UI_REQUEST.REQUEST_CONFIRMATION:
9
9
  const { device } = data;
10
- callback({
10
+ return {
11
11
  ...message,
12
12
  payload: {
13
13
  ...message.payload,
@@ -27,11 +27,10 @@ const enhancePostMessageWithAnalytics = (callback, message, data) => {
27
27
  },
28
28
  },
29
29
  },
30
- });
31
- break;
30
+ };
32
31
  default:
33
- callback(message);
32
+ return message;
34
33
  }
35
34
  };
36
- exports.enhancePostMessageWithAnalytics = enhancePostMessageWithAnalytics;
35
+ exports.enhanceMessageWithAnalytics = enhanceMessageWithAnalytics;
37
36
  //# sourceMappingURL=analyticsInfo.js.map
@@ -44,6 +44,16 @@ export declare const config: {
44
44
  download: string;
45
45
  update: string;
46
46
  };
47
+ brave: {
48
+ version: number;
49
+ download: string;
50
+ update: string;
51
+ };
52
+ edge: {
53
+ version: number;
54
+ download: string;
55
+ update: string;
56
+ };
47
57
  };
48
58
  supportedFirmware: ({
49
59
  coin: string[];
@@ -103,6 +103,16 @@ exports.config = {
103
103
  download: 'https://www.mozilla.org/en-US/firefox/new/',
104
104
  update: 'https://support.mozilla.org/en-US/kb/update-firefox-latest-version',
105
105
  },
106
+ brave: {
107
+ version: 59,
108
+ download: 'https://brave.com/download/',
109
+ update: 'https://brave.com/download/',
110
+ },
111
+ edge: {
112
+ version: 79,
113
+ download: 'https://www.microsoft.com/en-us/edge',
114
+ update: 'https://www.microsoft.com/en-us/edge',
115
+ },
106
116
  },
107
117
  supportedFirmware: [
108
118
  {
@@ -140,18 +150,18 @@ exports.config = {
140
150
  },
141
151
  {
142
152
  methods: ['cardanoGetAddress', 'cardanoGetPublicKey'],
143
- min: { T1B1: '0', T2T1: '2.3.2' },
144
- comment: ['Shelley fork support since firmware 2.3.2'],
153
+ min: { T1B1: '0', T2T1: '2.4.3' },
154
+ comment: ['Since 2.4.3 Cardano derivation behavior has changed'],
145
155
  },
146
156
  {
147
157
  methods: ['cardanoSignTransaction'],
148
- min: { T1B1: '0', T2T1: '2.4.2' },
149
- comment: ['Non-streamed signing no longer supported'],
158
+ min: { T1B1: '0', T2T1: '2.6.0' },
159
+ comment: ['Before 2.6.0 not all Cardano transactions were supported'],
150
160
  },
151
161
  {
152
162
  methods: ['cardanoGetNativeScriptHash'],
153
163
  min: { T1B1: '0', T2T1: '2.4.3' },
154
- comment: ['Cardano GetNativeScriptHash call added in 2.4.3'],
164
+ comment: ['Since 2.4.3 Cardano derivation behavior has changed'],
155
165
  },
156
166
  {
157
167
  methods: ['tezosSignTransaction'],
@@ -25,7 +25,7 @@ exports.DeviceAuthenticityConfig = schema_utils_1.Type.Intersect([
25
25
  ]);
26
26
  exports.deviceAuthenticityConfig = {
27
27
  version: 1,
28
- timestamp: '2023-04-17T12:00:00+00:00',
28
+ timestamp: '2024-05-10T12:00:00+00:00',
29
29
  T2B1: {
30
30
  rootPubKeys: [
31
31
  '04ca97480ac0d7b1e6efafe518cd433cec2bf8ab9822d76eafd34363b55d63e60380bff20acc75cde03cffcb50ab6f8ce70c878e37ebc58ff7cca0a83b16b15fa5',
@@ -46,6 +46,12 @@ exports.deviceAuthenticityConfig = {
46
46
  '04c99f57eaaca8db0245a46dba5288a4c0b0d6acdd1346feef7770ec6b88d28d6640ee19c3f6d984e8fcfceda11b1e4accefda32b950dcd1785fbd16c2e45493a3',
47
47
  '049c288f4de8a239be83955ed260f40c1a4126fb7dc513601dde4cb11f7363d6a259e73cb1bd9283a450ae608d1832c5fd0cbd9526c0285e720fa45494cae981fd',
48
48
  '04ac1815177cc1f07700e5f18c05522427413f404bacc987eb1cf9d86f96b9e0cc53ef5941eafd483102eea321205d7dd9271ac2d0fca75a9a43deb824b51f1596',
49
+ '049f91ac8c7dac26fa7eb82ff3fb8c6d24978bbaeed1adb0751342a8c4c88152817d50bd0b4c16d8fb85bf12f46dca0674a398aeecbb3d1a01236cd3eb39d24c55',
50
+ '04c5225b6d8b84401c408ad0a5aa47888e9087451a2ca4440e46efed5765fd2f5bf8f068e1cfea18dddfc5b47b19076ce0a84fbcf7269f9578d9b978679dea4189',
51
+ '04e349de85981f8e7d95ca4b44346924a9df62875971cfc5e21fc042c3a8fb3e1ddfeac139c15fcf3f7968242a418fc80e92c98f5aef39672b13b60d0b2335c84c',
52
+ '04d7ddaf7e17a678bef305950f0f9d74b90553d8502fd02c439f07ac7ea494e9e0519a1c5782bf23be058162e706057d3b241d507f89b9e5518e3696a92128fa6d',
53
+ '0488cf1dbadb18df0a094da837b3eeb0c85489cc21e7c2b94f8f4df207edccfddbb58e428d9a6ce1e42081c38665d134c7ee6f1f524688ce7444bc1d1340a8b1f1',
54
+ '04ff0c6e817d7c00a0912cf1d293e4d3a8c25403dca4e8ced5e7323352e34604725ad67739d1b4bf538a3864e95d8311ebc91d522b1603da94061e82535edced56',
49
55
  ],
50
56
  debug: {
51
57
  rootPubKeys: [
@@ -67,12 +73,10 @@ exports.deviceAuthenticityConfig = {
67
73
  ],
68
74
  debug: {
69
75
  rootPubKeys: [
70
- '047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a',
76
+ '04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161dbe8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959',
71
77
  ],
72
78
  caPubKeys: [
73
79
  '04829e8965018feb542e9236c9b2ce08f864a55ed9183d0259564f0e05345b04676a0bef36c59d21d3c24868b5601f0b1193a6bfcf6d814e1cfb79c2256a05e953',
74
- '046f64eff0dfa3ceeae9708a3881fc09a3dae62198559d022d120e96edc168f3991a9e9b016635a0d43997ee55d8c2b37d969e8abc84e75c791ec911108b52f3c7',
75
- '041260c3c1fd4ddfc97ba19732d5dcbe6efab61d58af83281b95d6cdb30606bf08f0b817eb6db2825b5ce32d0cc2c275b7eadcedaa1805f00b3f5a11668b6c5cb5',
76
80
  ],
77
81
  },
78
82
  },
@@ -117,7 +117,7 @@ const getInfo = ({ features, releases }) => {
117
117
  isRequired: isRequired(changelog),
118
118
  isNewer: isNewerResult,
119
119
  intermediaryVersion,
120
- translations: isNewerResult ? prevRelease.translations : release.translations,
120
+ translations: isNewerResult ? prevRelease === null || prevRelease === void 0 ? void 0 : prevRelease.translations : release === null || release === void 0 ? void 0 : release.translations,
121
121
  };
122
122
  };
123
123
  exports.getInfo = getInfo;
@@ -1,3 +1,3 @@
1
- export declare const VERSION = "9.2.3";
1
+ export declare const VERSION = "9.2.4-beta.2";
2
2
  export declare const DEFAULT_DOMAIN: string;
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_DOMAIN = exports.VERSION = void 0;
4
- exports.VERSION = '9.2.3';
4
+ exports.VERSION = '9.2.4-beta.2';
5
5
  const versionN = exports.VERSION.split('.').map(s => parseInt(s, 10));
6
- exports.DEFAULT_DOMAIN = `https://connect.trezor.io/${versionN[0]}/`;
6
+ const isBeta = exports.VERSION.includes('beta');
7
+ exports.DEFAULT_DOMAIN = isBeta
8
+ ? `https://connect.trezor.io/${exports.VERSION}/`
9
+ : `https://connect.trezor.io/${versionN[0]}/`;
7
10
  //# sourceMappingURL=version.js.map
@@ -70,7 +70,7 @@ export declare class Device extends TypedEmitter<DeviceEvents> {
70
70
  getInternalState(): string;
71
71
  setExternalState(state?: string): void;
72
72
  getExternalState(): string;
73
- validateState(networkType?: NETWORK.NetworkType, preauthorized?: boolean): Promise<string | undefined>;
73
+ validateState(preauthorized?: boolean): Promise<string | undefined>;
74
74
  useLegacyPassphrase(): boolean;
75
75
  initialize(useEmptyPassphrase: boolean, useCardanoDerivation: boolean): Promise<void>;
76
76
  getFeatures(): Promise<void>;
@@ -102,7 +102,7 @@ export declare class Device extends TypedEmitter<DeviceEvents> {
102
102
  getDevicePath(): string;
103
103
  isT1(): boolean;
104
104
  hasUnexpectedMode(allow: string[], require: string[]): "ui-device_bootloader_mode" | "ui-device_not_in_bootloader_mode" | "ui-device_not_initialized" | "ui-device_seedless" | null;
105
- dispose(): import("@trezor/transport/lib/types").AbortableCall<void, "Network request failed" | "Wrong result type." | "device disconnected during action" | "unexpected error" | "Aborted by timeout" | "Aborted by signal" | "This transport can not be used in this environment" | "device not found" | "Unable to open device" | "wrong previous session" | "session not found"> | undefined;
105
+ dispose(): Promise<import("@trezor/transport/lib/types").AbortableCall<void, "Network request failed" | "Wrong result type." | "device disconnected during action" | "unexpected error" | "Aborted by timeout" | "Aborted by signal" | "This transport can not be used in this environment" | "device not found" | "Unable to open device" | "wrong previous session" | "session not found"> | undefined>;
106
106
  getMode(): "normal" | "bootloader" | "initialize" | "seedless";
107
107
  toMessageObject(): DeviceTyped;
108
108
  legacyForceRelease(): Promise<void>;
@@ -265,7 +265,7 @@ class Device extends utils_1.TypedEmitter {
265
265
  getExternalState() {
266
266
  return this.externalState[this.instance];
267
267
  }
268
- async validateState(networkType, preauthorized = false) {
268
+ async validateState(preauthorized = false) {
269
269
  if (!this.features)
270
270
  return;
271
271
  if (!this.features.unlocked && preauthorized) {
@@ -274,7 +274,7 @@ class Device extends utils_1.TypedEmitter {
274
274
  }
275
275
  }
276
276
  const expectedState = this.getExternalState();
277
- const state = await this.getCommands().getDeviceState(networkType);
277
+ const state = await this.getCommands().getDeviceState();
278
278
  const uniqueState = `${state}@${this.features.device_id || 'device_id'}:${this.instance}`;
279
279
  if (!this.useLegacyPassphrase() && this.features.session_id) {
280
280
  this.setInternalState(this.features.session_id);
@@ -491,12 +491,12 @@ class Device extends utils_1.TypedEmitter {
491
491
  }
492
492
  return null;
493
493
  }
494
- dispose() {
494
+ async dispose() {
495
495
  this.removeAllListeners();
496
496
  if (this.isUsedHere() && this.activitySessionID) {
497
497
  try {
498
498
  if (this.commands) {
499
- this.commands.cancel();
499
+ await this.commands.cancel();
500
500
  }
501
501
  return this.transport.release({
502
502
  session: this.activitySessionID,
@@ -43,8 +43,8 @@ export declare class DeviceCommands {
43
43
  };
44
44
  xpub: string;
45
45
  }>;
46
- getHDNode(params: Messages.GetPublicKey, options?: {
47
- coinInfo?: BitcoinNetworkInfo;
46
+ getHDNode(params: Messages.GetPublicKey, options: {
47
+ coinInfo: BitcoinNetworkInfo;
48
48
  validation?: boolean;
49
49
  unlockPath?: Messages.UnlockPath;
50
50
  }): Promise<{
@@ -59,18 +59,6 @@ export declare class DeviceCommands {
59
59
  childNum: number;
60
60
  xpub: string;
61
61
  }>;
62
- getBitcoinHDNode(path: number[], coinInfo?: BitcoinNetworkInfo, validation?: boolean): Promise<{
63
- xpubSegwit?: string | undefined;
64
- descriptorChecksum?: string | undefined;
65
- path: number[];
66
- publicKey: string;
67
- serializedPath: string;
68
- depth: number;
69
- fingerprint: number;
70
- chainCode: string;
71
- childNum: number;
72
- xpub: string;
73
- }>;
74
62
  getAddress({ address_n, show_display, multisig, script_type, chunkify }: Messages.GetAddress, coinInfo: BitcoinNetworkInfo): Promise<{
75
63
  path: number[];
76
64
  serializedPath: string;
@@ -83,13 +71,13 @@ export declare class DeviceCommands {
83
71
  }>;
84
72
  ethereumGetPublicKey({ address_n, show_display, }: Messages.EthereumGetPublicKey): Promise<HDNodeResponse>;
85
73
  preauthorize(throwError: boolean): Promise<boolean>;
86
- getDeviceState(networkType?: string): Promise<string>;
74
+ getDeviceState(): Promise<string>;
87
75
  private call;
88
76
  typedCall<T extends MessageKey, R extends MessageKey[]>(type: T, resType: R, msg?: MessageType[T]): Promise<TypedCallResponseMap[R[number]]>;
89
77
  typedCall<T extends MessageKey, R extends MessageKey>(type: T, resType: R, msg?: MessageType[T]): Promise<TypedResponseMessage<R>>;
90
78
  _commonCall(type: MessageKey, msg?: DefaultMessageResponse['message']): Promise<DefaultMessageResponse>;
91
79
  _filterCommonTypes(res: DefaultMessageResponse): Promise<DefaultMessageResponse>;
92
- _getAddressForNetworkType(networkType?: string): Promise<string>;
80
+ private _getAddress;
93
81
  _promptPin(type?: Messages.PinMatrixRequestType): Promise<string>;
94
82
  _promptPassphrase(): Promise<PassphrasePromptResponse>;
95
83
  _promptWord(type: Messages.WordRequestType): Promise<string>;