@onekeyfe/hd-core 1.2.0-alpha.90 → 1.2.0-alpha.92

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.
@@ -6609,12 +6609,13 @@ describe('Protocol V2 firmware update targets', () => {
6609
6609
  payload: {
6610
6610
  method: 'firmwareUpdateV4',
6611
6611
  platform: 'web',
6612
- targetsToUpdate: ['app_v1', 'resource'],
6612
+ targetsToUpdate: ['app_v1'],
6613
6613
  applicationP1Binary,
6614
6614
  resourceArchiveBinary,
6615
6615
  },
6616
6616
  });
6617
6617
  method.init();
6618
+ expect((method as any).params.targetsToUpdate).toEqual(['app_v1', 'resource']);
6618
6619
  (method as any).captureProtocolV2PhysicalIdentity = jest.fn().mockResolvedValue(undefined);
6619
6620
  (method as any).postTipMessage = jest.fn();
6620
6621
  (method as any).device = stubDevice({
@@ -6782,39 +6783,86 @@ describe('Protocol V2 firmware update targets', () => {
6782
6783
  expect((method as any).params.targetsToUpdate).toEqual(['resource']);
6783
6784
  });
6784
6785
 
6785
- test.each([
6786
- {
6787
- resourceFiles: [
6788
- {
6789
- binary: new Uint8Array([1]).buffer,
6790
- devicePath: 'vol0:/bundles/images/images.okpkg',
6791
- },
6792
- ],
6793
- },
6794
- {
6795
- resourceBundleArtifacts: [
6796
- {
6797
- name: 'images.okpkg',
6798
- artifact: {
6799
- artifactRef: 'legacy-resource',
6800
- size: 1,
6801
- sha256: '1'.repeat(64),
6786
+ test('keeps the deprecated resourceFiles path as a validated local compatibility flow', () => {
6787
+ const binary = new Uint8Array([1]).buffer;
6788
+ const method = new FirmwareUpdateV4({
6789
+ id: 1,
6790
+ payload: {
6791
+ method: 'firmwareUpdateV4',
6792
+ platform: 'web',
6793
+ resourceFiles: [
6794
+ {
6795
+ binary,
6796
+ devicePath: 'vol0:/bundles/images/images.okpkg',
6797
+ size: binary.byteLength,
6798
+ fileHash: bytesToHex(sha256(new Uint8Array(binary))),
6802
6799
  },
6803
- },
6804
- ],
6805
- },
6806
- ])('returns an explicit migration error for legacy resource inputs', legacyInput => {
6800
+ ],
6801
+ },
6802
+ });
6803
+
6804
+ expect(() => method.init()).not.toThrow();
6805
+ expect((method as any).params.targetsToUpdate).toEqual(['resource']);
6806
+ expect((method as any).prepareLegacyProtocolV2ResourceFiles()).toEqual([
6807
+ {
6808
+ name: 'images.okpkg',
6809
+ binary,
6810
+ devicePath: 'vol0:/bundles/images/images.okpkg',
6811
+ },
6812
+ ]);
6813
+ });
6814
+
6815
+ test('keeps resourceBundleArtifacts for genuinely non-prepared legacy calls', async () => {
6816
+ const artifact = {
6817
+ artifactRef: 'legacy-resource',
6818
+ size: 1,
6819
+ sha256: '1'.repeat(64),
6820
+ };
6807
6821
  const method = new FirmwareUpdateV4({
6808
6822
  id: 1,
6809
6823
  payload: {
6810
6824
  method: 'firmwareUpdateV4',
6811
6825
  platform: 'web',
6812
- targetsToUpdate: ['resource'],
6813
- ...legacyInput,
6826
+ resourceBundleArtifacts: [
6827
+ {
6828
+ name: 'images',
6829
+ artifact,
6830
+ },
6831
+ ],
6814
6832
  },
6815
6833
  });
6834
+ method.init();
6835
+ const source = { size: 1 };
6836
+ (method as any).openProtocolV2PreparedSource = jest.fn().mockResolvedValue(source);
6837
+ const releaseSpy = jest.spyOn(DataManager, 'getFirmwareLatestRelease').mockReturnValue({
6838
+ resourceBundles: [
6839
+ {
6840
+ name: 'images',
6841
+ devicePath: 'vol0:/bundles/images/images.okpkg',
6842
+ version: '1.0.0',
6843
+ payloadHash: '2'.repeat(128),
6844
+ headerHash: '3'.repeat(128),
6845
+ },
6846
+ ],
6847
+ } as any);
6816
6848
 
6817
- expect(() => method.init()).toThrow('provide a complete signed resource ZIP');
6849
+ try {
6850
+ await expect(
6851
+ (method as any).prepareLegacyProtocolV2ResourceBundleSources(
6852
+ EFirmwareType.Universal,
6853
+ {} as Features
6854
+ )
6855
+ ).resolves.toEqual([
6856
+ expect.objectContaining({
6857
+ name: 'images',
6858
+ source,
6859
+ devicePath: 'vol0:/bundles/images/images.okpkg',
6860
+ }),
6861
+ ]);
6862
+ expect((method as any).params.targetsToUpdate).toEqual(['resource']);
6863
+ } finally {
6864
+ releaseSpy.mockRestore();
6865
+ }
6818
6866
  });
6819
6867
 
6820
6868
  test('keeps the legacy componentArtifacts and artifactReader path without a prepared Plan', async () => {
@@ -7768,7 +7816,7 @@ describe('Protocol V2 firmware reconnect identity', () => {
7768
7816
  );
7769
7817
  });
7770
7818
 
7771
- test('rejects firmware update startup when DeviceInfo has no physical serial', async () => {
7819
+ test('uses the connection route when DeviceInfo has no physical serial', async () => {
7772
7820
  const method = new FirmwareUpdateV4({
7773
7821
  id: 1,
7774
7822
  payload: { method: 'firmwareUpdateV4' },
@@ -7778,12 +7826,14 @@ describe('Protocol V2 firmware reconnect identity', () => {
7778
7826
  message: { protocol_version: 1, hw: {} },
7779
7827
  });
7780
7828
  (method as any).device = stubDevice({
7829
+ originalDescriptor: { path: '' },
7830
+ getConnectId: () => '000000000000',
7781
7831
  getCommands: () => ({ typedCall }),
7782
7832
  });
7783
7833
 
7784
- await expect((method as any).captureProtocolV2PhysicalIdentity()).rejects.toMatchObject({
7785
- errorCode: HardwareErrorCode.DeviceNotFound,
7786
- });
7834
+ await expect((method as any).captureProtocolV2PhysicalIdentity()).resolves.toBeUndefined();
7835
+ expect((method as any).protocolV2ExpectedSerialNumber).toBeUndefined();
7836
+ expect((method as any).protocolV2ExpectedPath).toBe('000000000000');
7787
7837
  });
7788
7838
 
7789
7839
  test('uses the BLE read limit when reading an existing firmware bundle header', async () => {
@@ -28,6 +28,8 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
28
28
  private prepareProtocolV2LocalMemoryHost;
29
29
  private prepareProtocolV2LocalResourceArchive;
30
30
  private prepareProtocolV2ResourceSources;
31
+ private prepareLegacyProtocolV2ResourceBundleSources;
32
+ private prepareLegacyProtocolV2ResourceFiles;
31
33
  private prepareProtocolV2ResourceArchiveSources;
32
34
  private runProtocolV2PreparedArtifacts;
33
35
  private validateExpectedTargetVersions;
@@ -36,6 +38,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
36
38
  private getProtocolV2RequestedTargets;
37
39
  private getProtocolV2DeviceFeatures;
38
40
  private getProtocolV2SerialNumber;
41
+ private getProtocolV2ConnectionRoute;
39
42
  private assertProtocolV2DeviceInfoIdentity;
40
43
  private getProtocolV2DeviceInfoTimeout;
41
44
  private requestProtocolV2PhysicalIdentity;
@@ -1 +1 @@
1
- {"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkD,MAAM,qBAAqB,CAAC;AAyBlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAkC/E,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,6BAA6B,CAAC;AA2ErC,wBAAgB,wCAAwC,CACtD,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAC5C,MAAM,EAAE,sBAAsB,QAgB/B;AAoWD,eAAO,MAAM,oCAAoC,WACvC,WAAW,GAAG,UAAU,eACnB,MAAM,GAAG,SAAS,YAKhC,CAAC;AAEF,eAAO,MAAM,iCAAiC,0BACrB,MAAM,uBACR,MAAM,iBACZ,MAAM,eACR,MAAM,SAsBpB,CAAC;AAUF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,wBAAwB,CAAC,sBAAsB,CAAC;IAC5F,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,OAAO,CAAC,sBAAsB,CAAC,CAAS;IAExC,qBAAqB;IAIrB,OAAO,CAAC,yBAAyB,CAA4B;IAE7D,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,iCAAiC,CAA6B;IAEtE,OAAO,CAAC,6BAA6B,CAAC,CAAW;IAEjD,OAAO,CAAC,6BAA6B,CAAS;IAE9C,IAAI;IAmKJ,OAAO,CAAC,8BAA8B;IAwBhC,GAAG;;;;;YAKK,aAAa;YAsHb,4BAA4B;YAkB5B,0BAA0B;YAY1B,8BAA8B;YAK9B,+BAA+B;YAqG/B,gCAAgC;YA8HhC,qCAAqC;YA0IrC,gCAAgC;YAgBhC,uCAAuC;YAwHvC,8BAA8B;IAsB5C,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,kCAAkC;IAc1C,OAAO,CAAC,gCAAgC;IAsDxC,OAAO,CAAC,6BAA6B;YAsBvB,2BAA2B;IAWzC,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,8BAA8B;YAMxB,iCAAiC;YAOjC,iCAAiC;YAkBjC,iCAAiC;IAM/C,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,mCAAmC;IAe3C,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,wBAAwB;YAkBlB,iCAAiC;YAuDjC,+BAA+B;IA6E7C,OAAO,CAAC,6BAA6B;YAMvB,8BAA8B;YA+C9B,kCAAkC;IA+BhD,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,yBAAyB;IAc3B,6BAA6B;YAgCrB,+BAA+B;IAkD7C,OAAO,CAAC,6BAA6B;IAkCrC,OAAO,CAAC,8BAA8B;YA8CxB,uBAAuB;YAiCvB,6BAA6B;YAa7B,uBAAuB;YA6CvB,8BAA8B;YA8D9B,6BAA6B;IAuE3C,OAAO,CAAC,mCAAmC;YAI7B,0BAA0B;IAaxC,OAAO,CAAC,4BAA4B;IAyGpC,OAAO,CAAC,6BAA6B;YAcvB,uCAAuC;YA0JvC,gCAAgC;YAehC,yBAAyB;YAQzB,8BAA8B;IAQ5C,OAAO,CAAC,0BAA0B;YAkBpB,mCAAmC;YAWnC,qCAAqC;YAgDrC,yBAAyB;YA8DzB,8BAA8B;IAU5C,OAAO,CAAC,kCAAkC;YAQ5B,cAAc;YAuCd,6BAA6B;YAW7B,0BAA0B;YAS1B,6BAA6B;YAmB7B,gBAAgB;IAiB9B,OAAO,CAAC,qBAAqB;CAM9B"}
1
+ {"version":3,"file":"FirmwareUpdateV4.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdateV4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkD,MAAM,qBAAqB,CAAC;AA0BlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAkC/E,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,6BAA6B,CAAC;AA2ErC,wBAAgB,wCAAwC,CACtD,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,EAC5C,MAAM,EAAE,sBAAsB,QAgB/B;AAoWD,eAAO,MAAM,oCAAoC,WACvC,WAAW,GAAG,UAAU,eACnB,MAAM,GAAG,SAAS,YAKhC,CAAC;AAEF,eAAO,MAAM,iCAAiC,0BACrB,MAAM,uBACR,MAAM,iBACZ,MAAM,eACR,MAAM,SAsBpB,CAAC;AAUF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,wBAAwB,CAAC,sBAAsB,CAAC;IAC5F,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,OAAO,CAAC,sBAAsB,CAAC,CAAS;IAExC,qBAAqB;IAIrB,OAAO,CAAC,yBAAyB,CAA4B;IAE7D,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,iCAAiC,CAA6B;IAEtE,OAAO,CAAC,6BAA6B,CAAC,CAAW;IAEjD,OAAO,CAAC,6BAA6B,CAAS;IAE9C,IAAI;IAkLJ,OAAO,CAAC,8BAA8B;IAwBhC,GAAG;;;;;YAKK,aAAa;YAsJb,4BAA4B;YAkB5B,0BAA0B;YAY1B,8BAA8B;YAK9B,+BAA+B;YAqG/B,gCAAgC;YA8HhC,qCAAqC;YA0IrC,gCAAgC;YAsBhC,4CAA4C;IA6D1D,OAAO,CAAC,oCAAoC;YAkD9B,uCAAuC;YAwHvC,8BAA8B;IAsB5C,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,kCAAkC;IAc1C,OAAO,CAAC,gCAAgC;IAsDxC,OAAO,CAAC,6BAA6B;YAsBvB,2BAA2B;IAWzC,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,8BAA8B;YAMxB,iCAAiC;YAOjC,iCAAiC;YAkBjC,iCAAiC;IAM/C,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,mCAAmC;IAe3C,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,wBAAwB;YAkBlB,iCAAiC;YAuDjC,+BAA+B;IA6E7C,OAAO,CAAC,6BAA6B;YAMvB,8BAA8B;YA+C9B,kCAAkC;IA+BhD,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,yBAAyB;IAc3B,6BAA6B;YAgCrB,+BAA+B;IAkD7C,OAAO,CAAC,6BAA6B;IAkCrC,OAAO,CAAC,8BAA8B;YA8CxB,uBAAuB;YAiCvB,6BAA6B;YAa7B,uBAAuB;YA6CvB,8BAA8B;YA8D9B,6BAA6B;IAuE3C,OAAO,CAAC,mCAAmC;YAI7B,0BAA0B;IAaxC,OAAO,CAAC,4BAA4B;IAyGpC,OAAO,CAAC,6BAA6B;YAcvB,uCAAuC;YA0JvC,gCAAgC;YAehC,yBAAyB;YAQzB,8BAA8B;IAQ5C,OAAO,CAAC,0BAA0B;YAkBpB,mCAAmC;YAWnC,qCAAqC;YAgDrC,yBAAyB;YA8DzB,8BAA8B;IAU5C,OAAO,CAAC,kCAAkC;YAQ5B,cAAc;YAuCd,6BAA6B;YAW7B,0BAA0B;YAS1B,6BAA6B;YAmB7B,gBAAgB;IAiB9B,OAAO,CAAC,qBAAqB;CAM9B"}
@@ -35,6 +35,7 @@ export declare const getBinary: ({ features, updateType, version, isUpdateBootlo
35
35
  upgradeType?: string | undefined;
36
36
  components?: Record<string, import("../../types").IProtocolV2FirmwareComponent> | undefined;
37
37
  installOrder?: string[] | undefined;
38
+ resourceBundles?: import("../../types").IProtocolV2ResourceBundle[] | undefined;
38
39
  bootloaderChangelog?: {
39
40
  "zh-CN": string;
40
41
  "en-US": string;
@@ -1 +1 @@
1
- {"version":3,"file":"getBinary.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/getBinary.ts"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,UAAU,cAAe,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,eAAO,MAAM,SAAS,yFAOnB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsChB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAe,MAAM;;EAWrD,CAAC;AAEF,eAAO,MAAM,OAAO,0DAA2D,YAAY,kEAe1F,CAAC"}
1
+ {"version":3,"file":"getBinary.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/getBinary.ts"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,UAAU,cAAe,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,eAAO,MAAM,SAAS,yFAOnB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsChB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAe,MAAM;;EAWrD,CAAC;AAEF,eAAO,MAAM,OAAO,0DAA2D,YAAY,kEAe1F,CAAC"}
package/dist/index.d.ts CHANGED
@@ -219,6 +219,17 @@ type IProtocolV2ResourceSource = {
219
219
  type IProtocolV2Resources = {
220
220
  source: IProtocolV2ResourceSource;
221
221
  };
222
+ /** @deprecated Legacy per-bundle resource descriptor retained for published V4 callers. */
223
+ type IProtocolV2ResourceBundle = {
224
+ name: string;
225
+ url: string;
226
+ fingerprint?: string;
227
+ expectedSize?: number;
228
+ devicePath: string;
229
+ version?: IVersionArray;
230
+ payloadHash?: string;
231
+ headerHash?: string;
232
+ };
222
233
  type IProtocolV2ResourceManifestFile = {
223
234
  archive_path: string;
224
235
  original_name: string;
@@ -274,6 +285,8 @@ type IFirmwareReleaseInfo = {
274
285
  upgradeType?: 'payload-package-set' | string;
275
286
  components?: Record<string, IProtocolV2FirmwareComponent>;
276
287
  installOrder?: string[];
288
+ /** @deprecated New Protocol V2 releases use the independent signed resource ZIP. */
289
+ resourceBundles?: IProtocolV2ResourceBundle[];
277
290
  bootloaderChangelog?: {
278
291
  [k in ILocale]: string;
279
292
  };
@@ -4915,4 +4928,4 @@ declare const HardwareSdk: ({ init, call, dispose, eventEmitter, uiResponse, can
4915
4928
  declare const HardwareSDKLowLevel: ({ init, call, dispose, eventEmitter, addHardwareGlobalEventListener, uiResponse, cancel, updateSettings, switchTransport, }: LowLevelInjectApi) => LowLevelCoreApi;
4916
4929
  declare const HardwareTopLevelSdk: () => CoreApi;
4917
4930
 
4918
- export { AccountAddress, AccountAddresses, AlephiumAddress, AlephiumGetAddressParams, AlephiumSignMessageParams, AlephiumSignTransactionParams, AlephiumSignedTx, AlgoAddress, AlgoGetAddressParams, AlgoSignTransactionParams, AlgoSignedTx, AllFirmwareRelease, AllNetworkAddressParams, AllNetworkGetAddressParams, AptosAddress, AptosGetAddressParams, AptosGetPublicKeyParams, AptosMessageSignature, AptosPublicKey, AptosSignInMessageParams, AptosSignInMessageSignature, AptosSignMessageParams, AptosSignTransactionParams, AptosSignedTx, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, BenfenAddress, BenfenGetAddressParams, BenfenGetPublicKeyParams, BenfenPublicKey, BenfenSignMessageParams, BenfenSignTransactionParams, BenfenSignedTx, BleReleaseInfoEvent, BleReleaseInfoPayload, BridgeReleaseCheckResult, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CardanoAddress, CardanoGetAddressMethodParams, CardanoGetAddressParams, CardanoSignMessageMethodParams, CardanoSignMessageParams, CardanoSignTransaction, CardanoSignedTxData, CipheredKeyValue, CipheredKeyValueParams, ClearSessionCacheParams, ClearSessionCachePayload, CommonParams, ConfluxAddress, ConfluxGetAddressParams, ConfluxSignMessageCIP23Params, ConfluxSignMessageParams, ConfluxSignTransactionParams, ConfluxSignedTx, ConfluxTransaction, ConnectSettings, Core, CoreApi, CoreMessage, CosmosAddress, CosmosGetAddressParams, CosmosGetPublicKeyParams, CosmosPublicKey, CosmosSignTransactionParams, CosmosSignedTx, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DEVICE_SETTINGS_SHARED_FIELDS, DEVICE_SETTINGS_V1_ONLY_FIELDS, DEVICE_SETTINGS_V2_ONLY_FIELDS, DataManager, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceConnnectRequest, DeviceDisconnnectRequest, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFeaturesMode, DeviceFeaturesPayload, DeviceFeaturesProtocol, DeviceFeaturesRaw, DeviceFeaturesRawPatch, DeviceFeaturesVerify, DeviceFirmwareRange, DeviceFlagsParams, DeviceModelToTypes, DeviceProgress, DeviceRecoveryParams, DeviceResetParams, DeviceSendFeatures, DeviceSendState, DeviceSendSupportFeatures, DeviceSettingsCapabilities, DeviceSettingsDurationOption, DeviceSettingsField, DeviceSettingsParams, DeviceSettingsProtocol, DeviceSettingsValueOption, DeviceState, DeviceStateEvent, DeviceStateIdentity, DeviceStateMode, DeviceStatePatch, DeviceStateProtocol, DeviceStateScope, DeviceStateSection, DeviceStateSecurityElement, DeviceStateSecurityElements, DeviceStateSecurityElementsPatch, DeviceStateSettings, DeviceStateStatus, DeviceStateUpdateSource, DeviceStateVersions, DeviceStatus, DeviceSupportFeatures, DeviceSupportFeaturesPayload, DeviceTypeMap, DeviceTypeToModels, DeviceUnlockParams, DeviceUploadResourceParams, DeviceUploadResourceResponse, DeviceVerifyParams, DeviceVerifySignature, DnxAddress, DnxGetAddressParams, DnxSignTransactionParams, DnxSignature, DnxTxKey, EOneKeyDeviceMode, EVMAccessList, EVMAddress, EVMAuthorization, EVMAuthorizationSignature, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMTransactionEIP7702, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, FIRMWARE, FIRMWARE_EVENT, Features, FilecoinAddress, FilecoinGetAddressParams, FilecoinSignTransactionParams, FilecoinSignedTx, FirmwareArtifactReader, FirmwareArtifactReference, FirmwareEvent, FirmwareMemoryArtifact, FirmwareMemoryArtifactEntry, FirmwareMessage, FirmwareProcessing, FirmwareProgress, FirmwareRange, FirmwareRelease, FirmwareReleaseCheckResult, FirmwareTip, FirmwareUpdateArtifactParams, FirmwareUpdateBinaryParams, FirmwareUpdateCapabilities, FirmwareUpdateHostBinding, FirmwareUpdateParams, FirmwareUpdatePlan, FirmwareUpdatePlanArtifact, FirmwareUpdatePlanArtifactRole, FirmwareUpdatePlanForceTarget, FirmwareUpdatePlanTarget, FirmwareUpdatePreparedArtifact, FirmwareUpdatePreparedArtifactInput, FirmwareUpdatePreparedEntry, FirmwareUpdatePreparedPlan, FirmwareUpdateTipMessage, FirmwareUpdateV3Params, FirmwareUpdateV4MemoryHost, FirmwareUpdateV4Params, FirmwareUpdateV4Target, GetDeviceStateParams, GetPassphraseStateParams, HardwareSDKLowLevel, HardwareTopLevelSdk, HardwareUiInteractionMeta, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareField, IFirmwareReleaseInfo, IFirmwareUpdateProgressType, IFirmwareUpdateTipMessage, IFrameBridge, IFrameCallMessage, IFrameCallback, IFrameCallbackMessage, IFrameCancelMessage, IFrameEvent, IFrameEventMessage, IFrameInit, IFrameSwitchTransport, IFrameSwitchTransportMessage, ILocale, IProtocolV2FirmwareComponent, IProtocolV2FirmwareComponentTarget, IProtocolV2ResourceManifest, IProtocolV2ResourceManifestFile, IProtocolV2ResourceSource, IProtocolV2Resources, ITransportStatus, IVersionArray, IVersionRange, KaspaAddress, KaspaGetAddressParams, KaspaSignInputParams, KaspaSignOutputParams, KaspaSignTransactionParams, KaspaSignature, KaspaStreamingSignInputParams, KaspaStreamingSignOutputParams, KnownDevice, LOG, LOG_EVENT, LogBlockEvent, LogEvent, LogEventMessage, LogOutput, LoggerNames, LowLevelCoreApi, LowLevelInjectApi, MajorVersion, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, NearAddress, NearGetAddressParams, NearSignTransactionParams, NervosAddress, NervosGetAddressParams, NervosSignTransactionParams, NervosSignedTx, NexaAddress, NexaGetAddressParams, NexaSignInputParams, NexaSignOutputParams, NexaSignTransactionParams, NexaSignature, NormalizedFeatures, OnekeyFeatures, OpenWalletSessionMode, OpenWalletSessionModeValue, OpenWalletSessionParams, OpenWalletSessionPayload, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH, PROTOCOL_V2_NEVER_TIMEOUT_MS, Params, PassphraseRequestPayload, PolkadotAddress, PolkadotGetAddressParams, PolkadotSignTransactionParams, PolkadotSignedTx, PostMessageEvent, PreviousAddressResult, Pro2WallpaperColorFormat, ProtocolV2ComponentReleaseInfo, ProtocolV2FirmwareComponentRelease, ProtocolV2FirmwareComponentReleaseStatus, ProtocolV2FirmwareReleaseStatus, ProtocolV2UiCompletion, ProtocolV2UiEventMetadata, ProtocolV2UiEventSource, RESPONSE_EVENT, RefTransaction, ReleaseInfo, ReleaseInfoEvent, ReleaseInfoPayload, RemoteConfigResponse, RequestContext, Response, ScdoAddress, ScdoGetAddressParams, ScdoSignMessageParams, ScdoSignTransactionParams, ScdoSignedTx, SdkTracingContext, SearchDevice, SignedTransaction, SolSignMessageParams, SolSignMessageResponse, SolSignOffchainMessageParams, SolSignOffchainMessageResponse, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, StrictFeatures, Success, SuiAddress, SuiGetAddressParams, SuiGetPublicKeyParams, SuiPublicKey, SuiSignMessageParams, SuiSignTransactionParams, SuiSignedTx, SupportFeatureType, SupportFeatures, TestProtocolV2PingParams, TonAddress, TonGetAddressParams, TonSignDataParams, TonSignMessageParams, TonSignProofParams, TopLevelInjectApi, TransactionOptions, TransportReleaseStatus, TronAddress, TronDelegateResourceContract, TronFreezeBalanceV2Contract, TronGetAddressParams, TronSignMessageParams, TronSignTransactionParams, TronTransaction, TronTransactionContract, TronTransferContract, TronTriggerSmartContract, TronUnDelegateResourceContract, TronUnfreezeBalanceV2Contract, TronWithdrawBalanceContract, TronWithdrawExpireUnfreezeContract, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestFirmwareProgressing, UiRequestPassphrase, UiRequestPassphraseOnDevice, UiRequestSelectDeviceForSwitchFirmwareWebDevice, UiRequestSelectDeviceInBootloaderForWebDevice, UiRequestWindowClose, UiRequestWithoutPayload, UiResponseCorrelation, UiResponseCorrelationFields, UiResponseEvent, UiResponseMessage, UiResponsePassphrase, UiResponsePin, UiResponseSelectDeviceForSwitchFirmwareWebDevice, UiResponseSelectDeviceInBootloaderForWebDevice, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, checkNeedUpdateBootForClassicAndMini, checkNeedUpdateBootForTouch, cleanupCallback, cleanupSdkInstance, completeRequestContext, corsValidator, createDeviceMessage, createErrorMessage, createFirmwareMessage, createIFrameMessage, createLogMessage, createRequestContext, createResponseMessage, createSdkTracingContext, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, encodePro2Wallpaper, executeCallback, formatLogMethodLabel, formatRequestContext, generateInstanceId, generateSdkInstanceId, getActiveRequestsByDeviceInstance, getAutoLockOptions, getAutoShutDownOptions, getDeviceBLEFirmwareVersion, getDeviceBleName, getDeviceBoardloaderVersion, getDeviceBootloaderVersion, getDeviceFirmwareVersion, getDeviceLabel, getDeviceSerialNo, getDeviceSettingsCapabilities, getDeviceType, getDeviceTypeByBleName, getDeviceUUID, getEnv, getFirmwareType, getFirmwareUpdateField, getFirmwareUpdateFieldArray, getFirmwareUpdateHostBindingGeneration, getHDPath, getHomeScreenDefaultList, getHomeScreenHex, getHomeScreenSize, getLanguageConfig, getLog, getLogBlockLabel, getLogger, getMethodSupportedProtocols, getMethodVersionRange, getNftSize, getOutputScriptType, getSDKVersion, getSafeLogPayload, getScriptType, getTimeStamp, httpRequest, init$1 as initCore, isBleConnect, isValidVersionArray, isValidVersionString, normalizeSafetyCheckLevel, normalizeVersionArray, parseConnectSettings, parseMessage, parseProtocolV2ResourceManifest, patchFeatures, preloadSessionCache, prepareFirmwareUpdateV4MemoryHost, projectFeatures as projectDeviceStateFeatures, registerFirmwareUpdateHostBinding, safeThrowError, selectProtocolV2ResourceManifestFiles, setLoggerPostMessage, supportInputPinOnSoftware, switchTransport, transportEnv, unregisterFirmwareUpdateHostBinding, updateRequestContext, versionCompare, versionSplit, wait, whitelist, whitelistExtension };
4931
+ export { AccountAddress, AccountAddresses, AlephiumAddress, AlephiumGetAddressParams, AlephiumSignMessageParams, AlephiumSignTransactionParams, AlephiumSignedTx, AlgoAddress, AlgoGetAddressParams, AlgoSignTransactionParams, AlgoSignedTx, AllFirmwareRelease, AllNetworkAddressParams, AllNetworkGetAddressParams, AptosAddress, AptosGetAddressParams, AptosGetPublicKeyParams, AptosMessageSignature, AptosPublicKey, AptosSignInMessageParams, AptosSignInMessageSignature, AptosSignMessageParams, AptosSignTransactionParams, AptosSignedTx, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, BenfenAddress, BenfenGetAddressParams, BenfenGetPublicKeyParams, BenfenPublicKey, BenfenSignMessageParams, BenfenSignTransactionParams, BenfenSignedTx, BleReleaseInfoEvent, BleReleaseInfoPayload, BridgeReleaseCheckResult, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CardanoAddress, CardanoGetAddressMethodParams, CardanoGetAddressParams, CardanoSignMessageMethodParams, CardanoSignMessageParams, CardanoSignTransaction, CardanoSignedTxData, CipheredKeyValue, CipheredKeyValueParams, ClearSessionCacheParams, ClearSessionCachePayload, CommonParams, ConfluxAddress, ConfluxGetAddressParams, ConfluxSignMessageCIP23Params, ConfluxSignMessageParams, ConfluxSignTransactionParams, ConfluxSignedTx, ConfluxTransaction, ConnectSettings, Core, CoreApi, CoreMessage, CosmosAddress, CosmosGetAddressParams, CosmosGetPublicKeyParams, CosmosPublicKey, CosmosSignTransactionParams, CosmosSignedTx, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DEVICE_SETTINGS_SHARED_FIELDS, DEVICE_SETTINGS_V1_ONLY_FIELDS, DEVICE_SETTINGS_V2_ONLY_FIELDS, DataManager, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceConnnectRequest, DeviceDisconnnectRequest, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFeaturesMode, DeviceFeaturesPayload, DeviceFeaturesProtocol, DeviceFeaturesRaw, DeviceFeaturesRawPatch, DeviceFeaturesVerify, DeviceFirmwareRange, DeviceFlagsParams, DeviceModelToTypes, DeviceProgress, DeviceRecoveryParams, DeviceResetParams, DeviceSendFeatures, DeviceSendState, DeviceSendSupportFeatures, DeviceSettingsCapabilities, DeviceSettingsDurationOption, DeviceSettingsField, DeviceSettingsParams, DeviceSettingsProtocol, DeviceSettingsValueOption, DeviceState, DeviceStateEvent, DeviceStateIdentity, DeviceStateMode, DeviceStatePatch, DeviceStateProtocol, DeviceStateScope, DeviceStateSection, DeviceStateSecurityElement, DeviceStateSecurityElements, DeviceStateSecurityElementsPatch, DeviceStateSettings, DeviceStateStatus, DeviceStateUpdateSource, DeviceStateVersions, DeviceStatus, DeviceSupportFeatures, DeviceSupportFeaturesPayload, DeviceTypeMap, DeviceTypeToModels, DeviceUnlockParams, DeviceUploadResourceParams, DeviceUploadResourceResponse, DeviceVerifyParams, DeviceVerifySignature, DnxAddress, DnxGetAddressParams, DnxSignTransactionParams, DnxSignature, DnxTxKey, EOneKeyDeviceMode, EVMAccessList, EVMAddress, EVMAuthorization, EVMAuthorizationSignature, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMTransactionEIP7702, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, FIRMWARE, FIRMWARE_EVENT, Features, FilecoinAddress, FilecoinGetAddressParams, FilecoinSignTransactionParams, FilecoinSignedTx, FirmwareArtifactReader, FirmwareArtifactReference, FirmwareEvent, FirmwareMemoryArtifact, FirmwareMemoryArtifactEntry, FirmwareMessage, FirmwareProcessing, FirmwareProgress, FirmwareRange, FirmwareRelease, FirmwareReleaseCheckResult, FirmwareTip, FirmwareUpdateArtifactParams, FirmwareUpdateBinaryParams, FirmwareUpdateCapabilities, FirmwareUpdateHostBinding, FirmwareUpdateParams, FirmwareUpdatePlan, FirmwareUpdatePlanArtifact, FirmwareUpdatePlanArtifactRole, FirmwareUpdatePlanForceTarget, FirmwareUpdatePlanTarget, FirmwareUpdatePreparedArtifact, FirmwareUpdatePreparedArtifactInput, FirmwareUpdatePreparedEntry, FirmwareUpdatePreparedPlan, FirmwareUpdateTipMessage, FirmwareUpdateV3Params, FirmwareUpdateV4MemoryHost, FirmwareUpdateV4Params, FirmwareUpdateV4Target, GetDeviceStateParams, GetPassphraseStateParams, HardwareSDKLowLevel, HardwareTopLevelSdk, HardwareUiInteractionMeta, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareField, IFirmwareReleaseInfo, IFirmwareUpdateProgressType, IFirmwareUpdateTipMessage, IFrameBridge, IFrameCallMessage, IFrameCallback, IFrameCallbackMessage, IFrameCancelMessage, IFrameEvent, IFrameEventMessage, IFrameInit, IFrameSwitchTransport, IFrameSwitchTransportMessage, ILocale, IProtocolV2FirmwareComponent, IProtocolV2FirmwareComponentTarget, IProtocolV2ResourceBundle, IProtocolV2ResourceManifest, IProtocolV2ResourceManifestFile, IProtocolV2ResourceSource, IProtocolV2Resources, ITransportStatus, IVersionArray, IVersionRange, KaspaAddress, KaspaGetAddressParams, KaspaSignInputParams, KaspaSignOutputParams, KaspaSignTransactionParams, KaspaSignature, KaspaStreamingSignInputParams, KaspaStreamingSignOutputParams, KnownDevice, LOG, LOG_EVENT, LogBlockEvent, LogEvent, LogEventMessage, LogOutput, LoggerNames, LowLevelCoreApi, LowLevelInjectApi, MajorVersion, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, NearAddress, NearGetAddressParams, NearSignTransactionParams, NervosAddress, NervosGetAddressParams, NervosSignTransactionParams, NervosSignedTx, NexaAddress, NexaGetAddressParams, NexaSignInputParams, NexaSignOutputParams, NexaSignTransactionParams, NexaSignature, NormalizedFeatures, OnekeyFeatures, OpenWalletSessionMode, OpenWalletSessionModeValue, OpenWalletSessionParams, OpenWalletSessionPayload, PRO2_WALLPAPER_HEIGHT, PRO2_WALLPAPER_WIDTH, PROTOCOL_V2_NEVER_TIMEOUT_MS, Params, PassphraseRequestPayload, PolkadotAddress, PolkadotGetAddressParams, PolkadotSignTransactionParams, PolkadotSignedTx, PostMessageEvent, PreviousAddressResult, Pro2WallpaperColorFormat, ProtocolV2ComponentReleaseInfo, ProtocolV2FirmwareComponentRelease, ProtocolV2FirmwareComponentReleaseStatus, ProtocolV2FirmwareReleaseStatus, ProtocolV2UiCompletion, ProtocolV2UiEventMetadata, ProtocolV2UiEventSource, RESPONSE_EVENT, RefTransaction, ReleaseInfo, ReleaseInfoEvent, ReleaseInfoPayload, RemoteConfigResponse, RequestContext, Response, ScdoAddress, ScdoGetAddressParams, ScdoSignMessageParams, ScdoSignTransactionParams, ScdoSignedTx, SdkTracingContext, SearchDevice, SignedTransaction, SolSignMessageParams, SolSignMessageResponse, SolSignOffchainMessageParams, SolSignOffchainMessageResponse, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, StrictFeatures, Success, SuiAddress, SuiGetAddressParams, SuiGetPublicKeyParams, SuiPublicKey, SuiSignMessageParams, SuiSignTransactionParams, SuiSignedTx, SupportFeatureType, SupportFeatures, TestProtocolV2PingParams, TonAddress, TonGetAddressParams, TonSignDataParams, TonSignMessageParams, TonSignProofParams, TopLevelInjectApi, TransactionOptions, TransportReleaseStatus, TronAddress, TronDelegateResourceContract, TronFreezeBalanceV2Contract, TronGetAddressParams, TronSignMessageParams, TronSignTransactionParams, TronTransaction, TronTransactionContract, TronTransferContract, TronTriggerSmartContract, TronUnDelegateResourceContract, TronUnfreezeBalanceV2Contract, TronWithdrawBalanceContract, TronWithdrawExpireUnfreezeContract, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestFirmwareProgressing, UiRequestPassphrase, UiRequestPassphraseOnDevice, UiRequestSelectDeviceForSwitchFirmwareWebDevice, UiRequestSelectDeviceInBootloaderForWebDevice, UiRequestWindowClose, UiRequestWithoutPayload, UiResponseCorrelation, UiResponseCorrelationFields, UiResponseEvent, UiResponseMessage, UiResponsePassphrase, UiResponsePin, UiResponseSelectDeviceForSwitchFirmwareWebDevice, UiResponseSelectDeviceInBootloaderForWebDevice, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, checkNeedUpdateBootForClassicAndMini, checkNeedUpdateBootForTouch, cleanupCallback, cleanupSdkInstance, completeRequestContext, corsValidator, createDeviceMessage, createErrorMessage, createFirmwareMessage, createIFrameMessage, createLogMessage, createRequestContext, createResponseMessage, createSdkTracingContext, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, encodePro2Wallpaper, executeCallback, formatLogMethodLabel, formatRequestContext, generateInstanceId, generateSdkInstanceId, getActiveRequestsByDeviceInstance, getAutoLockOptions, getAutoShutDownOptions, getDeviceBLEFirmwareVersion, getDeviceBleName, getDeviceBoardloaderVersion, getDeviceBootloaderVersion, getDeviceFirmwareVersion, getDeviceLabel, getDeviceSerialNo, getDeviceSettingsCapabilities, getDeviceType, getDeviceTypeByBleName, getDeviceUUID, getEnv, getFirmwareType, getFirmwareUpdateField, getFirmwareUpdateFieldArray, getFirmwareUpdateHostBindingGeneration, getHDPath, getHomeScreenDefaultList, getHomeScreenHex, getHomeScreenSize, getLanguageConfig, getLog, getLogBlockLabel, getLogger, getMethodSupportedProtocols, getMethodVersionRange, getNftSize, getOutputScriptType, getSDKVersion, getSafeLogPayload, getScriptType, getTimeStamp, httpRequest, init$1 as initCore, isBleConnect, isValidVersionArray, isValidVersionString, normalizeSafetyCheckLevel, normalizeVersionArray, parseConnectSettings, parseMessage, parseProtocolV2ResourceManifest, patchFeatures, preloadSessionCache, prepareFirmwareUpdateV4MemoryHost, projectFeatures as projectDeviceStateFeatures, registerFirmwareUpdateHostBinding, safeThrowError, selectProtocolV2ResourceManifestFiles, setLoggerPostMessage, supportInputPinOnSoftware, switchTransport, transportEnv, unregisterFirmwareUpdateHostBinding, updateRequestContext, versionCompare, versionSplit, wait, whitelist, whitelistExtension };
package/dist/index.js CHANGED
@@ -51637,7 +51637,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51637
51637
  return ['V2'];
51638
51638
  }
51639
51639
  init() {
51640
- var _a, _b, _c, _d, _e;
51640
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
51641
51641
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.NOT_INITIALIZE];
51642
51642
  this.requireDeviceMode = [];
51643
51643
  this.unlockPolicy = 'unlock-before-run';
@@ -51680,9 +51680,6 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51680
51680
  (payload.expectedDeviceId.length === 0 || payload.expectedDeviceId.length > 160)) {
51681
51681
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 expected device identity is invalid');
51682
51682
  }
51683
- if (((_a = payload.resourceFiles) === null || _a === void 0 ? void 0 : _a.length) || ((_b = payload.resourceBundleArtifacts) === null || _b === void 0 ? void 0 : _b.length)) {
51684
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 resourceFiles and resourceBundleArtifacts are deprecated; provide a complete signed resource ZIP through resourceArchiveBinary or preparedPlan');
51685
- }
51686
51683
  const preparedPlan = payload.preparedPlan
51687
51684
  ? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
51688
51685
  : undefined;
@@ -51697,9 +51694,10 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51697
51694
  payload.se03Binary,
51698
51695
  payload.se04Binary,
51699
51696
  payload.resourceArchiveBinary,
51697
+ (_a = payload.resourceFiles) === null || _a === void 0 ? void 0 : _a.length,
51700
51698
  ].some(Boolean);
51701
- if (preparedPlan && hasLocalArtifacts) {
51702
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Prepared firmware plans cannot be combined with local firmware or resource binaries');
51699
+ if (preparedPlan && (hasLocalArtifacts || ((_b = payload.resourceBundleArtifacts) === null || _b === void 0 ? void 0 : _b.length))) {
51700
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Prepared firmware plans cannot be combined with legacy or local firmware inputs');
51703
51701
  }
51704
51702
  const hostBinding = payload.hostBindingGeneration !== undefined
51705
51703
  ? resolveFirmwareUpdateHostBinding(payload.hostBindingGeneration, preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.preparedPlanDigest)
@@ -51739,6 +51737,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51739
51737
  }
51740
51738
  return result;
51741
51739
  }, {});
51740
+ const localTargetsToUpdate = (_c = payload.targetsToUpdate) === null || _c === void 0 ? void 0 : _c.map((target) => target === 'boot_resources' ? 'resource' : target);
51741
+ if ((payload.resourceArchiveBinary ||
51742
+ ((_d = payload.resourceFiles) === null || _d === void 0 ? void 0 : _d.length) ||
51743
+ ((_e = payload.resourceBundleArtifacts) === null || _e === void 0 ? void 0 : _e.length)) &&
51744
+ localTargetsToUpdate &&
51745
+ !localTargetsToUpdate.includes('resource')) {
51746
+ localTargetsToUpdate.push('resource');
51747
+ }
51748
+ const resolvedLocalTargetsToUpdate = localTargetsToUpdate !== null && localTargetsToUpdate !== void 0 ? localTargetsToUpdate : (payload.resourceArchiveBinary ||
51749
+ ((_f = payload.resourceFiles) === null || _f === void 0 ? void 0 : _f.length) ||
51750
+ ((_g = payload.resourceBundleArtifacts) === null || _g === void 0 ? void 0 : _g.length)
51751
+ ? ['resource']
51752
+ : undefined);
51742
51753
  this.params = {
51743
51754
  preparedPlan,
51744
51755
  chunkSize: payload.chunkSize,
@@ -51753,17 +51764,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51753
51764
  se03Binary: payload.se03Binary,
51754
51765
  se04Binary: payload.se04Binary,
51755
51766
  resourceArchiveBinary: payload.resourceArchiveBinary,
51756
- firmwareType: (_c = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.firmwareType) !== null && _c !== void 0 ? _c : payload.firmwareType,
51767
+ resourceFiles: payload.resourceFiles,
51768
+ firmwareType: (_h = preparedPlan === null || preparedPlan === void 0 ? void 0 : preparedPlan.firmwareType) !== null && _h !== void 0 ? _h : payload.firmwareType,
51757
51769
  targetsToUpdate: preparedPlan
51758
51770
  ? [...preparedPlan.targetsToUpdate]
51759
- : (_d = payload.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.map((target) => target === 'boot_resources' ? 'resource' : target),
51771
+ : resolvedLocalTargetsToUpdate,
51760
51772
  expectedTargetVersions: preparedPlan
51761
51773
  ? preparedExpectedTargetVersions
51762
51774
  : payload.expectedTargetVersions,
51763
51775
  platform: payload.platform,
51764
51776
  expectedDeviceId: payload.expectedDeviceId,
51765
- artifactReader: (_e = hostBinding === null || hostBinding === void 0 ? void 0 : hostBinding.artifactReader) !== null && _e !== void 0 ? _e : payload.artifactReader,
51777
+ artifactReader: (_j = hostBinding === null || hostBinding === void 0 ? void 0 : hostBinding.artifactReader) !== null && _j !== void 0 ? _j : payload.artifactReader,
51766
51778
  componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
51779
+ resourceBundleArtifacts: preparedPlan ? undefined : payload.resourceBundleArtifacts,
51767
51780
  };
51768
51781
  }
51769
51782
  getProtocolV2FirmwareChunkSize(direction, filePath) {
@@ -51794,7 +51807,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51794
51807
  });
51795
51808
  }
51796
51809
  runProtocolV2() {
51797
- var _a, _b, _c, _d, _e, _f;
51810
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
51798
51811
  return __awaiter(this, void 0, void 0, function* () {
51799
51812
  yield this.captureProtocolV2PhysicalIdentity();
51800
51813
  const deviceFeatures = yield this.getProtocolV2DeviceFeatures();
@@ -51806,9 +51819,29 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51806
51819
  const deviceFirmwareType = getFirmwareType(deviceFeatures);
51807
51820
  const firmwareType = (_a = this.params.firmwareType) !== null && _a !== void 0 ? _a : deviceFirmwareType;
51808
51821
  this.validateExpectedTargetVersions();
51822
+ if (!this.params.preparedPlan && ((_b = this.params.resourceFiles) === null || _b === void 0 ? void 0 : _b.length)) {
51823
+ if (this.params.resourceArchiveBinary || ((_c = this.params.resourceBundleArtifacts) === null || _c === void 0 ? void 0 : _c.length)) {
51824
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Legacy resourceFiles cannot be combined with another Protocol V2 resource input');
51825
+ }
51826
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
51827
+ const installItems = this.buildProtocolV2InstallItems({
51828
+ bootloaderBinary: this.prepareBootloaderBinary(),
51829
+ fwBinaryMap: this.collectExplicitTargetBinaries(),
51830
+ });
51831
+ const missingFirmwareTarget = this.getMissingProtocolV2FirmwareTargets(installItems)[0];
51832
+ if (missingFirmwareTarget) {
51833
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 legacy local update has no binary for requested target ${missingFirmwareTarget}`, {
51834
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
51835
+ artifactName: missingFirmwareTarget,
51836
+ });
51837
+ }
51838
+ const resourceBundles = this.prepareLegacyProtocolV2ResourceFiles();
51839
+ this.postTipMessage(exports.FirmwareUpdateTipMessage.FinishDownloadFirmware);
51840
+ return this.executeProtocolV2Update({ installItems, resourceBundles });
51841
+ }
51809
51842
  if (!this.params.preparedPlan &&
51810
51843
  this.params.resourceArchiveBinary &&
51811
- ((_b = this.params.targetsToUpdate) === null || _b === void 0 ? void 0 : _b.includes('resource'))) {
51844
+ ((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.includes('resource'))) {
51812
51845
  const localMemoryHost = yield this.prepareProtocolV2LocalMemoryHost({
51813
51846
  features: deviceFeatures,
51814
51847
  firmwareType,
@@ -51820,11 +51853,13 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51820
51853
  localMemoryHost.release();
51821
51854
  }
51822
51855
  }
51823
- const hasPreparedComponentArtifacts = Object.values((_c = this.params.componentArtifacts) !== null && _c !== void 0 ? _c : {}).some(Boolean);
51824
- if (this.params.preparedPlan || hasPreparedComponentArtifacts) {
51856
+ const hasPreparedComponentArtifacts = Object.values((_e = this.params.componentArtifacts) !== null && _e !== void 0 ? _e : {}).some(Boolean);
51857
+ if (this.params.preparedPlan ||
51858
+ hasPreparedComponentArtifacts ||
51859
+ ((_f = this.params.resourceBundleArtifacts) === null || _f === void 0 ? void 0 : _f.length)) {
51825
51860
  return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
51826
51861
  }
51827
- const wantsResources = !!((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.includes('resource'));
51862
+ const wantsResources = !!((_g = this.params.targetsToUpdate) === null || _g === void 0 ? void 0 : _g.includes('resource'));
51828
51863
  let fwBinaryMap = [];
51829
51864
  let bootloaderBinary = null;
51830
51865
  let installItems;
@@ -51837,7 +51872,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51837
51872
  fwBinaryMap,
51838
51873
  });
51839
51874
  const missingFirmwareTargets = this.getMissingProtocolV2FirmwareTargets(explicitInstallItems);
51840
- const needsRemoteFirmware = ((_e = this.params.targetsToUpdate) === null || _e === void 0 ? void 0 : _e.length)
51875
+ const needsRemoteFirmware = ((_h = this.params.targetsToUpdate) === null || _h === void 0 ? void 0 : _h.length)
51841
51876
  ? missingFirmwareTargets.length > 0
51842
51877
  : explicitInstallItems.length === 0;
51843
51878
  if (wantsResources) {
@@ -51867,7 +51902,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
51867
51902
  if (typeof err === 'object' &&
51868
51903
  err !== null &&
51869
51904
  'params' in err &&
51870
- ((_f = err.params) === null || _f === void 0 ? void 0 : _f.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
51905
+ ((_j = err.params) === null || _j === void 0 ? void 0 : _j.firmwareUpdateCode) === 'FirmwareArtifactsNotPrepared') {
51871
51906
  throw err;
51872
51907
  }
51873
51908
  if (err instanceof hdShared.HardwareError && err.errorCode === hdShared.HardwareErrorCode.NetworkError) {
@@ -52148,8 +52183,8 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52148
52183
  return { binary, materializedEntries };
52149
52184
  });
52150
52185
  }
52151
- prepareProtocolV2ResourceSources() {
52152
- var _a, _b;
52186
+ prepareProtocolV2ResourceSources(firmwareType, features) {
52187
+ var _a, _b, _c;
52153
52188
  return __awaiter(this, void 0, void 0, function* () {
52154
52189
  const resourceRequested = (_b = (_a = this.params.targetsToUpdate) === null || _a === void 0 ? void 0 : _a.includes('resource')) !== null && _b !== void 0 ? _b : false;
52155
52190
  if (!resourceRequested) {
@@ -52159,9 +52194,83 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52159
52194
  if (archiveSources) {
52160
52195
  return archiveSources;
52161
52196
  }
52197
+ if (!this.params.preparedPlan && ((_c = this.params.resourceBundleArtifacts) === null || _c === void 0 ? void 0 : _c.length)) {
52198
+ return this.prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features);
52199
+ }
52162
52200
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 resource archive is not prepared', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
52163
52201
  });
52164
52202
  }
52203
+ prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features) {
52204
+ var _a, _b;
52205
+ return __awaiter(this, void 0, void 0, function* () {
52206
+ const artifacts = (_a = this.params.resourceBundleArtifacts) !== null && _a !== void 0 ? _a : [];
52207
+ if (artifacts.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
52208
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 legacy resource artifact count exceeds the allowed limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
52209
+ }
52210
+ const names = new Set();
52211
+ const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
52212
+ const descriptors = new Map(((_b = release === null || release === void 0 ? void 0 : release.resourceBundles) !== null && _b !== void 0 ? _b : []).map(descriptor => [descriptor.name, descriptor]));
52213
+ const sources = [];
52214
+ let totalSize = 0;
52215
+ for (const [index, item] of artifacts.entries()) {
52216
+ if (!item.name || names.has(item.name)) {
52217
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 legacy resource artifact name is invalid: ${item.name || index}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
52218
+ }
52219
+ names.add(item.name);
52220
+ const descriptor = descriptors.get(item.name);
52221
+ if (!descriptor) {
52222
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, `Protocol V2 release does not contain legacy resource bundle ${item.name}`, { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared', artifactName: item.name });
52223
+ }
52224
+ const source = yield this.openProtocolV2PreparedSource(item.artifact);
52225
+ totalSize += source.size;
52226
+ if (source.size <= 0 || totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
52227
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'Protocol V2 legacy resource artifacts exceed the allowed size limit', { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' });
52228
+ }
52229
+ const devicePath = validateProtocolV2FilesystemPath(descriptor.devicePath, `resourceBundleArtifacts[${index}].devicePath`);
52230
+ sources.push({
52231
+ name: descriptor.name,
52232
+ source,
52233
+ devicePath,
52234
+ version: descriptor.version,
52235
+ payloadHash: descriptor.payloadHash,
52236
+ headerHash: descriptor.headerHash,
52237
+ });
52238
+ }
52239
+ return sources;
52240
+ });
52241
+ }
52242
+ prepareLegacyProtocolV2ResourceFiles() {
52243
+ var _a;
52244
+ const files = (_a = this.params.resourceFiles) !== null && _a !== void 0 ? _a : [];
52245
+ if (files.length === 0 || files.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
52246
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'Protocol V2 legacy resource file count is invalid');
52247
+ }
52248
+ const paths = new Set();
52249
+ let totalSize = 0;
52250
+ return files.map((file, index) => {
52251
+ var _a;
52252
+ const devicePath = validateProtocolV2FilesystemPath(file.devicePath, `resourceFiles[${index}].devicePath`);
52253
+ if (paths.has(devicePath)) {
52254
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles contain duplicate devicePath: ${devicePath}`);
52255
+ }
52256
+ paths.add(devicePath);
52257
+ totalSize += file.binary.byteLength;
52258
+ if (file.binary.byteLength <= 0 ||
52259
+ totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES ||
52260
+ (file.size !== undefined && file.size !== file.binary.byteLength)) {
52261
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles[${index}] size is invalid`);
52262
+ }
52263
+ if (file.fileHash &&
52264
+ bytesToHex(sha256.sha256(new Uint8Array(file.binary))) !== file.fileHash.toLowerCase()) {
52265
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, `Protocol V2 resourceFiles[${index}] SHA-256 mismatch`);
52266
+ }
52267
+ return {
52268
+ name: (_a = devicePath.split('/').pop()) !== null && _a !== void 0 ? _a : devicePath,
52269
+ binary: file.binary,
52270
+ devicePath,
52271
+ };
52272
+ });
52273
+ }
52165
52274
  prepareProtocolV2ResourceArchiveSources() {
52166
52275
  var _a, _b, _c, _d;
52167
52276
  return __awaiter(this, void 0, void 0, function* () {
@@ -52238,7 +52347,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52238
52347
  try {
52239
52348
  this.postTipMessage(exports.FirmwareUpdateTipMessage.StartDownloadFirmware);
52240
52349
  const installSources = yield this.prepareProtocolV2InstallSources(firmwareType, features);
52241
- const resourceSources = yield this.prepareProtocolV2ResourceSources();
52350
+ const resourceSources = yield this.prepareProtocolV2ResourceSources(firmwareType, features);
52242
52351
  if (installSources.length === 0 && resourceSources.length === 0) {
52243
52352
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, 'No firmware to update');
52244
52353
  }
@@ -52367,8 +52476,16 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52367
52476
  const serialNumber = (_b = (_a = deviceInfo.hw) === null || _a === void 0 ? void 0 : _a.serial_no) === null || _b === void 0 ? void 0 : _b.trim();
52368
52477
  return serialNumber || undefined;
52369
52478
  }
52479
+ getProtocolV2ConnectionRoute() {
52480
+ var _a, _b, _c, _d, _e;
52481
+ const descriptor = this.device.originalDescriptor;
52482
+ return (((_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.path) === null || _a === void 0 ? void 0 : _a.trim()) ||
52483
+ ((_d = (_c = (_b = this.device).getConnectId) === null || _c === void 0 ? void 0 : _c.call(_b)) === null || _d === void 0 ? void 0 : _d.trim()) ||
52484
+ ((_e = descriptor === null || descriptor === void 0 ? void 0 : descriptor.id) === null || _e === void 0 ? void 0 : _e.trim()) ||
52485
+ undefined);
52486
+ }
52370
52487
  assertProtocolV2DeviceInfoIdentity(deviceInfo) {
52371
- assertProtocolV2ReconnectIdentity(this.protocolV2ExpectedSerialNumber, this.getProtocolV2SerialNumber(deviceInfo), this.protocolV2ExpectedPath, this.device.originalDescriptor.path);
52488
+ assertProtocolV2ReconnectIdentity(this.protocolV2ExpectedSerialNumber, this.getProtocolV2SerialNumber(deviceInfo), this.protocolV2ExpectedPath, this.getProtocolV2ConnectionRoute());
52372
52489
  }
52373
52490
  getProtocolV2DeviceInfoTimeout() {
52374
52491
  var _a;
@@ -52385,19 +52502,19 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
52385
52502
  });
52386
52503
  }
52387
52504
  captureProtocolV2PhysicalIdentity() {
52388
- var _a, _b, _c, _d, _e;
52505
+ var _a, _b, _c;
52389
52506
  return __awaiter(this, void 0, void 0, function* () {
52390
52507
  const deviceInfo = yield this.requestProtocolV2PhysicalIdentity();
52391
52508
  const serialNumber = this.getProtocolV2SerialNumber(deviceInfo);
52392
- const path = ((_b = (_a = this.device.originalDescriptor) === null || _a === void 0 ? void 0 : _a.path) === null || _b === void 0 ? void 0 : _b.trim()) || undefined;
52393
- if ((_c = this.params) === null || _c === void 0 ? void 0 : _c.preparedPlan) {
52509
+ const path = this.getProtocolV2ConnectionRoute();
52510
+ if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.preparedPlan) {
52394
52511
  assertFirmwareUpdatePreparedPlanDeviceIdentity({
52395
52512
  preparedPlan: this.params.preparedPlan,
52396
52513
  deviceIdentity: serialNumber,
52397
52514
  });
52398
52515
  }
52399
- else if ((_d = this.params) === null || _d === void 0 ? void 0 : _d.expectedDeviceId) {
52400
- assertProtocolV2ReconnectIdentity((_e = this.params) === null || _e === void 0 ? void 0 : _e.expectedDeviceId, serialNumber);
52516
+ else if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.expectedDeviceId) {
52517
+ assertProtocolV2ReconnectIdentity((_c = this.params) === null || _c === void 0 ? void 0 : _c.expectedDeviceId, serialNumber);
52401
52518
  }
52402
52519
  else {
52403
52520
  assertProtocolV2ReconnectIdentity(serialNumber, serialNumber, path, path);
@@ -43,6 +43,16 @@ export type IProtocolV2ResourceSource = {
43
43
  export type IProtocolV2Resources = {
44
44
  source: IProtocolV2ResourceSource;
45
45
  };
46
+ export type IProtocolV2ResourceBundle = {
47
+ name: string;
48
+ url: string;
49
+ fingerprint?: string;
50
+ expectedSize?: number;
51
+ devicePath: string;
52
+ version?: IVersionArray;
53
+ payloadHash?: string;
54
+ headerHash?: string;
55
+ };
46
56
  export type IProtocolV2ResourceManifestFile = {
47
57
  archive_path: string;
48
58
  original_name: string;
@@ -91,6 +101,7 @@ export type IFirmwareReleaseInfo = {
91
101
  upgradeType?: 'payload-package-set' | string;
92
102
  components?: Record<string, IProtocolV2FirmwareComponent>;
93
103
  installOrder?: string[];
104
+ resourceBundles?: IProtocolV2ResourceBundle[];
94
105
  bootloaderChangelog?: {
95
106
  [k in ILocale]: string;
96
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "1.2.0-alpha.90",
3
+ "version": "1.2.0-alpha.92",
4
4
  "description": "Core processes and APIs for communicating with OneKey hardware devices.",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-shared": "1.2.0-alpha.90",
29
- "@onekeyfe/hd-transport": "1.2.0-alpha.90",
28
+ "@onekeyfe/hd-shared": "1.2.0-alpha.92",
29
+ "@onekeyfe/hd-transport": "1.2.0-alpha.92",
30
30
  "axios": "1.15.2",
31
31
  "bignumber.js": "^9.0.2",
32
32
  "bytebuffer": "^5.0.1",
@@ -44,5 +44,5 @@
44
44
  "@types/w3c-web-usb": "^1.0.10",
45
45
  "@types/web-bluetooth": "^0.0.21"
46
46
  },
47
- "gitHead": "e8271225634f3058498af8beee06d9de705b6710"
47
+ "gitHead": "451cf48c34c896033474163f7eaf2b4bf1a0ec55"
48
48
  }
@@ -10,6 +10,7 @@ import {
10
10
  import { sha256 } from '@noble/hashes/sha256';
11
11
 
12
12
  import { FirmwareUpdateTipMessage, UI_REQUEST } from '../events/ui-request';
13
+ import { validateProtocolV2FilesystemPath } from './helpers/filesystemValidation';
13
14
  import { validateParams } from './helpers/paramsValidator';
14
15
  import {
15
16
  LoggerNames,
@@ -625,12 +626,6 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
625
626
  'Protocol V2 expected device identity is invalid'
626
627
  );
627
628
  }
628
- if (payload.resourceFiles?.length || payload.resourceBundleArtifacts?.length) {
629
- throw ERRORS.TypedError(
630
- HardwareErrorCode.CallMethodInvalidParameter,
631
- 'Protocol V2 resourceFiles and resourceBundleArtifacts are deprecated; provide a complete signed resource ZIP through resourceArchiveBinary or preparedPlan'
632
- );
633
- }
634
629
  const preparedPlan = payload.preparedPlan
635
630
  ? validateFirmwareUpdatePreparedPlan(payload.preparedPlan)
636
631
  : undefined;
@@ -645,11 +640,12 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
645
640
  payload.se03Binary,
646
641
  payload.se04Binary,
647
642
  payload.resourceArchiveBinary,
643
+ payload.resourceFiles?.length,
648
644
  ].some(Boolean);
649
- if (preparedPlan && hasLocalArtifacts) {
645
+ if (preparedPlan && (hasLocalArtifacts || payload.resourceBundleArtifacts?.length)) {
650
646
  throw ERRORS.TypedError(
651
647
  HardwareErrorCode.CallMethodInvalidParameter,
652
- 'Prepared firmware plans cannot be combined with local firmware or resource binaries'
648
+ 'Prepared firmware plans cannot be combined with legacy or local firmware inputs'
653
649
  );
654
650
  }
655
651
  const hostBinding =
@@ -706,6 +702,26 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
706
702
  }
707
703
  return result;
708
704
  }, {});
705
+ const localTargetsToUpdate = payload.targetsToUpdate?.map((target: FirmwareUpdateV4Target) =>
706
+ target === 'boot_resources' ? 'resource' : target
707
+ );
708
+ if (
709
+ (payload.resourceArchiveBinary ||
710
+ payload.resourceFiles?.length ||
711
+ payload.resourceBundleArtifacts?.length) &&
712
+ localTargetsToUpdate &&
713
+ !localTargetsToUpdate.includes('resource')
714
+ ) {
715
+ localTargetsToUpdate.push('resource');
716
+ }
717
+ // 本地 ZIP 本身就是明确的资源升级请求,不要求调用方重复声明 target。
718
+ const resolvedLocalTargetsToUpdate =
719
+ localTargetsToUpdate ??
720
+ (payload.resourceArchiveBinary ||
721
+ payload.resourceFiles?.length ||
722
+ payload.resourceBundleArtifacts?.length
723
+ ? ['resource']
724
+ : undefined);
709
725
 
710
726
  this.params = {
711
727
  preparedPlan,
@@ -721,12 +737,11 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
721
737
  se03Binary: payload.se03Binary,
722
738
  se04Binary: payload.se04Binary,
723
739
  resourceArchiveBinary: payload.resourceArchiveBinary,
740
+ resourceFiles: payload.resourceFiles,
724
741
  firmwareType: preparedPlan?.firmwareType ?? payload.firmwareType,
725
742
  targetsToUpdate: preparedPlan
726
743
  ? ([...preparedPlan.targetsToUpdate] as FirmwareUpdateV4Target[])
727
- : payload.targetsToUpdate?.map((target: FirmwareUpdateV4Target) =>
728
- target === 'boot_resources' ? 'resource' : target
729
- ),
744
+ : resolvedLocalTargetsToUpdate,
730
745
  expectedTargetVersions: preparedPlan
731
746
  ? preparedExpectedTargetVersions
732
747
  : payload.expectedTargetVersions,
@@ -734,6 +749,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
734
749
  expectedDeviceId: payload.expectedDeviceId,
735
750
  artifactReader: hostBinding?.artifactReader ?? payload.artifactReader,
736
751
  componentArtifacts: preparedPlan ? undefined : payload.componentArtifacts,
752
+ resourceBundleArtifacts: preparedPlan ? undefined : payload.resourceBundleArtifacts,
737
753
  };
738
754
  }
739
755
 
@@ -779,6 +795,34 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
779
795
  const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
780
796
  this.validateExpectedTargetVersions();
781
797
 
798
+ if (!this.params.preparedPlan && this.params.resourceFiles?.length) {
799
+ if (this.params.resourceArchiveBinary || this.params.resourceBundleArtifacts?.length) {
800
+ throw ERRORS.TypedError(
801
+ HardwareErrorCode.CallMethodInvalidParameter,
802
+ 'Legacy resourceFiles cannot be combined with another Protocol V2 resource input'
803
+ );
804
+ }
805
+ this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
806
+ const installItems = this.buildProtocolV2InstallItems({
807
+ bootloaderBinary: this.prepareBootloaderBinary(),
808
+ fwBinaryMap: this.collectExplicitTargetBinaries(),
809
+ });
810
+ const missingFirmwareTarget = this.getMissingProtocolV2FirmwareTargets(installItems)[0];
811
+ if (missingFirmwareTarget) {
812
+ throw ERRORS.TypedError(
813
+ HardwareErrorCode.RuntimeError,
814
+ `Protocol V2 legacy local update has no binary for requested target ${missingFirmwareTarget}`,
815
+ {
816
+ firmwareUpdateCode: 'FirmwareArtifactsNotPrepared',
817
+ artifactName: missingFirmwareTarget,
818
+ }
819
+ );
820
+ }
821
+ const resourceBundles = this.prepareLegacyProtocolV2ResourceFiles();
822
+ this.postTipMessage(FirmwareUpdateTipMessage.FinishDownloadFirmware);
823
+ return this.executeProtocolV2Update({ installItems, resourceBundles });
824
+ }
825
+
782
826
  if (
783
827
  !this.params.preparedPlan &&
784
828
  this.params.resourceArchiveBinary &&
@@ -798,7 +842,11 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
798
842
  const hasPreparedComponentArtifacts = Object.values(this.params.componentArtifacts ?? {}).some(
799
843
  Boolean
800
844
  );
801
- if (this.params.preparedPlan || hasPreparedComponentArtifacts) {
845
+ if (
846
+ this.params.preparedPlan ||
847
+ hasPreparedComponentArtifacts ||
848
+ this.params.resourceBundleArtifacts?.length
849
+ ) {
802
850
  return this.runProtocolV2PreparedArtifacts(deviceFeatures, firmwareType);
803
851
  }
804
852
  const wantsResources = !!this.params.targetsToUpdate?.includes('resource');
@@ -1284,7 +1332,10 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1284
1332
  return { binary, materializedEntries };
1285
1333
  }
1286
1334
 
1287
- private async prepareProtocolV2ResourceSources(): Promise<ProtocolV2ResourceBundleSource[]> {
1335
+ private async prepareProtocolV2ResourceSources(
1336
+ firmwareType: EFirmwareType,
1337
+ features: Features
1338
+ ): Promise<ProtocolV2ResourceBundleSource[]> {
1288
1339
  const resourceRequested = this.params.targetsToUpdate?.includes('resource') ?? false;
1289
1340
  if (!resourceRequested) {
1290
1341
  return [];
@@ -1293,6 +1344,9 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1293
1344
  if (archiveSources) {
1294
1345
  return archiveSources;
1295
1346
  }
1347
+ if (!this.params.preparedPlan && this.params.resourceBundleArtifacts?.length) {
1348
+ return this.prepareLegacyProtocolV2ResourceBundleSources(firmwareType, features);
1349
+ }
1296
1350
  throw ERRORS.TypedError(
1297
1351
  HardwareErrorCode.RuntimeError,
1298
1352
  'Protocol V2 resource archive is not prepared',
@@ -1300,6 +1354,117 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1300
1354
  );
1301
1355
  }
1302
1356
 
1357
+ private async prepareLegacyProtocolV2ResourceBundleSources(
1358
+ firmwareType: EFirmwareType,
1359
+ features: Features
1360
+ ): Promise<ProtocolV2ResourceBundleSource[]> {
1361
+ const artifacts = this.params.resourceBundleArtifacts ?? [];
1362
+ if (artifacts.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
1363
+ throw ERRORS.TypedError(
1364
+ HardwareErrorCode.RuntimeError,
1365
+ 'Protocol V2 legacy resource artifact count exceeds the allowed limit',
1366
+ { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
1367
+ );
1368
+ }
1369
+ const names = new Set<string>();
1370
+ const release = DataManager.getFirmwareLatestRelease(features, firmwareType);
1371
+ const descriptors = new Map(
1372
+ (release?.resourceBundles ?? []).map(descriptor => [descriptor.name, descriptor] as const)
1373
+ );
1374
+ const sources: ProtocolV2ResourceBundleSource[] = [];
1375
+ let totalSize = 0;
1376
+ for (const [index, item] of artifacts.entries()) {
1377
+ if (!item.name || names.has(item.name)) {
1378
+ throw ERRORS.TypedError(
1379
+ HardwareErrorCode.RuntimeError,
1380
+ `Protocol V2 legacy resource artifact name is invalid: ${item.name || index}`,
1381
+ { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
1382
+ );
1383
+ }
1384
+ names.add(item.name);
1385
+ const descriptor = descriptors.get(item.name);
1386
+ if (!descriptor) {
1387
+ throw ERRORS.TypedError(
1388
+ HardwareErrorCode.RuntimeError,
1389
+ `Protocol V2 release does not contain legacy resource bundle ${item.name}`,
1390
+ { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared', artifactName: item.name }
1391
+ );
1392
+ }
1393
+ const source = await this.openProtocolV2PreparedSource(item.artifact);
1394
+ totalSize += source.size;
1395
+ if (source.size <= 0 || totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES) {
1396
+ throw ERRORS.TypedError(
1397
+ HardwareErrorCode.RuntimeError,
1398
+ 'Protocol V2 legacy resource artifacts exceed the allowed size limit',
1399
+ { firmwareUpdateCode: 'FirmwareArtifactsNotPrepared' }
1400
+ );
1401
+ }
1402
+ const devicePath = validateProtocolV2FilesystemPath(
1403
+ descriptor.devicePath,
1404
+ `resourceBundleArtifacts[${index}].devicePath`
1405
+ );
1406
+ sources.push({
1407
+ name: descriptor.name,
1408
+ source,
1409
+ devicePath,
1410
+ version: descriptor.version,
1411
+ payloadHash: descriptor.payloadHash,
1412
+ headerHash: descriptor.headerHash,
1413
+ });
1414
+ }
1415
+ return sources;
1416
+ }
1417
+
1418
+ private prepareLegacyProtocolV2ResourceFiles(): ProtocolV2ResourceBundleBinary[] {
1419
+ const files = this.params.resourceFiles ?? [];
1420
+ if (files.length === 0 || files.length > PROTOCOL_V2_RESOURCE_FILE_MAX_COUNT) {
1421
+ throw ERRORS.TypedError(
1422
+ HardwareErrorCode.CallMethodInvalidParameter,
1423
+ 'Protocol V2 legacy resource file count is invalid'
1424
+ );
1425
+ }
1426
+ const paths = new Set<string>();
1427
+ let totalSize = 0;
1428
+ return files.map((file, index) => {
1429
+ const devicePath = validateProtocolV2FilesystemPath(
1430
+ file.devicePath,
1431
+ `resourceFiles[${index}].devicePath`
1432
+ );
1433
+ if (paths.has(devicePath)) {
1434
+ throw ERRORS.TypedError(
1435
+ HardwareErrorCode.CallMethodInvalidParameter,
1436
+ `Protocol V2 resourceFiles contain duplicate devicePath: ${devicePath}`
1437
+ );
1438
+ }
1439
+ paths.add(devicePath);
1440
+ totalSize += file.binary.byteLength;
1441
+ if (
1442
+ file.binary.byteLength <= 0 ||
1443
+ totalSize > PROTOCOL_V2_RESOURCE_TOTAL_MAX_BYTES ||
1444
+ (file.size !== undefined && file.size !== file.binary.byteLength)
1445
+ ) {
1446
+ throw ERRORS.TypedError(
1447
+ HardwareErrorCode.CallMethodInvalidParameter,
1448
+ `Protocol V2 resourceFiles[${index}] size is invalid`
1449
+ );
1450
+ }
1451
+ if (
1452
+ file.fileHash &&
1453
+ bytesToHex(sha256(new Uint8Array(file.binary))) !== file.fileHash.toLowerCase()
1454
+ ) {
1455
+ throw ERRORS.TypedError(
1456
+ HardwareErrorCode.CallMethodInvalidParameter,
1457
+ `Protocol V2 resourceFiles[${index}] SHA-256 mismatch`
1458
+ );
1459
+ }
1460
+ return {
1461
+ name: devicePath.split('/').pop() ?? devicePath,
1462
+ binary: file.binary,
1463
+ devicePath,
1464
+ };
1465
+ });
1466
+ }
1467
+
1303
1468
  private async prepareProtocolV2ResourceArchiveSources(): Promise<
1304
1469
  ProtocolV2ResourceBundleSource[] | undefined
1305
1470
  > {
@@ -1424,7 +1589,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1424
1589
  try {
1425
1590
  this.postTipMessage(FirmwareUpdateTipMessage.StartDownloadFirmware);
1426
1591
  const installSources = await this.prepareProtocolV2InstallSources(firmwareType, features);
1427
- const resourceSources = await this.prepareProtocolV2ResourceSources();
1592
+ const resourceSources = await this.prepareProtocolV2ResourceSources(firmwareType, features);
1428
1593
  if (installSources.length === 0 && resourceSources.length === 0) {
1429
1594
  throw ERRORS.TypedError(
1430
1595
  HardwareErrorCode.FirmwareUpdateDownloadFailed,
@@ -1574,12 +1739,22 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1574
1739
  return serialNumber || undefined;
1575
1740
  }
1576
1741
 
1742
+ private getProtocolV2ConnectionRoute() {
1743
+ const descriptor = this.device.originalDescriptor;
1744
+ return (
1745
+ descriptor?.path?.trim() ||
1746
+ this.device.getConnectId?.()?.trim() ||
1747
+ descriptor?.id?.trim() ||
1748
+ undefined
1749
+ );
1750
+ }
1751
+
1577
1752
  private assertProtocolV2DeviceInfoIdentity(deviceInfo: ProtocolV2DeviceInfo) {
1578
1753
  assertProtocolV2ReconnectIdentity(
1579
1754
  this.protocolV2ExpectedSerialNumber,
1580
1755
  this.getProtocolV2SerialNumber(deviceInfo),
1581
1756
  this.protocolV2ExpectedPath,
1582
- this.device.originalDescriptor.path
1757
+ this.getProtocolV2ConnectionRoute()
1583
1758
  );
1584
1759
  }
1585
1760
 
@@ -1599,7 +1774,7 @@ export default class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod<FirmwareU
1599
1774
  private async captureProtocolV2PhysicalIdentity() {
1600
1775
  const deviceInfo = await this.requestProtocolV2PhysicalIdentity();
1601
1776
  const serialNumber = this.getProtocolV2SerialNumber(deviceInfo);
1602
- const path = this.device.originalDescriptor?.path?.trim() || undefined;
1777
+ const path = this.getProtocolV2ConnectionRoute();
1603
1778
  if (this.params?.preparedPlan) {
1604
1779
  assertFirmwareUpdatePreparedPlanDeviceIdentity({
1605
1780
  preparedPlan: this.params.preparedPlan,
@@ -74,6 +74,18 @@ export type IProtocolV2Resources = {
74
74
  source: IProtocolV2ResourceSource;
75
75
  };
76
76
 
77
+ /** @deprecated Legacy per-bundle resource descriptor retained for published V4 callers. */
78
+ export type IProtocolV2ResourceBundle = {
79
+ name: string;
80
+ url: string;
81
+ fingerprint?: string;
82
+ expectedSize?: number;
83
+ devicePath: string;
84
+ version?: IVersionArray;
85
+ payloadHash?: string;
86
+ headerHash?: string;
87
+ };
88
+
77
89
  export type IProtocolV2ResourceManifestFile = {
78
90
  archive_path: string;
79
91
  original_name: string;
@@ -131,6 +143,8 @@ export type IFirmwareReleaseInfo = {
131
143
  upgradeType?: 'payload-package-set' | string;
132
144
  components?: Record<string, IProtocolV2FirmwareComponent>;
133
145
  installOrder?: string[];
146
+ /** @deprecated New Protocol V2 releases use the independent signed resource ZIP. */
147
+ resourceBundles?: IProtocolV2ResourceBundle[];
134
148
  bootloaderChangelog?: {
135
149
  [k in ILocale]: string;
136
150
  };