@onekeyfe/hd-core 1.2.0-alpha.52 → 1.2.0-alpha.53

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 (251) hide show
  1. package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +78 -0
  2. package/__tests__/DeviceCommands.test.ts +45 -0
  3. package/__tests__/DeviceEventRegistration.test.ts +6 -0
  4. package/__tests__/check-all-firmware-release-protocol-v2.test.ts +198 -3
  5. package/__tests__/connectSettings.test.ts +5 -47
  6. package/__tests__/device-lifecycle-events.test.ts +105 -3
  7. package/__tests__/deviceUploadNft.test.ts +293 -0
  8. package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +31 -59
  9. package/__tests__/get-device-state.test.ts +132 -12
  10. package/__tests__/homescreen.test.ts +41 -1
  11. package/__tests__/logBlockEvent.test.ts +1 -1
  12. package/__tests__/method-protocol-support.test.ts +19 -0
  13. package/__tests__/open-wallet-session.test.ts +446 -33
  14. package/__tests__/pro2Nft.test.ts +108 -0
  15. package/__tests__/protocol-binding.test.ts +89 -0
  16. package/__tests__/protocol-v2-resources.test.ts +284 -0
  17. package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
  18. package/__tests__/protocol-v2-unlock-policy.test.ts +201 -35
  19. package/__tests__/protocol-v2.test.ts +1349 -1005
  20. package/__tests__/protocolV2UiInteraction.test.ts +63 -0
  21. package/__tests__/public-pro2-api-boundary.test.ts +1 -0
  22. package/__tests__/search-devices.test.ts +12 -3
  23. package/__tests__/uiProgressThrottle.test.ts +74 -0
  24. package/__tests__/uiPromiseRegistry.test.ts +86 -0
  25. package/dist/api/BaseMethod.d.ts +3 -1
  26. package/dist/api/BaseMethod.d.ts.map +1 -1
  27. package/dist/api/CheckAllFirmwareRelease.d.ts +2 -1
  28. package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
  29. package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
  30. package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
  31. package/dist/api/FirmwareUpdate.d.ts.map +1 -1
  32. package/dist/api/FirmwareUpdateV2.d.ts +0 -11
  33. package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
  34. package/dist/api/FirmwareUpdateV3.d.ts +3 -7
  35. package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
  36. package/dist/api/FirmwareUpdateV4.d.ts +11 -25
  37. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  38. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  39. package/dist/api/OpenWalletSession.d.ts.map +1 -1
  40. package/dist/api/SearchDevices.d.ts.map +1 -1
  41. package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
  42. package/dist/api/device/DeviceUnlock.d.ts +2 -2
  43. package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
  44. package/dist/api/device/DeviceUpdateBootloader.d.ts +1 -5
  45. package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
  46. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +0 -9
  47. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  48. package/dist/api/firmware/getBinary.d.ts +0 -7
  49. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  50. package/dist/api/firmware/updateBootloader.d.ts +0 -2
  51. package/dist/api/firmware/updateBootloader.d.ts.map +1 -1
  52. package/dist/api/firmware/uploadFirmware.d.ts +1 -9
  53. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
  54. package/dist/api/helpers/protocolV2FileWrite.d.ts +2 -0
  55. package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -1
  56. package/dist/api/index.d.ts +2 -0
  57. package/dist/api/index.d.ts.map +1 -1
  58. package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
  59. package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
  60. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
  61. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  62. package/dist/api/stellar/StellarSignTransaction.d.ts +1 -1
  63. package/dist/core/deviceEventRegistration.d.ts +2 -0
  64. package/dist/core/deviceEventRegistration.d.ts.map +1 -1
  65. package/dist/core/index.d.ts.map +1 -1
  66. package/dist/core/uiPromiseRegistry.d.ts +4 -0
  67. package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
  68. package/dist/data-manager/DataManager.d.ts +4 -2
  69. package/dist/data-manager/DataManager.d.ts.map +1 -1
  70. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  71. package/dist/device/Device.d.ts +29 -6
  72. package/dist/device/Device.d.ts.map +1 -1
  73. package/dist/device/DeviceCommands.d.ts +4 -4
  74. package/dist/device/DeviceCommands.d.ts.map +1 -1
  75. package/dist/device/DevicePool.d.ts.map +1 -1
  76. package/dist/events/device.d.ts +4 -0
  77. package/dist/events/device.d.ts.map +1 -1
  78. package/dist/events/logBlockEvent.d.ts.map +1 -1
  79. package/dist/events/ui-promise.d.ts +4 -2
  80. package/dist/events/ui-promise.d.ts.map +1 -1
  81. package/dist/events/ui-request.d.ts +31 -2
  82. package/dist/events/ui-request.d.ts.map +1 -1
  83. package/dist/events/ui-response.d.ts +10 -2
  84. package/dist/events/ui-response.d.ts.map +1 -1
  85. package/dist/index.d.ts +214 -231
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2559 -3497
  88. package/dist/inject.d.ts +6 -1
  89. package/dist/inject.d.ts.map +1 -1
  90. package/dist/lowLevelInject.d.ts.map +1 -1
  91. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  92. package/dist/protocols/protocol-v2/resources.d.ts +30 -0
  93. package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
  94. package/dist/protocols/protocol-v2/uiInteraction.d.ts +7 -4
  95. package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -1
  96. package/dist/protocols/protocol-v2/unlockPolicy.d.ts +1 -3
  97. package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -1
  98. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
  99. package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
  100. package/dist/protocols/protocol-v2/walletSession.d.ts +5 -1
  101. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -1
  102. package/dist/topLevelInject.d.ts.map +1 -1
  103. package/dist/types/api/checkAllFirmwareRelease.d.ts +2 -4
  104. package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
  105. package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
  106. package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
  107. package/dist/types/api/deviceUnlock.d.ts +5 -1
  108. package/dist/types/api/deviceUnlock.d.ts.map +1 -1
  109. package/dist/types/api/deviceUpdateBootloader.d.ts +0 -6
  110. package/dist/types/api/deviceUpdateBootloader.d.ts.map +1 -1
  111. package/dist/types/api/export.d.ts +2 -4
  112. package/dist/types/api/export.d.ts.map +1 -1
  113. package/dist/types/api/firmwareUpdate.d.ts +2 -70
  114. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  115. package/dist/types/api/index.d.ts +7 -10
  116. package/dist/types/api/index.d.ts.map +1 -1
  117. package/dist/types/api/protocolV2.d.ts +3 -0
  118. package/dist/types/api/protocolV2.d.ts.map +1 -1
  119. package/dist/types/device.d.ts.map +1 -1
  120. package/dist/types/params.d.ts +1 -0
  121. package/dist/types/params.d.ts.map +1 -1
  122. package/dist/types/settings.d.ts +22 -13
  123. package/dist/types/settings.d.ts.map +1 -1
  124. package/dist/utils/deviceFeaturesCompat.d.ts +0 -1
  125. package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -1
  126. package/dist/utils/deviceFeaturesUtils.d.ts +4 -0
  127. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  128. package/dist/utils/homescreen.d.ts +4 -0
  129. package/dist/utils/homescreen.d.ts.map +1 -1
  130. package/dist/utils/index.d.ts +1 -1
  131. package/dist/utils/index.d.ts.map +1 -1
  132. package/dist/utils/patch.d.ts +1 -1
  133. package/dist/utils/patch.d.ts.map +1 -1
  134. package/dist/utils/pro2Nft.d.ts +31 -0
  135. package/dist/utils/pro2Nft.d.ts.map +1 -0
  136. package/dist/utils/pro2Wallpaper.d.ts +10 -0
  137. package/dist/utils/pro2Wallpaper.d.ts.map +1 -1
  138. package/dist/utils/uiProgressThrottle.d.ts +3 -0
  139. package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
  140. package/package.json +4 -4
  141. package/src/api/BaseMethod.ts +8 -10
  142. package/src/api/CheckAllFirmwareRelease.ts +54 -57
  143. package/src/api/DetectDeviceConnectProtocol.ts +18 -0
  144. package/src/api/FirmwareUpdate.ts +7 -15
  145. package/src/api/FirmwareUpdateV2.ts +126 -316
  146. package/src/api/FirmwareUpdateV3.ts +63 -265
  147. package/src/api/FirmwareUpdateV4.ts +566 -965
  148. package/src/api/GetPassphraseState.ts +7 -1
  149. package/src/api/OpenWalletSession.ts +54 -17
  150. package/src/api/SearchDevices.ts +3 -1
  151. package/src/api/allnetwork/AllNetworkGetAddressBase.ts +32 -11
  152. package/src/api/device/DeviceUnlock.ts +8 -3
  153. package/src/api/device/DeviceUpdateBootloader.ts +6 -122
  154. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +16 -83
  155. package/src/api/firmware/updateBootloader.ts +4 -19
  156. package/src/api/firmware/uploadFirmware.ts +39 -144
  157. package/src/api/helpers/protocolV2FileWrite.ts +11 -4
  158. package/src/api/index.ts +2 -0
  159. package/src/api/protocol-v2/DeviceUploadNft.ts +189 -0
  160. package/src/api/protocol-v2/ProtocolInfoRequest.ts +3 -1
  161. package/src/api/protocol-v2/helpers.ts +1 -0
  162. package/src/core/deviceEventRegistration.ts +4 -0
  163. package/src/core/index.ts +167 -83
  164. package/src/core/uiPromiseRegistry.ts +41 -0
  165. package/src/data/messages/messages-protocol-v2.json +25 -0
  166. package/src/data-manager/DataManager.ts +67 -38
  167. package/src/data-manager/connectSettings.ts +0 -11
  168. package/src/device/Device.ts +258 -42
  169. package/src/device/DeviceCommands.ts +7 -1
  170. package/src/device/DevicePool.ts +7 -2
  171. package/src/events/device.ts +4 -0
  172. package/src/events/logBlockEvent.ts +1 -0
  173. package/src/events/ui-promise.ts +4 -2
  174. package/src/events/ui-request.ts +36 -2
  175. package/src/events/ui-response.ts +12 -2
  176. package/src/index.ts +0 -5
  177. package/src/inject.ts +60 -24
  178. package/src/lowLevelInject.ts +7 -8
  179. package/src/protocols/protocol-v2/features.ts +10 -3
  180. package/src/protocols/protocol-v2/resources.ts +359 -0
  181. package/src/protocols/protocol-v2/uiInteraction.ts +46 -6
  182. package/src/protocols/protocol-v2/unlockPolicy.ts +1 -105
  183. package/src/protocols/protocol-v2/unlockPolicyRunner.ts +118 -0
  184. package/src/protocols/protocol-v2/walletSession.ts +180 -30
  185. package/src/topLevelInject.ts +7 -8
  186. package/src/types/api/checkAllFirmwareRelease.ts +2 -4
  187. package/src/types/api/detectDeviceConnectProtocol.ts +7 -0
  188. package/src/types/api/deviceUnlock.ts +12 -1
  189. package/src/types/api/deviceUpdateBootloader.ts +0 -6
  190. package/src/types/api/export.ts +1 -18
  191. package/src/types/api/firmwareUpdate.ts +3 -76
  192. package/src/types/api/index.ts +13 -14
  193. package/src/types/api/protocolV2.ts +13 -0
  194. package/src/types/device.ts +3 -0
  195. package/src/types/params.ts +7 -1
  196. package/src/types/settings.ts +42 -13
  197. package/src/utils/deviceFeaturesCompat.ts +0 -6
  198. package/src/utils/deviceFeaturesUtils.ts +8 -0
  199. package/src/utils/homescreen.ts +32 -6
  200. package/src/utils/index.ts +6 -1
  201. package/src/utils/pro2Nft.ts +142 -0
  202. package/src/utils/pro2Wallpaper.ts +35 -8
  203. package/src/utils/uiProgressThrottle.ts +63 -0
  204. package/__tests__/device-initialize-timeout.test.ts +0 -56
  205. package/__tests__/firmware-update/check-all-firmware-release.test.ts +0 -175
  206. package/__tests__/firmware-update/firmware-artifact-source.test.ts +0 -119
  207. package/__tests__/firmware-update/firmware-host-binding.test.ts +0 -70
  208. package/__tests__/firmware-update/firmware-preparation-error.test.ts +0 -27
  209. package/__tests__/firmware-update/firmware-update-bootloader-poll.test.ts +0 -200
  210. package/__tests__/firmware-update/firmware-update-capabilities.test.ts +0 -13
  211. package/__tests__/firmware-update/firmware-update-plan-bootloader-identity.test.ts +0 -294
  212. package/__tests__/firmware-update/firmware-update-plan.test.ts +0 -593
  213. package/__tests__/firmware-update/firmware-update-prepared-plan.test.ts +0 -213
  214. package/__tests__/firmware-update/firmware-update-v3-reconnect.test.ts +0 -58
  215. package/__tests__/firmware-update/firmware-upload-source.test.ts +0 -70
  216. package/dist/api/firmware/FirmwareArtifactSource.d.ts +0 -25
  217. package/dist/api/firmware/FirmwareArtifactSource.d.ts.map +0 -1
  218. package/dist/api/firmware/FirmwareHostBinding.d.ts +0 -6
  219. package/dist/api/firmware/FirmwareHostBinding.d.ts.map +0 -1
  220. package/dist/api/firmware/FirmwarePreparationError.d.ts +0 -3
  221. package/dist/api/firmware/FirmwarePreparationError.d.ts.map +0 -1
  222. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts +0 -3
  223. package/dist/api/firmware/FirmwareUpdateCapabilities.d.ts.map +0 -1
  224. package/dist/api/firmware/FirmwareUpdatePlan.d.ts +0 -25
  225. package/dist/api/firmware/FirmwareUpdatePlan.d.ts.map +0 -1
  226. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts +0 -32
  227. package/dist/api/firmware/FirmwareUpdatePreparedPlan.d.ts.map +0 -1
  228. package/dist/api/firmware/progressThrottle.d.ts +0 -3
  229. package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
  230. package/dist/protocols/protocol-v2/lockedError.d.ts +0 -2
  231. package/dist/protocols/protocol-v2/lockedError.d.ts.map +0 -1
  232. package/dist/protocols/protocol-v2/unlockRetry.d.ts +0 -10
  233. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +0 -1
  234. package/dist/types/api/firmwareUpdateCapabilities.d.ts +0 -9
  235. package/dist/types/api/firmwareUpdateCapabilities.d.ts.map +0 -1
  236. package/dist/types/api/firmwareUpdatePlan.d.ts +0 -28
  237. package/dist/types/api/firmwareUpdatePlan.d.ts.map +0 -1
  238. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts +0 -42
  239. package/dist/types/api/firmwareUpdatePreparedPlan.d.ts.map +0 -1
  240. package/src/api/firmware/FirmwareArtifactSource.ts +0 -278
  241. package/src/api/firmware/FirmwareHostBinding.ts +0 -100
  242. package/src/api/firmware/FirmwarePreparationError.ts +0 -12
  243. package/src/api/firmware/FirmwareUpdateCapabilities.ts +0 -9
  244. package/src/api/firmware/FirmwareUpdatePlan.ts +0 -772
  245. package/src/api/firmware/FirmwareUpdatePreparedPlan.ts +0 -415
  246. package/src/api/firmware/progressThrottle.ts +0 -44
  247. package/src/protocols/protocol-v2/lockedError.ts +0 -10
  248. package/src/protocols/protocol-v2/unlockRetry.ts +0 -109
  249. package/src/types/api/firmwareUpdateCapabilities.ts +0 -9
  250. package/src/types/api/firmwareUpdatePlan.ts +0 -38
  251. package/src/types/api/firmwareUpdatePreparedPlan.ts +0 -53
@@ -14,6 +14,7 @@ export type {
14
14
  export type { CipheredKeyValue, CipheredKeyValueParams } from './cipherKeyValue';
15
15
 
16
16
  export type { DeviceChangePinParams } from './deviceChangePin';
17
+ export type { DeviceUnlockParams } from './deviceUnlock';
17
18
  export type { DeviceFlagsParams } from './deviceFlags';
18
19
  export type { DeviceRecoveryParams } from './deviceRecovery';
19
20
  export type { DeviceResetParams } from './deviceReset';
@@ -25,30 +26,12 @@ export type {
25
26
  DeviceUploadResourceResponse,
26
27
  } from './deviceUploadResource';
27
28
  export type {
28
- FirmwareArtifactReader,
29
- FirmwareArtifactReference,
30
- FirmwareUpdateHostBinding,
31
- FirmwareUpdateArtifactParams,
32
29
  FirmwareUpdateParams,
33
30
  FirmwareUpdateBinaryParams,
34
31
  FirmwareUpdateV3Params,
35
32
  FirmwareUpdateV4Params,
36
33
  FirmwareUpdateV4Target,
37
34
  } from './firmwareUpdate';
38
- export type {
39
- FirmwareUpdatePlan,
40
- FirmwareUpdatePlanArtifact,
41
- FirmwareUpdatePlanArtifactRole,
42
- FirmwareUpdatePlanForceTarget,
43
- FirmwareUpdatePlanTarget,
44
- } from './firmwareUpdatePlan';
45
- export type {
46
- FirmwareUpdatePreparedArtifact,
47
- FirmwareUpdatePreparedArtifactInput,
48
- FirmwareUpdatePreparedEntry,
49
- FirmwareUpdatePreparedPlan,
50
- } from './firmwareUpdatePreparedPlan';
51
- export type { FirmwareUpdateCapabilities } from './firmwareUpdateCapabilities';
52
35
  export type { AllFirmwareRelease } from './checkAllFirmwareRelease';
53
36
  export type {
54
37
  ProtocolV2FirmwareComponentRelease,
@@ -1,53 +1,14 @@
1
1
  import type { EFirmwareType } from '@onekeyfe/hd-shared';
2
2
  import type { PROTO } from '../../constants';
3
3
  import type { Params, Response } from '../params';
4
- import type { FirmwareUpdatePreparedPlan } from './firmwareUpdatePreparedPlan';
5
4
 
6
5
  type IUpdateType = 'firmware' | 'ble';
7
6
 
8
- export interface FirmwareArtifactReference {
9
- artifactRef: string;
10
- size: number;
11
- sha256: string;
12
- }
13
-
14
- export interface FirmwareArtifactReader {
15
- open(input: { artifactRef: string }): Promise<{
16
- readerId: string;
17
- size: number;
18
- }>;
19
- read(input: { readerId: string; offset: number; length: number }): Promise<{
20
- data: ArrayBuffer;
21
- bytesRead: number;
22
- eof: boolean;
23
- }>;
24
- close(input: { readerId: string }): Promise<void>;
25
- }
26
-
27
- export interface FirmwareUpdateHostBinding {
28
- artifactReader: FirmwareArtifactReader;
29
- }
30
-
31
7
  export interface FirmwareUpdateBinaryParams {
32
8
  binary: ArrayBuffer;
33
9
  updateType: IUpdateType;
34
10
  }
35
11
 
36
- export interface FirmwareUpdateArtifactParams {
37
- preparedPlan: FirmwareUpdatePreparedPlan;
38
- hostBindingGeneration: number;
39
- artifact: FirmwareArtifactReference;
40
- resourceArtifact?: FirmwareArtifactReference;
41
- resourceEntries?: Array<{
42
- entryName: string;
43
- artifact: FirmwareArtifactReference;
44
- }>;
45
- updateType: IUpdateType;
46
- forcedUpdateRes?: boolean;
47
- isUpdateBootloader?: boolean;
48
- firmwareType?: EFirmwareType;
49
- }
50
-
51
12
  export interface FirmwareUpdateParams {
52
13
  version?: number[];
53
14
  updateType: IUpdateType;
@@ -76,14 +37,8 @@ export declare function firmwareUpdateV2(
76
37
  connectId: string | undefined,
77
38
  params: Params<FirmwareUpdateBinaryParams & Platform>
78
39
  ): Response<PROTO.Success>;
79
- export declare function firmwareUpdateV2(
80
- connectId: string | undefined,
81
- params: Params<FirmwareUpdateArtifactParams & Platform>
82
- ): Response<PROTO.Success>;
83
40
 
84
41
  export interface FirmwareUpdateV3Params {
85
- preparedPlan?: FirmwareUpdatePreparedPlan;
86
- hostBindingGeneration?: number;
87
42
  bleVersion?: number[];
88
43
  bleBinary?: ArrayBuffer;
89
44
  chunkSize?: number;
@@ -100,17 +55,6 @@ export interface FirmwareUpdateV3Params {
100
55
  firmwareType?: EFirmwareType;
101
56
 
102
57
  platform: IPlatform;
103
-
104
- artifactReader?: FirmwareArtifactReader;
105
- artifacts?: {
106
- ble?: FirmwareArtifactReference;
107
- firmware?: FirmwareArtifactReference;
108
- bootloader?: FirmwareArtifactReference;
109
- resourceEntries?: Array<{
110
- entryName: string;
111
- artifact: FirmwareArtifactReference;
112
- }>;
113
- };
114
58
  }
115
59
 
116
60
  /**
@@ -119,6 +63,7 @@ export interface FirmwareUpdateV3Params {
119
63
  */
120
64
  export type FirmwareUpdateV4Target =
121
65
  | 'boot'
66
+ | 'boot_resources'
122
67
  | 'app_v1'
123
68
  | 'app_v2'
124
69
  | 'coprocessor'
@@ -129,19 +74,17 @@ export type FirmwareUpdateV4Target =
129
74
  | 'se04';
130
75
 
131
76
  export interface FirmwareUpdateV4Params {
132
- preparedPlan?: FirmwareUpdatePreparedPlan;
133
- hostBindingGeneration?: number;
134
77
  platform: IPlatform;
135
- expectedDeviceId?: string;
136
78
  chunkSize?: number;
137
79
  firmwareType?: EFirmwareType;
138
80
  targetsToUpdate?: FirmwareUpdateV4Target[];
139
- expectedTargetVersions?: Partial<Record<FirmwareUpdateV4Target, string>>;
140
81
 
141
82
  /** FW_MGMT_TARGET_ROMLOADER = 2; Pro2 cannot install it through firmwareUpdateV4. */
142
83
  romloaderBinary?: ArrayBuffer;
143
84
  /** FW_MGMT_TARGET_BOOTLOADER = 3 */
144
85
  bootloaderBinary?: ArrayBuffer;
86
+ /** FW_MGMT_TARGET_CRATE = 1; optional Pro2 startup resources. */
87
+ bootResourcesBinary?: ArrayBuffer;
145
88
  /** FW_MGMT_TARGET_APPLICATION_P1 = 4 */
146
89
  applicationP1Binary?: ArrayBuffer;
147
90
  /** FW_MGMT_TARGET_APPLICATION_P2 = 5 */
@@ -162,24 +105,8 @@ export interface FirmwareUpdateV4Params {
162
105
  binary: ArrayBuffer;
163
106
  devicePath: string;
164
107
  }>;
165
- artifactReader?: FirmwareArtifactReader;
166
- componentArtifacts?: Partial<
167
- Record<Exclude<FirmwareUpdateV4Target, 'resource'>, FirmwareArtifactReference>
168
- >;
169
- resourceBundleArtifacts?: Array<{
170
- name: string;
171
- artifact: FirmwareArtifactReference;
172
- }>;
173
108
  }
174
109
 
175
- export declare function registerFirmwareUpdateHostBinding(
176
- binding: FirmwareUpdateHostBinding
177
- ): number;
178
-
179
- export declare function unregisterFirmwareUpdateHostBinding(generation?: number): boolean;
180
-
181
- export declare function getFirmwareUpdateHostBindingGeneration(): number;
182
-
183
110
  export declare function firmwareUpdateV3(
184
111
  connectId: string | undefined,
185
112
  params: Params<FirmwareUpdateV3Params>
@@ -1,6 +1,7 @@
1
1
  import type {
2
2
  deviceGetOnboardingStatus,
3
3
  deviceReboot,
4
+ deviceUploadNft,
4
5
  deviceUploadWallpaper,
5
6
  testProtocolV2Ping,
6
7
  uploadPortfolio,
@@ -18,6 +19,7 @@ import type { checkBootloaderRelease } from './checkBootloaderRelease';
18
19
  import type { checkAllFirmwareRelease } from './checkAllFirmwareRelease';
19
20
  import type { checkFirmwareTypeAvailable } from './checkFirmwareTypeAvailable';
20
21
  import type { searchDevices } from './searchDevices';
22
+ import type { detectDeviceConnectProtocol } from './detectDeviceConnectProtocol';
21
23
  import type { getFeatures } from './getFeatures';
22
24
  import type { getDeviceState } from './getDeviceState';
23
25
  import type { getOnekeyFeatures } from './getOnekeyFeatures';
@@ -30,15 +32,7 @@ import type {
30
32
  firmwareUpdateV2,
31
33
  firmwareUpdateV3,
32
34
  firmwareUpdateV4,
33
- getFirmwareUpdateHostBindingGeneration,
34
- registerFirmwareUpdateHostBinding,
35
- unregisterFirmwareUpdateHostBinding,
36
35
  } from './firmwareUpdate';
37
- import type { getFirmwareUpdateCapabilities } from './firmwareUpdateCapabilities';
38
- import type {
39
- prepareFirmwareUpdatePlan,
40
- validateFirmwareUpdatePreparedPlan,
41
- } from './firmwareUpdatePreparedPlan';
42
36
  import type { promptWebDeviceAccess } from './promptWebDeviceAccess';
43
37
  import type { deviceReset } from './deviceReset';
44
38
  import type { deviceRecovery } from './deviceRecovery';
@@ -152,6 +146,7 @@ import type { benfenSignMessage } from './benfenSignMessage';
152
146
  import type { neoGetAddress } from './neoGetAddress';
153
147
  import type { neoSignTransaction } from './neoSignTransaction';
154
148
  import type { ConnectSettings } from '../settings';
149
+ import type { HardwareConnectProtocol } from '@onekeyfe/hd-shared';
155
150
 
156
151
  export * from './export';
157
152
  export type { DeviceStateScope, GetDeviceStateParams } from './getDeviceState';
@@ -176,6 +171,14 @@ export type CoreApi = {
176
171
  removeAllListeners: typeof removeAllListeners;
177
172
  dispose: () => void | Promise<void>;
178
173
  call: (params: any) => Promise<any>;
174
+ /**
175
+ * Bind a protocol that has already been verified for one transport endpoint.
176
+ * Every later SDK call for the same connectId uses it as a strict expectation.
177
+ */
178
+ setDeviceConnectProtocol: (
179
+ connectId: string,
180
+ connectProtocol: HardwareConnectProtocol | undefined
181
+ ) => void;
179
182
  uiResponse: typeof uiResponse;
180
183
  cancel: (connectId?: string) => void;
181
184
  updateSettings: typeof updateSettings;
@@ -203,6 +206,7 @@ export type CoreApi = {
203
206
  * Device function
204
207
  */
205
208
  searchDevices: typeof searchDevices;
209
+ detectDeviceConnectProtocol: typeof detectDeviceConnectProtocol;
206
210
  promptWebDeviceAccess: typeof promptWebDeviceAccess;
207
211
  getFeatures: typeof getFeatures;
208
212
  getDeviceState: typeof getDeviceState;
@@ -235,12 +239,6 @@ export type CoreApi = {
235
239
  firmwareUpdateV2: typeof firmwareUpdateV2;
236
240
  firmwareUpdateV3: typeof firmwareUpdateV3;
237
241
  firmwareUpdateV4: typeof firmwareUpdateV4;
238
- registerFirmwareUpdateHostBinding: typeof registerFirmwareUpdateHostBinding;
239
- unregisterFirmwareUpdateHostBinding: typeof unregisterFirmwareUpdateHostBinding;
240
- getFirmwareUpdateHostBindingGeneration: typeof getFirmwareUpdateHostBindingGeneration;
241
- getFirmwareUpdateCapabilities: typeof getFirmwareUpdateCapabilities;
242
- prepareFirmwareUpdatePlan: typeof prepareFirmwareUpdatePlan;
243
- validateFirmwareUpdatePreparedPlan: typeof validateFirmwareUpdatePreparedPlan;
244
242
  cipherKeyValue: typeof cipherKeyValue;
245
243
 
246
244
  /**
@@ -248,6 +246,7 @@ export type CoreApi = {
248
246
  */
249
247
  deviceReboot: typeof deviceReboot;
250
248
  deviceGetOnboardingStatus: typeof deviceGetOnboardingStatus;
249
+ deviceUploadNft: typeof deviceUploadNft;
251
250
  deviceUploadWallpaper: typeof deviceUploadWallpaper;
252
251
  uploadPortfolio: typeof uploadPortfolio;
253
252
 
@@ -5,6 +5,10 @@ import type {
5
5
  DeviceUploadWallpaperParams,
6
6
  DeviceUploadWallpaperResponse,
7
7
  } from '../../api/protocol-v2/DeviceUploadWallpaper';
8
+ import type {
9
+ DeviceUploadNftParams,
10
+ DeviceUploadNftResponse,
11
+ } from '../../api/protocol-v2/DeviceUploadNft';
8
12
 
9
13
  // Re-export implementation parameter types as the single source of truth.
10
14
  export type { DeviceRebootParams, RebootTypeInput } from '../../api/protocol-v2/helpers';
@@ -12,6 +16,10 @@ export type {
12
16
  DeviceUploadWallpaperParams,
13
17
  DeviceUploadWallpaperResponse,
14
18
  } from '../../api/protocol-v2/DeviceUploadWallpaper';
19
+ export type {
20
+ DeviceUploadNftParams,
21
+ DeviceUploadNftResponse,
22
+ } from '../../api/protocol-v2/DeviceUploadNft';
15
23
 
16
24
  // ── Shared response shapes (Protocol V2 file system) ────────────────────
17
25
 
@@ -52,6 +60,11 @@ export declare function deviceUploadWallpaper(
52
60
  params: CommonParams & DeviceUploadWallpaperParams
53
61
  ): Response<DeviceUploadWallpaperResponse>;
54
62
 
63
+ export declare function deviceUploadNft(
64
+ connectId: string,
65
+ params: CommonParams & DeviceUploadNftParams
66
+ ): Response<DeviceUploadNftResponse>;
67
+
55
68
  export declare function uploadPortfolio(
56
69
  connectId: string,
57
70
  params: {
@@ -210,7 +210,9 @@ export type DeviceStateStatus = {
210
210
  recoveryMode: boolean | null;
211
211
  passphraseProtection: boolean | null;
212
212
  pinProtection: boolean | null;
213
+ /** `attach_to_pin_enabled`:是否至少存在一个 Attach PIN 绑定。 */
213
214
  attachToPinEnabled: boolean | null;
215
+ /** `unlocked_by_attach_to_pin`:本次解锁是否由 Attach PIN 完成。 */
214
216
  unlockedAttachPin: boolean | null;
215
217
  };
216
218
 
@@ -321,6 +323,7 @@ export type NormalizedFeatures = {
321
323
  sdProtection: boolean | null;
322
324
  wipeCodeProtection: boolean | null;
323
325
  passphraseAlwaysOnDevice: boolean | null;
326
+ /** `attach_to_pin_enabled`:是否至少存在一个 Attach PIN 绑定。 */
324
327
  attachToPinEnabled?: boolean | null;
325
328
  safetyChecks: Enum_SafetyCheckLevel | null;
326
329
  autoLockDelayMs: number | null;
@@ -61,9 +61,15 @@ export interface CommonParams {
61
61
 
62
62
  /**
63
63
  * Strictly expected transport protocol. The SDK actively verifies this value and
64
- * rejects a mismatch. If omitted, a cached protocol only influences probe order.
64
+ * rejects a mismatch. After a successful probe, the cached protocol is also strict.
65
65
  */
66
66
  connectProtocol?: HardwareConnectProtocol;
67
+
68
+ /**
69
+ * Ignore a previously bound protocol for this call and actively detect the
70
+ * protocol again. Intended for the first verified connection or explicit recovery.
71
+ */
72
+ forceProtocolDetection?: boolean;
67
73
  }
68
74
 
69
75
  export type Params<T> = CommonParams & T & { bundle?: undefined };
@@ -31,8 +31,6 @@ export type ConnectSettings = {
31
31
  timestamp: number;
32
32
  isFrame?: boolean;
33
33
  preRelease?: boolean;
34
- firmwareManifestMode?: 'sdk-managed' | 'external-only';
35
- preloadedConfig?: RemoteConfigResponse;
36
34
  fetchConfig?: boolean;
37
35
  extension?: string;
38
36
  configFetcher?: (url: string) => Promise<RemoteConfigResponse | null>;
@@ -60,18 +58,55 @@ export type IProtocolV2FirmwareComponent = {
60
58
  fingerprint?: string;
61
59
  /** OKPP payload hash, used to detect same-version package changes. */
62
60
  payloadHash?: string;
63
- expectedSize?: number;
64
61
  version?: IVersionArray;
65
62
  };
66
63
 
64
+ export type IProtocolV2ResourceType =
65
+ | 'images'
66
+ | 'animation'
67
+ | 'wallpaper'
68
+ | 'translations'
69
+ | 'roobert'
70
+ | 'noto';
71
+
72
+ /** Pro2 RES package descriptor. Hashes identify content without a human-managed version. */
73
+ export type IProtocolV2Resource = {
74
+ type: IProtocolV2ResourceType;
75
+ url: string;
76
+ /** Complete okpkg file size in bytes. */
77
+ size: number;
78
+ /** SHA-256 of the complete okpkg file. */
79
+ fileHash: string;
80
+ /** SHA3-512 header_hash from the signed okpkg header. */
81
+ headerHash: string;
82
+ };
83
+
84
+ /** Optional Pro2 startup-resource CRATE installed by the bootloader updater. */
85
+ export type IProtocolV2BootResources = {
86
+ required: false;
87
+ target: 'CRATE';
88
+ url: string;
89
+ /** Complete CRATE file size in bytes. */
90
+ size: number;
91
+ /** SHA-256 of the complete CRATE file. */
92
+ fileHash: string;
93
+ /** SHA3-512 payload_hash from the signed CRATE header. */
94
+ payloadHash: string;
95
+ /** SHA3-512 header_hash from the signed CRATE header. */
96
+ headerHash: string;
97
+ };
98
+
99
+ export type IProtocolV2Resources = {
100
+ stable: IProtocolV2Resource[];
101
+ boot?: IProtocolV2BootResources;
102
+ };
103
+
67
104
  /** Pro2 RESC bundle okpkg descriptor for incremental FileWrite synchronization. */
68
105
  export type IProtocolV2ResourceBundle = {
69
106
  /** Bundle name, such as images, animation, translations, or fonts_roobert. */
70
107
  name: string;
71
108
  /** Download URL. */
72
109
  url: string;
73
- fingerprint?: string;
74
- expectedSize?: number;
75
110
  /** Device target path, such as vol0:/bundles/images/images.okpkg. */
76
111
  devicePath: string;
77
112
  /** okpkg payload_version used to skip matching content after FileRead. */
@@ -93,16 +128,10 @@ export type IFirmwareReleaseInfo = {
93
128
  firmwareType?: EFirmwareType;
94
129
  /** Firmware UI resource */
95
130
  resource?: string;
96
- resourceFingerprint?: string;
97
- resourceExpectedSize?: number;
98
131
  /** Firmware full UI resource */
99
132
  fullResource?: string;
100
- fullResourceFingerprint?: string;
101
- fullResourceExpectedSize?: number;
102
133
  fullResourceRange?: string[];
103
134
  bootloaderResource?: string;
104
- bootloaderFingerprint?: string;
105
- bootloaderExpectedSize?: number;
106
135
  bootloaderVersion?: IVersionArray;
107
136
  displayBootloaderVersion?: IVersionArray;
108
137
  bootloaderRelatedFirmwareVersion?: IVersionArray;
@@ -115,7 +144,6 @@ export type IFirmwareReleaseInfo = {
115
144
  [k in ILocale]: string;
116
145
  };
117
146
  fingerprint: string;
118
- expectedSize?: number;
119
147
  version: IVersionArray;
120
148
  changelog: {
121
149
  [k in ILocale]: string;
@@ -131,7 +159,6 @@ export type IBLEFirmwareReleaseInfo = {
131
159
  webUpdate: string;
132
160
  fingerprint: string;
133
161
  fingerprintWeb: string;
134
- expectedSize?: number;
135
162
  version: IVersionArray;
136
163
  changelog: {
137
164
  [k in ILocale]: string;
@@ -149,6 +176,8 @@ export type DeviceTypeMap = {
149
176
  'firmware-v8'?: IFirmwareReleaseInfo[];
150
177
  'firmware-btc-v8'?: IFirmwareReleaseInfo[];
151
178
  ble: IBLEFirmwareReleaseInfo[];
179
+ /** Independent Pro2 resource release configuration. */
180
+ resources?: IProtocolV2Resources;
152
181
  };
153
182
  };
154
183
 
@@ -37,12 +37,6 @@ export const resolveDeviceSerialNo = (features?: DeviceFeaturesInput): string =>
37
37
  );
38
38
  };
39
39
 
40
- export const resolveDeviceBootloaderMode = (features?: DeviceFeaturesInput): boolean => {
41
- if (!features) return false;
42
- const compatible = asCompatibleFeatures(features);
43
- return (compatible.bootloaderMode ?? compatible.bootloader_mode) === true;
44
- };
45
-
46
40
  export const resolveDeviceType = (features?: DeviceFeaturesInput): IDeviceType => {
47
41
  if (!features || typeof features !== 'object') {
48
42
  return EDeviceType.Unknown;
@@ -106,6 +106,8 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
106
106
  expectPassphraseState?: string;
107
107
  onlyMainPin?: boolean;
108
108
  initSession?: boolean;
109
+ deriveCardano?: boolean;
110
+ rejectAttachPinForMainWallet?: boolean;
109
111
  }
110
112
  ) => {
111
113
  if (device.isProtocolV2()) {
@@ -121,6 +123,8 @@ export const getPassphraseStateWithRefreshDeviceInfo = async (
121
123
  initSession: options?.initSession,
122
124
  expectedPassphraseState: options?.expectPassphraseState,
123
125
  onlyMainPin: options?.onlyMainPin,
126
+ deriveCardano: options?.deriveCardano,
127
+ rejectAttachPinForMainWallet: options?.rejectAttachPinForMainWallet,
124
128
  });
125
129
  }
126
130
 
@@ -185,6 +189,8 @@ export const getPassphraseState = async (
185
189
  expectPassphraseState?: string;
186
190
  onlyMainPin?: boolean;
187
191
  initSession?: boolean;
192
+ deriveCardano?: boolean;
193
+ rejectAttachPinForMainWallet?: boolean;
188
194
  }
189
195
  ): Promise<{
190
196
  passphraseState: string | undefined;
@@ -205,6 +211,8 @@ export const getPassphraseState = async (
205
211
  initSession: options?.initSession,
206
212
  expectedPassphraseState: options?.expectPassphraseState,
207
213
  onlyMainPin: options?.onlyMainPin,
214
+ deriveCardano: options?.deriveCardano,
215
+ rejectAttachPinForMainWallet: options?.rejectAttachPinForMainWallet,
208
216
  });
209
217
  }
210
218
 
@@ -4,6 +4,12 @@ import { EDeviceType } from '@onekeyfe/hd-shared';
4
4
  import { getDeviceType } from './deviceInfoUtils';
5
5
  import { getDeviceFirmwareVersion } from './deviceVersionUtils';
6
6
  import { PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH } from './pro2Wallpaper';
7
+ import {
8
+ PRO2_NFT_IMAGE_HEIGHT,
9
+ PRO2_NFT_IMAGE_WIDTH,
10
+ PRO2_NFT_THUMBNAIL_HEIGHT,
11
+ PRO2_NFT_THUMBNAIL_WIDTH,
12
+ } from './pro2Nft';
7
13
 
8
14
  import type { Features, IDeviceType } from '../types';
9
15
 
@@ -302,6 +308,31 @@ type SizeConfig = {
302
308
  radius?: number;
303
309
  };
304
310
 
311
+ export const getNftSize = ({
312
+ deviceType,
313
+ thumbnail,
314
+ }: {
315
+ deviceType: IDeviceType;
316
+ thumbnail?: boolean;
317
+ }): SizeConfig | undefined => {
318
+ const sizes: Partial<Record<IDeviceType, { full: SizeConfig; thumbnail: SizeConfig }>> = {
319
+ touch: {
320
+ full: { width: 480, height: 800 },
321
+ thumbnail: { width: 238, height: 238 },
322
+ },
323
+ pro: {
324
+ full: { width: 480, height: 800 },
325
+ thumbnail: { width: 226, height: 226, radius: 40 },
326
+ },
327
+ pro2: {
328
+ full: { width: PRO2_NFT_IMAGE_WIDTH, height: PRO2_NFT_IMAGE_HEIGHT },
329
+ thumbnail: { width: PRO2_NFT_THUMBNAIL_WIDTH, height: PRO2_NFT_THUMBNAIL_HEIGHT },
330
+ },
331
+ };
332
+
333
+ return sizes[deviceType]?.[thumbnail ? 'thumbnail' : 'full'];
334
+ };
335
+
305
336
  export const getHomeScreenSize = ({
306
337
  deviceType,
307
338
  homeScreenType,
@@ -312,12 +343,7 @@ export const getHomeScreenSize = ({
312
343
  thumbnail?: boolean;
313
344
  }) => {
314
345
  if (deviceType === EDeviceType.Pro2) {
315
- return thumbnail
316
- ? undefined
317
- : {
318
- width: PRO2_WALLPAPER_WIDTH,
319
- height: PRO2_WALLPAPER_HEIGHT,
320
- };
346
+ return thumbnail ? undefined : { width: PRO2_WALLPAPER_WIDTH, height: PRO2_WALLPAPER_HEIGHT };
321
347
  }
322
348
 
323
349
  const sizes: Partial<
@@ -54,7 +54,12 @@ export { getHDPath, getScriptType, getOutputScriptType } from '../api/helpers/pa
54
54
 
55
55
  export const isBleConnect = (env: string) => env === 'react-native' || env === 'lowlevel';
56
56
 
57
- export { getHomeScreenHex, getHomeScreenDefaultList, getHomeScreenSize } from './homescreen';
57
+ export {
58
+ getHomeScreenHex,
59
+ getHomeScreenDefaultList,
60
+ getHomeScreenSize,
61
+ getNftSize,
62
+ } from './homescreen';
58
63
  export { encodePro2Wallpaper, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH } from './pro2Wallpaper';
59
64
  export type { Pro2WallpaperColorFormat } from './pro2Wallpaper';
60
65