@onekeyfe/hd-core 1.2.0-alpha.2 → 1.2.0-alpha.21
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.
- package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +75 -0
- package/__tests__/DeviceCommands.test.ts +285 -0
- package/__tests__/DeviceEventRegistration.test.ts +43 -0
- package/__tests__/connectSettings.test.ts +19 -0
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +30 -0
- package/__tests__/device-lifecycle-events.test.ts +117 -0
- package/__tests__/device-pool-state.test.ts +132 -0
- package/__tests__/device-settings.test.ts +391 -0
- package/__tests__/device-state-contract.test.ts +27 -0
- package/__tests__/device-state-events.test.ts +162 -0
- package/__tests__/device-state-mapper.test.ts +241 -0
- package/__tests__/device-state-projector.test.ts +94 -0
- package/__tests__/device-state-store.test.ts +82 -0
- package/__tests__/device-utils.test.ts +106 -0
- package/__tests__/device-wallet-session-store.test.ts +213 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +103 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +10 -6
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
- package/__tests__/get-device-state.test.ts +410 -0
- package/__tests__/homescreen.test.ts +24 -0
- package/__tests__/kaspaSignTransaction.test.ts +591 -0
- package/__tests__/logBlockEvent.test.ts +26 -0
- package/__tests__/networkUtils.test.ts +386 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +559 -0
- package/__tests__/preInitialize.test.ts +33 -0
- package/__tests__/pro2Wallpaper.test.ts +50 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
- package/__tests__/protocol-v2.test.ts +3954 -1191
- package/__tests__/protocolV2FileWrite.test.ts +92 -0
- package/__tests__/protocolV2UiInteraction.test.ts +266 -0
- package/__tests__/public-device-state-api.test.ts +257 -0
- package/__tests__/public-pro2-api-boundary.test.ts +110 -0
- package/__tests__/refresh-device-state.test.ts +101 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/search-devices.test.ts +136 -0
- package/dist/api/BaseMethod.d.ts +8 -0
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/ClearSessionCache.d.ts +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +1 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +2 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +25 -5
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +7 -0
- package/dist/api/GetDeviceState.d.ts.map +1 -0
- package/dist/api/GetFeatures.d.ts +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts +1 -6
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +14 -0
- package/dist/api/OpenWalletSession.d.ts.map +1 -0
- package/dist/api/PathInfo.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +3 -0
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +17 -0
- package/dist/api/UploadPortfolio.d.ts.map +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +1 -1
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +1 -0
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +11 -3
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/progressThrottle.d.ts +3 -0
- package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
- package/dist/api/helpers/filesystemValidation.d.ts +3 -0
- package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts +1 -0
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +33 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +12 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +5 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +3 -2
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +28 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
- package/dist/api/protocol-v2/helpers.d.ts +27 -19
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -5
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/utils.d.ts +2 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/constants/index.d.ts +2 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/deviceEventRegistration.d.ts +11 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/data-manager/DataManager.d.ts +1 -1
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +35 -11
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +8 -6
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceFeaturesState.d.ts +3 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +4 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts +13 -0
- package/dist/device/DeviceStateMapper.d.ts.map +1 -0
- package/dist/device/DeviceStateProjector.d.ts +7 -0
- package/dist/device/DeviceStateProjector.d.ts.map +1 -0
- package/dist/device/DeviceStateStore.d.ts +21 -0
- package/dist/device/DeviceStateStore.d.ts.map +1 -0
- package/dist/device/DeviceWalletSessionStore.d.ts +20 -0
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
- package/dist/device/cloneDeviceState.d.ts +2 -0
- package/dist/device/cloneDeviceState.d.ts.map +1 -0
- package/dist/device/deviceIdentity.d.ts +5 -0
- package/dist/device/deviceIdentity.d.ts.map +1 -0
- package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/deviceProfile/index.d.ts +0 -1
- package/dist/deviceProfile/index.d.ts.map +1 -1
- package/dist/events/device.d.ts +11 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +18 -2
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +1361 -609
- package/dist/index.js +5898 -2860
- package/dist/inject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
- package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/features.d.ts +23 -28
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +3 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/lockedError.d.ts +2 -0
- package/dist/protocols/protocol-v2/lockedError.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +16 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts +11 -0
- package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +19 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/types/api/checkAllFirmwareRelease.d.ts +1 -2
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/deviceSettings.d.ts +11 -2
- package/dist/types/api/deviceSettings.d.ts.map +1 -1
- package/dist/types/api/deviceUnlock.d.ts +2 -2
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +6 -6
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/getDeviceState.d.ts +12 -0
- package/dist/types/api/getDeviceState.d.ts.map +1 -0
- package/dist/types/api/getFeatures.d.ts.map +1 -1
- package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
- package/dist/types/api/getPassphraseState.d.ts +2 -10
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +22 -25
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +27 -2
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +41 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +23 -28
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +10 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +121 -5
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts +1 -0
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +21 -1
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/assets.d.ts +2 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +13 -3
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -8
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +38 -7
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/deviceVersionUtils.d.ts +6 -5
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +5 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +9 -1
- package/dist/utils/networkUtils.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2Wallpaper.d.ts +12 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- package/dist/utils/tracing.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +36 -9
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/ClearSessionCache.ts +28 -0
- package/src/api/DirList.ts +5 -3
- package/src/api/DirMake.ts +3 -3
- package/src/api/DirRemove.ts +3 -3
- package/src/api/FileDelete.ts +3 -3
- package/src/api/FileRead.ts +23 -7
- package/src/api/FileWrite.ts +23 -168
- package/src/api/FirmwareUpdate.ts +4 -4
- package/src/api/FirmwareUpdateV2.ts +133 -45
- package/src/api/FirmwareUpdateV3.ts +3 -5
- package/src/api/FirmwareUpdateV4.ts +1138 -357
- package/src/api/GetDeviceState.ts +55 -0
- package/src/api/GetFeatures.ts +8 -3
- package/src/api/GetOnekeyFeatures.ts +3 -72
- package/src/api/GetPassphraseState.ts +11 -18
- package/src/api/OpenWalletSession.ts +221 -0
- package/src/api/PathInfo.ts +5 -3
- package/src/api/PromptWebDeviceAccess.ts +2 -3
- package/src/api/SearchDevices.ts +29 -4
- package/src/api/UploadPortfolio.ts +40 -0
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -2
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +4 -8
- package/src/api/benfen/BenfenGetAddress.ts +1 -1
- package/src/api/btc/BTCGetPublicKey.ts +1 -1
- package/src/api/cardano/CardanoSignMessage.ts +1 -1
- package/src/api/cardano/CardanoSignTransaction.ts +1 -1
- package/src/api/device/DeviceCancel.ts +1 -0
- package/src/api/device/DeviceChangePin.ts +24 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +1 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -4
- package/src/api/device/DeviceRebootToBootloader.ts +5 -4
- package/src/api/device/DeviceSettings.ts +183 -1
- package/src/api/device/DeviceUnlock.ts +11 -1
- package/src/api/device/DeviceUpdateBootloader.ts +1 -2
- package/src/api/device/DeviceWipe.ts +19 -0
- package/src/api/evm/EVMSignTypedData.ts +3 -5
- package/src/api/evm/legacyV1/getAddress.ts +2 -2
- package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
- package/src/api/evm/legacyV1/signMessage.ts +2 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +21 -7
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/progressThrottle.ts +44 -0
- package/src/api/helpers/batchGetPublickeys.ts +2 -2
- package/src/api/helpers/filesystemValidation.ts +61 -0
- package/src/api/helpers/paramsValidator.ts +1 -1
- package/src/api/helpers/protocolV2FileWrite.ts +193 -0
- package/src/api/index.ts +14 -20
- package/src/api/kaspa/KaspaSignTransaction.ts +341 -22
- package/src/api/kaspa/helpers/TransferSerialize.ts +14 -0
- package/src/api/nervos/NervosSignTransaction.ts +2 -2
- package/src/api/nexa/NexaSignTransaction.ts +1 -1
- package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +4 -4
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +7 -9
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +41 -6
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +6 -4
- package/src/api/protocol-v2/DeviceInfoGet.ts +145 -0
- package/src/api/protocol-v2/DeviceReboot.ts +5 -3
- package/src/api/protocol-v2/DeviceStatusGet.ts +16 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +131 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +5 -2
- package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +3 -3
- package/src/api/protocol-v2/Ping.ts +1 -1
- package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +3 -3
- package/src/api/protocol-v2/helpers.ts +58 -62
- package/src/api/ton/TonSignData.ts +1 -5
- package/src/api/utils.ts +7 -3
- package/src/constants/index.ts +7 -1
- package/src/core/RequestQueue.ts +1 -0
- package/src/core/deviceEventRegistration.ts +23 -0
- package/src/core/index.ts +140 -35
- package/src/data/messages/messages-protocol-v2.json +825 -709
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +13 -6
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +480 -192
- package/src/device/DeviceCommands.ts +81 -25
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +67 -19
- package/src/device/DeviceStateMapper.ts +349 -0
- package/src/device/DeviceStateProjector.ts +95 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +105 -0
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +235 -210
- package/src/deviceProfile/index.ts +0 -1
- package/src/events/device.ts +17 -1
- package/src/events/logBlockEvent.ts +8 -1
- package/src/events/ui-request.ts +24 -2
- package/src/inject.ts +23 -34
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +68 -82
- package/src/protocols/protocol-v2/firmware.ts +12 -36
- package/src/protocols/protocol-v2/index.ts +3 -1
- package/src/protocols/protocol-v2/lockedError.ts +10 -0
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +61 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +210 -0
- package/src/protocols/protocol-v2/unlockRetry.ts +76 -0
- package/src/protocols/protocol-v2/walletSession.ts +107 -0
- package/src/types/api/checkAllFirmwareRelease.ts +1 -2
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +5 -2
- package/src/types/api/firmwareUpdate.ts +28 -20
- package/src/types/api/getDeviceState.ts +19 -0
- package/src/types/api/getFeatures.ts +3 -0
- package/src/types/api/getOnekeyFeatures.ts +3 -0
- package/src/types/api/getPassphraseState.ts +8 -11
- package/src/types/api/index.ts +30 -53
- package/src/types/api/kaspaSignTransaction.ts +40 -2
- package/src/types/api/openWalletSession.ts +64 -0
- package/src/types/api/protocolV2.ts +58 -55
- package/src/types/api/sessionCache.ts +14 -0
- package/src/types/device.ts +170 -4
- package/src/types/params.ts +4 -0
- package/src/types/settings.ts +42 -30
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +173 -0
- package/src/utils/deviceFeaturesUtils.ts +68 -24
- package/src/utils/deviceInfoUtils.ts +26 -64
- package/src/utils/deviceSettings.ts +161 -39
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +10 -0
- package/src/utils/index.ts +21 -1
- package/src/utils/networkUtils.ts +270 -14
- package/src/utils/pro2Wallpaper.ts +109 -0
- package/src/utils/tracing.ts +3 -1
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
- package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts +0 -29
- package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
- package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
- package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
- package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
- package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
- package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
- package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
- package/dist/types/api/getDeviceInfo.d.ts +0 -85
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/protocol-v2/DevReboot.ts +0 -24
- package/src/api/protocol-v2/DeviceGetDeviceInfo.ts +0 -118
- package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -334
- package/src/types/api/getDeviceInfo.ts +0 -99
package/src/types/device.ts
CHANGED
|
@@ -2,7 +2,12 @@ import { EDeviceType, type EFirmwareType } from '@onekeyfe/hd-shared';
|
|
|
2
2
|
|
|
3
3
|
import type { IVersionArray } from './settings';
|
|
4
4
|
import type { PROTO } from '../constants';
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
Enum_SafetyCheckLevel,
|
|
7
|
+
OneKeyDeviceCommType,
|
|
8
|
+
ProtocolV2DeviceInfo,
|
|
9
|
+
DeviceStatus as ProtocolV2DeviceStatus,
|
|
10
|
+
} from '@onekeyfe/hd-transport';
|
|
6
11
|
|
|
7
12
|
export type DeviceStatus = 'available' | 'occupied' | 'used';
|
|
8
13
|
|
|
@@ -23,6 +28,12 @@ export type UnavailableCapabilities = { [key: string]: UnavailableCapability };
|
|
|
23
28
|
|
|
24
29
|
export type KnownDevice = {
|
|
25
30
|
connectId: string | null;
|
|
31
|
+
/**
|
|
32
|
+
* Stable physical-device identity. Current SDK responses always include this
|
|
33
|
+
* value; it remains optional in the type during the uuid compatibility window.
|
|
34
|
+
*/
|
|
35
|
+
serialNo?: string;
|
|
36
|
+
/** @deprecated Use serialNo instead. */
|
|
26
37
|
uuid: string;
|
|
27
38
|
deviceId: string | null;
|
|
28
39
|
deviceType: IDeviceType | null;
|
|
@@ -34,7 +45,8 @@ export type KnownDevice = {
|
|
|
34
45
|
error?: typeof undefined;
|
|
35
46
|
mode: EOneKeyDeviceMode;
|
|
36
47
|
features?: Features;
|
|
37
|
-
|
|
48
|
+
/** Unified SDK device-state snapshot; features remains a legacy projection. */
|
|
49
|
+
state?: DeviceState;
|
|
38
50
|
unavailableCapabilities: UnavailableCapabilities;
|
|
39
51
|
bleFirmwareVersion: IVersionArray | null;
|
|
40
52
|
firmwareVersion: IVersionArray | null;
|
|
@@ -47,6 +59,17 @@ export type KnownDevice = {
|
|
|
47
59
|
|
|
48
60
|
export type SearchDevice = {
|
|
49
61
|
connectId: string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Available after device initialization. BLE discovery does not connect to the
|
|
64
|
+
* device, so it returns null until a later initialized device response. Current
|
|
65
|
+
* SDK responses always include the field; it remains optional in the type during
|
|
66
|
+
* the uuid compatibility window.
|
|
67
|
+
*/
|
|
68
|
+
serialNo?: string | null;
|
|
69
|
+
/**
|
|
70
|
+
* @deprecated Ambiguous legacy identifier. Use serialNo for hardware identity
|
|
71
|
+
* and connectId for transport routing.
|
|
72
|
+
*/
|
|
50
73
|
uuid: string;
|
|
51
74
|
deviceId: string | null;
|
|
52
75
|
deviceType: IDeviceType;
|
|
@@ -91,6 +114,7 @@ export type DeviceFeaturesProtocol = 'V1' | 'V2' | 'unknown';
|
|
|
91
114
|
export type DeviceFeaturesMode =
|
|
92
115
|
| 'normal'
|
|
93
116
|
| 'bootloader'
|
|
117
|
+
| 'romloader'
|
|
94
118
|
| 'notInitialized'
|
|
95
119
|
| 'backupMode'
|
|
96
120
|
| 'unknown';
|
|
@@ -126,9 +150,135 @@ export type DeviceFeaturesRaw = {
|
|
|
126
150
|
protocolV1Features?: PROTO.Features;
|
|
127
151
|
protocolV1OneKeyFeatures?: OnekeyFeatures;
|
|
128
152
|
protocolV2DeviceInfo?: ProtocolV2DeviceInfo;
|
|
153
|
+
protocolV2DeviceStatus?: ProtocolV2DeviceStatus;
|
|
129
154
|
};
|
|
130
155
|
|
|
131
|
-
export type
|
|
156
|
+
export type DeviceFeaturesRawPatch = {
|
|
157
|
+
[Key in keyof DeviceFeaturesRaw]?: DeviceFeaturesRaw[Key] | null;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
export type DeviceStateProtocol = DeviceFeaturesProtocol;
|
|
161
|
+
export type DeviceStateMode = DeviceFeaturesMode;
|
|
162
|
+
export type DeviceStateSection = 'identity' | 'status' | 'settings' | 'versions' | 'verification';
|
|
163
|
+
|
|
164
|
+
export type DeviceStateUpdateSource =
|
|
165
|
+
| 'initialize'
|
|
166
|
+
| 'device-info'
|
|
167
|
+
| 'device-status'
|
|
168
|
+
| 'settings-read'
|
|
169
|
+
| 'settings-write'
|
|
170
|
+
| 'change-pin'
|
|
171
|
+
| 'lock'
|
|
172
|
+
| 'unlock'
|
|
173
|
+
| 'passphrase'
|
|
174
|
+
| 'session-clear'
|
|
175
|
+
| 'firmware-update'
|
|
176
|
+
| 'transport-reconnect'
|
|
177
|
+
| 'compatibility';
|
|
178
|
+
|
|
179
|
+
export type DeviceStateIdentity = {
|
|
180
|
+
deviceType: IDeviceType;
|
|
181
|
+
firmwareType: EFirmwareType;
|
|
182
|
+
model: string | null;
|
|
183
|
+
vendor: string | null;
|
|
184
|
+
deviceId: string | null;
|
|
185
|
+
serialNo: string;
|
|
186
|
+
label: string | null;
|
|
187
|
+
bleName: string | null;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
export type DeviceStateStatus = {
|
|
191
|
+
mode: DeviceStateMode;
|
|
192
|
+
initialized: boolean | null;
|
|
193
|
+
unlocked: boolean | null;
|
|
194
|
+
firmwarePresent: boolean | null;
|
|
195
|
+
backupRequired: boolean | null;
|
|
196
|
+
noBackup: boolean | null;
|
|
197
|
+
unfinishedBackup: boolean | null;
|
|
198
|
+
recoveryMode: boolean | null;
|
|
199
|
+
passphraseProtection: boolean | null;
|
|
200
|
+
pinProtection: boolean | null;
|
|
201
|
+
attachToPinEnabled: boolean | null;
|
|
202
|
+
unlockedAttachPin: boolean | null;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
export type DeviceStateSettings = {
|
|
206
|
+
language: string | null;
|
|
207
|
+
bleEnabled: boolean | null;
|
|
208
|
+
sdCardPresent: boolean | null;
|
|
209
|
+
sdProtection: boolean | null;
|
|
210
|
+
wipeCodeProtection: boolean | null;
|
|
211
|
+
passphraseAlwaysOnDevice: boolean | null;
|
|
212
|
+
safetyChecks: Enum_SafetyCheckLevel | null;
|
|
213
|
+
autoLockDelayMs: number | null;
|
|
214
|
+
autoShutdownDelayMs: number | null;
|
|
215
|
+
displayRotation: number | null;
|
|
216
|
+
experimentalFeatures: boolean | null;
|
|
217
|
+
wallpaperPath: string | null;
|
|
218
|
+
brightness: number | null;
|
|
219
|
+
animationEnabled: boolean | null;
|
|
220
|
+
tapToWake: boolean | null;
|
|
221
|
+
hapticFeedback: boolean | null;
|
|
222
|
+
deviceNameDisplayEnabled: boolean | null;
|
|
223
|
+
airgapMode: boolean | null;
|
|
224
|
+
fidoEnabled: boolean | null;
|
|
225
|
+
usbLockEnabled: boolean | null;
|
|
226
|
+
randomKeypad: boolean | null;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export type DeviceStateVersions = {
|
|
230
|
+
firmware: string | null;
|
|
231
|
+
bootloader: string | null;
|
|
232
|
+
board: string | null;
|
|
233
|
+
ble: string | null;
|
|
234
|
+
/** @deprecated Kept for legacy consumers; new code should read se01. */
|
|
235
|
+
se?: string | null;
|
|
236
|
+
se01?: string | null;
|
|
237
|
+
se02?: string | null;
|
|
238
|
+
se03?: string | null;
|
|
239
|
+
se04?: string | null;
|
|
240
|
+
se01Boot?: string | null;
|
|
241
|
+
se02Boot?: string | null;
|
|
242
|
+
se03Boot?: string | null;
|
|
243
|
+
se04Boot?: string | null;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
export type DeviceState = {
|
|
247
|
+
schemaVersion: 1;
|
|
248
|
+
revision: number;
|
|
249
|
+
updatedAt: number;
|
|
250
|
+
protocol: DeviceStateProtocol;
|
|
251
|
+
/** Device-message protocol version, independent of the SDK V1/V2 protocol family. */
|
|
252
|
+
protocolVersion: number | null;
|
|
253
|
+
identity: DeviceStateIdentity;
|
|
254
|
+
status: DeviceStateStatus;
|
|
255
|
+
settings: DeviceStateSettings;
|
|
256
|
+
versions: DeviceStateVersions;
|
|
257
|
+
capabilities: Array<number | string>;
|
|
258
|
+
verification?: Partial<DeviceFeaturesVerify>;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
export type DeviceStatePatch = {
|
|
262
|
+
protocol?: DeviceStateProtocol;
|
|
263
|
+
protocolVersion?: number | null;
|
|
264
|
+
identity?: Partial<DeviceStateIdentity>;
|
|
265
|
+
status?: Partial<DeviceStateStatus>;
|
|
266
|
+
settings?: Partial<DeviceStateSettings>;
|
|
267
|
+
versions?: Partial<DeviceStateVersions>;
|
|
268
|
+
capabilities?: Array<number | string>;
|
|
269
|
+
verification?: DeviceFeaturesVerify;
|
|
270
|
+
raw?: DeviceFeaturesRawPatch;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
export type DeviceStateEvent = {
|
|
274
|
+
connectId: string | null;
|
|
275
|
+
state: DeviceState;
|
|
276
|
+
revision: number;
|
|
277
|
+
source: DeviceStateUpdateSource;
|
|
278
|
+
changedKeys: string[];
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
export type NormalizedFeatures = {
|
|
132
282
|
protocol: DeviceFeaturesProtocol;
|
|
133
283
|
protocolVersion?: number | null;
|
|
134
284
|
deviceType: IDeviceType;
|
|
@@ -157,10 +307,22 @@ export type Features = {
|
|
|
157
307
|
sdProtection: boolean | null;
|
|
158
308
|
wipeCodeProtection: boolean | null;
|
|
159
309
|
passphraseAlwaysOnDevice: boolean | null;
|
|
160
|
-
|
|
310
|
+
attachToPinEnabled?: boolean | null;
|
|
311
|
+
safetyChecks: Enum_SafetyCheckLevel | null;
|
|
161
312
|
autoLockDelayMs: number | null;
|
|
313
|
+
autoShutdownDelayMs: number | null;
|
|
162
314
|
displayRotation: number | null;
|
|
163
315
|
experimentalFeatures: boolean | null;
|
|
316
|
+
wallpaperPath: string | null;
|
|
317
|
+
brightness: number | null;
|
|
318
|
+
animationEnabled: boolean | null;
|
|
319
|
+
tapToWake: boolean | null;
|
|
320
|
+
hapticFeedback: boolean | null;
|
|
321
|
+
deviceNameDisplayEnabled: boolean | null;
|
|
322
|
+
airgapMode: boolean | null;
|
|
323
|
+
fidoEnabled: boolean | null;
|
|
324
|
+
usbLockEnabled: boolean | null;
|
|
325
|
+
randomKeypad: boolean | null;
|
|
164
326
|
firmwareVersion: string | null;
|
|
165
327
|
bootloaderVersion: string | null;
|
|
166
328
|
boardVersion: string | null;
|
|
@@ -181,6 +343,10 @@ export type Features = {
|
|
|
181
343
|
raw?: DeviceFeaturesRaw;
|
|
182
344
|
};
|
|
183
345
|
|
|
346
|
+
export type Features = NormalizedFeatures &
|
|
347
|
+
Partial<Omit<PROTO.Features, keyof NormalizedFeatures>> &
|
|
348
|
+
Partial<Omit<PROTO.OnekeyFeatures, keyof NormalizedFeatures | keyof PROTO.Features>>;
|
|
349
|
+
|
|
184
350
|
export type OnekeyFeatures = PROTO.OnekeyFeatures;
|
|
185
351
|
|
|
186
352
|
export type IDeviceType =
|
package/src/types/params.ts
CHANGED
package/src/types/settings.ts
CHANGED
|
@@ -40,6 +40,40 @@ export type IVersionArray = [number, number, number];
|
|
|
40
40
|
|
|
41
41
|
export type ILocale = 'zh-CN' | 'en-US';
|
|
42
42
|
|
|
43
|
+
export type IProtocolV2FirmwareComponentTarget =
|
|
44
|
+
| 'ROMLOADER'
|
|
45
|
+
| 'BOOTLOADER'
|
|
46
|
+
| 'APPLICATION_P1'
|
|
47
|
+
| 'APPLICATION_P2'
|
|
48
|
+
| 'COPROCESSOR'
|
|
49
|
+
| 'SE01'
|
|
50
|
+
| 'SE02'
|
|
51
|
+
| 'SE03'
|
|
52
|
+
| 'SE04';
|
|
53
|
+
|
|
54
|
+
export type IProtocolV2FirmwareComponent = {
|
|
55
|
+
target: IProtocolV2FirmwareComponentTarget;
|
|
56
|
+
url: string;
|
|
57
|
+
fingerprint?: string;
|
|
58
|
+
version?: IVersionArray;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/** Pro2 RESC bundle okpkg descriptor for incremental FileWrite synchronization. */
|
|
62
|
+
export type IProtocolV2ResourceBundle = {
|
|
63
|
+
/** Bundle name, such as images, animation, translations, or fonts_roobert. */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Download URL. */
|
|
66
|
+
url: string;
|
|
67
|
+
/** Device target path, such as vol0:/bundles/images/images.okpkg. */
|
|
68
|
+
devicePath: string;
|
|
69
|
+
/** okpkg payload_version used to skip matching content after FileRead. */
|
|
70
|
+
version?: IVersionArray;
|
|
71
|
+
/** okpkg payload_hash used for SHA3-512 comparison after FileRead. */
|
|
72
|
+
payloadHash?: string;
|
|
73
|
+
/** okpkg header_hash used for SHA3-512 comparison after FileRead. */
|
|
74
|
+
headerHash?: string;
|
|
75
|
+
};
|
|
76
|
+
|
|
43
77
|
/** STM32 firmware config */
|
|
44
78
|
export type IFirmwareReleaseInfo = {
|
|
45
79
|
required: boolean;
|
|
@@ -58,6 +92,11 @@ export type IFirmwareReleaseInfo = {
|
|
|
58
92
|
bootloaderVersion?: IVersionArray;
|
|
59
93
|
displayBootloaderVersion?: IVersionArray;
|
|
60
94
|
bootloaderRelatedFirmwareVersion?: IVersionArray;
|
|
95
|
+
upgradeType?: 'payload-package-set' | string;
|
|
96
|
+
components?: Record<string, IProtocolV2FirmwareComponent>;
|
|
97
|
+
installOrder?: string[];
|
|
98
|
+
/** Pro2 RESC bundles for incremental direct FileWrite synchronization. */
|
|
99
|
+
resourceBundles?: IProtocolV2ResourceBundle[];
|
|
61
100
|
bootloaderChangelog?: {
|
|
62
101
|
[k in ILocale]: string;
|
|
63
102
|
};
|
|
@@ -83,43 +122,16 @@ export type IBLEFirmwareReleaseInfo = {
|
|
|
83
122
|
};
|
|
84
123
|
};
|
|
85
124
|
|
|
86
|
-
type IKnownDevice = Exclude<IDeviceType, 'unknown'
|
|
125
|
+
type IKnownDevice = Exclude<IDeviceType, 'unknown'>;
|
|
87
126
|
|
|
88
|
-
/**
|
|
89
|
-
* Device firmware configuration map
|
|
90
|
-
*
|
|
91
|
-
* IMPORTANT: This type is used for firmware update logic.
|
|
92
|
-
* - DO NOT remove existing firmware fields
|
|
93
|
-
* - Only ADD new optional firmware fields for new versions
|
|
94
|
-
* - 'firmware' field is required for backward compatibility
|
|
95
|
-
* - 'ble' field is required for BLE firmware updates
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* // When adding firmware-v8:
|
|
99
|
-
* // {
|
|
100
|
-
* // firmware: IFirmwareReleaseInfo[];
|
|
101
|
-
* // 'firmware-v2'?: IFirmwareReleaseInfo[];
|
|
102
|
-
* // 'firmware-v8'?: IFirmwareReleaseInfo[];
|
|
103
|
-
* // 'firmware-v8'?: IFirmwareReleaseInfo[]; // New
|
|
104
|
-
* // 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
|
|
105
|
-
* // 'firmware-btc-v8'?: IFirmwareReleaseInfo[]; // New
|
|
106
|
-
* // ble: IBLEFirmwareReleaseInfo[];
|
|
107
|
-
* // }
|
|
108
|
-
*/
|
|
109
127
|
export type DeviceTypeMap = {
|
|
110
128
|
[k in IKnownDevice]: {
|
|
111
|
-
/** Base firmware field (required for backward compatibility) */
|
|
112
129
|
firmware: IFirmwareReleaseInfo[];
|
|
113
|
-
/**
|
|
130
|
+
/** Pro2 Protocol V2 payload package set */
|
|
131
|
+
'firmware-v1'?: IFirmwareReleaseInfo[];
|
|
114
132
|
'firmware-v2'?: IFirmwareReleaseInfo[];
|
|
115
|
-
/** Universal firmware v7 */
|
|
116
133
|
'firmware-v8'?: IFirmwareReleaseInfo[];
|
|
117
|
-
/** Bitcoin-only firmware v7 */
|
|
118
134
|
'firmware-btc-v8'?: IFirmwareReleaseInfo[];
|
|
119
|
-
// Future firmware versions should be added here as optional fields:
|
|
120
|
-
// 'firmware-v8'?: IFirmwareReleaseInfo[];
|
|
121
|
-
// 'firmware-btc-v8'?: IFirmwareReleaseInfo[];
|
|
122
|
-
/** BLE firmware (required) */
|
|
123
135
|
ble: IBLEFirmwareReleaseInfo[];
|
|
124
136
|
};
|
|
125
137
|
};
|
package/src/utils/assets.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { httpRequest as browserHttpRequest } from './networkUtils';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import type { HttpRequestOptions } from './networkUtils';
|
|
4
|
+
|
|
5
|
+
export const httpRequest = (url: string, type: string, options?: HttpRequestOptions): any =>
|
|
6
|
+
browserHttpRequest(url, type, options);
|
|
4
7
|
|
|
5
8
|
export const getTimeStamp = () => new Date().getTime();
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { EDeviceType, EFirmwareType } from '@onekeyfe/hd-shared';
|
|
2
|
+
import { Enum_Capability } from '@onekeyfe/hd-transport';
|
|
3
|
+
|
|
4
|
+
import type { PROTO } from '../constants';
|
|
5
|
+
import type { Features, IDeviceType } from '../types';
|
|
6
|
+
|
|
7
|
+
export type DeviceFeaturesInput = Features | PROTO.Features;
|
|
8
|
+
|
|
9
|
+
type CompatibleDeviceFeatures = Partial<Features> &
|
|
10
|
+
Partial<PROTO.Features> & {
|
|
11
|
+
onekey_serial?: string;
|
|
12
|
+
onekey_version?: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const asCompatibleFeatures = (features: DeviceFeaturesInput): CompatibleDeviceFeatures =>
|
|
16
|
+
features as CompatibleDeviceFeatures;
|
|
17
|
+
|
|
18
|
+
const firstNonEmptyString = (...values: Array<string | null | undefined>) =>
|
|
19
|
+
values.find(value => typeof value === 'string' && value.length > 0);
|
|
20
|
+
|
|
21
|
+
const firstMeaningfulVersion = (...versions: Array<string | null | undefined>) =>
|
|
22
|
+
versions.find(version => Boolean(version && version !== '0.0.0')) ?? null;
|
|
23
|
+
|
|
24
|
+
const versionFromParts = (major?: number | null, minor?: number | null, patch?: number | null) =>
|
|
25
|
+
[major, minor, patch].map(part => Number(part) || 0).join('.');
|
|
26
|
+
|
|
27
|
+
export const resolveDeviceSerialNo = (features?: DeviceFeaturesInput): string => {
|
|
28
|
+
if (!features) return '';
|
|
29
|
+
const compatible = asCompatibleFeatures(features);
|
|
30
|
+
return (
|
|
31
|
+
firstNonEmptyString(
|
|
32
|
+
compatible.serialNo,
|
|
33
|
+
compatible.onekey_serial_no,
|
|
34
|
+
compatible.onekey_serial,
|
|
35
|
+
compatible.serial_no
|
|
36
|
+
) ?? ''
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const resolveDeviceType = (features?: DeviceFeaturesInput): IDeviceType => {
|
|
41
|
+
if (!features || typeof features !== 'object') {
|
|
42
|
+
return EDeviceType.Unknown;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const compatible = asCompatibleFeatures(features);
|
|
46
|
+
if (compatible.deviceType && compatible.deviceType !== EDeviceType.Unknown) {
|
|
47
|
+
return compatible.deviceType;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
switch (compatible.onekey_device_type?.toString().toUpperCase()) {
|
|
51
|
+
case 'CLASSIC':
|
|
52
|
+
return EDeviceType.Classic;
|
|
53
|
+
case 'CLASSIC1S':
|
|
54
|
+
return EDeviceType.Classic1s;
|
|
55
|
+
case 'MINI':
|
|
56
|
+
return EDeviceType.Mini;
|
|
57
|
+
case 'TOUCH':
|
|
58
|
+
return EDeviceType.Touch;
|
|
59
|
+
case 'PRO':
|
|
60
|
+
return EDeviceType.Pro;
|
|
61
|
+
case 'PRO2':
|
|
62
|
+
return EDeviceType.Pro2;
|
|
63
|
+
case 'PURE':
|
|
64
|
+
return EDeviceType.ClassicPure;
|
|
65
|
+
default:
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (compatible.model?.toString().toLowerCase() === EDeviceType.Pro2) {
|
|
70
|
+
return EDeviceType.Pro2;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const serialNo = resolveDeviceSerialNo(features);
|
|
74
|
+
const prefix = serialNo.slice(0, 2).toLowerCase();
|
|
75
|
+
if (prefix === 'bi' || prefix === 'cl') return EDeviceType.Classic;
|
|
76
|
+
if (prefix === 'cp') return EDeviceType.ClassicPure;
|
|
77
|
+
if (prefix === 'mi') return EDeviceType.Mini;
|
|
78
|
+
if (prefix === 'tc') return EDeviceType.Touch;
|
|
79
|
+
if (prefix === 'pr') return EDeviceType.Pro;
|
|
80
|
+
if (prefix === 'p2') return EDeviceType.Pro2;
|
|
81
|
+
|
|
82
|
+
const bootloaderMode = compatible.bootloaderMode ?? compatible.bootloader_mode;
|
|
83
|
+
if (!serialNo && bootloaderMode === true && compatible.model === '1') {
|
|
84
|
+
return EDeviceType.Classic;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return compatible.deviceType ?? EDeviceType.Unknown;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const resolveDeviceFirmwareType = (features?: DeviceFeaturesInput): EFirmwareType => {
|
|
91
|
+
if (!features) {
|
|
92
|
+
return EFirmwareType.Universal;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const compatible = asCompatibleFeatures(features);
|
|
96
|
+
if (compatible.firmwareType) {
|
|
97
|
+
return compatible.firmwareType;
|
|
98
|
+
}
|
|
99
|
+
if (compatible.fw_vendor === 'OneKey Bitcoin-only') {
|
|
100
|
+
return EFirmwareType.BitcoinOnly;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const capabilities = compatible.capabilities as Array<number | string> | null | undefined;
|
|
104
|
+
const supportsBitcoinLike = capabilities?.some(
|
|
105
|
+
capability =>
|
|
106
|
+
capability === Enum_Capability.Capability_Bitcoin_like ||
|
|
107
|
+
capability === 'Capability_Bitcoin_like'
|
|
108
|
+
);
|
|
109
|
+
return capabilities?.length && !supportsBitcoinLike
|
|
110
|
+
? EFirmwareType.BitcoinOnly
|
|
111
|
+
: EFirmwareType.Universal;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export const resolveDeviceBleName = (features?: DeviceFeaturesInput): string | null => {
|
|
115
|
+
if (!features) return null;
|
|
116
|
+
const compatible = asCompatibleFeatures(features);
|
|
117
|
+
return (
|
|
118
|
+
firstNonEmptyString(compatible.bleName, compatible.onekey_ble_name, compatible.ble_name) ?? null
|
|
119
|
+
);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export const resolveDeviceFirmwareVersion = (features?: DeviceFeaturesInput): string | null => {
|
|
123
|
+
if (!features) return null;
|
|
124
|
+
const compatible = asCompatibleFeatures(features);
|
|
125
|
+
return firstMeaningfulVersion(
|
|
126
|
+
compatible.firmwareVersion,
|
|
127
|
+
compatible.onekey_firmware_version,
|
|
128
|
+
compatible.onekey_version,
|
|
129
|
+
versionFromParts(compatible.major_version, compatible.minor_version, compatible.patch_version)
|
|
130
|
+
);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const resolveDeviceBootloaderVersion = (features?: DeviceFeaturesInput): string | null => {
|
|
134
|
+
if (!features) return null;
|
|
135
|
+
const compatible = asCompatibleFeatures(features);
|
|
136
|
+
const bootloaderMode = compatible.bootloaderMode ?? compatible.bootloader_mode;
|
|
137
|
+
return firstMeaningfulVersion(
|
|
138
|
+
compatible.bootloaderVersion,
|
|
139
|
+
compatible.onekey_boot_version,
|
|
140
|
+
compatible.bootloader_version,
|
|
141
|
+
compatible.onekey_bootloader_version,
|
|
142
|
+
bootloaderMode
|
|
143
|
+
? versionFromParts(
|
|
144
|
+
compatible.major_version,
|
|
145
|
+
compatible.minor_version,
|
|
146
|
+
compatible.patch_version
|
|
147
|
+
)
|
|
148
|
+
: null
|
|
149
|
+
);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export const resolveDeviceBoardVersion = (features?: DeviceFeaturesInput): string | null => {
|
|
153
|
+
if (!features) return null;
|
|
154
|
+
const compatible = asCompatibleFeatures(features);
|
|
155
|
+
return firstMeaningfulVersion(
|
|
156
|
+
compatible.boardVersion,
|
|
157
|
+
compatible.onekey_board_version,
|
|
158
|
+
compatible.boardloader_version,
|
|
159
|
+
compatible.onekey_romloader_version,
|
|
160
|
+
compatible.romloader_version
|
|
161
|
+
);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
export const resolveDeviceBleFirmwareVersion = (features?: DeviceFeaturesInput): string | null => {
|
|
165
|
+
if (!features) return null;
|
|
166
|
+
const compatible = asCompatibleFeatures(features);
|
|
167
|
+
return firstMeaningfulVersion(
|
|
168
|
+
compatible.bleVersion,
|
|
169
|
+
compatible.onekey_ble_version,
|
|
170
|
+
compatible.ble_ver,
|
|
171
|
+
compatible.onekey_coprocessor_version
|
|
172
|
+
);
|
|
173
|
+
};
|