@onekeyfe/hd-core 0.0.10 → 0.1.0

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 (55) hide show
  1. package/dist/api/BaseMethod.d.ts +2 -0
  2. package/dist/api/BaseMethod.d.ts.map +1 -1
  3. package/dist/api/FirmwareUpdate.d.ts +14 -0
  4. package/dist/api/FirmwareUpdate.d.ts.map +1 -0
  5. package/dist/api/firmware/getBinary.d.ts +33 -0
  6. package/dist/api/firmware/getBinary.d.ts.map +1 -0
  7. package/dist/api/firmware/uploadFirmware.d.ts +8 -0
  8. package/dist/api/firmware/uploadFirmware.d.ts.map +1 -0
  9. package/dist/api/index.d.ts +1 -0
  10. package/dist/api/index.d.ts.map +1 -1
  11. package/dist/api/stellar/StellarSignTransaction.d.ts +1 -1
  12. package/dist/constants/errors.d.ts +1 -0
  13. package/dist/constants/errors.d.ts.map +1 -1
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/device/Device.d.ts +1 -0
  16. package/dist/device/Device.d.ts.map +1 -1
  17. package/dist/device/DeviceCommands.d.ts +1 -0
  18. package/dist/device/DeviceCommands.d.ts.map +1 -1
  19. package/dist/events/ui-request.d.ts +9 -1
  20. package/dist/events/ui-request.d.ts.map +1 -1
  21. package/dist/index.d.ts +67 -4
  22. package/dist/index.js +126 -3
  23. package/dist/inject.d.ts.map +1 -1
  24. package/dist/types/api/firmwareUpdate.d.ts +13 -0
  25. package/dist/types/api/firmwareUpdate.d.ts.map +1 -0
  26. package/dist/types/api/index.d.ts +2 -0
  27. package/dist/types/api/index.d.ts.map +1 -1
  28. package/dist/types/device.d.ts +38 -0
  29. package/dist/types/device.d.ts.map +1 -1
  30. package/dist/types/firmware.d.ts +2 -1
  31. package/dist/types/firmware.d.ts.map +1 -1
  32. package/dist/types/params.d.ts +3 -0
  33. package/dist/types/params.d.ts.map +1 -1
  34. package/dist/utils/assets.d.ts +1 -1
  35. package/dist/utils/assets.d.ts.map +1 -1
  36. package/dist/utils/networkUtils.d.ts.map +1 -1
  37. package/package.json +3 -3
  38. package/src/api/BaseMethod.ts +4 -0
  39. package/src/api/FirmwareUpdate.ts +78 -0
  40. package/src/api/firmware/getBinary.ts +46 -0
  41. package/src/api/firmware/uploadFirmware.ts +72 -0
  42. package/src/api/index.ts +2 -0
  43. package/src/constants/errors.ts +1 -0
  44. package/src/core/index.ts +1 -0
  45. package/src/device/Device.ts +4 -0
  46. package/src/device/DeviceCommands.ts +2 -0
  47. package/src/events/ui-request.ts +15 -1
  48. package/src/inject.ts +2 -0
  49. package/src/types/api/firmwareUpdate.ts +21 -0
  50. package/src/types/api/index.ts +3 -0
  51. package/src/types/device.ts +44 -0
  52. package/src/types/firmware.ts +2 -1
  53. package/src/types/params.ts +2 -0
  54. package/src/utils/assets.ts +1 -1
  55. package/src/utils/networkUtils.ts +3 -1
@@ -1,6 +1,7 @@
1
1
  import { Device } from '../device/Device';
2
2
  import DeviceConnector from '../device/DeviceConnector';
3
3
  import { DeviceFirmwareRange } from '../types';
4
+ import { CoreMessage } from '../events';
4
5
  export declare abstract class BaseMethod<Params = undefined> {
5
6
  responseID: number;
6
7
  device: Device;
@@ -13,6 +14,7 @@ export declare abstract class BaseMethod<Params = undefined> {
13
14
  useDevice: boolean;
14
15
  allowDeviceMode: string[];
15
16
  requireDeviceMode: string[];
17
+ postMessage: (message: CoreMessage) => void;
16
18
  constructor(message: {
17
19
  id?: number;
18
20
  payload: any;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMethod.d.ts","sourceRoot":"","sources":["../../src/api/BaseMethod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,8BAAsB,UAAU,CAAC,MAAM,GAAG,SAAS;IACjD,UAAU,EAAE,MAAM,CAAC;IAGnB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAOf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,IAAI,EAAE,MAAM,CAAC;IAKb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B,SAAS,CAAC,EAAE,eAAe,CAAC;IAK5B,SAAS,EAAE,OAAO,CAAC;IAKnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAK1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;gBAEhB,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE;IAWlD,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAE5B,eAAe,IAAI,mBAAmB;IAItC,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,OAAO;CACR"}
1
+ {"version":3,"file":"BaseMethod.d.ts","sourceRoot":"","sources":["../../src/api/BaseMethod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,8BAAsB,UAAU,CAAC,MAAM,GAAG,SAAS;IACjD,UAAU,EAAE,MAAM,CAAC;IAGnB,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,CAAC;IAOf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,IAAI,EAAE,MAAM,CAAC;IAKb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B,SAAS,CAAC,EAAE,eAAe,CAAC;IAK5B,SAAS,EAAE,OAAO,CAAC;IAKnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAK1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAG5B,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;gBAEhC,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE;IAWlD,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAE5B,eAAe,IAAI,mBAAmB;IAItC,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,OAAO;CACR"}
@@ -0,0 +1,14 @@
1
+ import { BaseMethod } from './BaseMethod';
2
+ declare type Params = {
3
+ binary?: ArrayBuffer;
4
+ version?: number[];
5
+ updateType: 'firmware' | 'ble';
6
+ };
7
+ export default class FirmwareUpdate extends BaseMethod<Params> {
8
+ init(): void;
9
+ run(): Promise<{
10
+ message: string;
11
+ }>;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=FirmwareUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirmwareUpdate.d.ts","sourceRoot":"","sources":["../../src/api/FirmwareUpdate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,aAAK,MAAM,GAAG;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU,CAAC,MAAM,CAAC;IAC5D,IAAI;IAgCE,GAAG;;;CA+BV"}
@@ -0,0 +1,33 @@
1
+ import { Features } from '../../types';
2
+ export interface GetInfoProps {
3
+ features: Features;
4
+ updateType: 'firmware' | 'ble';
5
+ }
6
+ interface GetBinaryProps extends GetInfoProps {
7
+ version?: number[];
8
+ }
9
+ export declare const getBinary: ({ features, updateType, version }: GetBinaryProps) => Promise<{
10
+ binary: any;
11
+ required: boolean;
12
+ url: string;
13
+ fingerprint: string;
14
+ version: import("../../types").IVersionArray;
15
+ changelog: {
16
+ "zh-CN": string;
17
+ "en-US": string;
18
+ };
19
+ } | {
20
+ binary: any;
21
+ required: boolean;
22
+ url: string;
23
+ webUpdate: string;
24
+ fingerprint: string;
25
+ fingerprintWeb: string;
26
+ version: import("../../types").IVersionArray;
27
+ changelog: {
28
+ "zh-CN": string;
29
+ "en-US": string;
30
+ };
31
+ }>;
32
+ export {};
33
+ //# sourceMappingURL=getBinary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBinary.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/getBinary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;CAChC;AAED,UAAU,cAAe,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,sCAA6C,cAAc;;;;;;;;;;;;;;;;;;;;;;EAsBhF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CoreMessage } from '../../events';
2
+ import { PROTO } from '../../constants';
3
+ import type { Device } from '../../device/Device';
4
+ import type { TypedCall } from '../../device/DeviceCommands';
5
+ export declare const uploadFirmware: (updateType: 'firmware' | 'ble', typedCall: TypedCall, postMessage: (message: CoreMessage) => void, device: Device, { payload }: PROTO.FirmwareUpload) => Promise<{
6
+ message: string;
7
+ }>;
8
+ //# sourceMappingURL=uploadFirmware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadFirmware.d.ts","sourceRoot":"","sources":["../../../src/api/firmware/uploadFirmware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAA+B,MAAM,cAAc,CAAC;AAChF,OAAO,EAAU,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAuB7D,eAAO,MAAM,cAAc,eACb,UAAU,GAAG,KAAK,aACnB,SAAS,yBACG,WAAW,KAAK,IAAI,UACnC,MAAM,eACD,MAAM,cAAc;;EAwClC,CAAC"}
@@ -36,4 +36,5 @@ export { default as solGetAddress } from './solana/SolGetAddress';
36
36
  export { default as solSignTransaction } from './solana/SolSignTransaction';
37
37
  export { default as stellarGetAddress } from './stellar/StellarGetAddress';
38
38
  export { default as stellarSignTransaction } from './stellar/StellarSignTransaction';
39
+ export { default as firmwareUpdate } from './FirmwareUpdate';
39
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
@@ -135,7 +135,7 @@ export default class StellarSignTransaction extends BaseMethod<HardwareStellarSi
135
135
  value?: undefined;
136
136
  bump_to?: undefined;
137
137
  } | {
138
- signer_type?: 0 | 1 | 2 | undefined;
138
+ signer_type?: 0 | 2 | 1 | undefined;
139
139
  signer_key?: string | Buffer | undefined;
140
140
  signer_weight?: number | undefined;
141
141
  type: string;
@@ -2,6 +2,7 @@ export declare const ERROR_CODES: {
2
2
  Method_InvalidParameter: string;
3
3
  Call_API: string;
4
4
  Call_NotResponse: string;
5
+ Method_FirmwareUpdate_DownloadFailed: string;
5
6
  Transport_InvalidProtobuf: string;
6
7
  Device_FwException: string;
7
8
  Device_UnexpectedMode: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/constants/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;CAuBvB,CAAC;AAEF,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;gBAEJ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,UAAU,OAAQ,MAAM,kBAAkB,8CACN,CAAC;AAGlD,eAAO,MAAM,cAAc,YAAa,GAAG,QAK1C,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/constants/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAwBvB,CAAC;AAEF,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;gBAEJ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,UAAU,OAAQ,MAAM,kBAAkB,8CACN,CAAC;AAGlD,eAAO,MAAM,cAAc,YAAa,GAAG,QAK1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,OAAO,EACL,WAAW,EAYZ,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,UAAU,CAAC;AAE7D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAgBxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBA4JjD,CAAC;AA8HF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW;IA2BxC,OAAO;CAGR;AAED,eAAO,MAAM,QAAQ,YAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,uBAGzB,CAAC;AAMF,eAAO,MAAM,IAAI,aAAoB,eAAe,aAAa,GAAG,8BAgBnE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,OAAO,EACL,WAAW,EAYZ,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,UAAU,CAAC;AAE7D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAgBxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBA6JjD,CAAC;AA8HF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW;IA2BxC,OAAO;CAGR;AAED,eAAO,MAAM,QAAQ,YAGpB,CAAC;AAEF,eAAO,MAAM,aAAa,uBAGzB,CAAC;AAMF,eAAO,MAAM,IAAI,aAAoB,eAAe,aAAa,GAAG,8BAgBnE,CAAC"}
@@ -41,6 +41,7 @@ export declare class Device extends EventEmitter {
41
41
  connect(): Promise<boolean>;
42
42
  acquire(): Promise<void>;
43
43
  release(): Promise<void>;
44
+ getCommands(): DeviceCommands;
44
45
  getInternalState(): string;
45
46
  initialize(): Promise<void>;
46
47
  getFeatures(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
@@ -31,5 +31,6 @@ export declare class DeviceCommands {
31
31
  _filterCommonTypes(res: DefaultMessageResponse): Promise<DefaultMessageResponse>;
32
32
  _promptPin(type?: Messages.PinMatrixRequestType): Promise<string>;
33
33
  }
34
+ export declare type TypedCall = DeviceCommands['typedCall'];
34
35
  export {};
35
36
  //# sourceMappingURL=DeviceCommands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceCommands.d.ts","sourceRoot":"","sources":["../../src/device/DeviceCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,aAAK,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;AACxC,aAAK,UAAU,GAAG,MAAM,WAAW,CAAC;AACpC,oBAAY,oBAAoB,CAAC,CAAC,SAAS,UAAU,IAAI;IACvD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AACF,aAAK,oBAAoB,GAAG;KACzB,CAAC,IAAI,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC;CAClD,CAAC;AACF,oBAAY,sBAAsB,GAAG,oBAAoB,CAAC,MAAM,WAAW,CAAC,CAAC;AAE7E,oBAAY,wBAAwB,GAAG;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,qBAAa,cAAc;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,SAAS,EAAE,SAAS,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,OAAO,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE9C,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAO1C,OAAO;IAMD,IAAI,CACR,IAAI,EAAE,UAAU,EAChB,GAAG,GAAE,sBAAsB,CAAC,SAAS,CAAM,GAC1C,OAAO,CAAC,sBAAsB,CAAC;IAelC,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAAE,EACpD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAClD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAyB7B,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC;IAK3E,kBAAkB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoEhF,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,oBAAoB;CAkBhD"}
1
+ {"version":3,"file":"DeviceCommands.d.ts","sourceRoot":"","sources":["../../src/device/DeviceCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,aAAK,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;AACxC,aAAK,UAAU,GAAG,MAAM,WAAW,CAAC;AACpC,oBAAY,oBAAoB,CAAC,CAAC,SAAS,UAAU,IAAI;IACvD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AACF,aAAK,oBAAoB,GAAG;KACzB,CAAC,IAAI,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC;CAClD,CAAC;AACF,oBAAY,sBAAsB,GAAG,oBAAoB,CAAC,MAAM,WAAW,CAAC,CAAC;AAE7E,oBAAY,wBAAwB,GAAG;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,qBAAa,cAAc;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,SAAS,EAAE,SAAS,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,OAAO,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE9C,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAO1C,OAAO;IAMD,IAAI,CACR,IAAI,EAAE,UAAU,EAChB,GAAG,GAAE,sBAAsB,CAAC,SAAS,CAAM,GAC1C,OAAO,CAAC,sBAAsB,CAAC;IAelC,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAAE,EACpD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EAClD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAyB7B,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC;IAK3E,kBAAkB,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoEhF,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,oBAAoB;CAkBhD;AAED,oBAAY,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC"}
@@ -10,6 +10,7 @@ export declare const UI_REQUEST: {
10
10
  readonly CLOSE_UI_WINDOW: "ui-close_window";
11
11
  readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
12
12
  readonly LOCATION_PERMISSION: "ui-location_permission";
13
+ readonly FIRMWARE_PROGRESS: "ui-firmware-progress";
13
14
  };
14
15
  export interface UiRequestWithoutPayload {
15
16
  type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
@@ -26,7 +27,14 @@ export interface UiRequestButton {
26
27
  type: typeof UI_REQUEST.REQUEST_BUTTON;
27
28
  payload: DeviceButtonRequest['payload'];
28
29
  }
29
- export declare type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton;
30
+ export interface FirmwareProgress {
31
+ type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
32
+ payload: {
33
+ device: Device;
34
+ progress: number;
35
+ };
36
+ }
37
+ export declare type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton | FirmwareProgress;
30
38
  export declare type UiEventMessage = UiEvent & {
31
39
  event: typeof UI_EVENT;
32
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ui-request.d.ts","sourceRoot":"","sources":["../../src/events/ui-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;;;CASb,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,IAAI,EACA,OAAO,UAAU,CAAC,eAAe,GACjC,OAAO,UAAU,CAAC,oBAAoB,GACtC,OAAO,UAAU,CAAC,mBAAmB,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,SAAS,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;KAC9D,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC;AAED,oBAAY,OAAO,GAAG,uBAAuB,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAExF,oBAAY,cAAc,GAAG,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,QAAQ,CAAA;CAAE,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,QAAQ,EAAE,OAAO,CAK5D,CAAC"}
1
+ {"version":3,"file":"ui-request.d.ts","sourceRoot":"","sources":["../../src/events/ui-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;;;;CAWb,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,IAAI,EACA,OAAO,UAAU,CAAC,eAAe,GACjC,OAAO,UAAU,CAAC,oBAAoB,GACtC,OAAO,UAAU,CAAC,mBAAmB,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,SAAS,CAAC;CAC5B;AAED,oBAAY,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;KAC9D,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,UAAU,CAAC,iBAAiB,CAAC;IAC1C,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,oBAAY,OAAO,GACf,uBAAuB,GACvB,qBAAqB,GACrB,eAAe,GACf,gBAAgB,CAAC;AAErB,oBAAY,cAAc,GAAG,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,QAAQ,CAAA;CAAE,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,QAAQ,EAAE,OAAO,CAK5D,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,9 @@ import { EthereumPublicKey, EthereumMessageSignature, Success as Success$1, Addr
6
6
  interface CommonParams {
7
7
  keepSession?: boolean;
8
8
  }
9
+ declare type Params<T> = CommonParams & T & {
10
+ bundle?: undefined;
11
+ };
9
12
  interface Unsuccessful {
10
13
  success: false;
11
14
  payload: {
@@ -27,6 +30,7 @@ declare const ERROR_CODES: {
27
30
  Method_InvalidParameter: string;
28
31
  Call_API: string;
29
32
  Call_NotResponse: string;
33
+ Method_FirmwareUpdate_DownloadFailed: string;
30
34
  Transport_InvalidProtobuf: string;
31
35
  Device_FwException: string;
32
36
  Device_UnexpectedMode: string;
@@ -167,6 +171,43 @@ declare type DeviceFirmwareRange = {
167
171
  max?: string;
168
172
  };
169
173
  };
174
+ declare type FeaturesNarrowing = {
175
+ major_version: 2;
176
+ fw_major: null;
177
+ fw_minor: null;
178
+ fw_patch: null;
179
+ bootloader_mode: true;
180
+ firmware_present: false;
181
+ } | {
182
+ major_version: 2;
183
+ fw_major: null;
184
+ fw_minor: null;
185
+ fw_patch: null;
186
+ bootloader_mode: null;
187
+ firmware_present: null;
188
+ } | {
189
+ major_version: 2;
190
+ fw_major: 2;
191
+ fw_minor: number;
192
+ fw_patch: number;
193
+ bootloader_mode: true;
194
+ firmware_present: true;
195
+ } | {
196
+ major_version: 1;
197
+ fw_major: null;
198
+ fw_minor: null;
199
+ fw_patch: null;
200
+ bootloader_mode: true;
201
+ firmware_present: false;
202
+ } | {
203
+ major_version: 1;
204
+ fw_major: null;
205
+ fw_minor: null;
206
+ fw_patch: null;
207
+ bootloader_mode: true;
208
+ firmware_present: true;
209
+ };
210
+ declare type StrictFeatures = Features & FeaturesNarrowing;
170
211
 
171
212
  declare function searchDevices(): Response<SearchDevice[]>;
172
213
 
@@ -188,7 +229,8 @@ interface FirmwareRange {
188
229
  max: string;
189
230
  };
190
231
  }
191
- declare type VersionArray = [1 | 2, number, number];
232
+ declare type MajorVersion = 1 | 2;
233
+ declare type VersionArray = [MajorVersion, number, number];
192
234
  declare type FirmwareRelease = {
193
235
  required: boolean;
194
236
  url: string;
@@ -834,6 +876,17 @@ declare function cipherKeyValue(connectId: string, params: CommonParams & {
834
876
  bundle?: CipheredKeyValueParams[];
835
877
  }): Response<Array<CipheredKeyValue>>;
836
878
 
879
+ interface FirmwareUpdateBinary {
880
+ binary: ArrayBuffer;
881
+ }
882
+ interface FirmwareUpdate {
883
+ version: number[];
884
+ btcOnly?: boolean;
885
+ updateType: 'firmware' | 'ble';
886
+ }
887
+ declare function firmwareUpdate(connectId: string | undefined, params: Params<FirmwareUpdate>): Response<Messages.Success>;
888
+ declare function firmwareUpdate(connectId: string | undefined, params: Params<FirmwareUpdateBinary>): Response<Messages.Success>;
889
+
837
890
  declare type CoreApi = {
838
891
  init: typeof init$1;
839
892
  on: typeof on;
@@ -881,6 +934,7 @@ declare type CoreApi = {
881
934
  solSignTransaction: typeof solSignTransaction;
882
935
  stellarGetAddress: typeof stellarGetAddress;
883
936
  stellarSignTransaction: typeof stellarSignTransaction;
937
+ firmwareUpdate: typeof firmwareUpdate;
884
938
  };
885
939
 
886
940
  declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -941,6 +995,7 @@ declare const UI_REQUEST: {
941
995
  readonly CLOSE_UI_WINDOW: "ui-close_window";
942
996
  readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
943
997
  readonly LOCATION_PERMISSION: "ui-location_permission";
998
+ readonly FIRMWARE_PROGRESS: "ui-firmware-progress";
944
999
  };
945
1000
  interface UiRequestWithoutPayload {
946
1001
  type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
@@ -957,7 +1012,14 @@ interface UiRequestButton {
957
1012
  type: typeof UI_REQUEST.REQUEST_BUTTON;
958
1013
  payload: DeviceButtonRequest['payload'];
959
1014
  }
960
- declare type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton;
1015
+ interface FirmwareProgress {
1016
+ type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
1017
+ payload: {
1018
+ device: Device$1;
1019
+ progress: number;
1020
+ };
1021
+ }
1022
+ declare type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton | FirmwareProgress;
961
1023
  declare type UiEventMessage = UiEvent & {
962
1024
  event: typeof UI_EVENT;
963
1025
  };
@@ -1121,7 +1183,7 @@ declare class Log {
1121
1183
  declare const initLog: (prefix: string, enabled?: boolean | undefined) => Log;
1122
1184
  declare const enableLog: (enabled?: boolean | undefined) => void;
1123
1185
 
1124
- declare const httpRequest: (url: string, _type: string) => any;
1186
+ declare const httpRequest: (url: string, type: string) => any;
1125
1187
  declare const getTimeStamp: () => number;
1126
1188
 
1127
1189
  declare const isValidVersionString: (version: string) => boolean;
@@ -1228,6 +1290,7 @@ declare class Device extends EventEmitter {
1228
1290
  connect(): Promise<boolean>;
1229
1291
  acquire(): Promise<void>;
1230
1292
  release(): Promise<void>;
1293
+ getCommands(): DeviceCommands;
1231
1294
  getInternalState(): string;
1232
1295
  initialize(): Promise<void>;
1233
1296
  getFeatures(): Promise<void>;
@@ -1297,4 +1360,4 @@ declare class DataManager {
1297
1360
 
1298
1361
  declare const HardwareSdk: ({ init, call, dispose, eventEmitter, uiResponse, cancel, }: InjectApi) => CoreApi;
1299
1362
 
1300
- export { AccountAddress, AccountAddresses, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CipheredKeyValue, CipheredKeyValueParams, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFirmwareRange, DeviceFlagsParams, DeviceMode, DeviceRecoveryParams, DeviceResetParams, DeviceSettingsParams, DeviceStatus, DeviceTypeMap, errors as ERRORS, EVMAccessList, EVMAddress, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, Features, FirmwareRange, FirmwareRelease, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, PostMessageEvent, RESPONSE_EVENT, RefTransaction, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, SignedTransaction, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, Success, TransactionOptions, TransportReleaseStatus, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestWithoutPayload, UiResponseEvent, UiResponseMessage, UiResponsePin, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, corsValidator, create, createDeviceMessage, createErrorMessage, createIFrameMessage, createResponseMessage, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, getDeviceLabel, getDeviceType, getDeviceTypeByBleName, getDeviceTypeByDeviceId, getDeviceUUID, getEnv, getHDPath, getScriptType, getTimeStamp, httpRequest, init as initCore, initLog, isValidVersionArray, isValidVersionString, normalizeVersionArray, parseConnectSettings, parseMessage, versionCompare, versionSplit };
1363
+ export { AccountAddress, AccountAddresses, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CipheredKeyValue, CipheredKeyValueParams, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, DeviceFirmwareRange, DeviceFlagsParams, DeviceMode, DeviceRecoveryParams, DeviceResetParams, DeviceSettingsParams, DeviceStatus, DeviceTypeMap, errors as ERRORS, EVMAccessList, EVMAddress, EVMGetAddressParams, EVMGetPublicKeyParams, EVMPublicKey, EVMSignMessageEIP712Params, EVMSignMessageParams, EVMSignTransactionParams, EVMSignTypedDataParams, EVMSignedTx, EVMTransaction, EVMTransactionEIP1559, EVMVerifyMessageParams, EthereumSignTypedDataMessage, EthereumSignTypedDataTypeProperty, EthereumSignTypedDataTypes, Features, FirmwareProgress, FirmwareRange, FirmwareRelease, IBLEFirmwareReleaseInfo, IDeviceBLEFirmwareStatus, IDeviceFirmwareStatus, IDeviceModel, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MajorVersion, MethodResponseMessage, NEMAddress, NEMAggregateModificationTransaction, NEMGetAddressParams, NEMImportanceTransaction, NEMMosaic, NEMMosaicCreationTransaction, NEMMultisigTransaction, NEMProvisionNamespaceTransaction, NEMSignTransactionParams, NEMSupplyChangeTransaction, NEMTransaction, NEMTransferTransaction, Params, PostMessageEvent, RESPONSE_EVENT, RefTransaction, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, SignedTransaction, SolanaAddress, SolanaGetAddressParams, SolanaSignTransactionParams, SolanaSignedTx, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, StellarAddress, StellarAsset, StellarGetAddressParams, StellarOperation, StellarSignTransactionParams, StellarTransaction, StrictFeatures, Success, TransactionOptions, TransportReleaseStatus, UI_EVENT, UI_REQUEST, UI_RESPONSE, UiEvent, UiEventMessage, UiPromise, UiPromiseResponse, UiRequestButton, UiRequestDeviceAction, UiRequestWithoutPayload, UiResponseEvent, UiResponseMessage, UiResponsePin, UnavailableCapabilities, UnavailableCapability, Unsuccessful, VersionArray, corsValidator, create, createDeviceMessage, createErrorMessage, createIFrameMessage, createResponseMessage, createUiMessage, createUiResponse, HardwareSdk as default, enableLog, getDeviceLabel, getDeviceType, getDeviceTypeByBleName, getDeviceTypeByDeviceId, getDeviceUUID, getEnv, getHDPath, getScriptType, getTimeStamp, httpRequest, init as initCore, initLog, isValidVersionArray, isValidVersionString, normalizeVersionArray, parseConnectSettings, parseMessage, versionCompare, versionSplit };
package/dist/index.js CHANGED
@@ -67,6 +67,7 @@ const inject = ({ call, cancel, dispose, eventEmitter, init, uiResponse, }) => {
67
67
  solSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'solSignTransaction' })),
68
68
  stellarGetAddress: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'stellarGetAddress' })),
69
69
  stellarSignTransaction: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'stellarSignTransaction' })),
70
+ firmwareUpdate: (connectId, params) => call(Object.assign(Object.assign({}, params), { connectId, method: 'firmwareUpdate' })),
70
71
  };
71
72
  return api;
72
73
  };
@@ -608,6 +609,7 @@ const ERROR_CODES = {
608
609
  Method_InvalidParameter: '',
609
610
  Call_API: '',
610
611
  Call_NotResponse: 'No response data',
612
+ Method_FirmwareUpdate_DownloadFailed: '',
611
613
  Transport_InvalidProtobuf: '',
612
614
  Device_FwException: '',
613
615
  Device_UnexpectedMode: '',
@@ -720,20 +722,21 @@ const httpRequest$1 = (url, type = 'text') => __awaiter(void 0, void 0, void 0,
720
722
  const response = yield axios__default["default"].request({
721
723
  url,
722
724
  withCredentials: false,
725
+ responseType: type === 'binary' ? 'arraybuffer' : 'json',
723
726
  });
724
727
  if (+response.status === 200) {
725
728
  if (type === 'json') {
726
729
  return response.data;
727
730
  }
728
731
  if (type === 'binary') {
729
- return response.data.arrayBuffer();
732
+ return response.data;
730
733
  }
731
734
  return response.data;
732
735
  }
733
736
  throw new Error(`httpRequest error: ${url} ${response.statusText}`);
734
737
  });
735
738
 
736
- const httpRequest = (url, _type) => httpRequest$1(url);
739
+ const httpRequest = (url, type) => httpRequest$1(url, type);
737
740
  const getTimeStamp = () => new Date().getTime();
738
741
 
739
742
  const VER_NUMS = 3;
@@ -9963,6 +9966,7 @@ const UI_REQUEST$1 = {
9963
9966
  CLOSE_UI_WINDOW: 'ui-close_window',
9964
9967
  BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
9965
9968
  LOCATION_PERMISSION: 'ui-location_permission',
9969
+ FIRMWARE_PROGRESS: 'ui-firmware-progress',
9966
9970
  };
9967
9971
  const createUiMessage = (type, payload) => ({
9968
9972
  event: UI_EVENT,
@@ -10379,6 +10383,9 @@ class Device extends events.exports {
10379
10383
  }
10380
10384
  });
10381
10385
  }
10386
+ getCommands() {
10387
+ return this.commands;
10388
+ }
10382
10389
  getInternalState() {
10383
10390
  return this.internalState[this.instance];
10384
10391
  }
@@ -12830,6 +12837,120 @@ class StellarSignTransaction extends BaseMethod {
12830
12837
  }
12831
12838
  }
12832
12839
 
12840
+ const getBinary = ({ features, updateType, version }) => __awaiter(void 0, void 0, void 0, function* () {
12841
+ const releaseInfo = getInfo({ features, updateType });
12842
+ if (!releaseInfo) {
12843
+ throw TypedError('Runtime', 'no firmware found for this device');
12844
+ }
12845
+ if (version &&
12846
+ !semver__default["default"].eq(releaseInfo.version, version)) {
12847
+ throw TypedError('Runtime', 'firmware version mismatch');
12848
+ }
12849
+ const url = updateType === 'ble' ? releaseInfo.webUpdate : releaseInfo.url;
12850
+ const fw = yield httpRequest(url, 'binary');
12851
+ return Object.assign(Object.assign({}, releaseInfo), { binary: fw });
12852
+ });
12853
+ const getInfo = ({ features, updateType }) => {
12854
+ var _a, _b, _c;
12855
+ const deviceType = getDeviceType(features);
12856
+ const { deviceMap } = DataManager;
12857
+ const releaseInfo = (_c = (_b = (_a = deviceMap === null || deviceMap === void 0 ? void 0 : deviceMap[deviceType]) === null || _a === void 0 ? void 0 : _a[updateType]) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : null;
12858
+ return releaseInfo;
12859
+ };
12860
+
12861
+ const postConfirmationMessage = (device) => {
12862
+ var _a;
12863
+ if ((_a = device.features) === null || _a === void 0 ? void 0 : _a.firmware_present) {
12864
+ device.emit(DEVICE.BUTTON, device, { code: 'ButtonRequest_FirmwareUpdate' });
12865
+ }
12866
+ };
12867
+ const postProgressMessage = (device, progress, postMessage) => {
12868
+ postMessage(createUiMessage(UI_REQUEST$1.FIRMWARE_PROGRESS, {
12869
+ device: device.toMessageObject(),
12870
+ progress,
12871
+ }));
12872
+ };
12873
+ const uploadFirmware = (updateType, typedCall, postMessage, device, { payload }) => __awaiter(void 0, void 0, void 0, function* () {
12874
+ var _a, _b;
12875
+ if (((_a = device.features) === null || _a === void 0 ? void 0 : _a.major_version) === 1) {
12876
+ postConfirmationMessage(device);
12877
+ const eraseCommand = updateType === 'firmware' ? 'FirmwareErase' : 'FirmwareErase_ex';
12878
+ yield typedCall(eraseCommand, 'Success', {});
12879
+ postProgressMessage(device, 0, postMessage);
12880
+ const { message } = yield typedCall('FirmwareUpload', 'Success', {
12881
+ payload,
12882
+ });
12883
+ return message;
12884
+ }
12885
+ if (((_b = device.features) === null || _b === void 0 ? void 0 : _b.major_version) === 2) {
12886
+ postConfirmationMessage(device);
12887
+ const length = payload.byteLength;
12888
+ let response = yield typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], { length });
12889
+ while (response.type !== 'Success') {
12890
+ const start = response.message.offset;
12891
+ const end = response.message.offset + response.message.length;
12892
+ const chunk = payload.slice(start, end);
12893
+ if (start > 0) {
12894
+ postProgressMessage(device, Math.round((start / length) * 100), postMessage);
12895
+ }
12896
+ response = yield typedCall('FirmwareUpload', ['FirmwareRequest', 'Success'], {
12897
+ payload: chunk,
12898
+ });
12899
+ }
12900
+ postProgressMessage(device, 100, postMessage);
12901
+ return response.message;
12902
+ }
12903
+ throw TypedError('Runtime', 'uploadFirmware: unknown major_version');
12904
+ });
12905
+
12906
+ class FirmwareUpdate extends BaseMethod {
12907
+ init() {
12908
+ this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.INITIALIZE];
12909
+ this.requireDeviceMode = [UI_REQUEST.BOOTLOADER];
12910
+ const { payload } = this;
12911
+ validateParams(payload, [
12912
+ { name: 'version', type: 'array' },
12913
+ { name: 'binary', type: 'buffer' },
12914
+ ]);
12915
+ if (!payload.updateType) {
12916
+ throw TypedError('Method_InvalidParameter', 'updateType is required');
12917
+ }
12918
+ this.params = { updateType: payload.updateType };
12919
+ if ('version' in payload) {
12920
+ this.params = Object.assign(Object.assign({}, this.params), { version: payload.version });
12921
+ }
12922
+ if ('binary' in payload) {
12923
+ this.params = Object.assign(Object.assign({}, this.params), { binary: payload.binary });
12924
+ }
12925
+ }
12926
+ run() {
12927
+ return __awaiter(this, void 0, void 0, function* () {
12928
+ const { device, params } = this;
12929
+ let binary;
12930
+ try {
12931
+ if (params.binary) {
12932
+ binary = this.params.binary;
12933
+ }
12934
+ else {
12935
+ if (!device.features) {
12936
+ throw TypedError('Runtime', 'no features found for this device');
12937
+ }
12938
+ const firmware = yield getBinary({
12939
+ features: device.features,
12940
+ version: params.version,
12941
+ updateType: params.updateType,
12942
+ });
12943
+ binary = firmware.binary;
12944
+ }
12945
+ }
12946
+ catch (err) {
12947
+ throw TypedError('Method_FirmwareUpdate_DownloadFailed', err);
12948
+ }
12949
+ return uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, { payload: binary });
12950
+ });
12951
+ }
12952
+ }
12953
+
12833
12954
  var ApiMethods = /*#__PURE__*/Object.freeze({
12834
12955
  __proto__: null,
12835
12956
  searchDevices: SearchDevices,
@@ -12869,7 +12990,8 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
12869
12990
  solGetAddress: SolGetAddress,
12870
12991
  solSignTransaction: SolSignTransaction,
12871
12992
  stellarGetAddress: StellarGetAddress,
12872
- stellarSignTransaction: StellarSignTransaction
12993
+ stellarSignTransaction: StellarSignTransaction,
12994
+ firmwareUpdate: FirmwareUpdate
12873
12995
  });
12874
12996
 
12875
12997
  function findMethod(message) {
@@ -13043,6 +13165,7 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
13043
13165
  try {
13044
13166
  method = findMethod(message);
13045
13167
  method.connector = _connector;
13168
+ method.postMessage = postMessage;
13046
13169
  method.init();
13047
13170
  }
13048
13171
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,MAAM,+DAOhB,SAAS,KAAG,OA4Gd,CAAC"}
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3B;AAED,eAAO,MAAM,MAAM,+DAOhB,SAAS,KAAG,OA8Gd,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { PROTO } from '../../constants';
2
+ import type { Params, Response } from '../params';
3
+ export interface FirmwareUpdateBinary {
4
+ binary: ArrayBuffer;
5
+ }
6
+ export interface FirmwareUpdate {
7
+ version: number[];
8
+ btcOnly?: boolean;
9
+ updateType: 'firmware' | 'ble';
10
+ }
11
+ export declare function firmwareUpdate(connectId: string | undefined, params: Params<FirmwareUpdate>): Response<PROTO.Success>;
12
+ export declare function firmwareUpdate(connectId: string | undefined, params: Params<FirmwareUpdateBinary>): Response<PROTO.Success>;
13
+ //# sourceMappingURL=firmwareUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,GAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,GACnC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC"}
@@ -39,6 +39,7 @@ import { solSignTransaction } from './solSignTransaction';
39
39
  import { stellarGetAddress } from './stellarGetAddress';
40
40
  import { stellarSignTransaction } from './stellarSignTransaction';
41
41
  import { cipherKeyValue } from './cipherKeyValue';
42
+ import { firmwareUpdate } from './firmwareUpdate';
42
43
  export * from './export';
43
44
  export declare type CoreApi = {
44
45
  init: typeof init;
@@ -87,5 +88,6 @@ export declare type CoreApi = {
87
88
  solSignTransaction: typeof solSignTransaction;
88
89
  stellarGetAddress: typeof stellarGetAddress;
89
90
  stellarSignTransaction: typeof stellarSignTransaction;
91
+ firmwareUpdate: typeof firmwareUpdate;
90
92
  };
91
93
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"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"}
@@ -41,4 +41,42 @@ export declare type DeviceFirmwareRange = {
41
41
  max?: string;
42
42
  };
43
43
  };
44
+ declare type FeaturesNarrowing = {
45
+ major_version: 2;
46
+ fw_major: null;
47
+ fw_minor: null;
48
+ fw_patch: null;
49
+ bootloader_mode: true;
50
+ firmware_present: false;
51
+ } | {
52
+ major_version: 2;
53
+ fw_major: null;
54
+ fw_minor: null;
55
+ fw_patch: null;
56
+ bootloader_mode: null;
57
+ firmware_present: null;
58
+ } | {
59
+ major_version: 2;
60
+ fw_major: 2;
61
+ fw_minor: number;
62
+ fw_patch: number;
63
+ bootloader_mode: true;
64
+ firmware_present: true;
65
+ } | {
66
+ major_version: 1;
67
+ fw_major: null;
68
+ fw_minor: null;
69
+ fw_patch: null;
70
+ bootloader_mode: true;
71
+ firmware_present: false;
72
+ } | {
73
+ major_version: 1;
74
+ fw_major: null;
75
+ fw_minor: null;
76
+ fw_patch: null;
77
+ bootloader_mode: true;
78
+ firmware_present: true;
79
+ };
80
+ export declare type StrictFeatures = Features & FeaturesNarrowing;
81
+ export {};
44
82
  //# sourceMappingURL=device.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/types/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,oBAAY,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7D,oBAAY,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7E,oBAAY,qBAAqB,GAC7B,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,yBAAyB,CAAC;AAE9B,oBAAY,uBAAuB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;CAAE,CAAC;AAE/E,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAC;IACzC,eAAe,EAAE,aAAa,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAgCF,oBAAY,MAAM,GAAG,WAAW,CAAC;AAEjC,oBAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAEtC,oBAAY,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAI/D,oBAAY,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAExD,oBAAY,qBAAqB,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3F,oBAAY,wBAAwB,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9F,oBAAY,gBAAgB,GAAG,OAAO,GAAG,UAAU,CAAC;AAEpD,oBAAY,mBAAmB,GAAG;KAC/B,UAAU,IAAI,WAAW,GAAG,YAAY,CAAC,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;CAC3E,CAAC"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/types/device.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@ export interface FirmwareRange {
8
8
  max: string;
9
9
  };
10
10
  }
11
- export declare type VersionArray = [1 | 2, number, number];
11
+ export declare type MajorVersion = 1 | 2;
12
+ export declare type VersionArray = [MajorVersion, number, number];
12
13
  export declare type FirmwareRelease = {
13
14
  required: boolean;
14
15
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../src/types/firmware.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,oBAAY,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,oBAAY,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB,EAAE,YAAY,CAAC;IACnC,sBAAsB,EAAE,YAAY,CAAC;IACrC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,oBAAY,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../src/types/firmware.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,oBAAY,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,oBAAY,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1D,oBAAY,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,oBAAoB,EAAE,YAAY,CAAC;IACnC,sBAAsB,EAAE,YAAY,CAAC;IACrC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,oBAAY,sBAAsB,GAAG,OAAO,GAAG,UAAU,CAAC"}
@@ -1,6 +1,9 @@
1
1
  export interface CommonParams {
2
2
  keepSession?: boolean;
3
3
  }
4
+ export declare type Params<T> = CommonParams & T & {
5
+ bundle?: undefined;
6
+ };
4
7
  export interface Unsuccessful {
5
8
  success: false;
6
9
  payload: {
@@ -1 +1 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/types/params.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,oBAAY,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/types/params.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oBAAY,MAAM,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,oBAAY,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const httpRequest: (url: string, _type: string) => any;
1
+ export declare const httpRequest: (url: string, type: string) => any;
2
2
  export declare const getTimeStamp: () => number;
3
3
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAS,MAAM,SAAS,MAAM,KAAG,GAA8B,CAAC;AAExF,eAAO,MAAM,YAAY,cAA6B,CAAC"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAS,MAAM,QAAQ,MAAM,KAAG,GAAoC,CAAC;AAE7F,eAAO,MAAM,YAAY,cAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"networkUtils.d.ts","sourceRoot":"","sources":["../../src/utils/networkUtils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAe,MAAM,gCAe5C,CAAC"}
1
+ {"version":3,"file":"networkUtils.d.ts","sourceRoot":"","sources":["../../src/utils/networkUtils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAe,MAAM,gCAiB5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "0.0.10",
3
+ "version": "0.1.0",
4
4
  "description": "> TODO: description",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,7 +25,7 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-transport": "^0.0.10",
28
+ "@onekeyfe/hd-transport": "^0.1.0",
29
29
  "axios": "^0.27.2",
30
30
  "bignumber.js": "^9.0.2",
31
31
  "parse-uri": "^1.0.7",
@@ -35,5 +35,5 @@
35
35
  "@types/parse-uri": "^1.0.0",
36
36
  "@types/semver": "^7.3.9"
37
37
  },
38
- "gitHead": "b1f3f06c56fda840f4e55f2d033f7b84f16e8873"
38
+ "gitHead": "d50dc424865150391b7249d1010ee75dc2074a7e"
39
39
  }
@@ -2,6 +2,7 @@ import { UI_REQUEST } from '../constants/ui-request';
2
2
  import { Device } from '../device/Device';
3
3
  import DeviceConnector from '../device/DeviceConnector';
4
4
  import { DeviceFirmwareRange } from '../types';
5
+ import { CoreMessage } from '../events';
5
6
 
6
7
  export abstract class BaseMethod<Params = undefined> {
7
8
  responseID: number;
@@ -48,6 +49,9 @@ export abstract class BaseMethod<Params = undefined> {
48
49
  */
49
50
  requireDeviceMode: string[];
50
51
 
52
+ // @ts-expect-error: strictPropertyInitialization
53
+ postMessage: (message: CoreMessage) => void;
54
+
51
55
  constructor(message: { id?: number; payload: any }) {
52
56
  const { payload } = message;
53
57
  this.name = payload.method;
@@ -0,0 +1,78 @@
1
+ import { ERRORS } from '../constants';
2
+ import { UI_REQUEST } from '../constants/ui-request';
3
+ import { BaseMethod } from './BaseMethod';
4
+ import { validateParams } from './helpers/paramsValidator';
5
+ import { getBinary } from './firmware/getBinary';
6
+ import { uploadFirmware } from './firmware/uploadFirmware';
7
+
8
+ type Params = {
9
+ binary?: ArrayBuffer;
10
+ version?: number[];
11
+ updateType: 'firmware' | 'ble';
12
+ };
13
+
14
+ export default class FirmwareUpdate extends BaseMethod<Params> {
15
+ init() {
16
+ this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.INITIALIZE];
17
+ this.requireDeviceMode = [UI_REQUEST.BOOTLOADER];
18
+
19
+ const { payload } = this;
20
+
21
+ validateParams(payload, [
22
+ { name: 'version', type: 'array' },
23
+ { name: 'binary', type: 'buffer' },
24
+ ]);
25
+
26
+ if (!payload.updateType) {
27
+ throw ERRORS.TypedError('Method_InvalidParameter', 'updateType is required');
28
+ }
29
+
30
+ this.params = { updateType: payload.updateType };
31
+
32
+ if ('version' in payload) {
33
+ this.params = {
34
+ ...this.params,
35
+ version: payload.version,
36
+ };
37
+ }
38
+
39
+ if ('binary' in payload) {
40
+ this.params = {
41
+ ...this.params,
42
+ binary: payload.binary,
43
+ };
44
+ }
45
+ }
46
+
47
+ async run() {
48
+ const { device, params } = this;
49
+
50
+ let binary;
51
+
52
+ try {
53
+ if (params.binary) {
54
+ binary = this.params.binary;
55
+ } else {
56
+ if (!device.features) {
57
+ throw ERRORS.TypedError('Runtime', 'no features found for this device');
58
+ }
59
+ const firmware = await getBinary({
60
+ features: device.features,
61
+ version: params.version,
62
+ updateType: params.updateType,
63
+ });
64
+ binary = firmware.binary;
65
+ }
66
+ } catch (err) {
67
+ throw ERRORS.TypedError('Method_FirmwareUpdate_DownloadFailed', err);
68
+ }
69
+
70
+ return uploadFirmware(
71
+ params.updateType,
72
+ this.device.getCommands().typedCall.bind(this.device.getCommands()),
73
+ this.postMessage,
74
+ device,
75
+ { payload: binary }
76
+ );
77
+ }
78
+ }
@@ -0,0 +1,46 @@
1
+ import semver from 'semver';
2
+ import { Features } from '../../types';
3
+ import { getDeviceType, httpRequest } from '../../utils';
4
+ import { DataManager } from '../../data-manager';
5
+ import { ERRORS } from '../../constants';
6
+
7
+ export interface GetInfoProps {
8
+ features: Features;
9
+ updateType: 'firmware' | 'ble';
10
+ }
11
+
12
+ interface GetBinaryProps extends GetInfoProps {
13
+ version?: number[];
14
+ }
15
+
16
+ export const getBinary = async ({ features, updateType, version }: GetBinaryProps) => {
17
+ const releaseInfo = getInfo({ features, updateType });
18
+
19
+ if (!releaseInfo) {
20
+ throw ERRORS.TypedError('Runtime', 'no firmware found for this device');
21
+ }
22
+
23
+ if (
24
+ version &&
25
+ !semver.eq(releaseInfo.version as unknown as semver.SemVer, version as unknown as semver.SemVer)
26
+ ) {
27
+ throw ERRORS.TypedError('Runtime', 'firmware version mismatch');
28
+ }
29
+
30
+ // @ts-expect-error
31
+ const url = updateType === 'ble' ? releaseInfo.webUpdate : releaseInfo.url;
32
+ const fw = await httpRequest(url, 'binary');
33
+
34
+ return {
35
+ ...releaseInfo,
36
+ binary: fw,
37
+ };
38
+ };
39
+
40
+ const getInfo = ({ features, updateType }: GetInfoProps) => {
41
+ const deviceType = getDeviceType(features);
42
+ const { deviceMap } = DataManager;
43
+ const releaseInfo = deviceMap?.[deviceType]?.[updateType]?.[0] ?? null;
44
+
45
+ return releaseInfo;
46
+ };
@@ -0,0 +1,72 @@
1
+ import { DEVICE, CoreMessage, createUiMessage, UI_REQUEST } from '../../events';
2
+ import { ERRORS, PROTO } from '../../constants';
3
+ import type { Device } from '../../device/Device';
4
+ import type { TypedCall } from '../../device/DeviceCommands';
5
+ import { KnownDevice } from '../../types';
6
+
7
+ const postConfirmationMessage = (device: Device) => {
8
+ // only if firmware is already installed. fresh device does not require button confirmation
9
+ if (device.features?.firmware_present) {
10
+ device.emit(DEVICE.BUTTON, device, { code: 'ButtonRequest_FirmwareUpdate' });
11
+ }
12
+ };
13
+
14
+ const postProgressMessage = (
15
+ device: Device,
16
+ progress: number,
17
+ postMessage: (message: CoreMessage) => void
18
+ ) => {
19
+ postMessage(
20
+ createUiMessage(UI_REQUEST.FIRMWARE_PROGRESS, {
21
+ device: device.toMessageObject() as KnownDevice,
22
+ progress,
23
+ })
24
+ );
25
+ };
26
+
27
+ export const uploadFirmware = async (
28
+ updateType: 'firmware' | 'ble',
29
+ typedCall: TypedCall,
30
+ postMessage: (message: CoreMessage) => void,
31
+ device: Device,
32
+ { payload }: PROTO.FirmwareUpload
33
+ ) => {
34
+ if (device.features?.major_version === 1) {
35
+ postConfirmationMessage(device);
36
+ const eraseCommand = updateType === 'firmware' ? 'FirmwareErase' : 'FirmwareErase_ex';
37
+ await typedCall(eraseCommand as unknown as any, 'Success', {});
38
+ postProgressMessage(device, 0, postMessage);
39
+ const { message } = await typedCall('FirmwareUpload', 'Success', {
40
+ payload,
41
+ });
42
+
43
+ return message;
44
+ }
45
+
46
+ if (device.features?.major_version === 2) {
47
+ postConfirmationMessage(device);
48
+ const length = payload.byteLength;
49
+
50
+ let response = await typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], { length });
51
+ while (response.type !== 'Success') {
52
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
53
+ const start = response.message.offset!;
54
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
55
+ const end = response.message.offset! + response.message.length!;
56
+ const chunk = payload.slice(start, end);
57
+
58
+ if (start > 0) {
59
+ postProgressMessage(device, Math.round((start / length) * 100), postMessage);
60
+ }
61
+
62
+ response = await typedCall('FirmwareUpload', ['FirmwareRequest', 'Success'], {
63
+ payload: chunk,
64
+ });
65
+ }
66
+
67
+ postProgressMessage(device, 100, postMessage);
68
+ return response.message;
69
+ }
70
+
71
+ throw ERRORS.TypedError('Runtime', 'uploadFirmware: unknown major_version');
72
+ };
package/src/api/index.ts CHANGED
@@ -39,3 +39,5 @@ export { default as solSignTransaction } from './solana/SolSignTransaction';
39
39
 
40
40
  export { default as stellarGetAddress } from './stellar/StellarGetAddress';
41
41
  export { default as stellarSignTransaction } from './stellar/StellarSignTransaction';
42
+
43
+ export { default as firmwareUpdate } from './FirmwareUpdate';
@@ -3,6 +3,7 @@ export const ERROR_CODES = {
3
3
  Method_InvalidParameter: '',
4
4
  Call_API: '',
5
5
  Call_NotResponse: 'No response data',
6
+ Method_FirmwareUpdate_DownloadFailed: '',
6
7
 
7
8
  // device error
8
9
  Transport_InvalidProtobuf: '',
package/src/core/index.ts CHANGED
@@ -57,6 +57,7 @@ export const callAPI = async (message: CoreMessage) => {
57
57
  try {
58
58
  method = findMethod(message as IFrameCallMessage);
59
59
  method.connector = _connector;
60
+ method.postMessage = postMessage;
60
61
  method.init();
61
62
  } catch (error) {
62
63
  return Promise.reject(error);
@@ -225,6 +225,10 @@ export class Device extends EventEmitter {
225
225
  }
226
226
  }
227
227
 
228
+ getCommands() {
229
+ return this.commands;
230
+ }
231
+
228
232
  getInternalState() {
229
233
  return this.internalState[this.instance];
230
234
  }
@@ -205,3 +205,5 @@ export class DeviceCommands {
205
205
  });
206
206
  }
207
207
  }
208
+
209
+ export type TypedCall = DeviceCommands['typedCall'];
@@ -14,6 +14,8 @@ export const UI_REQUEST = {
14
14
 
15
15
  BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
16
16
  LOCATION_PERMISSION: 'ui-location_permission',
17
+
18
+ FIRMWARE_PROGRESS: 'ui-firmware-progress',
17
19
  } as const;
18
20
 
19
21
  export interface UiRequestWithoutPayload {
@@ -37,7 +39,19 @@ export interface UiRequestButton {
37
39
  payload: DeviceButtonRequest['payload'];
38
40
  }
39
41
 
40
- export type UiEvent = UiRequestWithoutPayload | UiRequestDeviceAction | UiRequestButton;
42
+ export interface FirmwareProgress {
43
+ type: typeof UI_REQUEST.FIRMWARE_PROGRESS;
44
+ payload: {
45
+ device: Device;
46
+ progress: number;
47
+ };
48
+ }
49
+
50
+ export type UiEvent =
51
+ | UiRequestWithoutPayload
52
+ | UiRequestDeviceAction
53
+ | UiRequestButton
54
+ | FirmwareProgress;
41
55
 
42
56
  export type UiEventMessage = UiEvent & { event: typeof UI_EVENT };
43
57
 
package/src/inject.ts CHANGED
@@ -124,6 +124,8 @@ export const inject = ({
124
124
  call({ ...params, connectId, method: 'stellarGetAddress' }),
125
125
  stellarSignTransaction: (connectId, params) =>
126
126
  call({ ...params, connectId, method: 'stellarSignTransaction' }),
127
+
128
+ firmwareUpdate: (connectId, params) => call({ ...params, connectId, method: 'firmwareUpdate' }),
127
129
  };
128
130
  return api;
129
131
  };
@@ -0,0 +1,21 @@
1
+ import type { PROTO } from '../../constants';
2
+ import type { Params, Response } from '../params';
3
+
4
+ export interface FirmwareUpdateBinary {
5
+ binary: ArrayBuffer;
6
+ }
7
+
8
+ export interface FirmwareUpdate {
9
+ version: number[];
10
+ btcOnly?: boolean;
11
+ updateType: 'firmware' | 'ble';
12
+ }
13
+
14
+ export declare function firmwareUpdate(
15
+ connectId: string | undefined,
16
+ params: Params<FirmwareUpdate>
17
+ ): Response<PROTO.Success>;
18
+ export declare function firmwareUpdate(
19
+ connectId: string | undefined,
20
+ params: Params<FirmwareUpdateBinary>
21
+ ): Response<PROTO.Success>;
@@ -39,6 +39,7 @@ import { solSignTransaction } from './solSignTransaction';
39
39
  import { stellarGetAddress } from './stellarGetAddress';
40
40
  import { stellarSignTransaction } from './stellarSignTransaction';
41
41
  import { cipherKeyValue } from './cipherKeyValue';
42
+ import { firmwareUpdate } from './firmwareUpdate';
42
43
 
43
44
  export * from './export';
44
45
 
@@ -108,4 +109,6 @@ export type CoreApi = {
108
109
 
109
110
  stellarGetAddress: typeof stellarGetAddress;
110
111
  stellarSignTransaction: typeof stellarSignTransaction;
112
+
113
+ firmwareUpdate: typeof firmwareUpdate;
111
114
  };
@@ -86,3 +86,47 @@ export type ITransportStatus = 'valid' | 'outdated';
86
86
  export type DeviceFirmwareRange = {
87
87
  [deviceType in IDeviceType | IDeviceModel]?: { min: string; max?: string };
88
88
  };
89
+
90
+ type FeaturesNarrowing =
91
+ | {
92
+ major_version: 2;
93
+ fw_major: null;
94
+ fw_minor: null;
95
+ fw_patch: null;
96
+ bootloader_mode: true;
97
+ firmware_present: false;
98
+ }
99
+ | {
100
+ major_version: 2;
101
+ fw_major: null;
102
+ fw_minor: null;
103
+ fw_patch: null;
104
+ bootloader_mode: null;
105
+ firmware_present: null;
106
+ }
107
+ | {
108
+ major_version: 2;
109
+ fw_major: 2;
110
+ fw_minor: number;
111
+ fw_patch: number;
112
+ bootloader_mode: true;
113
+ firmware_present: true;
114
+ }
115
+ | {
116
+ major_version: 1;
117
+ fw_major: null;
118
+ fw_minor: null;
119
+ fw_patch: null;
120
+ bootloader_mode: true;
121
+ firmware_present: false;
122
+ }
123
+ | {
124
+ major_version: 1;
125
+ fw_major: null;
126
+ fw_minor: null;
127
+ fw_patch: null;
128
+ bootloader_mode: true;
129
+ firmware_present: true;
130
+ };
131
+
132
+ export type StrictFeatures = Features & FeaturesNarrowing;
@@ -9,7 +9,8 @@ export interface FirmwareRange {
9
9
  };
10
10
  }
11
11
 
12
- export type VersionArray = [1 | 2, number, number];
12
+ export type MajorVersion = 1 | 2;
13
+ export type VersionArray = [MajorVersion, number, number];
13
14
 
14
15
  export type FirmwareRelease = {
15
16
  required: boolean;
@@ -2,6 +2,8 @@ export interface CommonParams {
2
2
  keepSession?: boolean;
3
3
  }
4
4
 
5
+ export type Params<T> = CommonParams & T & { bundle?: undefined };
6
+
5
7
  export interface Unsuccessful {
6
8
  success: false;
7
9
  payload: { error: string; code?: string };
@@ -1,5 +1,5 @@
1
1
  import { httpRequest as browserHttpRequest } from './networkUtils';
2
2
 
3
- export const httpRequest = (url: string, _type: string): any => browserHttpRequest(url);
3
+ export const httpRequest = (url: string, type: string): any => browserHttpRequest(url, type);
4
4
 
5
5
  export const getTimeStamp = () => new Date().getTime();
@@ -4,13 +4,15 @@ export const httpRequest = async (url: string, type = 'text') => {
4
4
  const response = await axios.request({
5
5
  url,
6
6
  withCredentials: false,
7
+ responseType: type === 'binary' ? 'arraybuffer' : 'json',
7
8
  });
9
+
8
10
  if (+response.status === 200) {
9
11
  if (type === 'json') {
10
12
  return response.data;
11
13
  }
12
14
  if (type === 'binary') {
13
- return response.data.arrayBuffer();
15
+ return response.data;
14
16
  }
15
17
  return response.data;
16
18
  }