@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,225 +1,279 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
2
+
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
26
12
  };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
20
+ Object.defineProperty(o, "default", {
21
+ enumerable: true,
22
+ value: v
23
+ });
24
+ } : function (o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = this && this.__importStar || function () {
28
+ var ownKeys = function (o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
33
  };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ }();
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
36
47
  exports.fetchAccountOwnerAndTokenInfoForAddress = exports.buildTokenTransferTransaction = exports.getMinimumRequiredTokenAccountsForTransfer = exports.buildCreateAssociatedTokenAccountInstruction = exports.getAssociatedTokenAccountAddress = exports.buildTokenTransferInstruction = exports.buildTransferTransaction = exports.dummyPriorityFeesForFeeEstimation = exports.getLamportsFromSol = exports.SOLANA_BASE_FEE = void 0;
37
48
  exports.createTransactionShim = createTransactionShim;
38
49
  exports.createTransactionShimFromHex = createTransactionShimFromHex;
39
50
  const ts_belt_1 = require("@mobily/ts-belt");
40
51
  const blockchain_link_utils_1 = require("@trezor/blockchain-link-utils");
41
52
  const bigNumber_1 = require("@trezor/utils/lib/bigNumber");
42
- const { SYSTEM_PROGRAM_PUBLIC_KEY, tokenProgramsInfo } = blockchain_link_utils_1.solanaUtils;
53
+ const {
54
+ SYSTEM_PROGRAM_PUBLIC_KEY,
55
+ tokenProgramsInfo
56
+ } = blockchain_link_utils_1.solanaUtils;
43
57
  const loadSolanaLib = async () => await Promise.resolve().then(() => __importStar(require('@solana/kit')));
44
58
  const loadSolanaComputeBudgetProgramLib = async () => await Promise.resolve().then(() => __importStar(require('@solana-program/compute-budget')));
45
59
  const loadSolanaSystemProgramLib = async () => await Promise.resolve().then(() => __importStar(require('@solana-program/system')));
46
- const loadSolanaTokenProgramLib = async (tokenProgramName) => {
47
- switch (tokenProgramName) {
48
- case 'spl-token':
49
- return await Promise.resolve().then(() => __importStar(require('@solana-program/token')));
50
- case 'spl-token-2022':
51
- return await Promise.resolve().then(() => __importStar(require('@solana-program/token-2022')));
52
- default:
53
- throw new Error(`Unsupported token program: ${tokenProgramName}`);
54
- }
60
+ const loadSolanaTokenProgramLib = async tokenProgramName => {
61
+ switch (tokenProgramName) {
62
+ case 'spl-token':
63
+ return await Promise.resolve().then(() => __importStar(require('@solana-program/token')));
64
+ case 'spl-token-2022':
65
+ return await Promise.resolve().then(() => __importStar(require('@solana-program/token-2022')));
66
+ default:
67
+ throw new Error(`Unsupported token program: ${tokenProgramName}`);
68
+ }
55
69
  };
56
70
  exports.SOLANA_BASE_FEE = 5000;
57
- const getLamportsFromSol = (amountInSol) => BigInt(new bigNumber_1.BigNumber(amountInSol).times(10 ** 9).toString());
71
+ const getLamportsFromSol = amountInSol => BigInt(new bigNumber_1.BigNumber(amountInSol).times(10 ** 9).toString());
58
72
  exports.getLamportsFromSol = getLamportsFromSol;
59
73
  exports.dummyPriorityFeesForFeeEstimation = {
60
- computeUnitPrice: '100000',
61
- computeUnitLimit: '200000',
74
+ computeUnitPrice: '100000',
75
+ computeUnitLimit: '200000'
62
76
  };
63
77
  async function createTransactionShimCommon(transaction) {
64
- const { getBase16Codec, getTransactionEncoder } = await loadSolanaLib();
65
- return {
66
- addSignature(signerPubKey, signatureHex) {
67
- if (signerPubKey in transaction.signatures) {
68
- const signatureBytes = getBase16Codec().encode(signatureHex);
69
- transaction = Object.freeze({
70
- ...transaction,
71
- signatures: Object.freeze({
72
- ...transaction.signatures,
73
- [signerPubKey]: signatureBytes,
74
- }),
75
- });
76
- }
77
- },
78
- serializeMessage() {
79
- return getBase16Codec().decode(transaction.messageBytes);
80
- },
81
- serialize() {
82
- return (0, ts_belt_1.pipe)(transaction, getTransactionEncoder().encode, getBase16Codec().decode);
83
- },
84
- };
78
+ const {
79
+ getBase16Codec,
80
+ getTransactionEncoder
81
+ } = await loadSolanaLib();
82
+ return {
83
+ addSignature(signerPubKey, signatureHex) {
84
+ if (signerPubKey in transaction.signatures) {
85
+ const signatureBytes = getBase16Codec().encode(signatureHex);
86
+ transaction = Object.freeze({
87
+ ...transaction,
88
+ signatures: Object.freeze({
89
+ ...transaction.signatures,
90
+ [signerPubKey]: signatureBytes
91
+ })
92
+ });
93
+ }
94
+ },
95
+ serializeMessage() {
96
+ return getBase16Codec().decode(transaction.messageBytes);
97
+ },
98
+ serialize() {
99
+ return (0, ts_belt_1.pipe)(transaction, getTransactionEncoder().encode, getBase16Codec().decode);
100
+ }
101
+ };
85
102
  }
86
103
  async function createTransactionShim(message) {
87
- const { compileTransaction } = await loadSolanaLib();
88
- const transaction = compileTransaction(message);
89
- return createTransactionShimCommon(transaction);
104
+ const {
105
+ compileTransaction
106
+ } = await loadSolanaLib();
107
+ const transaction = compileTransaction(message);
108
+ return createTransactionShimCommon(transaction);
90
109
  }
91
110
  async function createTransactionShimFromHex(rawTx) {
92
- const { getBase16Encoder, getTransactionDecoder } = await loadSolanaLib();
93
- const txByteArray = getBase16Encoder().encode(rawTx);
94
- const transaction = getTransactionDecoder().decode(txByteArray);
95
- return createTransactionShimCommon(transaction);
111
+ const {
112
+ getBase16Encoder,
113
+ getTransactionDecoder
114
+ } = await loadSolanaLib();
115
+ const txByteArray = getBase16Encoder().encode(rawTx);
116
+ const transaction = getTransactionDecoder().decode(txByteArray);
117
+ return createTransactionShimCommon(transaction);
96
118
  }
97
119
  const addPriorityFees = async (message, priorityFees) => {
98
- const [{ prependTransactionMessageInstructions }, { getSetComputeUnitLimitInstruction, getSetComputeUnitPriceInstruction },] = await Promise.all([loadSolanaLib(), loadSolanaComputeBudgetProgramLib()]);
99
- return (0, ts_belt_1.pipe)(message, m => prependTransactionMessageInstructions([
100
- getSetComputeUnitLimitInstruction({
101
- units: parseInt(priorityFees.computeUnitLimit, 10),
102
- }),
103
- getSetComputeUnitPriceInstruction({
104
- microLamports: parseInt(priorityFees.computeUnitPrice, 10),
105
- }),
106
- ], m));
120
+ const [{
121
+ prependTransactionMessageInstructions
122
+ }, {
123
+ getSetComputeUnitLimitInstruction,
124
+ getSetComputeUnitPriceInstruction
125
+ }] = await Promise.all([loadSolanaLib(), loadSolanaComputeBudgetProgramLib()]);
126
+ return (0, ts_belt_1.pipe)(message, m => prependTransactionMessageInstructions([getSetComputeUnitLimitInstruction({
127
+ units: parseInt(priorityFees.computeUnitLimit, 10)
128
+ }), getSetComputeUnitPriceInstruction({
129
+ microLamports: parseInt(priorityFees.computeUnitPrice, 10)
130
+ })], m));
107
131
  };
108
132
  const buildTransferTransaction = async (fromAddress, toAddress, amountInSol, blockhash, lastValidBlockHeight, priorityFees) => {
109
- const [{ address, appendTransactionMessageInstruction, createTransactionMessage, lamports, setTransactionMessageLifetimeUsingBlockhash, setTransactionMessageFeePayer, createNoopSigner, }, { getTransferSolInstruction },] = await Promise.all([loadSolanaLib(), loadSolanaSystemProgramLib()]);
110
- const message = await (0, ts_belt_1.pipe)(createTransactionMessage({ version: 'legacy' }), m => setTransactionMessageFeePayer(address(fromAddress), m), m => setTransactionMessageLifetimeUsingBlockhash({
111
- blockhash: blockhash,
112
- lastValidBlockHeight: BigInt(lastValidBlockHeight ?? '0xFFFFFFFFFFFFFFFF'),
113
- }, m), m => appendTransactionMessageInstruction(getTransferSolInstruction({
114
- amount: lamports((0, exports.getLamportsFromSol)(amountInSol)),
115
- destination: address(toAddress),
116
- source: createNoopSigner(address(fromAddress)),
117
- }), m), m => addPriorityFees(m, priorityFees));
118
- return await createTransactionShim(message);
133
+ const [{
134
+ address,
135
+ appendTransactionMessageInstruction,
136
+ createTransactionMessage,
137
+ lamports,
138
+ setTransactionMessageLifetimeUsingBlockhash,
139
+ setTransactionMessageFeePayer,
140
+ createNoopSigner
141
+ }, {
142
+ getTransferSolInstruction
143
+ }] = await Promise.all([loadSolanaLib(), loadSolanaSystemProgramLib()]);
144
+ const message = await (0, ts_belt_1.pipe)(createTransactionMessage({
145
+ version: 'legacy'
146
+ }), m => setTransactionMessageFeePayer(address(fromAddress), m), m => setTransactionMessageLifetimeUsingBlockhash({
147
+ blockhash: blockhash,
148
+ lastValidBlockHeight: BigInt(lastValidBlockHeight ?? '0xFFFFFFFFFFFFFFFF')
149
+ }, m), m => appendTransactionMessageInstruction(getTransferSolInstruction({
150
+ amount: lamports((0, exports.getLamportsFromSol)(amountInSol)),
151
+ destination: address(toAddress),
152
+ source: createNoopSigner(address(fromAddress))
153
+ }), m), m => addPriorityFees(m, priorityFees));
154
+ return await createTransactionShim(message);
119
155
  };
120
156
  exports.buildTransferTransaction = buildTransferTransaction;
121
157
  const buildTokenTransferInstruction = async (from, to, owner, amount, mint, decimals, tokenProgramName) => {
122
- const [{ address, createNoopSigner }, { getTransferCheckedInstruction },] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
123
- return getTransferCheckedInstruction({
124
- amount: BigInt(amount.toString()),
125
- authority: createNoopSigner(address(owner)),
126
- decimals,
127
- destination: address(to),
128
- mint: address(mint),
129
- source: address(from),
130
- });
158
+ const [{
159
+ address,
160
+ createNoopSigner
161
+ }, {
162
+ getTransferCheckedInstruction
163
+ }] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
164
+ return getTransferCheckedInstruction({
165
+ amount: BigInt(amount.toString()),
166
+ authority: createNoopSigner(address(owner)),
167
+ decimals,
168
+ destination: address(to),
169
+ mint: address(mint),
170
+ source: address(from)
171
+ });
131
172
  };
132
173
  exports.buildTokenTransferInstruction = buildTokenTransferInstruction;
133
174
  const getAssociatedTokenAccountAddress = async (baseAddress, tokenMintAddress, tokenProgramName) => {
134
- const [{ address }, { findAssociatedTokenPda },] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
135
- const [pdaAddress] = await findAssociatedTokenPda({
136
- mint: address(tokenMintAddress),
137
- owner: address(baseAddress),
138
- tokenProgram: address(tokenProgramsInfo[tokenProgramName].publicKey),
139
- });
140
- return pdaAddress;
175
+ const [{
176
+ address
177
+ }, {
178
+ findAssociatedTokenPda
179
+ }] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
180
+ const [pdaAddress] = await findAssociatedTokenPda({
181
+ mint: address(tokenMintAddress),
182
+ owner: address(baseAddress),
183
+ tokenProgram: address(tokenProgramsInfo[tokenProgramName].publicKey)
184
+ });
185
+ return pdaAddress;
141
186
  };
142
187
  exports.getAssociatedTokenAccountAddress = getAssociatedTokenAccountAddress;
143
188
  const buildCreateAssociatedTokenAccountInstruction = async (funderAddress, newOwnerAddress, tokenMintAddress, tokenProgramName) => {
144
- const [{ address, createNoopSigner }, { getCreateAssociatedTokenInstruction },] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
145
- const associatedTokenAccountAddress = await (0, exports.getAssociatedTokenAccountAddress)(newOwnerAddress, tokenMintAddress, tokenProgramName);
146
- const txInstruction = getCreateAssociatedTokenInstruction({
147
- ata: associatedTokenAccountAddress,
148
- mint: address(tokenMintAddress),
149
- owner: address(newOwnerAddress),
150
- payer: createNoopSigner(address(funderAddress)),
151
- });
152
- txInstruction.data = new Uint8Array([]);
153
- return [txInstruction, associatedTokenAccountAddress];
189
+ const [{
190
+ address,
191
+ createNoopSigner
192
+ }, {
193
+ getCreateAssociatedTokenInstruction
194
+ }] = await Promise.all([loadSolanaLib(), loadSolanaTokenProgramLib(tokenProgramName)]);
195
+ const associatedTokenAccountAddress = await (0, exports.getAssociatedTokenAccountAddress)(newOwnerAddress, tokenMintAddress, tokenProgramName);
196
+ const txInstruction = getCreateAssociatedTokenInstruction({
197
+ ata: associatedTokenAccountAddress,
198
+ mint: address(tokenMintAddress),
199
+ owner: address(newOwnerAddress),
200
+ payer: createNoopSigner(address(funderAddress))
201
+ });
202
+ txInstruction.data = new Uint8Array([]);
203
+ return [txInstruction, associatedTokenAccountAddress];
154
204
  };
155
205
  exports.buildCreateAssociatedTokenAccountInstruction = buildCreateAssociatedTokenAccountInstruction;
156
206
  const getMinimumRequiredTokenAccountsForTransfer = (tokenAccounts, requiredAmount) => {
157
- let accumulatedBalance = new bigNumber_1.BigNumber('0');
158
- const requiredAccounts = ts_belt_1.F.toMutable((0, ts_belt_1.pipe)(tokenAccounts, ts_belt_1.A.sort((a, b) => new bigNumber_1.BigNumber(b.balance).comparedTo(new bigNumber_1.BigNumber(a.balance)) ?? 0), ts_belt_1.A.takeWhile(tokenAccount => {
159
- const needMoreAccounts = accumulatedBalance.lt(requiredAmount);
160
- accumulatedBalance = accumulatedBalance.plus(tokenAccount.balance);
161
- return needMoreAccounts;
162
- })));
163
- return requiredAccounts;
207
+ let accumulatedBalance = new bigNumber_1.BigNumber('0');
208
+ const requiredAccounts = ts_belt_1.F.toMutable((0, ts_belt_1.pipe)(tokenAccounts, ts_belt_1.A.sort((a, b) => new bigNumber_1.BigNumber(b.balance).comparedTo(new bigNumber_1.BigNumber(a.balance)) ?? 0), ts_belt_1.A.takeWhile(tokenAccount => {
209
+ const needMoreAccounts = accumulatedBalance.lt(requiredAmount);
210
+ accumulatedBalance = accumulatedBalance.plus(tokenAccount.balance);
211
+ return needMoreAccounts;
212
+ })));
213
+ return requiredAccounts;
164
214
  };
165
215
  exports.getMinimumRequiredTokenAccountsForTransfer = getMinimumRequiredTokenAccountsForTransfer;
166
216
  const buildTokenTransferTransaction = async (fromAddress, toAddress, toAddressOwner, tokenMint, tokenUiAmount, tokenDecimals, fromTokenAccounts, toTokenAccount, blockhash, lastValidBlockHeight, priorityFees, tokenProgramName) => {
167
- const { address, appendTransactionMessageInstruction, appendTransactionMessageInstructions, createTransactionMessage, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, } = await loadSolanaLib();
168
- let message = await (0, ts_belt_1.pipe)(createTransactionMessage({ version: 'legacy' }), m => setTransactionMessageFeePayer(address(fromAddress), m), m => setTransactionMessageLifetimeUsingBlockhash({
169
- blockhash: blockhash,
170
- lastValidBlockHeight: BigInt(lastValidBlockHeight ?? '0xFFFFFFFFFFFFFFFF'),
171
- }, m), m => addPriorityFees(m, priorityFees));
172
- const tokenAmount = new bigNumber_1.BigNumber(tokenUiAmount).times(10 ** tokenDecimals);
173
- const requiredAccounts = (0, exports.getMinimumRequiredTokenAccountsForTransfer)(fromTokenAccounts, tokenAmount.toString());
174
- const isReceiverAddressSystemAccount = toAddressOwner === SYSTEM_PROGRAM_PUBLIC_KEY;
175
- let finalReceiverAddress = toAddress;
176
- if (isReceiverAddressSystemAccount) {
177
- if (toTokenAccount) {
178
- finalReceiverAddress = toTokenAccount.publicKey;
179
- }
180
- else {
181
- const [createAccountInstruction, associatedTokenAccountAddress] = await (0, exports.buildCreateAssociatedTokenAccountInstruction)(fromAddress, toAddress, tokenMint, tokenProgramName);
182
- message = appendTransactionMessageInstruction(createAccountInstruction, message);
183
- finalReceiverAddress = associatedTokenAccountAddress;
184
- }
217
+ const {
218
+ address,
219
+ appendTransactionMessageInstruction,
220
+ appendTransactionMessageInstructions,
221
+ createTransactionMessage,
222
+ setTransactionMessageFeePayer,
223
+ setTransactionMessageLifetimeUsingBlockhash
224
+ } = await loadSolanaLib();
225
+ let message = await (0, ts_belt_1.pipe)(createTransactionMessage({
226
+ version: 'legacy'
227
+ }), m => setTransactionMessageFeePayer(address(fromAddress), m), m => setTransactionMessageLifetimeUsingBlockhash({
228
+ blockhash: blockhash,
229
+ lastValidBlockHeight: BigInt(lastValidBlockHeight ?? '0xFFFFFFFFFFFFFFFF')
230
+ }, m), m => addPriorityFees(m, priorityFees));
231
+ const tokenAmount = new bigNumber_1.BigNumber(tokenUiAmount).times(10 ** tokenDecimals);
232
+ const requiredAccounts = (0, exports.getMinimumRequiredTokenAccountsForTransfer)(fromTokenAccounts, tokenAmount.toString());
233
+ const isReceiverAddressSystemAccount = toAddressOwner === SYSTEM_PROGRAM_PUBLIC_KEY;
234
+ let finalReceiverAddress = toAddress;
235
+ if (isReceiverAddressSystemAccount) {
236
+ if (toTokenAccount) {
237
+ finalReceiverAddress = toTokenAccount.publicKey;
238
+ } else {
239
+ const [createAccountInstruction, associatedTokenAccountAddress] = await (0, exports.buildCreateAssociatedTokenAccountInstruction)(fromAddress, toAddress, tokenMint, tokenProgramName);
240
+ message = appendTransactionMessageInstruction(createAccountInstruction, message);
241
+ finalReceiverAddress = associatedTokenAccountAddress;
185
242
  }
186
- let remainingAmount = tokenAmount;
187
- const instructionPromises = requiredAccounts.map(async (tokenAccount) => {
188
- const transferAmount = bigNumber_1.BigNumber.min(remainingAmount, new bigNumber_1.BigNumber(tokenAccount.balance));
189
- const transferInstruction = await (0, exports.buildTokenTransferInstruction)(tokenAccount.publicKey, finalReceiverAddress, fromAddress, transferAmount, tokenMint, tokenDecimals, tokenProgramName);
190
- remainingAmount = remainingAmount.minus(transferAmount);
191
- return transferInstruction;
192
- });
193
- message = appendTransactionMessageInstructions(await Promise.all(instructionPromises), message);
194
- return {
195
- transaction: await createTransactionShim(message),
196
- destinationAddress: finalReceiverAddress,
197
- tokenAccountInfo: isReceiverAddressSystemAccount
198
- ? {
199
- baseAddress: toAddress,
200
- tokenProgram: tokenProgramsInfo[tokenProgramName].publicKey,
201
- tokenMint,
202
- tokenAccount: finalReceiverAddress,
203
- }
204
- : undefined,
205
- };
243
+ }
244
+ let remainingAmount = tokenAmount;
245
+ const instructionPromises = requiredAccounts.map(async tokenAccount => {
246
+ const transferAmount = bigNumber_1.BigNumber.min(remainingAmount, new bigNumber_1.BigNumber(tokenAccount.balance));
247
+ const transferInstruction = await (0, exports.buildTokenTransferInstruction)(tokenAccount.publicKey, finalReceiverAddress, fromAddress, transferAmount, tokenMint, tokenDecimals, tokenProgramName);
248
+ remainingAmount = remainingAmount.minus(transferAmount);
249
+ return transferInstruction;
250
+ });
251
+ message = appendTransactionMessageInstructions(await Promise.all(instructionPromises), message);
252
+ return {
253
+ transaction: await createTransactionShim(message),
254
+ destinationAddress: finalReceiverAddress,
255
+ tokenAccountInfo: isReceiverAddressSystemAccount ? {
256
+ baseAddress: toAddress,
257
+ tokenProgram: tokenProgramsInfo[tokenProgramName].publicKey,
258
+ tokenMint,
259
+ tokenAccount: finalReceiverAddress
260
+ } : undefined
261
+ };
206
262
  };
207
263
  exports.buildTokenTransferTransaction = buildTokenTransferTransaction;
208
264
  const fetchAccountOwnerAndTokenInfoForAddress = async (blockchain, address, mint, tokenProgram) => {
209
- let accountOwner;
210
- let tokenInfo;
211
- const accountInfoResponse = await blockchain.getAccountInfo({
212
- descriptor: address,
213
- details: 'tokens',
214
- });
215
- if (accountInfoResponse) {
216
- const associatedTokenAccount = await (0, exports.getAssociatedTokenAccountAddress)(address, mint, tokenProgram);
217
- accountOwner = accountInfoResponse?.misc?.owner;
218
- tokenInfo = accountInfoResponse?.tokens
219
- ?.find(token => token.contract === mint)
220
- ?.accounts?.find(account => associatedTokenAccount.toString() === account.publicKey);
221
- }
222
- return [accountOwner, tokenInfo];
265
+ let accountOwner;
266
+ let tokenInfo;
267
+ const accountInfoResponse = await blockchain.getAccountInfo({
268
+ descriptor: address,
269
+ details: 'tokens'
270
+ });
271
+ if (accountInfoResponse) {
272
+ const associatedTokenAccount = await (0, exports.getAssociatedTokenAccountAddress)(address, mint, tokenProgram);
273
+ accountOwner = accountInfoResponse?.misc?.owner;
274
+ tokenInfo = accountInfoResponse?.tokens?.find(token => token.contract === mint)?.accounts?.find(account => associatedTokenAccount.toString() === account.publicKey);
275
+ }
276
+ return [accountOwner, tokenInfo];
223
277
  };
224
278
  exports.fetchAccountOwnerAndTokenInfoForAddress = fetchAccountOwnerAndTokenInfoForAddress;
225
279
  //# sourceMappingURL=solanaUtils.js.map
@@ -1,9 +1,22 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.stellarSignTransaction = exports.stellarGetAddress = void 0;
4
7
  const tslib_1 = require("tslib");
5
8
  var stellarGetAddress_1 = require("./stellarGetAddress");
6
- Object.defineProperty(exports, "stellarGetAddress", { enumerable: true, get: function () { return tslib_1.__importDefault(stellarGetAddress_1).default; } });
9
+ Object.defineProperty(exports, "stellarGetAddress", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return tslib_1.__importDefault(stellarGetAddress_1).default;
13
+ }
14
+ });
7
15
  var stellarSignTransaction_1 = require("./stellarSignTransaction");
8
- Object.defineProperty(exports, "stellarSignTransaction", { enumerable: true, get: function () { return tslib_1.__importDefault(stellarSignTransaction_1).default; } });
16
+ Object.defineProperty(exports, "stellarSignTransaction", {
17
+ enumerable: true,
18
+ get: function () {
19
+ return tslib_1.__importDefault(stellarSignTransaction_1).default;
20
+ }
21
+ });
9
22
  //# sourceMappingURL=index.js.map