@trezor/connect 9.6.5-beta.2 → 9.7.0-beta.2

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 (415) hide show
  1. package/CHANGELOG.md +43 -15
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.js +31 -26
  4. package/lib/api/applySettings.js +43 -40
  5. package/lib/api/authenticateDevice.js +82 -54
  6. package/lib/api/authorizeCoinjoin.js +35 -28
  7. package/lib/api/backupDevice.js +32 -27
  8. package/lib/api/bitcoin/TransactionComposer.js +131 -123
  9. package/lib/api/bitcoin/createPendingTx.js +55 -52
  10. package/lib/api/bitcoin/enhanceSignTx.js +57 -55
  11. package/lib/api/bitcoin/index.js +4 -1
  12. package/lib/api/bitcoin/inputs.js +71 -46
  13. package/lib/api/bitcoin/outputs.js +108 -85
  14. package/lib/api/bitcoin/refTx.d.ts +1 -1
  15. package/lib/api/bitcoin/refTx.js +233 -201
  16. package/lib/api/bitcoin/signtx.js +208 -152
  17. package/lib/api/bitcoin/signtxLegacy.js +169 -119
  18. package/lib/api/bitcoin/signtxVerify.js +80 -67
  19. package/lib/api/bitcoin/transactionBytes.js +61 -59
  20. package/lib/api/bleUnpair.js +28 -25
  21. package/lib/api/blockchainDisconnect.js +31 -24
  22. package/lib/api/blockchainEstimateFee.js +94 -61
  23. package/lib/api/blockchainEvmRpcCall.js +51 -34
  24. package/lib/api/blockchainGetAccountBalanceHistory.d.ts +1 -1
  25. package/lib/api/blockchainGetAccountBalanceHistory.js +50 -32
  26. package/lib/api/blockchainGetCurrentFiatRates.d.ts +1 -1
  27. package/lib/api/blockchainGetCurrentFiatRates.js +43 -29
  28. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +1 -1
  29. package/lib/api/blockchainGetFiatRatesForTimestamps.js +49 -32
  30. package/lib/api/blockchainGetInfo.js +31 -22
  31. package/lib/api/blockchainGetTransactions.d.ts +1 -1
  32. package/lib/api/blockchainGetTransactions.js +36 -24
  33. package/lib/api/blockchainSetCustomBackend.js +34 -25
  34. package/lib/api/blockchainSubscribe.js +57 -36
  35. package/lib/api/blockchainSubscribeFiatRates.js +36 -24
  36. package/lib/api/blockchainUnsubscribe.js +57 -37
  37. package/lib/api/blockchainUnsubscribeFiatRates.js +31 -22
  38. package/lib/api/cancelCoinjoinAuthorization.js +26 -20
  39. package/lib/api/cardano/api/cardanoComposeTransaction.js +75 -50
  40. package/lib/api/cardano/api/cardanoGetAddress.js +105 -102
  41. package/lib/api/cardano/api/cardanoGetNativeScriptHash.js +59 -56
  42. package/lib/api/cardano/api/cardanoGetPublicKey.js +58 -58
  43. package/lib/api/cardano/api/cardanoSignMessage.js +81 -78
  44. package/lib/api/cardano/api/cardanoSignTransaction.js +269 -240
  45. package/lib/api/cardano/api/index.js +40 -7
  46. package/lib/api/cardano/cardanoAddressParameters.js +71 -65
  47. package/lib/api/cardano/cardanoAuxiliaryData.js +68 -63
  48. package/lib/api/cardano/cardanoCertificate.js +124 -119
  49. package/lib/api/cardano/cardanoInputs.js +33 -33
  50. package/lib/api/cardano/cardanoOutputs.d.ts +1 -1
  51. package/lib/api/cardano/cardanoOutputs.js +63 -61
  52. package/lib/api/cardano/cardanoTokenBundle.d.ts +2 -2
  53. package/lib/api/cardano/cardanoTokenBundle.js +18 -13
  54. package/lib/api/cardano/cardanoUtils.js +94 -89
  55. package/lib/api/cardano/cardanoWitnesses.js +46 -42
  56. package/lib/api/changeLanguage.js +40 -29
  57. package/lib/api/changePin.js +21 -16
  58. package/lib/api/changeWipeCode.js +24 -16
  59. package/lib/api/cipherKeyValue.js +42 -41
  60. package/lib/api/common/Discovery.js +114 -112
  61. package/lib/api/common/paramsValidator.js +110 -116
  62. package/lib/api/composeTransaction.d.ts +1 -1
  63. package/lib/api/composeTransaction.js +307 -256
  64. package/lib/api/discoverAccounts.js +291 -191
  65. package/lib/api/eos/api/eosGetPublicKey.js +56 -52
  66. package/lib/api/eos/api/eosSignTransaction.js +35 -26
  67. package/lib/api/eos/api/index.js +16 -3
  68. package/lib/api/eos/eosSignTx.js +308 -312
  69. package/lib/api/ethereum/api/ethereumGetAddress.js +106 -107
  70. package/lib/api/ethereum/api/ethereumGetPublicKey.js +72 -62
  71. package/lib/api/ethereum/api/ethereumSignMessage.js +55 -48
  72. package/lib/api/ethereum/api/ethereumSignTransaction.d.ts +33 -0
  73. package/lib/api/ethereum/api/ethereumSignTransaction.js +137 -132
  74. package/lib/api/ethereum/api/ethereumSignTypedData.d.ts +6 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -171
  76. package/lib/api/ethereum/api/ethereumVerifyMessage.js +27 -24
  77. package/lib/api/ethereum/api/index.js +40 -7
  78. package/lib/api/ethereum/ethereumDefinitions.js +94 -87
  79. package/lib/api/ethereum/ethereumSignTx.js +116 -111
  80. package/lib/api/ethereum/ethereumSignTypedData.js +98 -95
  81. package/lib/api/evoluGetDelegatedIdentityKey.d.ts +11 -0
  82. package/lib/api/evoluGetDelegatedIdentityKey.js +41 -0
  83. package/lib/api/evoluGetNode.js +24 -17
  84. package/lib/api/evoluSignRegistrationRequest.d.ts +12 -0
  85. package/lib/api/evoluSignRegistrationRequest.js +35 -0
  86. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  87. package/lib/api/firmware/getBinary.js +30 -22
  88. package/lib/api/firmware/index.js +46 -8
  89. package/lib/api/firmware/modifyFirmware.js +13 -12
  90. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  91. package/lib/api/firmware/uploadFirmware.js +84 -67
  92. package/lib/api/firmware/verifyEntropy.js +88 -83
  93. package/lib/api/getAccountDescriptor.js +118 -120
  94. package/lib/api/getAccountInfo.d.ts +14 -14
  95. package/lib/api/getAccountInfo.js +316 -287
  96. package/lib/api/getAddress.js +128 -118
  97. package/lib/api/getCoinInfo.js +22 -17
  98. package/lib/api/getDeviceState.js +16 -10
  99. package/lib/api/getFeatures.d.ts +5 -1
  100. package/lib/api/getFeatures.js +15 -12
  101. package/lib/api/getFirmwareHash.js +23 -18
  102. package/lib/api/getNonce.js +12 -9
  103. package/lib/api/getOwnershipId.js +57 -51
  104. package/lib/api/getOwnershipProof.js +66 -60
  105. package/lib/api/getPublicKey.js +72 -66
  106. package/lib/api/getSettings.js +12 -9
  107. package/lib/api/index.d.ts +2 -0
  108. package/lib/api/index.js +350 -58
  109. package/lib/api/loadDevice.js +40 -35
  110. package/lib/api/monero/api/index.js +28 -5
  111. package/lib/api/monero/api/moneroGetAddress.js +108 -82
  112. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  113. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  114. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  115. package/lib/api/nem/api/index.js +16 -3
  116. package/lib/api/nem/api/nemGetAddress.js +107 -102
  117. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  118. package/lib/api/nem/nemSignTx.js +128 -125
  119. package/lib/api/pushTransaction.js +31 -27
  120. package/lib/api/recoveryDevice.js +44 -39
  121. package/lib/api/requestLogin.d.ts +0 -1
  122. package/lib/api/requestLogin.js +47 -52
  123. package/lib/api/resetDevice.js +100 -90
  124. package/lib/api/ripple/api/index.js +16 -3
  125. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  126. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  127. package/lib/api/setBrightness.js +21 -16
  128. package/lib/api/setBusy.js +27 -20
  129. package/lib/api/setProxy.js +22 -15
  130. package/lib/api/showDeviceTutorial.js +18 -15
  131. package/lib/api/signMessage.js +50 -46
  132. package/lib/api/signTransaction.js +325 -238
  133. package/lib/api/solana/additionalInfo.js +17 -14
  134. package/lib/api/solana/api/index.js +28 -5
  135. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  136. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  137. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  138. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  139. package/lib/api/solana/solanaDefinitions.js +32 -25
  140. package/lib/api/solana/solanaUtils.d.ts +2 -2
  141. package/lib/api/solana/solanaUtils.js +231 -177
  142. package/lib/api/stellar/api/index.js +16 -3
  143. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  144. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  145. package/lib/api/stellar/stellarSignTx.js +184 -179
  146. package/lib/api/tezos/api/index.js +22 -4
  147. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  148. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  149. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  150. package/lib/api/tezos/tezosSignTx.js +183 -169
  151. package/lib/api/thpGetCredentials.js +23 -20
  152. package/lib/api/thpRemoveCredentials.js +28 -21
  153. package/lib/api/unlockPath.js +28 -21
  154. package/lib/api/verifyMessage.js +35 -33
  155. package/lib/api/wipeDevice.js +39 -34
  156. package/lib/backend/BackendManager.js +127 -107
  157. package/lib/backend/Blockchain.d.ts +1 -1
  158. package/lib/backend/Blockchain.js +220 -205
  159. package/lib/backend/BlockchainLink.js +17 -5
  160. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  161. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  162. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  163. package/lib/backend/fees/index.js +28 -21
  164. package/lib/constants/cardano.js +11 -8
  165. package/lib/constants/errors.js +72 -65
  166. package/lib/constants/firmware.js +5 -5
  167. package/lib/constants/index.js +16 -3
  168. package/lib/constants/nem.js +19 -16
  169. package/lib/constants/network.js +15 -22
  170. package/lib/constants/utxo.js +4 -1
  171. package/lib/core/AbstractMethod.d.ts +1 -1
  172. package/lib/core/AbstractMethod.js +248 -224
  173. package/lib/core/index.js +936 -775
  174. package/lib/core/method.js +19 -16
  175. package/lib/core/method.native.js +28 -23
  176. package/lib/core/onCallFirmwareUpdate.js +368 -299
  177. package/lib/data/DataManager.js +85 -77
  178. package/lib/data/analyticsInfo.js +35 -29
  179. package/lib/data/coinInfo.js +154 -156
  180. package/lib/data/config.d.ts +1 -1
  181. package/lib/data/config.js +362 -326
  182. package/lib/data/connectSettings.js +131 -144
  183. package/lib/data/defaultFeeLevels.js +154 -108
  184. package/lib/data/firmwareInfo.d.ts +1 -0
  185. package/lib/data/firmwareInfo.js +407 -377
  186. package/lib/data/thpSettings.js +36 -35
  187. package/lib/data/udevInfo.js +24 -24
  188. package/lib/data/version.d.ts +1 -1
  189. package/lib/data/version.js +6 -5
  190. package/lib/device/Device.d.ts +10 -7
  191. package/lib/device/Device.js +731 -749
  192. package/lib/device/DeviceCommands.js +226 -194
  193. package/lib/device/DeviceCurrentSession.d.ts +427 -337
  194. package/lib/device/DeviceCurrentSession.js +235 -236
  195. package/lib/device/DeviceList.d.ts +2 -0
  196. package/lib/device/DeviceList.js +219 -181
  197. package/lib/device/StateStorage.js +32 -29
  198. package/lib/device/TransportList.d.ts +1 -1
  199. package/lib/device/TransportList.js +37 -36
  200. package/lib/device/TransportManager.js +136 -140
  201. package/lib/device/calculateRevisionForDevice.js +20 -14
  202. package/lib/device/checkFirmwareRevision.js +66 -53
  203. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  204. package/lib/device/thp/handshake.js +95 -82
  205. package/lib/device/thp/index.js +53 -38
  206. package/lib/device/thp/pairing.js +209 -199
  207. package/lib/device/thp/session.js +27 -19
  208. package/lib/device/thp/thpCall.js +53 -43
  209. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  210. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  211. package/lib/device/workflow/handshake.js +50 -41
  212. package/lib/device/workflow/index.js +10 -2
  213. package/lib/device/workflow/trezorPushNotification.js +68 -63
  214. package/lib/device/workflow/validateState.js +156 -123
  215. package/lib/events/blockchain.js +13 -10
  216. package/lib/events/call.d.ts +6 -4
  217. package/lib/events/call.js +14 -13
  218. package/lib/events/core.js +24 -21
  219. package/lib/events/device.d.ts +2 -2
  220. package/lib/events/device.js +32 -19
  221. package/lib/events/iframe.js +13 -10
  222. package/lib/events/index.d.ts +0 -1
  223. package/lib/events/index.js +6 -3
  224. package/lib/events/popup.js +20 -17
  225. package/lib/events/transport.d.ts +2 -2
  226. package/lib/events/transport.js +16 -11
  227. package/lib/events/ui-promise.js +4 -1
  228. package/lib/events/ui-request.d.ts +0 -4
  229. package/lib/events/ui-request.js +48 -46
  230. package/lib/events/ui-response.d.ts +2 -2
  231. package/lib/events/ui-response.js +20 -17
  232. package/lib/events/webextension.js +9 -6
  233. package/lib/exports.js +10 -2
  234. package/lib/factory.d.ts +3 -2
  235. package/lib/factory.js +34 -141
  236. package/lib/impl/core-in-module.d.ts +1 -8
  237. package/lib/impl/core-in-module.js +186 -211
  238. package/lib/impl/dynamic.d.ts +0 -1
  239. package/lib/impl/dynamic.js +108 -97
  240. package/lib/index-browser.d.ts +1 -0
  241. package/lib/index-browser.js +18 -16
  242. package/lib/index.d.ts +2 -0
  243. package/lib/index.js +144 -148
  244. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  245. package/lib/types/account.js +4 -1
  246. package/lib/types/api/applyFlags.js +4 -1
  247. package/lib/types/api/applySettings.d.ts +3 -3
  248. package/lib/types/api/applySettings.js +7 -7
  249. package/lib/types/api/authenticateDevice.js +7 -4
  250. package/lib/types/api/authorizeCoinjoin.js +13 -10
  251. package/lib/types/api/backupDevice.js +4 -1
  252. package/lib/types/api/bitcoin/index.d.ts +5 -2
  253. package/lib/types/api/bitcoin/index.js +14 -11
  254. package/lib/types/api/bleUnpair.js +4 -1
  255. package/lib/types/api/blockchainDisconnect.js +4 -1
  256. package/lib/types/api/blockchainEstimateFee.js +4 -1
  257. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  258. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  259. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  260. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  261. package/lib/types/api/blockchainGetInfo.js +4 -1
  262. package/lib/types/api/blockchainGetTransactions.js +4 -1
  263. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  264. package/lib/types/api/blockchainSubscribe.js +4 -1
  265. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  266. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  267. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  268. package/lib/types/api/cancel.js +4 -1
  269. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  270. package/lib/types/api/cardano/index.d.ts +4 -4
  271. package/lib/types/api/cardano/index.js +173 -180
  272. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  273. package/lib/types/api/cardanoGetAddress.js +4 -1
  274. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  275. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  276. package/lib/types/api/cardanoSignMessage.js +4 -1
  277. package/lib/types/api/cardanoSignTransaction.js +4 -1
  278. package/lib/types/api/changeLanguage.d.ts +1 -1
  279. package/lib/types/api/changeLanguage.js +13 -13
  280. package/lib/types/api/changePin.js +4 -1
  281. package/lib/types/api/changeWipeCode.js +4 -1
  282. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  283. package/lib/types/api/cipherKeyValue.js +11 -8
  284. package/lib/types/api/composeTransaction.js +4 -1
  285. package/lib/types/api/device.js +1 -2
  286. package/lib/types/api/disableWebUSB.js +4 -1
  287. package/lib/types/api/discoverAccounts.js +204 -55
  288. package/lib/types/api/dispose.js +4 -1
  289. package/lib/types/api/eos/index.d.ts +3 -3
  290. package/lib/types/api/eos/index.js +106 -162
  291. package/lib/types/api/eosGetPublicKey.js +4 -1
  292. package/lib/types/api/eosSignTransaction.js +4 -1
  293. package/lib/types/api/ethereum/index.d.ts +11 -7
  294. package/lib/types/api/ethereum/index.js +70 -65
  295. package/lib/types/api/ethereumGetAddress.js +4 -1
  296. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  297. package/lib/types/api/ethereumSignMessage.js +4 -1
  298. package/lib/types/api/ethereumSignTransaction.js +4 -1
  299. package/lib/types/api/ethereumSignTypedData.js +4 -1
  300. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  301. package/lib/types/api/evoluGetDelegatedIdentityKey.d.ts +9 -0
  302. package/lib/types/api/evoluGetDelegatedIdentityKey.js +6 -0
  303. package/lib/types/api/evoluGetNode.js +4 -1
  304. package/lib/types/api/evoluSignRegistrationRequest.d.ts +4 -0
  305. package/lib/types/api/evoluSignRegistrationRequest.js +6 -0
  306. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  307. package/lib/types/api/firmwareUpdate.js +12 -12
  308. package/lib/types/api/getAccountDescriptor.js +8 -5
  309. package/lib/types/api/getAccountInfo.js +4 -1
  310. package/lib/types/api/getAddress.js +11 -11
  311. package/lib/types/api/getCoinInfo.js +4 -1
  312. package/lib/types/api/getDeviceState.js +4 -1
  313. package/lib/types/api/getFeatures.js +4 -1
  314. package/lib/types/api/getFirmwareHash.js +4 -1
  315. package/lib/types/api/getNonce.d.ts +1 -1
  316. package/lib/types/api/getNonce.js +4 -1
  317. package/lib/types/api/getOwnershipId.js +8 -5
  318. package/lib/types/api/getOwnershipProof.js +14 -9
  319. package/lib/types/api/getPublicKey.js +25 -28
  320. package/lib/types/api/getSettings.js +4 -1
  321. package/lib/types/api/index.d.ts +4 -0
  322. package/lib/types/api/index.js +4 -1
  323. package/lib/types/api/init.js +4 -1
  324. package/lib/types/api/loadDevice.js +4 -1
  325. package/lib/types/api/manifest.js +4 -1
  326. package/lib/types/api/monero/index.js +117 -114
  327. package/lib/types/api/moneroGetAddress.js +4 -1
  328. package/lib/types/api/moneroGetWatchKey.js +4 -1
  329. package/lib/types/api/moneroKeyImageSync.js +4 -1
  330. package/lib/types/api/moneroSignTransaction.js +4 -1
  331. package/lib/types/api/nem/index.d.ts +7 -7
  332. package/lib/types/api/nem/index.js +78 -112
  333. package/lib/types/api/nemGetAddress.js +7 -7
  334. package/lib/types/api/nemSignTransaction.js +4 -1
  335. package/lib/types/api/off.js +4 -1
  336. package/lib/types/api/on.js +4 -1
  337. package/lib/types/api/pushTransaction.js +10 -10
  338. package/lib/types/api/recoveryDevice.d.ts +1 -1
  339. package/lib/types/api/recoveryDevice.js +7 -7
  340. package/lib/types/api/removeAllListeners.js +4 -1
  341. package/lib/types/api/renderWebUSBButton.js +4 -1
  342. package/lib/types/api/requestLogin.d.ts +4 -24
  343. package/lib/types/api/requestLogin.js +11 -13
  344. package/lib/types/api/requestWebUSBDevice.js +4 -1
  345. package/lib/types/api/resetDevice.js +4 -1
  346. package/lib/types/api/ripple/index.js +17 -14
  347. package/lib/types/api/rippleGetAddress.js +4 -1
  348. package/lib/types/api/rippleSignTransaction.js +4 -1
  349. package/lib/types/api/setBrightness.js +4 -1
  350. package/lib/types/api/setBusy.js +4 -1
  351. package/lib/types/api/setProxy.js +4 -1
  352. package/lib/types/api/setTransports.js +4 -1
  353. package/lib/types/api/showDeviceTutorial.js +4 -1
  354. package/lib/types/api/signMessage.js +4 -1
  355. package/lib/types/api/signTransaction.js +4 -1
  356. package/lib/types/api/solana/index.js +55 -56
  357. package/lib/types/api/solanaComposeTransaction.js +4 -1
  358. package/lib/types/api/solanaGetAddress.js +4 -1
  359. package/lib/types/api/solanaGetPublicKey.js +4 -1
  360. package/lib/types/api/solanaSignTransaction.js +4 -1
  361. package/lib/types/api/stellar/index.d.ts +146 -146
  362. package/lib/types/api/stellar/index.js +151 -221
  363. package/lib/types/api/stellarGetAddress.js +4 -1
  364. package/lib/types/api/stellarSignTransaction.js +4 -1
  365. package/lib/types/api/tezos/index.js +46 -43
  366. package/lib/types/api/tezosGetAddress.js +4 -1
  367. package/lib/types/api/tezosGetPublicKey.js +4 -1
  368. package/lib/types/api/tezosSignTransaction.js +4 -1
  369. package/lib/types/api/thpGetCredentials.js +4 -1
  370. package/lib/types/api/thpRemoveCredentials.js +4 -1
  371. package/lib/types/api/uiResponse.js +4 -1
  372. package/lib/types/api/unlockPath.js +6 -3
  373. package/lib/types/api/verifyMessage.js +4 -1
  374. package/lib/types/api/wipeDevice.js +4 -1
  375. package/lib/types/coinInfo.js +62 -77
  376. package/lib/types/device.d.ts +11 -2
  377. package/lib/types/device.js +9 -4
  378. package/lib/types/fees.js +31 -37
  379. package/lib/types/firmware.js +4 -1
  380. package/lib/types/index.d.ts +1 -0
  381. package/lib/types/index.js +18 -3
  382. package/lib/types/params.js +25 -16
  383. package/lib/types/settings.js +4 -1
  384. package/lib/types/utils.js +4 -1
  385. package/lib/types/workflow.js +4 -1
  386. package/lib/utils/accountUtils.js +76 -81
  387. package/lib/utils/addressUtils.js +21 -21
  388. package/lib/utils/assetUtils.js +29 -26
  389. package/lib/utils/assets-browser.js +19 -13
  390. package/lib/utils/assets.js +10 -9
  391. package/lib/utils/assets.native.js +24 -23
  392. package/lib/utils/assetsTypes.js +4 -1
  393. package/lib/utils/debug.js +18 -13
  394. package/lib/utils/deviceFeaturesUtils.js +105 -127
  395. package/lib/utils/ethereumUtils.js +9 -6
  396. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  397. package/lib/utils/firmwareUtils.js +45 -57
  398. package/lib/utils/formatUtils.d.ts +0 -1
  399. package/lib/utils/formatUtils.js +63 -62
  400. package/lib/utils/hdnodeUtils.d.ts +0 -1
  401. package/lib/utils/hdnodeUtils.js +51 -57
  402. package/lib/utils/interactionTimeout.js +26 -23
  403. package/lib/utils/pathUtils.js +132 -148
  404. package/lib/utils/popupPromiseManager.js +23 -14
  405. package/lib/utils/proxy-event-emitter.js +63 -60
  406. package/lib/utils/uiPromiseManager.js +55 -43
  407. package/lib/utils/urlUtils.js +20 -26
  408. package/lib/utils/versionCheck.js +10 -10
  409. package/lib/workers/workers-browser.d.ts +5 -5
  410. package/lib/workers/workers-browser.js +5 -2
  411. package/lib/workers/workers.d.ts +1 -1
  412. package/lib/workers/workers.js +49 -38
  413. package/lib/workers/workers.native.d.ts +5 -5
  414. package/lib/workers/workers.native.js +4 -1
  415. package/package.json +26 -23
@@ -1,137 +1,187 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.signTxLegacy = void 0;
4
7
  const constants_1 = require("../../constants");
5
- const requestPrevTxInfo = ({ txRequest: { request_type, details }, refTxs, }) => {
6
- const { tx_hash } = details;
7
- if (!tx_hash) {
8
- throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');
8
+ const requestPrevTxInfo = ({
9
+ txRequest: {
10
+ request_type,
11
+ details
12
+ },
13
+ refTxs
14
+ }) => {
15
+ const {
16
+ tx_hash
17
+ } = details;
18
+ if (!tx_hash) {
19
+ throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');
20
+ }
21
+ const tx = refTxs[tx_hash.toLowerCase()];
22
+ if (!tx) {
23
+ throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);
24
+ }
25
+ if (!tx.bin_outputs) {
26
+ throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: bin_outputs not set tx: ${tx_hash}`);
27
+ }
28
+ if (request_type === 'TXINPUT') {
29
+ return {
30
+ inputs: [tx.inputs[details.request_index]]
31
+ };
32
+ }
33
+ if (request_type === 'TXOUTPUT') {
34
+ return {
35
+ bin_outputs: [tx.bin_outputs[details.request_index]]
36
+ };
37
+ }
38
+ if (request_type === 'TXEXTRADATA') {
39
+ if (typeof details.extra_data_len !== 'number') {
40
+ throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');
9
41
  }
10
- const tx = refTxs[tx_hash.toLowerCase()];
11
- if (!tx) {
12
- throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);
42
+ if (typeof details.extra_data_offset !== 'number') {
43
+ throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');
13
44
  }
14
- if (!tx.bin_outputs) {
15
- throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: bin_outputs not set tx: ${tx_hash}`);
45
+ if (typeof tx.extra_data !== 'string') {
46
+ throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);
16
47
  }
17
- if (request_type === 'TXINPUT') {
18
- return { inputs: [tx.inputs[details.request_index]] };
48
+ const data = tx.extra_data;
49
+ const dataLen = details.extra_data_len;
50
+ const dataOffset = details.extra_data_offset;
51
+ const extra_data = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);
52
+ return {
53
+ extra_data
54
+ };
55
+ }
56
+ if (request_type === 'TXMETA') {
57
+ const data = tx.extra_data;
58
+ const meta = {
59
+ version: tx.version,
60
+ lock_time: tx.lock_time,
61
+ inputs_cnt: tx.inputs.length,
62
+ outputs_cnt: tx.bin_outputs.length,
63
+ timestamp: tx.timestamp,
64
+ version_group_id: tx.version_group_id,
65
+ expiry: tx.expiry,
66
+ branch_id: tx.branch_id
67
+ };
68
+ if (typeof data === 'string' && data.length !== 0) {
69
+ return {
70
+ ...meta,
71
+ extra_data_len: data.length / 2
72
+ };
19
73
  }
20
- if (request_type === 'TXOUTPUT') {
21
- return { bin_outputs: [tx.bin_outputs[details.request_index]] };
22
- }
23
- if (request_type === 'TXEXTRADATA') {
24
- if (typeof details.extra_data_len !== 'number') {
25
- throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');
26
- }
27
- if (typeof details.extra_data_offset !== 'number') {
28
- throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');
29
- }
30
- if (typeof tx.extra_data !== 'string') {
31
- throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);
32
- }
33
- const data = tx.extra_data;
34
- const dataLen = details.extra_data_len;
35
- const dataOffset = details.extra_data_offset;
36
- const extra_data = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);
37
- return { extra_data };
38
- }
39
- if (request_type === 'TXMETA') {
40
- const data = tx.extra_data;
41
- const meta = {
42
- version: tx.version,
43
- lock_time: tx.lock_time,
44
- inputs_cnt: tx.inputs.length,
45
- outputs_cnt: tx.bin_outputs.length,
46
- timestamp: tx.timestamp,
47
- version_group_id: tx.version_group_id,
48
- expiry: tx.expiry,
49
- branch_id: tx.branch_id,
50
- };
51
- if (typeof data === 'string' && data.length !== 0) {
52
- return {
53
- ...meta,
54
- extra_data_len: data.length / 2,
55
- };
56
- }
57
- return meta;
58
- }
59
- throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);
74
+ return meta;
75
+ }
76
+ throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);
60
77
  };
61
- const requestSignedTxInfo = ({ txRequest: { request_type, details }, inputs, outputs, }) => {
62
- if (request_type === 'TXINPUT') {
63
- return { inputs: [inputs[details.request_index]] };
64
- }
65
- if (request_type === 'TXOUTPUT') {
66
- return { outputs: [outputs[details.request_index]] };
67
- }
68
- if (request_type === 'TXMETA') {
69
- throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');
70
- }
71
- if (request_type === 'TXEXTRADATA') {
72
- throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');
73
- }
74
- throw constants_1.ERRORS.TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);
78
+ const requestSignedTxInfo = ({
79
+ txRequest: {
80
+ request_type,
81
+ details
82
+ },
83
+ inputs,
84
+ outputs
85
+ }) => {
86
+ if (request_type === 'TXINPUT') {
87
+ return {
88
+ inputs: [inputs[details.request_index]]
89
+ };
90
+ }
91
+ if (request_type === 'TXOUTPUT') {
92
+ return {
93
+ outputs: [outputs[details.request_index]]
94
+ };
95
+ }
96
+ if (request_type === 'TXMETA') {
97
+ throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');
98
+ }
99
+ if (request_type === 'TXEXTRADATA') {
100
+ throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');
101
+ }
102
+ throw constants_1.ERRORS.TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);
75
103
  };
76
- const requestTxAck = (props) => {
77
- const { tx_hash } = props.txRequest.details;
78
- if (tx_hash) {
79
- return requestPrevTxInfo(props);
80
- }
81
- return requestSignedTxInfo(props);
104
+ const requestTxAck = props => {
105
+ const {
106
+ tx_hash
107
+ } = props.txRequest.details;
108
+ if (tx_hash) {
109
+ return requestPrevTxInfo(props);
110
+ }
111
+ return requestSignedTxInfo(props);
82
112
  };
83
113
  const saveTxSignatures = (txRequest, serializedTx, signatures) => {
84
- if (!txRequest)
85
- return;
86
- const { signature_index, signature, serialized_tx } = txRequest;
87
- if (serialized_tx) {
88
- serializedTx.push(serialized_tx);
89
- }
90
- if (typeof signature_index === 'number') {
91
- if (!signature) {
92
- throw constants_1.ERRORS.TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');
93
- }
94
- signatures[signature_index] = signature;
114
+ if (!txRequest) return;
115
+ const {
116
+ signature_index,
117
+ signature,
118
+ serialized_tx
119
+ } = txRequest;
120
+ if (serialized_tx) {
121
+ serializedTx.push(serialized_tx);
122
+ }
123
+ if (typeof signature_index === 'number') {
124
+ if (!signature) {
125
+ throw constants_1.ERRORS.TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');
95
126
  }
127
+ signatures[signature_index] = signature;
128
+ }
96
129
  };
97
- const processTxRequest = async (props) => {
98
- const { typedCall, txRequest, serializedTx, signatures } = props;
99
- if (txRequest.serialized)
100
- saveTxSignatures(txRequest.serialized, serializedTx, signatures);
101
- if (txRequest.request_type === 'TXFINISHED') {
102
- return Promise.resolve({
103
- signatures,
104
- serializedTx: serializedTx.join(''),
105
- });
106
- }
107
- const txAck = requestTxAck(props);
108
- const { message } = await typedCall('TxAck', 'TxRequest', { tx: txAck });
109
- return processTxRequest({
110
- ...props,
111
- txRequest: message,
130
+ const processTxRequest = async props => {
131
+ const {
132
+ typedCall,
133
+ txRequest,
134
+ serializedTx,
135
+ signatures
136
+ } = props;
137
+ if (txRequest.serialized) saveTxSignatures(txRequest.serialized, serializedTx, signatures);
138
+ if (txRequest.request_type === 'TXFINISHED') {
139
+ return Promise.resolve({
140
+ signatures,
141
+ serializedTx: serializedTx.join('')
112
142
  });
143
+ }
144
+ const txAck = requestTxAck(props);
145
+ const {
146
+ message
147
+ } = await typedCall('TxAck', 'TxRequest', {
148
+ tx: txAck
149
+ });
150
+ return processTxRequest({
151
+ ...props,
152
+ txRequest: message
153
+ });
113
154
  };
114
- const signTxLegacy = async ({ typedCall, inputs, outputs, refTxs, options, coinInfo, }) => {
115
- const { message } = await typedCall('SignTx', 'TxRequest', {
116
- ...options,
117
- version: options.version === undefined && coinInfo.isBitcoin ? 1 : options.version,
118
- inputs_count: inputs.length,
119
- outputs_count: outputs.length,
120
- coin_name: coinInfo.name,
121
- });
122
- return processTxRequest({
123
- typedCall,
124
- txRequest: message,
125
- refTxs: refTxs.reduce((record, tx) => ({
126
- ...record,
127
- [tx.hash.toLowerCase()]: tx,
128
- }), {}),
129
- inputs,
130
- outputs,
131
- paymentRequests: [],
132
- serializedTx: [],
133
- signatures: [],
134
- });
155
+ const signTxLegacy = async ({
156
+ typedCall,
157
+ inputs,
158
+ outputs,
159
+ refTxs,
160
+ options,
161
+ coinInfo
162
+ }) => {
163
+ const {
164
+ message
165
+ } = await typedCall('SignTx', 'TxRequest', {
166
+ ...options,
167
+ version: options.version === undefined && coinInfo.isBitcoin ? 1 : options.version,
168
+ inputs_count: inputs.length,
169
+ outputs_count: outputs.length,
170
+ coin_name: coinInfo.name
171
+ });
172
+ return processTxRequest({
173
+ typedCall,
174
+ txRequest: message,
175
+ refTxs: refTxs.reduce((record, tx) => ({
176
+ ...record,
177
+ [tx.hash.toLowerCase()]: tx
178
+ }), {}),
179
+ inputs,
180
+ outputs,
181
+ paymentRequests: [],
182
+ serializedTx: [],
183
+ signatures: []
184
+ });
135
185
  };
136
186
  exports.signTxLegacy = signTxLegacy;
137
187
  //# sourceMappingURL=signtxLegacy.js.map
@@ -1,82 +1,95 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.verifyTx = exports.deriveOutputScript = void 0;
4
7
  const utxo_lib_1 = require("@trezor/utxo-lib");
5
8
  const constants_1 = require("../../constants");
6
9
  const derivePubKeyHash = async (getHDNode, address_n, network) => {
7
- if (address_n.length === 5) {
8
- const response = await getHDNode(address_n.slice(0, 4));
9
- const node = utxo_lib_1.bip32.fromBase58(response.xpub, network);
10
- return node.derive(address_n[address_n.length - 1]);
11
- }
12
- const response = await getHDNode(address_n);
13
- return utxo_lib_1.bip32.fromBase58(response.xpub, network);
10
+ if (address_n.length === 5) {
11
+ const response = await getHDNode(address_n.slice(0, 4));
12
+ const node = utxo_lib_1.bip32.fromBase58(response.xpub, network);
13
+ return node.derive(address_n[address_n.length - 1]);
14
+ }
15
+ const response = await getHDNode(address_n);
16
+ return utxo_lib_1.bip32.fromBase58(response.xpub, network);
14
17
  };
15
18
  const deriveOutputScript = async (getHDNode, output, network) => {
16
- if ('multisig' in output)
17
- return;
18
- if ('op_return_data' in output) {
19
- return utxo_lib_1.payments.embed({ data: [Buffer.from(output.op_return_data, 'hex')] })
20
- .output;
21
- }
22
- if (output.address) {
23
- return utxo_lib_1.address.toOutputScript(output.address, network);
24
- }
25
- if (!output.address_n) {
26
- throw constants_1.ERRORS.TypedError('Runtime', 'deriveOutputScript: Neither address or address_n is set');
27
- }
28
- const node = await derivePubKeyHash(getHDNode, output.address_n, network);
29
- const payment = { hash: node.identifier, network };
30
- if (output.script_type === 'PAYTOADDRESS') {
31
- return utxo_lib_1.payments.p2pkh(payment).output;
32
- }
33
- if (output.script_type === 'PAYTOSCRIPTHASH') {
34
- return utxo_lib_1.payments.p2sh(payment).output;
35
- }
36
- if (output.script_type === 'PAYTOP2SHWITNESS') {
37
- return utxo_lib_1.payments.p2sh({
38
- redeem: utxo_lib_1.payments.p2wpkh(payment),
39
- }).output;
40
- }
41
- if (output.script_type === 'PAYTOWITNESS') {
42
- return utxo_lib_1.payments.p2wpkh(payment).output;
43
- }
44
- if (output.script_type === 'PAYTOTAPROOT') {
45
- return utxo_lib_1.payments.p2tr({
46
- pubkey: node.publicKey,
47
- network,
48
- }).output;
49
- }
50
- if (output.script_type === 'PAYTOMULTISIG') {
51
- throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: script_type PAYTOMULTISIG not expected without multisig defined`);
52
- }
53
- throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: Unknown script type ${output.script_type}`);
19
+ if ('multisig' in output) return;
20
+ if ('op_return_data' in output) {
21
+ return utxo_lib_1.payments.embed({
22
+ data: [Buffer.from(output.op_return_data, 'hex')]
23
+ }).output;
24
+ }
25
+ if (output.address) {
26
+ return utxo_lib_1.address.toOutputScript(output.address, network);
27
+ }
28
+ if (!output.address_n) {
29
+ throw constants_1.ERRORS.TypedError('Runtime', 'deriveOutputScript: Neither address or address_n is set');
30
+ }
31
+ const node = await derivePubKeyHash(getHDNode, output.address_n, network);
32
+ const payment = {
33
+ hash: node.identifier,
34
+ network
35
+ };
36
+ if (output.script_type === 'PAYTOADDRESS') {
37
+ return utxo_lib_1.payments.p2pkh(payment).output;
38
+ }
39
+ if (output.script_type === 'PAYTOSCRIPTHASH') {
40
+ return utxo_lib_1.payments.p2sh(payment).output;
41
+ }
42
+ if (output.script_type === 'PAYTOP2SHWITNESS') {
43
+ return utxo_lib_1.payments.p2sh({
44
+ redeem: utxo_lib_1.payments.p2wpkh(payment)
45
+ }).output;
46
+ }
47
+ if (output.script_type === 'PAYTOWITNESS') {
48
+ return utxo_lib_1.payments.p2wpkh(payment).output;
49
+ }
50
+ if (output.script_type === 'PAYTOTAPROOT') {
51
+ return utxo_lib_1.payments.p2tr({
52
+ pubkey: node.publicKey,
53
+ network
54
+ }).output;
55
+ }
56
+ if (output.script_type === 'PAYTOMULTISIG') {
57
+ throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: script_type PAYTOMULTISIG not expected without multisig defined`);
58
+ }
59
+ throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: Unknown script type ${output.script_type}`);
54
60
  };
55
61
  exports.deriveOutputScript = deriveOutputScript;
56
62
  const verifyTx = (serializedTx, params) => {
57
- const { inputs, outputs, outputScripts, network } = params;
58
- const bitcoinTx = utxo_lib_1.Transaction.fromHex(serializedTx, { network });
59
- if (inputs.length !== bitcoinTx.ins.length) {
60
- throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction inputs invalid length');
61
- }
62
- if (outputs.length !== bitcoinTx.outs.length) {
63
- throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction outputs invalid length');
63
+ const {
64
+ inputs,
65
+ outputs,
66
+ outputScripts,
67
+ network
68
+ } = params;
69
+ const bitcoinTx = utxo_lib_1.Transaction.fromHex(serializedTx, {
70
+ network
71
+ });
72
+ if (inputs.length !== bitcoinTx.ins.length) {
73
+ throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction inputs invalid length');
74
+ }
75
+ if (outputs.length !== bitcoinTx.outs.length) {
76
+ throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction outputs invalid length');
77
+ }
78
+ outputs.forEach((output, i) => {
79
+ if (output.amount) {
80
+ if (output.amount.toString() !== bitcoinTx.outs[i].value) {
81
+ throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Wrong output amount at output ${i}. Requested: ${output.amount}, signed: ${bitcoinTx.outs[i].value}`);
82
+ }
64
83
  }
65
- outputs.forEach((output, i) => {
66
- if (output.amount) {
67
- if (output.amount.toString() !== bitcoinTx.outs[i].value) {
68
- throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Wrong output amount at output ${i}. Requested: ${output.amount}, signed: ${bitcoinTx.outs[i].value}`);
69
- }
70
- }
71
- });
72
- for (let i = 0; i < outputs.length; i++) {
73
- const scriptB = bitcoinTx.outs[i].script;
74
- const scriptA = outputScripts[i];
75
- if (scriptA && scriptA.compare(scriptB) !== 0) {
76
- throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Output ${i} scripts differ`);
77
- }
84
+ });
85
+ for (let i = 0; i < outputs.length; i++) {
86
+ const scriptB = bitcoinTx.outs[i].script;
87
+ const scriptA = outputScripts[i];
88
+ if (scriptA && scriptA.compare(scriptB) !== 0) {
89
+ throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Output ${i} scripts differ`);
78
90
  }
79
- return bitcoinTx;
91
+ }
92
+ return bitcoinTx;
80
93
  };
81
94
  exports.verifyTx = verifyTx;
82
95
  //# sourceMappingURL=signtxVerify.js.map
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getTransactionVbytes = void 0;
4
7
  exports.mapOutputScriptToKey = mapOutputScriptToKey;
5
8
  const tslib_1 = require("tslib");
@@ -7,68 +10,67 @@ const baddress = tslib_1.__importStar(require("@trezor/utxo-lib/lib/address"));
7
10
  const txWeightCalculator_1 = require("@trezor/utxo-lib/lib/txWeightCalculator");
8
11
  const pathUtils_1 = require("../../utils/pathUtils");
9
12
  function mapOutputScriptToKey(script_type) {
10
- switch (script_type) {
11
- case 'PAYTOADDRESS':
12
- return 'p2pkh';
13
- case 'PAYTOSCRIPTHASH':
14
- return 'p2sh';
15
- case 'PAYTOWITNESS':
16
- return 'p2wpkh';
17
- case 'PAYTOP2SHWITNESS':
18
- return 'p2sh';
19
- case 'PAYTOTAPROOT':
20
- return 'p2tr';
21
- default:
22
- return undefined;
23
- }
13
+ switch (script_type) {
14
+ case 'PAYTOADDRESS':
15
+ return 'p2pkh';
16
+ case 'PAYTOSCRIPTHASH':
17
+ return 'p2sh';
18
+ case 'PAYTOWITNESS':
19
+ return 'p2wpkh';
20
+ case 'PAYTOP2SHWITNESS':
21
+ return 'p2sh';
22
+ case 'PAYTOTAPROOT':
23
+ return 'p2tr';
24
+ default:
25
+ return undefined;
26
+ }
24
27
  }
25
28
  const getTransactionVbytes = (inputs, outputs, coinInfo) => {
26
- const calc = new txWeightCalculator_1.TxWeightCalculator();
27
- let cannotProcess = false;
28
- inputs.forEach(input => {
29
- const script_type = input.script_type ?? (0, pathUtils_1.getScriptType)(input.address_n);
30
- if (script_type && !input.witness) {
31
- calc.addInput({
32
- script_type,
33
- multisig: input.multisig,
34
- ownership_proof: input.ownership_proof,
35
- });
36
- }
37
- else {
38
- cannotProcess = true;
39
- }
40
- });
41
- outputs.forEach(out => {
42
- if (out.script_type === 'PAYTOOPRETURN') {
43
- if (!out.op_return_data) {
44
- cannotProcess = true;
45
- return;
46
- }
47
- calc.addOutput({ length: 2 + out.op_return_data.length / 2 });
48
- return;
49
- }
50
- else if (out.address) {
51
- calc.addOutput({
52
- length: baddress.toOutputScript(out.address, coinInfo.network).length,
53
- });
54
- return;
55
- }
56
- else if (out.address_n || out.script_type) {
57
- const script_type = out.script_type ?? (0, pathUtils_1.getOutputScriptType)(out.address_n);
58
- if (script_type) {
59
- const script_key = mapOutputScriptToKey(script_type);
60
- if (script_key) {
61
- calc.addOutputByKey(script_key);
62
- return;
63
- }
64
- }
65
- }
29
+ const calc = new txWeightCalculator_1.TxWeightCalculator();
30
+ let cannotProcess = false;
31
+ inputs.forEach(input => {
32
+ const script_type = input.script_type ?? (0, pathUtils_1.getScriptType)(input.address_n);
33
+ if (script_type && !input.witness) {
34
+ calc.addInput({
35
+ script_type,
36
+ multisig: input.multisig,
37
+ ownership_proof: input.ownership_proof
38
+ });
39
+ } else {
40
+ cannotProcess = true;
41
+ }
42
+ });
43
+ outputs.forEach(out => {
44
+ if (out.script_type === 'PAYTOOPRETURN') {
45
+ if (!out.op_return_data) {
66
46
  cannotProcess = true;
67
- });
68
- if (cannotProcess) {
69
- return undefined;
47
+ return;
48
+ }
49
+ calc.addOutput({
50
+ length: 2 + out.op_return_data.length / 2
51
+ });
52
+ return;
53
+ } else if (out.address) {
54
+ calc.addOutput({
55
+ length: baddress.toOutputScript(out.address, coinInfo.network).length
56
+ });
57
+ return;
58
+ } else if (out.address_n || out.script_type) {
59
+ const script_type = out.script_type ?? (0, pathUtils_1.getOutputScriptType)(out.address_n);
60
+ if (script_type) {
61
+ const script_key = mapOutputScriptToKey(script_type);
62
+ if (script_key) {
63
+ calc.addOutputByKey(script_key);
64
+ return;
65
+ }
66
+ }
70
67
  }
71
- return calc.getVirtualBytes();
68
+ cannotProcess = true;
69
+ });
70
+ if (cannotProcess) {
71
+ return undefined;
72
+ }
73
+ return calc.getVirtualBytes();
72
74
  };
73
75
  exports.getTransactionVbytes = getTransactionVbytes;
74
76
  //# sourceMappingURL=transactionBytes.js.map