@onekeyfe/hd-core 1.1.18-alpha.1 → 1.1.18

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 (76) hide show
  1. package/dist/api/BaseMethod.d.ts +4 -4
  2. package/dist/api/BaseMethod.d.ts.map +1 -1
  3. package/dist/api/CheckAllFirmwareRelease.d.ts +1 -1
  4. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  5. package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
  6. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  7. package/dist/api/FirmwareUpdate.d.ts +1 -1
  8. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  9. package/dist/api/FirmwareUpdateV2.d.ts +2 -3
  10. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  11. package/dist/api/FirmwareUpdateV3.d.ts +2 -2
  12. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  13. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +2 -2
  14. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  15. package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
  16. package/dist/api/device/DeviceUpdateBootloader.d.ts +1 -6
  17. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  18. package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
  19. package/dist/api/firmware/getBinary.d.ts +3 -6
  20. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  21. package/dist/api/firmware/releaseHelper.d.ts +2 -7
  22. package/dist/api/firmware/releaseHelper.d.ts.map +1 -1
  23. package/dist/api/firmware/updateBootloader.d.ts +2 -7
  24. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  25. package/dist/api/sui/SuiSignTransaction.d.ts +1 -1
  26. package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
  27. package/dist/core/index.d.ts.map +1 -1
  28. package/dist/data-manager/DataManager.d.ts +9 -16
  29. package/dist/data-manager/DataManager.d.ts.map +1 -1
  30. package/dist/index.d.ts +21 -43
  31. package/dist/index.js +75 -200
  32. package/dist/types/api/checkAllFirmwareRelease.d.ts +1 -3
  33. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  34. package/dist/types/api/checkBootloaderRelease.d.ts +2 -5
  35. package/dist/types/api/checkBootloaderRelease.d.ts.map +1 -1
  36. package/dist/types/api/checkFirmwareRelease.d.ts +2 -6
  37. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  38. package/dist/types/api/deviceFullyUploadResource.d.ts +1 -6
  39. package/dist/types/api/deviceFullyUploadResource.d.ts.map +1 -1
  40. package/dist/types/api/deviceUpdateBootloader.d.ts +3 -6
  41. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  42. package/dist/types/api/firmwareUpdate.d.ts +1 -3
  43. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  44. package/dist/types/settings.d.ts +0 -3
  45. package/dist/types/settings.d.ts.map +1 -1
  46. package/dist/utils/deviceFeaturesUtils.d.ts +5 -7
  47. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  48. package/dist/utils/release.d.ts +1 -1
  49. package/dist/utils/release.d.ts.map +1 -1
  50. package/package.json +4 -4
  51. package/src/api/BaseMethod.ts +7 -17
  52. package/src/api/CheckAllFirmwareRelease.ts +6 -13
  53. package/src/api/CheckBootloaderRelease.ts +2 -13
  54. package/src/api/CheckFirmwareRelease.ts +2 -9
  55. package/src/api/FirmwareUpdate.ts +5 -7
  56. package/src/api/FirmwareUpdateV2.ts +14 -26
  57. package/src/api/FirmwareUpdateV3.ts +18 -29
  58. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +11 -10
  59. package/src/api/device/DeviceFullyUploadResource.ts +2 -8
  60. package/src/api/device/DeviceUpdateBootloader.ts +5 -21
  61. package/src/api/evm/EVMSignTypedData.ts +8 -2
  62. package/src/api/firmware/getBinary.ts +4 -15
  63. package/src/api/firmware/releaseHelper.ts +11 -22
  64. package/src/api/firmware/updateBootloader.ts +9 -17
  65. package/src/api/sui/SuiSignTransaction.ts +1 -7
  66. package/src/core/index.ts +1 -3
  67. package/src/data-manager/DataManager.ts +22 -126
  68. package/src/types/api/checkAllFirmwareRelease.ts +1 -3
  69. package/src/types/api/checkBootloaderRelease.ts +3 -7
  70. package/src/types/api/checkFirmwareRelease.ts +2 -10
  71. package/src/types/api/deviceFullyUploadResource.ts +1 -7
  72. package/src/types/api/deviceUpdateBootloader.ts +4 -8
  73. package/src/types/api/firmwareUpdate.ts +1 -4
  74. package/src/types/settings.ts +0 -37
  75. package/src/utils/deviceFeaturesUtils.ts +10 -22
  76. package/src/utils/release.ts +1 -2
@@ -1,19 +1,15 @@
1
1
  import axios from 'axios';
2
2
  import semver from 'semver';
3
- import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
4
-
3
+ import { EDeviceType } from '@onekeyfe/hd-shared';
5
4
  import MessagesJSON from '../data/messages/messages.json';
6
5
  import MessagesLegacyV1JSON from '../data/messages/messages_legacy_v1.json';
7
6
  import {
7
+ getTimeStamp,
8
8
  getDeviceBLEFirmwareVersion,
9
9
  getDeviceFirmwareVersion,
10
10
  getDeviceType,
11
- getFirmwareType,
12
11
  getFirmwareUpdateField,
13
- getTimeStamp,
14
12
  } from '../utils';
15
- import { DeviceModelToTypes } from '../types';
16
- import { findLatestRelease, getReleaseChangelog, getReleaseStatus } from '../utils/release';
17
13
 
18
14
  import type {
19
15
  AssetsMap,
@@ -26,37 +22,13 @@ import type {
26
22
  IVersionArray,
27
23
  RemoteConfigResponse,
28
24
  } from '../types';
25
+ import { DeviceModelToTypes } from '../types';
26
+ import { findLatestRelease, getReleaseChangelog, getReleaseStatus } from '../utils/release';
29
27
 
30
- export const FIRMWARE_FIELDS = [
31
- 'firmware',
32
- 'firmware-v2',
33
- 'firmware-v7',
34
- 'firmware-btc-v7',
35
- ] as const;
36
-
37
- export type IFirmwareField = (typeof FIRMWARE_FIELDS)[number];
28
+ export type IFirmwareField = 'firmware' | 'firmware-v2' | 'firmware-v7';
38
29
 
39
30
  export type MessageVersion = 'latest' | 'v1';
40
31
 
41
- const FIRMWARE_FIELD_TYPE_MAP: Readonly<Record<IFirmwareField, EFirmwareType>> = {
42
- firmware: EFirmwareType.Universal,
43
- 'firmware-v2': EFirmwareType.Universal,
44
- 'firmware-v7': EFirmwareType.Universal,
45
- 'firmware-btc-v7': EFirmwareType.BitcoinOnly,
46
- } as const;
47
-
48
- function getFirmwareTypeFromField(firmwareField: IFirmwareField): EFirmwareType {
49
- const firmwareType = FIRMWARE_FIELD_TYPE_MAP[firmwareField];
50
-
51
- // Explicit check for type safety
52
- if (firmwareType === undefined) {
53
- // Fallback to Universal for safety
54
- return EFirmwareType.Universal;
55
- }
56
-
57
- return firmwareType;
58
- }
59
-
60
32
  export default class DataManager {
61
33
  static deviceMap: DeviceTypeMap = {
62
34
  [EDeviceType.Classic]: {
@@ -96,14 +68,10 @@ export default class DataManager {
96
68
 
97
69
  static lastCheckTimestamp = 0;
98
70
 
99
- static getFirmwareStatus = (
100
- features: Features,
101
- firmwareType: EFirmwareType
102
- ): IDeviceFirmwareStatus => {
71
+ static getFirmwareStatus = (features: Features): IDeviceFirmwareStatus => {
103
72
  const deviceType = getDeviceType(features);
104
73
  if (deviceType === EDeviceType.Unknown) return 'unknown';
105
74
 
106
- const deviceFirmwareType = getFirmwareType(features);
107
75
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
108
76
  if (features.firmware_present === false) {
109
77
  return 'none';
@@ -113,16 +81,9 @@ export default class DataManager {
113
81
  return 'unknown';
114
82
  }
115
83
 
116
- const firmwareUpdateField = getFirmwareUpdateField({
117
- features,
118
- updateType: 'firmware',
119
- firmwareType,
120
- });
84
+ const firmwareUpdateField = getFirmwareUpdateField({ features, updateType: 'firmware' });
121
85
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
122
- let currentVersion = deviceFirmwareVersion.join('.');
123
- if (targetDeviceConfigList.length > 0 && deviceFirmwareType !== firmwareType) {
124
- currentVersion = '0.0.0';
125
- }
86
+ const currentVersion = deviceFirmwareVersion.join('.');
126
87
  return getReleaseStatus(targetDeviceConfigList, currentVersion);
127
88
  };
128
89
 
@@ -130,15 +91,7 @@ export default class DataManager {
130
91
  * Touch、Pro System UI Resource Update
131
92
  * ** Interval upgrade is not considered **
132
93
  */
133
- static getSysResourcesLatestRelease = ({
134
- features,
135
- forcedUpdateRes,
136
- firmwareType,
137
- }: {
138
- features: Features;
139
- forcedUpdateRes?: boolean;
140
- firmwareType: EFirmwareType;
141
- }) => {
94
+ static getSysResourcesLatestRelease = (features: Features, forcedUpdateRes?: boolean) => {
142
95
  const deviceType = getDeviceType(features);
143
96
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
144
97
 
@@ -147,7 +100,6 @@ export default class DataManager {
147
100
  const firmwareUpdateField = getFirmwareUpdateField({
148
101
  features,
149
102
  updateType: 'firmware',
150
- firmwareType,
151
103
  }) as IFirmwareField;
152
104
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
153
105
  const currentVersion = deviceFirmwareVersion.join('.');
@@ -164,7 +116,7 @@ export default class DataManager {
164
116
  * Touch、Pro System full UI Resource Update
165
117
  * ** Interval upgrade is not considered **
166
118
  */
167
- static getSysFullResource = (features: Features, firmwareType: EFirmwareType) => {
119
+ static getSysFullResource = (features: Features) => {
168
120
  const deviceType = getDeviceType(features);
169
121
  if (deviceType === EDeviceType.Unknown) return undefined;
170
122
 
@@ -173,7 +125,6 @@ export default class DataManager {
173
125
  const firmwareUpdateField = getFirmwareUpdateField({
174
126
  features,
175
127
  updateType: 'firmware',
176
- firmwareType,
177
128
  }) as IFirmwareField;
178
129
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
179
130
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.fullResource);
@@ -181,7 +132,7 @@ export default class DataManager {
181
132
  return findLatestRelease(targetDeviceConfig)?.fullResource;
182
133
  };
183
134
 
184
- static getBootloaderResource = (features: Features, firmwareType: EFirmwareType) => {
135
+ static getBootloaderResource = (features: Features) => {
185
136
  const deviceType = getDeviceType(features);
186
137
  if (deviceType === EDeviceType.Unknown) throw new Error('Device type is unknown');
187
138
 
@@ -189,7 +140,6 @@ export default class DataManager {
189
140
  const firmwareUpdateField = getFirmwareUpdateField({
190
141
  features,
191
142
  updateType: 'firmware',
192
- firmwareType,
193
143
  }) as IFirmwareField;
194
144
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
195
145
  if (targetDeviceConfigList.length === 0) {
@@ -202,17 +152,13 @@ export default class DataManager {
202
152
  return findLatestRelease(targetDeviceConfig)?.bootloaderResource;
203
153
  };
204
154
 
205
- static getBootloaderTargetVersion = (
206
- features: Features,
207
- firmwareType: EFirmwareType
208
- ): IVersionArray | undefined => {
155
+ static getBootloaderTargetVersion = (features: Features): IVersionArray | undefined => {
209
156
  const deviceType = getDeviceType(features);
210
157
  if (deviceType === EDeviceType.Unknown) return undefined;
211
158
 
212
159
  const firmwareUpdateField = getFirmwareUpdateField({
213
160
  features,
214
161
  updateType: 'firmware',
215
- firmwareType,
216
162
  }) as IFirmwareField;
217
163
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
218
164
  const targetDeviceConfig = targetDeviceConfigList.filter(item => !!item.bootloaderResource);
@@ -220,10 +166,7 @@ export default class DataManager {
220
166
  return targetDeviceConfig?.[0]?.bootloaderVersion ?? undefined;
221
167
  };
222
168
 
223
- static getBootloaderRelatedFirmwareVersion = (
224
- features: Features,
225
- firmwareType: EFirmwareType
226
- ): IVersionArray | undefined => {
169
+ static getBootloaderRelatedFirmwareVersion = (features: Features): IVersionArray | undefined => {
227
170
  const deviceType = getDeviceType(features);
228
171
  if (deviceType === EDeviceType.Unknown) return undefined;
229
172
 
@@ -231,7 +174,6 @@ export default class DataManager {
231
174
  const firmwareUpdateField = getFirmwareUpdateField({
232
175
  features,
233
176
  updateType: 'firmware',
234
- firmwareType,
235
177
  }) as IFirmwareField;
236
178
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
237
179
  const targetDeviceConfig = targetDeviceConfigList.filter(
@@ -241,7 +183,7 @@ export default class DataManager {
241
183
  return targetDeviceConfig?.[0]?.bootloaderRelatedFirmwareVersion ?? undefined;
242
184
  };
243
185
 
244
- static getFirmwareChangelog = (features: Features, firmwareType: EFirmwareType) => {
186
+ static getFirmwareChangelog = (features: Features) => {
245
187
  const deviceType = getDeviceType(features);
246
188
  if (deviceType === EDeviceType.Unknown) return [];
247
189
 
@@ -250,7 +192,6 @@ export default class DataManager {
250
192
  const firmwareUpdateField = getFirmwareUpdateField({
251
193
  features,
252
194
  updateType: 'firmware',
253
- firmwareType,
254
195
  }) as IFirmwareField;
255
196
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
256
197
 
@@ -266,14 +207,13 @@ export default class DataManager {
266
207
  return getReleaseChangelog(targetDeviceConfigList, currentVersion);
267
208
  };
268
209
 
269
- static getFirmwareLatestRelease = (features: Features, firmwareType: EFirmwareType) => {
210
+ static getFirmwareLatestRelease = (features: Features) => {
270
211
  const deviceType = getDeviceType(features);
271
212
  if (deviceType === EDeviceType.Unknown) return undefined;
272
213
 
273
214
  const firmwareUpdateField = getFirmwareUpdateField({
274
215
  features,
275
216
  updateType: 'firmware',
276
- firmwareType,
277
217
  }) as IFirmwareField;
278
218
  const targetDeviceConfigList = this.deviceMap[deviceType]?.[firmwareUpdateField] ?? [];
279
219
 
@@ -281,7 +221,7 @@ export default class DataManager {
281
221
  if (!target) return target;
282
222
 
283
223
  if (!target.resource) {
284
- const resource = this.getSysResourcesLatestRelease({ features, firmwareType });
224
+ const resource = this.getSysResourcesLatestRelease(features);
285
225
  return {
286
226
  ...target,
287
227
  resource,
@@ -338,50 +278,6 @@ export default class DataManager {
338
278
 
339
279
  static getBridgeChangelog = () => this.assets?.bridge.changelog;
340
280
 
341
- private static enrichFirmwareReleaseInfo(
342
- deviceData: DeviceTypeMap[keyof DeviceTypeMap] | undefined
343
- ): DeviceTypeMap[keyof DeviceTypeMap] {
344
- // Safety check: return default structure if input is undefined/null
345
- if (!deviceData || typeof deviceData !== 'object') {
346
- return {
347
- firmware: [],
348
- ble: [],
349
- };
350
- }
351
-
352
- // Create a shallow copy to avoid mutating original data
353
- const enrichedData = { ...deviceData };
354
-
355
- FIRMWARE_FIELDS.forEach(field => {
356
- const releases = enrichedData[field];
357
-
358
- if (!releases || !Array.isArray(releases) || releases.length === 0) {
359
- return; // Skip this field
360
- }
361
-
362
- // Add firmwareType to each release in this field
363
- try {
364
- enrichedData[field] = releases.map(release => {
365
- // Safety checks:
366
- if (!release || typeof release !== 'object' || !!release.firmwareType) {
367
- return release; // Return as-is if invalid or already has firmwareType
368
- }
369
-
370
- const firmwareType = getFirmwareTypeFromField(field);
371
-
372
- return {
373
- ...release,
374
- firmwareType,
375
- };
376
- });
377
- } catch (error) {
378
- console.error(`Error enriching firmware field "${field}":`, error);
379
- }
380
- });
381
-
382
- return enrichedData;
383
- }
384
-
385
281
  static async load(settings: ConnectSettings) {
386
282
  this.settings = settings;
387
283
  if (!settings.fetchConfig) {
@@ -400,12 +296,12 @@ export default class DataManager {
400
296
  }
401
297
  );
402
298
  this.deviceMap = {
403
- [EDeviceType.Classic]: this.enrichFirmwareReleaseInfo(data.classic),
404
- [EDeviceType.Classic1s]: this.enrichFirmwareReleaseInfo(data.classic1s),
405
- [EDeviceType.ClassicPure]: this.enrichFirmwareReleaseInfo(data.classicpure),
406
- [EDeviceType.Mini]: this.enrichFirmwareReleaseInfo(data.mini),
407
- [EDeviceType.Touch]: this.enrichFirmwareReleaseInfo(data.touch),
408
- [EDeviceType.Pro]: this.enrichFirmwareReleaseInfo(data.pro),
299
+ [EDeviceType.Classic]: data.classic,
300
+ [EDeviceType.Classic1s]: data.classic1s,
301
+ [EDeviceType.ClassicPure]: data.classicpure,
302
+ [EDeviceType.Mini]: data.mini,
303
+ [EDeviceType.Touch]: data.touch,
304
+ [EDeviceType.Pro]: data.pro,
409
305
  };
410
306
  this.assets = {
411
307
  bridge: data.bridge,
@@ -1,7 +1,6 @@
1
- import type { IBLEFirmwareReleaseInfo } from '../settings';
2
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
3
1
  import type { CommonParams, Response } from '../params';
4
2
  import type { IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus } from '../device';
3
+ import { IBLEFirmwareReleaseInfo } from '../settings';
5
4
 
6
5
  export type FirmwareRelease = {
7
6
  shouldUpdate?: boolean;
@@ -23,7 +22,6 @@ export type AllFirmwareRelease = {
23
22
 
24
23
  export type CheckAllFirmwareReleaseParams = {
25
24
  checkBridgeRelease?: boolean;
26
- firmwareType?: EFirmwareType;
27
25
  };
28
26
 
29
27
  export declare function checkAllFirmwareRelease(
@@ -1,4 +1,3 @@
1
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
2
1
  import type { CommonParams, Response } from '../params';
3
2
 
4
3
  export type CheckBootloaderReleaseResponse = {
@@ -8,12 +7,9 @@ export type CheckBootloaderReleaseResponse = {
8
7
  bootloaderMode: boolean;
9
8
  } | null;
10
9
 
11
- export type CheckBootloaderReleaseParams = {
12
- willUpdateFirmwareVersion?: string;
13
- firmwareType?: EFirmwareType;
14
- };
15
-
16
10
  export declare function checkBootloaderRelease(
17
11
  connectId?: string,
18
- params?: CommonParams & CheckBootloaderReleaseParams
12
+ params?: CommonParams & {
13
+ willUpdateFirmwareVersion?: string;
14
+ }
19
15
  ): Response<CheckBootloaderReleaseResponse>;
@@ -1,7 +1,6 @@
1
- import type { IFirmwareReleaseInfo } from '../settings';
2
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
3
1
  import type { Response } from '../params';
4
2
  import type { IDeviceFirmwareStatus } from '../device';
3
+ import { IFirmwareReleaseInfo } from '../settings';
5
4
 
6
5
  type FirmwareRelease = {
7
6
  status: IDeviceFirmwareStatus;
@@ -13,11 +12,4 @@ type FirmwareRelease = {
13
12
  bootloaderMode: boolean;
14
13
  };
15
14
 
16
- export type CheckFirmwareReleaseParams = {
17
- firmwareType?: EFirmwareType;
18
- };
19
-
20
- export declare function checkFirmwareRelease(
21
- connectId?: string,
22
- params?: CheckFirmwareReleaseParams
23
- ): Response<FirmwareRelease>;
15
+ export declare function checkFirmwareRelease(connectId?: string): Response<FirmwareRelease>;
@@ -1,12 +1,6 @@
1
- import type { Success } from '@onekeyfe/hd-transport';
2
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
1
+ import { Success } from '@onekeyfe/hd-transport';
3
2
  import type { CommonParams, Response } from '../params';
4
3
 
5
- export type DeviceFullyUploadResourceParams = {
6
- binary?: ArrayBuffer;
7
- firmwareType?: EFirmwareType;
8
- };
9
-
10
4
  export declare function deviceFullyUploadResource(
11
5
  connectId: string,
12
6
  params: CommonParams & {
@@ -1,13 +1,9 @@
1
- import type { Success } from '@onekeyfe/hd-transport';
2
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
1
+ import { Success } from '@onekeyfe/hd-transport';
3
2
  import type { Response } from '../params';
4
3
 
5
- export type DeviceUpdateBootloaderParams = {
6
- binary?: ArrayBuffer;
7
- firmwareType?: EFirmwareType;
8
- };
9
-
10
4
  export declare function deviceUpdateBootloader(
11
5
  connectId: string,
12
- params?: DeviceUpdateBootloaderParams
6
+ params?: {
7
+ binary?: ArrayBuffer;
8
+ }
13
9
  ): Response<Success>;
@@ -1,4 +1,3 @@
1
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
2
1
  import type { PROTO } from '../../constants';
3
2
  import type { Params, Response } from '../params';
4
3
 
@@ -11,10 +10,10 @@ export interface FirmwareUpdateBinaryParams {
11
10
 
12
11
  export interface FirmwareUpdateParams {
13
12
  version?: number[];
13
+ btcOnly?: boolean;
14
14
  updateType: IUpdateType;
15
15
  forcedUpdateRes?: boolean;
16
16
  isUpdateBootloader?: boolean;
17
- firmwareType?: EFirmwareType;
18
17
  }
19
18
 
20
19
  export declare function firmwareUpdate(
@@ -51,8 +50,6 @@ export interface FirmwareUpdateV3Params {
51
50
  resourceBinary?: ArrayBuffer;
52
51
  forcedUpdateRes?: boolean;
53
52
 
54
- firmwareType?: EFirmwareType;
55
-
56
53
  platform: IPlatform;
57
54
  }
58
55
 
@@ -1,4 +1,3 @@
1
- import type { EFirmwareType } from '@onekeyfe/hd-shared';
2
1
  import type { IDeviceType } from './device';
3
2
 
4
3
  export type transportEnv =
@@ -41,11 +40,6 @@ export type ILocale = 'zh-CN' | 'en-US';
41
40
  export type IFirmwareReleaseInfo = {
42
41
  required: boolean;
43
42
  url: string;
44
- /**
45
- * Firmware type (bitcoinonly or universal)
46
- * This field is not present in the remote config, but will be inferred from the firmware field name
47
- */
48
- firmwareType?: EFirmwareType;
49
43
  /** Firmware UI resource */
50
44
  resource?: string;
51
45
  /** Firmware full UI resource */
@@ -81,42 +75,11 @@ export type IBLEFirmwareReleaseInfo = {
81
75
  };
82
76
 
83
77
  type IKnownDevice = Exclude<IDeviceType, 'unknown'>;
84
-
85
- /**
86
- * Device firmware configuration map
87
- *
88
- * IMPORTANT: This type is used for firmware update logic.
89
- * - DO NOT remove existing firmware fields
90
- * - Only ADD new optional firmware fields for new versions
91
- * - 'firmware' field is required for backward compatibility
92
- * - 'ble' field is required for BLE firmware updates
93
- *
94
- * @example
95
- * // When adding firmware-v8:
96
- * // {
97
- * // firmware: IFirmwareReleaseInfo[];
98
- * // 'firmware-v2'?: IFirmwareReleaseInfo[];
99
- * // 'firmware-v7'?: IFirmwareReleaseInfo[];
100
- * // 'firmware-v8'?: IFirmwareReleaseInfo[]; // New
101
- * // 'firmware-btc-v7'?: IFirmwareReleaseInfo[];
102
- * // 'firmware-btc-v8'?: IFirmwareReleaseInfo[]; // New
103
- * // ble: IBLEFirmwareReleaseInfo[];
104
- * // }
105
- */
106
78
  export type DeviceTypeMap = {
107
79
  [k in IKnownDevice]: {
108
- /** Base firmware field (required for backward compatibility) */
109
80
  firmware: IFirmwareReleaseInfo[];
110
- /** Firmware v2 (Touch/Pro specific) */
111
81
  'firmware-v2'?: IFirmwareReleaseInfo[];
112
- /** Universal firmware v7 */
113
82
  'firmware-v7'?: IFirmwareReleaseInfo[];
114
- /** Bitcoin-only firmware v7 */
115
- 'firmware-btc-v7'?: IFirmwareReleaseInfo[];
116
- // Future firmware versions should be added here as optional fields:
117
- // 'firmware-v8'?: IFirmwareReleaseInfo[];
118
- // 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
119
- /** BLE firmware (required) */
120
83
  ble: IBLEFirmwareReleaseInfo[];
121
84
  };
122
85
  };
@@ -1,20 +1,18 @@
1
1
  import semver from 'semver';
2
2
  import { isNaN } from 'lodash';
3
- import { EDeviceType, type EFirmwareType, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
3
+ import { EDeviceType, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
4
4
  import { Enum_Capability } from '@onekeyfe/hd-transport';
5
-
6
5
  import { toHardened } from '../api/helpers/pathUtils';
6
+ import { DeviceCommands } from '../device/DeviceCommands';
7
+ import type { Features, SupportFeatureType } from '../types';
7
8
  import { DeviceModelToTypes, DeviceTypeToModels } from '../types';
8
- import DataManager, { type IFirmwareField, type MessageVersion } from '../data-manager/DataManager';
9
+ import DataManager, { IFirmwareField, MessageVersion } from '../data-manager/DataManager';
9
10
  import { PROTOBUF_MESSAGE_CONFIG } from '../data-manager/MessagesConfig';
11
+ import { Device } from '../device/Device';
10
12
  import { getDeviceType } from './deviceInfoUtils';
11
13
  import { getDeviceFirmwareVersion } from './deviceVersionUtils';
12
14
  import { existCapability } from './capabilitieUtils';
13
15
 
14
- import type { Device } from '../device/Device';
15
- import type { DeviceCommands } from '../device/DeviceCommands';
16
- import type { Features, SupportFeatureType } from '../types';
17
-
18
16
  export const getSupportMessageVersion = (
19
17
  features: Features | undefined
20
18
  ): { messages: JSON; messageVersion: MessageVersion } => {
@@ -233,13 +231,6 @@ export const supportModifyHomescreen = (features?: Features): SupportFeatureType
233
231
  return { support: semver.gte(currentVersion, '3.4.0') };
234
232
  };
235
233
 
236
- const getLatestFirmwareField = (firmwareType?: EFirmwareType): IFirmwareField => {
237
- if (firmwareType === 'bitcoinonly') {
238
- return `firmware-btc-v7`;
239
- }
240
- return `firmware-v7`;
241
- };
242
-
243
234
  /**
244
235
  * Since 3.5.0, Touch uses the firmware-v3 field to get firmware release info
245
236
  */
@@ -247,36 +238,33 @@ export const getFirmwareUpdateField = ({
247
238
  features,
248
239
  updateType,
249
240
  targetVersion,
250
- firmwareType,
251
241
  }: {
252
242
  features: Features;
253
243
  updateType: 'firmware' | 'ble';
254
244
  targetVersion?: string;
255
- firmwareType: EFirmwareType;
256
245
  }): 'ble' | IFirmwareField => {
257
246
  const deviceType = getDeviceType(features);
258
247
  const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
259
248
  if (updateType === 'ble') {
260
249
  return 'ble';
261
250
  }
262
- const latestFirmwareField = getLatestFirmwareField(firmwareType);
263
251
 
264
252
  if (DeviceModelToTypes.model_mini.includes(deviceType)) {
265
- return latestFirmwareField;
253
+ return 'firmware-v7';
266
254
  }
267
255
 
268
256
  if (deviceType === EDeviceType.Touch) {
269
257
  if (targetVersion) {
270
258
  if (semver.eq(targetVersion, '4.0.0')) return 'firmware-v2';
271
- if (semver.gt(targetVersion, '4.0.0')) return latestFirmwareField;
259
+ if (semver.gt(targetVersion, '4.0.0')) return 'firmware-v7';
272
260
  }
273
261
 
274
262
  if (semver.lt(deviceFirmwareVersion.join('.'), '3.4.0')) return 'firmware';
275
263
 
276
- return latestFirmwareField;
264
+ return 'firmware-v7';
277
265
  }
278
266
  if (deviceType === EDeviceType.Pro) {
279
- return latestFirmwareField;
267
+ return 'firmware-v7';
280
268
  }
281
269
  return 'firmware';
282
270
  };
@@ -288,7 +276,7 @@ export const getFirmwareUpdateField = ({
288
276
  export const getFirmwareUpdateFieldArray = (
289
277
  features: Features,
290
278
  updateType: 'firmware' | 'ble' | 'bootloader'
291
- ): ('ble' | IFirmwareField)[] => {
279
+ ): ('firmware' | 'ble' | 'firmware-v2' | 'firmware-v7')[] => {
292
280
  const deviceType = getDeviceType(features);
293
281
  if (updateType === 'ble') {
294
282
  return ['ble'];
@@ -1,6 +1,5 @@
1
1
  import semver from 'semver';
2
-
3
- import type {
2
+ import {
4
3
  IBLEFirmwareReleaseInfo,
5
4
  IDeviceFirmwareStatus,
6
5
  IFirmwareReleaseInfo,