@onekeyfe/hd-core 0.0.4 → 0.0.7

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.
@@ -5,7 +5,7 @@ export default class SearchDevices extends BaseMethod {
5
5
  init(): void;
6
6
  run(): Promise<{
7
7
  connectId: string;
8
- deviceType: string;
8
+ deviceType: import("..").IDeviceType | null;
9
9
  path: string;
10
10
  session?: string | null | undefined;
11
11
  debugSession?: string | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAKxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,IAAI;IAIE,GAAG;;;;;;;;;;CA+BV"}
1
+ {"version":3,"file":"SearchDevices.d.ts","sourceRoot":"","sources":["../../src/api/SearchDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAMxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACnD,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,IAAI;IAIE,GAAG;;;;;;;;;;CA8BV"}
@@ -1,5 +1,4 @@
1
1
  import { ChangeOutputScriptType, InputScriptType } from '@onekeyfe/hd-transport/src/types/messages';
2
- export declare const HD_HARDENED = 2147483648;
3
2
  export declare const toHardened: (n: number) => number;
4
3
  export declare const fromHardened: (n: number) => number;
5
4
  export declare const getHDPath: (path: string) => Array<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"pathUtils.d.ts","sourceRoot":"","sources":["../../../src/api/helpers/pathUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAGpG,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,UAAU,MAAO,MAAM,KAAG,MAAiC,CAAC;AACzE,eAAO,MAAM,YAAY,MAAO,MAAM,KAAG,MAAkC,CAAC;AAQ5E,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,MAAM,MAAM,CAuBpD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,MAAM,CAAC,KAAG,OACF,CAAC;AAEpD,eAAO,MAAM,YAAY,SAAU,MAAM,MAAM,CAAC,KAAG,OACA,CAAC;AAEpD,eAAO,MAAM,YAAY,SAAU,MAAM,MAAM,CAAC,KAAG,OACA,CAAC;AAEpD,eAAO,MAAM,aAAa,SAAU,MAAM,MAAM,CAAC,KAAG,eAcnD,CAAC;AAEF,eAAO,MAAM,mBAAmB,mCAAsB,sBAmBrD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,MAAM,CAAC,KAAG,MAWpD,CAAC;AAEF,eAAO,MAAM,YAAY,SACjB,MAAM,GAAG,MAAM,MAAM,CAAC,sCAG3B,MAAM,MAAM,CAoBd,CAAC"}
1
+ {"version":3,"file":"pathUtils.d.ts","sourceRoot":"","sources":["../../../src/api/helpers/pathUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAIpG,eAAO,MAAM,UAAU,MAAO,MAAM,KAAG,MAAiC,CAAC;AACzE,eAAO,MAAM,YAAY,MAAO,MAAM,KAAG,MAAkC,CAAC;AAQ5E,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,MAAM,MAAM,CAuBpD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,MAAM,CAAC,KAAG,OACF,CAAC;AAEpD,eAAO,MAAM,YAAY,SAAU,MAAM,MAAM,CAAC,KAAG,OACA,CAAC;AAEpD,eAAO,MAAM,YAAY,SAAU,MAAM,MAAM,CAAC,KAAG,OACA,CAAC;AAEpD,eAAO,MAAM,aAAa,SAAU,MAAM,MAAM,CAAC,KAAG,eAcnD,CAAC;AAEF,eAAO,MAAM,mBAAmB,mCAAsB,sBAmBrD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,MAAM,CAAC,KAAG,MAWpD,CAAC;AAEF,eAAO,MAAM,YAAY,SACjB,MAAM,GAAG,MAAM,MAAM,CAAC,sCAG3B,MAAM,MAAM,CAoBd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,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;AAWxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBAuHjD,CAAC;AAoHF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,YAAY;IACtC,aAAa,CAAC,OAAO,EAAE,WAAW;IAqBxC,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":";AAAA,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;AAWxD,eAAO,MAAM,OAAO,YAAmB,WAAW,iBAgIjD,CAAC;AAoHF,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"}
@@ -8,9 +8,11 @@ export declare const UI_REQUEST: {
8
8
  readonly INVALID_PIN: "ui-invalid_pin";
9
9
  readonly REQUEST_BUTTON: "ui-button";
10
10
  readonly CLOSE_UI_WINDOW: "ui-close_window";
11
+ readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
12
+ readonly LOCATION_PERMISSION: "ui-location_permission";
11
13
  };
12
14
  export interface UiRequestWithoutPayload {
13
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
15
+ type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
14
16
  payload?: typeof undefined;
15
17
  }
16
18
  export declare type UiRequestDeviceAction = {
@@ -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;;;;;CAMb,CAAC;AAEX,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,UAAU,CAAC,eAAe,CAAC;IACxC,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,CAAC;KACnC,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;;;;;;;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,CAAC;KACnC,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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
2
2
  import { Messages, Transport, OneKeyDeviceInfo } from '@onekeyfe/hd-transport';
3
3
  export { Messages as PROTO } from '@onekeyfe/hd-transport';
4
- import { EthereumPublicKey, EthereumMessageSignature, Success as Success$1, Address, MultisigRedeemScriptType, InputScriptType, PublicKey, MessageSignature, TxInputType, TxOutputType, PrevInput, TxOutputBinType, TxInput, RecoveryDeviceType, SafetyCheckLevel, StarcoinAddress as StarcoinAddress$1, StarcoinPublicKey as StarcoinPublicKey$1, StarcoinMessageSignature, StarcoinSignedTx } from '@onekeyfe/hd-transport/src/types/messages';
4
+ import { EthereumPublicKey, EthereumMessageSignature, Success as Success$1, Address, MultisigRedeemScriptType, InputScriptType, PublicKey, MessageSignature, PrevInput, TxOutputBinType, TxInput, TxOutputType, TxInputType, RecoveryDeviceType, SafetyCheckLevel, StarcoinAddress as StarcoinAddress$1, StarcoinPublicKey as StarcoinPublicKey$1, StarcoinMessageSignature, StarcoinSignedTx } from '@onekeyfe/hd-transport/src/types/messages';
5
5
 
6
6
  interface CommonParams {
7
7
  keepSession?: boolean;
@@ -361,6 +361,20 @@ declare type BTCSignMessageParams = {
361
361
  };
362
362
  declare function btcSignMessage(connectId: string, params: CommonParams & BTCSignMessageParams): Response<MessageSignature>;
363
363
 
364
+ declare type SignedTransaction = {
365
+ signatures: string[];
366
+ serializedTx: string;
367
+ txid?: string;
368
+ };
369
+ declare type TransactionOptions = {
370
+ version?: number;
371
+ lock_time?: number;
372
+ expiry?: number;
373
+ overwintered?: boolean;
374
+ version_group_id?: number;
375
+ timestamp?: number;
376
+ branch_id?: number;
377
+ };
364
378
  declare type RefTransaction = {
365
379
  hash: string;
366
380
  version: number;
@@ -417,7 +431,7 @@ declare type BTCSignTransactionParams = {
417
431
  branchId?: number;
418
432
  timestamp?: number;
419
433
  };
420
- declare function btcSignTransaction(connectId: string, params: CommonParams & BTCSignTransactionParams): Response<Success$1>;
434
+ declare function btcSignTransaction(connectId: string, params: CommonParams & BTCSignTransactionParams): Response<SignedTransaction>;
421
435
 
422
436
  declare type BTCVerifyMessageParams = {
423
437
  address: string;
@@ -629,9 +643,11 @@ declare const UI_REQUEST: {
629
643
  readonly INVALID_PIN: "ui-invalid_pin";
630
644
  readonly REQUEST_BUTTON: "ui-button";
631
645
  readonly CLOSE_UI_WINDOW: "ui-close_window";
646
+ readonly BLUETOOTH_PERMISSION: "ui-bluetooth_permission";
647
+ readonly LOCATION_PERMISSION: "ui-location_permission";
632
648
  };
633
649
  interface UiRequestWithoutPayload {
634
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
650
+ type: typeof UI_REQUEST.CLOSE_UI_WINDOW | typeof UI_REQUEST.BLUETOOTH_PERMISSION | typeof UI_REQUEST.LOCATION_PERMISSION;
635
651
  payload?: typeof undefined;
636
652
  }
637
653
  declare type UiRequestDeviceAction = {
@@ -874,10 +890,13 @@ declare const getDeviceType: (features?: {
874
890
  display_rotation: number | null;
875
891
  experimental_features: boolean | null;
876
892
  } | undefined) => IDeviceType;
893
+ declare const getDeviceTypeByBleName: (name?: string | undefined) => IDeviceType | null;
894
+ declare const getDeviceTypeByDeviceId: (deviceId?: string | undefined) => IDeviceType;
877
895
  declare const getDeviceUUID: (features: Features) => string;
878
896
  declare const getDeviceLabel: (features: Features) => string;
879
- declare const getDeviceFirmwareVersion: (features: Features) => IVersionArray;
880
- declare const getDeviceBLEFirmwareVersion: (features: Features) => IVersionArray | null;
897
+
898
+ declare const getHDPath: (path: string) => Array<number>;
899
+ declare const getScriptType: (path: Array<number>) => InputScriptType;
881
900
 
882
901
  declare type RunOptions = {
883
902
  keepSession?: boolean;
@@ -982,4 +1001,4 @@ declare class DataManager {
982
1001
 
983
1002
  declare const HardwareSdk: ({ init, call, dispose, eventEmitter, uiResponse, cancel, }: InjectApi) => CoreApi;
984
1003
 
985
- export { AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, 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, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MethodResponseMessage, PostMessageEvent, RESPONSE_EVENT, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, Success, 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, getDeviceBLEFirmwareVersion, getDeviceFirmwareVersion, getDeviceLabel, getDeviceType, getDeviceUUID, getEnv, getTimeStamp, httpRequest, init as initCore, initLog, isValidVersionArray, isValidVersionString, normalizeVersionArray, parseConnectSettings, parseMessage, versionCompare, versionSplit };
1004
+ export { AccountAddress, AccountAddresses, AssetsMap, BTCAddress, BTCGetAddressParams, BTCGetPublicKeyParams, BTCPublicKey, BTCSignMessageParams, BTCSignTransactionParams, BTCVerifyMessageParams, CORE_EVENT, CallMethod, CallMethodAnyResponse, CallMethodKeys, CallMethodPayload, CallMethodResponse, CallMethodUnion, CommonParams, ConnectSettings, Core, CoreApi, CoreMessage, DEFAULT_PRIORITY, DEVICE, DEVICE_EVENT, DataManager, Deferred, Device$1 as Device, DeviceButtonRequest, DeviceButtonRequestPayload, DeviceChangePinParams, DeviceEvent, DeviceEventListenerFn, DeviceEventMessage, 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, IDeviceType, IFRAME, IFirmwareReleaseInfo, IFrameBridge, IFrameCallMessage, IFrameEvent, IFrameEventMessage, IFrameInit, ILocale, ITransportStatus, IVersionArray, KnownDevice, MethodResponseMessage, PostMessageEvent, RESPONSE_EVENT, RefTransaction, ReleaseInfo, RemoteConfigResponse, Response, SearchDevice, SignedTransaction, StarcoinAddress, StarcoinGetAddressParams, StarcoinGetPublicKeyParams, StarcoinPublicKey, StarcoinSignMessageParams, StarcoinSignTransactionParams, StarcoinVerifyMessageParams, 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
@@ -814,6 +814,26 @@ const getDeviceType = (features) => {
814
814
  }
815
815
  const serialNo = features.serial_no;
816
816
  const miniFlag = serialNo.slice(0, 2);
817
+ if (miniFlag.toLowerCase() === 'mi')
818
+ return 'mini';
819
+ if (miniFlag.toLowerCase() === 'tc')
820
+ return 'touch';
821
+ return 'classic';
822
+ };
823
+ const getDeviceTypeByBleName = (name) => {
824
+ if (!name)
825
+ return 'classic';
826
+ if (name.startsWith('MI'))
827
+ return 'mini';
828
+ if (name.startsWith('T'))
829
+ return 'touch';
830
+ return 'classic';
831
+ };
832
+ const getDeviceTypeByDeviceId = (deviceId) => {
833
+ if (!deviceId) {
834
+ return 'classic';
835
+ }
836
+ const miniFlag = deviceId.slice(0, 2);
817
837
  if (miniFlag.toLowerCase() === 'mi')
818
838
  return 'mini';
819
839
  return 'classic';
@@ -845,6 +865,109 @@ const getDeviceBLEFirmwareVersion = (features) => {
845
865
  return features.ble_ver.split('.');
846
866
  };
847
867
 
868
+ const HD_HARDENED = 0x80000000;
869
+ const toHardened = (n) => (n | HD_HARDENED) >>> 0;
870
+ const fromHardened = (n) => (n & ~HD_HARDENED) >>> 0;
871
+ const PATH_NOT_VALID = TypedError('Method_InvalidParameter', 'Not a valid path');
872
+ const PATH_NEGATIVE_VALUES = TypedError('Method_InvalidParameter', 'Path cannot contain negative values');
873
+ const getHDPath = (path) => {
874
+ const parts = path.toLowerCase().split('/');
875
+ if (parts[0] !== 'm')
876
+ throw PATH_NOT_VALID;
877
+ return parts
878
+ .filter((p) => p !== 'm' && p !== '')
879
+ .map((p) => {
880
+ let hardened = false;
881
+ if (p.substr(p.length - 1) === "'") {
882
+ hardened = true;
883
+ p = p.substr(0, p.length - 1);
884
+ }
885
+ let n = parseInt(p);
886
+ if (Number.isNaN(n)) {
887
+ throw PATH_NOT_VALID;
888
+ }
889
+ else if (n < 0) {
890
+ throw PATH_NEGATIVE_VALUES;
891
+ }
892
+ if (hardened) {
893
+ n = toHardened(n);
894
+ }
895
+ return n;
896
+ });
897
+ };
898
+ const isMultisigPath = (path) => Array.isArray(path) && path[0] === toHardened(48);
899
+ const isSegwitPath = (path) => Array.isArray(path) && path[0] === toHardened(49);
900
+ const getScriptType = (path) => {
901
+ if (!Array.isArray(path) || path.length < 1)
902
+ return 'SPENDADDRESS';
903
+ const p1 = fromHardened(path[0]);
904
+ switch (p1) {
905
+ case 48:
906
+ return 'SPENDMULTISIG';
907
+ case 49:
908
+ return 'SPENDP2SHWITNESS';
909
+ case 84:
910
+ return 'SPENDWITNESS';
911
+ default:
912
+ return 'SPENDADDRESS';
913
+ }
914
+ };
915
+ const getOutputScriptType = (path) => {
916
+ if (!Array.isArray(path) || path.length < 1)
917
+ return 'PAYTOADDRESS';
918
+ if (path[0] === 49) {
919
+ return 'PAYTOP2SHWITNESS';
920
+ }
921
+ const p = fromHardened(path[0]);
922
+ switch (p) {
923
+ case 48:
924
+ return 'PAYTOMULTISIG';
925
+ case 49:
926
+ return 'PAYTOP2SHWITNESS';
927
+ case 84:
928
+ return 'PAYTOWITNESS';
929
+ default:
930
+ return 'PAYTOADDRESS';
931
+ }
932
+ };
933
+ const serializedPath = (path) => {
934
+ const pathStr = path
935
+ .map((p) => {
936
+ if (p & HD_HARDENED) {
937
+ return `${p & ~HD_HARDENED}'`;
938
+ }
939
+ return p;
940
+ })
941
+ .join('/');
942
+ return `m/${pathStr}`;
943
+ };
944
+ const validatePath = (path, length = 0, base = false) => {
945
+ let valid;
946
+ if (typeof path === 'string') {
947
+ valid = getHDPath(path);
948
+ }
949
+ else if (Array.isArray(path)) {
950
+ valid = path.map((p) => {
951
+ const n = parseInt(p);
952
+ if (Number.isNaN(n)) {
953
+ throw PATH_NOT_VALID;
954
+ }
955
+ else if (n < 0) {
956
+ throw PATH_NEGATIVE_VALUES;
957
+ }
958
+ return n;
959
+ });
960
+ }
961
+ else {
962
+ valid = undefined;
963
+ }
964
+ if (!valid)
965
+ throw PATH_NOT_VALID;
966
+ if (length > 0 && valid.length < length)
967
+ throw PATH_NOT_VALID;
968
+ return base ? valid.splice(0, 3) : valid;
969
+ };
970
+
848
971
  var nested = {
849
972
  BinanceGetAddress: {
850
973
  fields: {
@@ -9808,6 +9931,8 @@ const UI_REQUEST$1 = {
9808
9931
  INVALID_PIN: 'ui-invalid_pin',
9809
9932
  REQUEST_BUTTON: 'ui-button',
9810
9933
  CLOSE_UI_WINDOW: 'ui-close_window',
9934
+ BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
9935
+ LOCATION_PERMISSION: 'ui-location_permission',
9811
9936
  };
9812
9937
  const createUiMessage = (type, payload) => ({
9813
9938
  event: UI_EVENT,
@@ -10457,7 +10582,10 @@ class SearchDevices extends BaseMethod {
10457
10582
  const devicesDescriptor = (_c = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _c !== void 0 ? _c : [];
10458
10583
  const env = DataManager.getSettings('env');
10459
10584
  if (env === 'react-native') {
10460
- return devicesDescriptor.map(device => (Object.assign(Object.assign({}, device), { connectId: device.id, deviceType: 'classic' })));
10585
+ return devicesDescriptor.map(device => {
10586
+ var _a;
10587
+ return (Object.assign(Object.assign({}, device), { connectId: device.id, deviceType: getDeviceTypeByBleName((_a = device.name) !== null && _a !== void 0 ? _a : '') }));
10588
+ });
10461
10589
  }
10462
10590
  const devices = [];
10463
10591
  try {
@@ -10492,109 +10620,6 @@ class GetFeatures extends BaseMethod {
10492
10620
  }
10493
10621
  }
10494
10622
 
10495
- const HD_HARDENED = 0x80000000;
10496
- const toHardened = (n) => (n | HD_HARDENED) >>> 0;
10497
- const fromHardened = (n) => (n & ~HD_HARDENED) >>> 0;
10498
- const PATH_NOT_VALID = TypedError('Method_InvalidParameter', 'Not a valid path');
10499
- const PATH_NEGATIVE_VALUES = TypedError('Method_InvalidParameter', 'Path cannot contain negative values');
10500
- const getHDPath = (path) => {
10501
- const parts = path.toLowerCase().split('/');
10502
- if (parts[0] !== 'm')
10503
- throw PATH_NOT_VALID;
10504
- return parts
10505
- .filter((p) => p !== 'm' && p !== '')
10506
- .map((p) => {
10507
- let hardened = false;
10508
- if (p.substr(p.length - 1) === "'") {
10509
- hardened = true;
10510
- p = p.substr(0, p.length - 1);
10511
- }
10512
- let n = parseInt(p);
10513
- if (Number.isNaN(n)) {
10514
- throw PATH_NOT_VALID;
10515
- }
10516
- else if (n < 0) {
10517
- throw PATH_NEGATIVE_VALUES;
10518
- }
10519
- if (hardened) {
10520
- n = toHardened(n);
10521
- }
10522
- return n;
10523
- });
10524
- };
10525
- const isMultisigPath = (path) => Array.isArray(path) && path[0] === toHardened(48);
10526
- const isSegwitPath = (path) => Array.isArray(path) && path[0] === toHardened(49);
10527
- const getScriptType = (path) => {
10528
- if (!Array.isArray(path) || path.length < 1)
10529
- return 'SPENDADDRESS';
10530
- const p1 = fromHardened(path[0]);
10531
- switch (p1) {
10532
- case 48:
10533
- return 'SPENDMULTISIG';
10534
- case 49:
10535
- return 'SPENDP2SHWITNESS';
10536
- case 84:
10537
- return 'SPENDWITNESS';
10538
- default:
10539
- return 'SPENDADDRESS';
10540
- }
10541
- };
10542
- const getOutputScriptType = (path) => {
10543
- if (!Array.isArray(path) || path.length < 1)
10544
- return 'PAYTOADDRESS';
10545
- if (path[0] === 49) {
10546
- return 'PAYTOP2SHWITNESS';
10547
- }
10548
- const p = fromHardened(path[0]);
10549
- switch (p) {
10550
- case 48:
10551
- return 'PAYTOMULTISIG';
10552
- case 49:
10553
- return 'PAYTOP2SHWITNESS';
10554
- case 84:
10555
- return 'PAYTOWITNESS';
10556
- default:
10557
- return 'PAYTOADDRESS';
10558
- }
10559
- };
10560
- const serializedPath = (path) => {
10561
- const pathStr = path
10562
- .map((p) => {
10563
- if (p & HD_HARDENED) {
10564
- return `${p & ~HD_HARDENED}'`;
10565
- }
10566
- return p;
10567
- })
10568
- .join('/');
10569
- return `m/${pathStr}`;
10570
- };
10571
- const validatePath = (path, length = 0, base = false) => {
10572
- let valid;
10573
- if (typeof path === 'string') {
10574
- valid = getHDPath(path);
10575
- }
10576
- else if (Array.isArray(path)) {
10577
- valid = path.map((p) => {
10578
- const n = parseInt(p);
10579
- if (Number.isNaN(n)) {
10580
- throw PATH_NOT_VALID;
10581
- }
10582
- else if (n < 0) {
10583
- throw PATH_NEGATIVE_VALUES;
10584
- }
10585
- return n;
10586
- });
10587
- }
10588
- else {
10589
- valid = undefined;
10590
- }
10591
- if (!valid)
10592
- throw PATH_NOT_VALID;
10593
- if (length > 0 && valid.length < length)
10594
- throw PATH_NOT_VALID;
10595
- return base ? valid.splice(0, 3) : valid;
10596
- };
10597
-
10598
10623
  const hasHexPrefix = (str) => str.slice(0, 2).toLowerCase() === '0x';
10599
10624
  const stripHexPrefix = (str) => (hasHexPrefix(str) ? str.slice(2) : str);
10600
10625
  const addHexPrefix = (str) => (hasHexPrefix(str) ? str : `0x${str}`);
@@ -10987,8 +11012,8 @@ class BTCGetPublicKey extends BaseMethod {
10987
11012
  }
10988
11013
  init() {
10989
11014
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
10990
- const hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');
10991
- const payload = hasBundle ? this.payload : { bundle: [this.payload] };
11015
+ this.hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');
11016
+ const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };
10992
11017
  validateParams(payload, [{ name: 'bundle', type: 'array' }]);
10993
11018
  this.params = [];
10994
11019
  payload.bundle.forEach((batch) => {
@@ -12325,7 +12350,7 @@ let _connector;
12325
12350
  let _uiPromises = [];
12326
12351
  let _callPromise;
12327
12352
  const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12328
- var _a;
12353
+ var _a, _b;
12329
12354
  if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
12330
12355
  return Promise.reject(TypedError('Method_InvalidParameter', 'onCall: message.id or message.payload is missing'));
12331
12356
  }
@@ -12345,7 +12370,10 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12345
12370
  return createResponseMessage(method.responseID, true, response);
12346
12371
  }
12347
12372
  catch (error) {
12348
- return createResponseMessage(method.responseID, false, error);
12373
+ return createResponseMessage(method.responseID, false, {
12374
+ code: error.code,
12375
+ error: (_a = error.message) !== null && _a !== void 0 ? _a : error,
12376
+ });
12349
12377
  }
12350
12378
  }
12351
12379
  try {
@@ -12368,7 +12396,7 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12368
12396
  return Promise.reject(error);
12369
12397
  }
12370
12398
  Log.debug('Call API - setDevice: ', device);
12371
- (_a = method.setDevice) === null || _a === void 0 ? void 0 : _a.call(method, device);
12399
+ (_b = method.setDevice) === null || _b === void 0 ? void 0 : _b.call(method, device);
12372
12400
  device.on(DEVICE.PIN, onDevicePinHandler);
12373
12401
  device.on(DEVICE.BUTTON, (d, code) => {
12374
12402
  onDeviceButtonHandler(d, code);
@@ -12397,7 +12425,13 @@ const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
12397
12425
  Log.debug('Call API - Device Run: ', device);
12398
12426
  const deviceRun = () => device.run(inner);
12399
12427
  _callPromise = create(deviceRun);
12400
- return yield _callPromise.promise;
12428
+ try {
12429
+ return yield _callPromise.promise;
12430
+ }
12431
+ catch (e) {
12432
+ console.log('Device Run Error: ', e);
12433
+ return createResponseMessage(method.responseID, false, e.message);
12434
+ }
12401
12435
  }
12402
12436
  catch (error) {
12403
12437
  messageResponse = createResponseMessage(method.responseID, false, error);
@@ -12506,6 +12540,11 @@ class Core extends events.exports {
12506
12540
  }
12507
12541
  break;
12508
12542
  }
12543
+ case UI_REQUEST$1.BLUETOOTH_PERMISSION:
12544
+ case UI_REQUEST$1.LOCATION_PERMISSION: {
12545
+ postMessage(message);
12546
+ break;
12547
+ }
12509
12548
  case IFRAME.CALL: {
12510
12549
  const response = yield callAPI(message);
12511
12550
  return response;
@@ -12534,7 +12573,7 @@ const init = (settings, Transport) => __awaiter(void 0, void 0, void 0, function
12534
12573
  yield DataManager.load(settings);
12535
12574
  initTransport(Transport);
12536
12575
  }
12537
- catch (_b) {
12576
+ catch (_c) {
12538
12577
  Log.error('DataManager.load error');
12539
12578
  }
12540
12579
  enableLog(DataManager.getSettings('debug'));
@@ -12582,12 +12621,14 @@ exports.createUiMessage = createUiMessage;
12582
12621
  exports.createUiResponse = createUiResponse;
12583
12622
  exports["default"] = HardwareSdk;
12584
12623
  exports.enableLog = enableLog;
12585
- exports.getDeviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion;
12586
- exports.getDeviceFirmwareVersion = getDeviceFirmwareVersion;
12587
12624
  exports.getDeviceLabel = getDeviceLabel;
12588
12625
  exports.getDeviceType = getDeviceType;
12626
+ exports.getDeviceTypeByBleName = getDeviceTypeByBleName;
12627
+ exports.getDeviceTypeByDeviceId = getDeviceTypeByDeviceId;
12589
12628
  exports.getDeviceUUID = getDeviceUUID;
12590
12629
  exports.getEnv = getEnv;
12630
+ exports.getHDPath = getHDPath;
12631
+ exports.getScriptType = getScriptType;
12591
12632
  exports.getTimeStamp = getTimeStamp;
12592
12633
  exports.httpRequest = httpRequest;
12593
12634
  exports.initCore = init;
@@ -1,4 +1,4 @@
1
- import { TxInput as OrigTxInput, PrevInput, Success, TxOutputBinType, TxOutputType, TxInputType } from '@onekeyfe/hd-transport/src/types/messages';
1
+ import { TxInput as OrigTxInput, PrevInput, TxOutputBinType, TxOutputType, TxInputType } from '@onekeyfe/hd-transport/src/types/messages';
2
2
  import type { CommonParams, Response } from '../params';
3
3
  export declare type SignedTransaction = {
4
4
  signatures: string[];
@@ -70,5 +70,5 @@ export declare type BTCSignTransactionParams = {
70
70
  branchId?: number;
71
71
  timestamp?: number;
72
72
  };
73
- export declare function btcSignTransaction(connectId: string, params: CommonParams & BTCSignTransactionParams): Response<Success>;
73
+ export declare function btcSignTransaction(connectId: string, params: CommonParams & BTCSignTransactionParams): Response<SignedTransaction>;
74
74
  //# sourceMappingURL=btcSignTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"btcSignTransaction.d.ts","sourceRoot":"","sources":["../../../src/types/api/btcSignTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"btcSignTransaction.d.ts","sourceRoot":"","sources":["../../../src/types/api/btcSignTransaction.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export type { BTCAddress, BTCGetAddressParams } from './btcGetAddress';
2
2
  export type { BTCPublicKey, BTCGetPublicKeyParams } from './btcGetPublicKey';
3
3
  export type { BTCSignMessageParams } from './btcSignMessage';
4
4
  export type { BTCVerifyMessageParams } from './btcVerifyMessage';
5
+ export type { RefTransaction, AccountAddress, AccountAddresses, BTCSignTransactionParams, SignedTransaction, TransactionOptions, } from './btcSignTransaction';
5
6
  export type { DeviceChangePinParams } from './deviceChangePin';
6
7
  export type { DeviceFlagsParams } from './deviceFlags';
7
8
  export type { DeviceRecoveryParams } from './deviceRecovery';
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/types/api/export.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,wBAAwB,EACxB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,YAAY,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/types/api/export.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,wBAAwB,EACxB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,YAAY,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -46,6 +46,8 @@ export declare const getDeviceType: (features?: {
46
46
  display_rotation: number | null;
47
47
  experimental_features: boolean | null;
48
48
  } | undefined) => IDeviceType;
49
+ export declare const getDeviceTypeByBleName: (name?: string | undefined) => IDeviceType | null;
50
+ export declare const getDeviceTypeByDeviceId: (deviceId?: string | undefined) => IDeviceType;
49
51
  export declare const getDeviceUUID: (features: Features) => string;
50
52
  export declare const getDeviceLabel: (features: Features) => string;
51
53
  export declare const getDeviceFirmwareVersion: (features: Features) => IVersionArray;
@@ -1 +1 @@
1
- {"version":3,"file":"deviceFeaturesUtils.d.ts","sourceRoot":"","sources":["../../src/utils/deviceFeaturesUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0B,WASnD,CAAC;AAEF,eAAO,MAAM,aAAa,aAAc,QAAQ,WAM/C,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,QAAQ,WAOhD,CAAC;AAKF,eAAO,MAAM,wBAAwB,aAAc,QAAQ,kBAK1D,CAAC;AAKF,eAAO,MAAM,2BAA2B,aAAc,QAAQ,KAAG,aAAa,GAAG,IAKhF,CAAC"}
1
+ {"version":3,"file":"deviceFeaturesUtils.d.ts","sourceRoot":"","sources":["../../src/utils/deviceFeaturesUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA0B,WAUnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,iCAAoB,WAAW,GAAG,IAKpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,qCAAwB,WAQ3D,CAAC;AAEF,eAAO,MAAM,aAAa,aAAc,QAAQ,WAM/C,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,QAAQ,WAOhD,CAAC;AAKF,eAAO,MAAM,wBAAwB,aAAc,QAAQ,kBAK1D,CAAC;AAKF,eAAO,MAAM,2BAA2B,aAAc,QAAQ,KAAG,aAAa,GAAG,IAKhF,CAAC"}
@@ -2,6 +2,7 @@ import { initLog, enableLog } from './logger';
2
2
  export * from './assets';
3
3
  export * from './versionUtils';
4
4
  export * from './deferred';
5
- export * from './deviceFeaturesUtils';
5
+ export { getDeviceType, getDeviceTypeByBleName, getDeviceTypeByDeviceId, getDeviceUUID, getDeviceLabel, } from './deviceFeaturesUtils';
6
+ export { getHDPath, getScriptType } from '../api/helpers/pathUtils';
6
7
  export { initLog, enableLog };
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "0.0.4",
3
+ "version": "0.0.7",
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.4",
28
+ "@onekeyfe/hd-transport": "^0.0.7",
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": "cabba10f92c55ebbe16c54a329c892d03a0c05fb"
38
+ "gitHead": "7be7677368fcb50f411891f009367424ea77df33"
39
39
  }
@@ -3,6 +3,7 @@ import DeviceConnector from '../device/DeviceConnector';
3
3
  import TransportManager from '../data-manager/TransportManager';
4
4
  import { Device } from '../device/Device';
5
5
  import { DataManager } from '../data-manager';
6
+ import { getDeviceTypeByBleName } from '../utils';
6
7
 
7
8
  export default class SearchDevices extends BaseMethod {
8
9
  connector?: DeviceConnector;
@@ -26,8 +27,7 @@ export default class SearchDevices extends BaseMethod {
26
27
  return devicesDescriptor.map(device => ({
27
28
  ...device,
28
29
  connectId: device.id,
29
- // 蓝牙场景只有 classic 能被搜索到
30
- deviceType: 'classic',
30
+ deviceType: getDeviceTypeByBleName(device.name ?? ''),
31
31
  }));
32
32
  }
33
33
 
@@ -13,8 +13,8 @@ export default class BTCGetPublicKey extends BaseMethod<GetPublicKey[]> {
13
13
  init() {
14
14
  this.allowDeviceMode = [...this.allowDeviceMode, UI_REQUEST.INITIALIZE];
15
15
 
16
- const hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');
17
- const payload = hasBundle ? this.payload : { bundle: [this.payload] };
16
+ this.hasBundle = Object.prototype.hasOwnProperty.call(this.payload, 'bundle');
17
+ const payload = this.hasBundle ? this.payload : { bundle: [this.payload] };
18
18
 
19
19
  validateParams(payload, [{ name: 'bundle', type: 'array' }]);
20
20
 
@@ -3,7 +3,7 @@
3
3
  import { ChangeOutputScriptType, InputScriptType } from '@onekeyfe/hd-transport/src/types/messages';
4
4
  import { ERRORS } from '../../constants';
5
5
 
6
- export const HD_HARDENED = 0x80000000;
6
+ const HD_HARDENED = 0x80000000;
7
7
  export const toHardened = (n: number): number => (n | HD_HARDENED) >>> 0;
8
8
  export const fromHardened = (n: number): number => (n & ~HD_HARDENED) >>> 0;
9
9
 
package/src/core/index.ts CHANGED
@@ -61,7 +61,10 @@ export const callAPI = async (message: CoreMessage) => {
61
61
  const response = await method.run();
62
62
  return createResponseMessage(method.responseID, true, response);
63
63
  } catch (error) {
64
- return createResponseMessage(method.responseID, false, error);
64
+ return createResponseMessage(method.responseID, false, {
65
+ code: error.code,
66
+ error: error.message ?? error,
67
+ });
65
68
  }
66
69
  }
67
70
 
@@ -136,7 +139,13 @@ export const callAPI = async (message: CoreMessage) => {
136
139
  Log.debug('Call API - Device Run: ', device);
137
140
  const deviceRun = () => device.run(inner);
138
141
  _callPromise = createDeferred(deviceRun);
139
- return await _callPromise.promise;
142
+
143
+ try {
144
+ return await _callPromise.promise;
145
+ } catch (e) {
146
+ console.log('Device Run Error: ', e);
147
+ return createResponseMessage(method.responseID, false, e.message);
148
+ }
140
149
  } catch (error) {
141
150
  messageResponse = createResponseMessage(method.responseID, false, error);
142
151
  _callPromise?.reject(ERRORS.TypedError('Call_API', error));
@@ -282,6 +291,12 @@ export default class Core extends EventEmitter {
282
291
  break;
283
292
  }
284
293
 
294
+ case UI_REQUEST.BLUETOOTH_PERMISSION:
295
+ case UI_REQUEST.LOCATION_PERMISSION: {
296
+ postMessage(message);
297
+ break;
298
+ }
299
+
285
300
  case IFRAME.CALL: {
286
301
  const response = await callAPI(message);
287
302
  return response;
@@ -11,10 +11,16 @@ export const UI_REQUEST = {
11
11
  REQUEST_BUTTON: 'ui-button',
12
12
 
13
13
  CLOSE_UI_WINDOW: 'ui-close_window',
14
+
15
+ BLUETOOTH_PERMISSION: 'ui-bluetooth_permission',
16
+ LOCATION_PERMISSION: 'ui-location_permission',
14
17
  } as const;
15
18
 
16
19
  export interface UiRequestWithoutPayload {
17
- type: typeof UI_REQUEST.CLOSE_UI_WINDOW;
20
+ type:
21
+ | typeof UI_REQUEST.CLOSE_UI_WINDOW
22
+ | typeof UI_REQUEST.BLUETOOTH_PERMISSION
23
+ | typeof UI_REQUEST.LOCATION_PERMISSION;
18
24
  payload?: typeof undefined;
19
25
  }
20
26
 
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  TxInput as OrigTxInput,
3
3
  PrevInput,
4
- Success,
5
4
  TxOutputBinType,
6
5
  TxOutputType,
7
6
  TxInputType,
@@ -95,4 +94,4 @@ export type BTCSignTransactionParams = {
95
94
  export declare function btcSignTransaction(
96
95
  connectId: string,
97
96
  params: CommonParams & BTCSignTransactionParams
98
- ): Response<Success>;
97
+ ): Response<SignedTransaction>;
@@ -2,6 +2,14 @@ export type { BTCAddress, BTCGetAddressParams } from './btcGetAddress';
2
2
  export type { BTCPublicKey, BTCGetPublicKeyParams } from './btcGetPublicKey';
3
3
  export type { BTCSignMessageParams } from './btcSignMessage';
4
4
  export type { BTCVerifyMessageParams } from './btcVerifyMessage';
5
+ export type {
6
+ RefTransaction,
7
+ AccountAddress,
8
+ AccountAddresses,
9
+ BTCSignTransactionParams,
10
+ SignedTransaction,
11
+ TransactionOptions,
12
+ } from './btcSignTransaction';
5
13
 
6
14
  export type { DeviceChangePinParams } from './deviceChangePin';
7
15
  export type { DeviceFlagsParams } from './deviceFlags';
@@ -8,6 +8,24 @@ export const getDeviceType = (features?: Features): IDeviceType => {
8
8
  const serialNo = features.serial_no;
9
9
  const miniFlag = serialNo.slice(0, 2);
10
10
  if (miniFlag.toLowerCase() === 'mi') return 'mini';
11
+ if (miniFlag.toLowerCase() === 'tc') return 'touch';
12
+ return 'classic';
13
+ };
14
+
15
+ export const getDeviceTypeByBleName = (name?: string): IDeviceType | null => {
16
+ if (!name) return 'classic';
17
+ if (name.startsWith('MI')) return 'mini';
18
+ if (name.startsWith('T')) return 'touch';
19
+ return 'classic';
20
+ };
21
+
22
+ export const getDeviceTypeByDeviceId = (deviceId?: string): IDeviceType => {
23
+ if (!deviceId) {
24
+ return 'classic';
25
+ }
26
+
27
+ const miniFlag = deviceId.slice(0, 2);
28
+ if (miniFlag.toLowerCase() === 'mi') return 'mini';
11
29
  return 'classic';
12
30
  };
13
31
 
@@ -3,6 +3,13 @@ import { initLog, enableLog } from './logger';
3
3
  export * from './assets';
4
4
  export * from './versionUtils';
5
5
  export * from './deferred';
6
- export * from './deviceFeaturesUtils';
6
+ export {
7
+ getDeviceType,
8
+ getDeviceTypeByBleName,
9
+ getDeviceTypeByDeviceId,
10
+ getDeviceUUID,
11
+ getDeviceLabel,
12
+ } from './deviceFeaturesUtils';
13
+ export { getHDPath, getScriptType } from '../api/helpers/pathUtils';
7
14
 
8
15
  export { initLog, enableLog };