@ledgerhq/device-signer-kit-ethereum 0.0.0-test-recursive-stack-20251002122259 → 0.0.0-test-attest-npmjs-1-20251120163531

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 (471) hide show
  1. package/README.md +59 -1
  2. package/lib/cjs/api/SignerEth.js +1 -1
  3. package/lib/cjs/api/SignerEth.js.map +1 -1
  4. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  8. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  10. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  11. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  12. package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
  13. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  14. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  15. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  16. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  17. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  19. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
  20. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js +1 -1
  21. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  22. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  23. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  25. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
  26. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  27. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  28. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  30. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  32. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  34. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  35. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  36. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  37. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  38. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  39. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
  42. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
  46. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
  48. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  49. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  51. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  53. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  54. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  55. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  56. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  60. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  61. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  62. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  63. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  64. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  65. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  66. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
  69. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
  70. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
  72. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
  74. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  76. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  77. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  78. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  79. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  80. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  81. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  82. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  83. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  84. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  85. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  86. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  87. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  88. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
  89. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  90. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  91. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  92. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +1 -1
  93. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
  94. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
  95. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +3 -3
  96. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
  97. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  99. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  100. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  101. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  102. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  103. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  104. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
  105. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  106. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  107. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  108. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
  109. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  110. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  111. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  112. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  113. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  114. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  115. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  116. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
  117. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
  118. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
  119. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
  120. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  121. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  122. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  123. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  124. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  125. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  126. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  127. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  128. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  129. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  130. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  131. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  132. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +1 -1
  133. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
  134. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  135. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +3 -3
  136. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  137. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  138. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  139. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  140. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  141. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  142. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  143. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  144. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  145. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  146. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  147. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  148. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  149. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  150. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  151. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  152. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  153. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  154. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  155. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  156. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  157. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  158. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  159. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  160. package/lib/cjs/internal/di.js +1 -1
  161. package/lib/cjs/internal/di.js.map +3 -3
  162. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  163. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  164. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  165. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  166. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  167. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  168. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  169. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  170. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  171. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  172. package/lib/cjs/package.json +1 -1
  173. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  174. package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
  175. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  176. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  177. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  178. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  179. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  180. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  181. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  182. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  183. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  184. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  185. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  186. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  187. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  188. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
  189. package/lib/esm/internal/app-binder/command/GetAddressCommand.js +1 -1
  190. package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  191. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  192. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  193. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  194. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
  195. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  196. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  197. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
  198. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  199. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  200. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  201. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  202. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  203. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  204. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  205. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  206. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  207. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  208. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  209. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
  210. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
  211. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
  212. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
  213. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
  214. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
  215. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
  216. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
  217. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  218. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  219. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  220. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  221. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  222. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  223. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  224. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  225. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  226. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  227. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  228. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  229. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  230. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  231. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  232. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  233. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  234. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  235. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  236. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  237. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
  238. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
  239. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
  240. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
  241. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  242. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
  243. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  244. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  245. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  246. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  247. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  248. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  249. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  250. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  251. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  252. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  253. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  254. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  255. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  256. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  257. package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
  258. package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  259. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  260. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  261. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +1 -1
  262. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
  263. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
  264. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +3 -3
  265. package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
  266. package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +2 -2
  267. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  268. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  269. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  270. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  271. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  272. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  273. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
  274. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  275. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  276. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  277. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
  278. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  279. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  280. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  281. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  282. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  283. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  284. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  285. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
  286. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
  287. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
  288. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
  289. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  290. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  291. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  292. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  293. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  294. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  295. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  296. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  297. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  298. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  299. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  300. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  301. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +1 -1
  302. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
  303. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  304. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +3 -3
  305. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  306. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  307. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  308. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  309. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  310. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  311. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  312. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  313. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  314. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  315. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  316. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  317. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  318. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  319. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  320. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  321. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  322. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  323. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  324. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  325. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  326. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  327. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  328. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  329. package/lib/esm/internal/di.js +1 -1
  330. package/lib/esm/internal/di.js.map +3 -3
  331. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  332. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  333. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  334. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  335. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  336. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  337. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  338. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  339. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  340. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  341. package/lib/esm/package.json +1 -1
  342. package/lib/types/api/SignerEth.d.ts +3 -0
  343. package/lib/types/api/SignerEth.d.ts.map +1 -1
  344. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +1 -0
  345. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  346. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +2 -0
  347. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  348. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  349. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  350. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  351. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  352. package/lib/types/internal/DefaultSignerEth.d.ts +3 -0
  353. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  354. package/lib/types/internal/app-binder/EthAppBinder.d.ts +6 -0
  355. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  356. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +1 -0
  357. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
  358. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +1 -0
  359. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
  360. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +1 -0
  361. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
  362. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +1 -0
  363. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
  364. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +1 -0
  365. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
  366. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +1 -0
  367. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -1
  368. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +1 -0
  369. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -1
  370. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +35 -0
  371. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  372. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  373. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  374. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +1 -0
  375. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
  376. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +1 -0
  377. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
  378. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +1 -0
  379. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
  380. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +1 -0
  381. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
  382. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +1 -0
  383. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -1
  384. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +1 -0
  385. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  386. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +1 -0
  387. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
  388. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +1 -0
  389. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
  390. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +1 -0
  391. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
  392. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +1 -0
  393. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
  394. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +1 -0
  395. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -1
  396. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +1 -0
  397. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
  398. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +1 -0
  399. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
  400. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +1 -0
  401. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
  402. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +1 -0
  403. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
  404. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +1 -0
  405. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
  406. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +1 -0
  407. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -1
  408. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +7 -3
  409. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  410. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -0
  411. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  412. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  413. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  414. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  415. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  416. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +4 -6
  417. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -1
  418. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +3 -3
  419. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  420. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  421. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  422. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  423. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  424. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -1
  425. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  426. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  427. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  428. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  429. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +4 -4
  430. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  431. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  432. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  433. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  434. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  435. package/lib/types/internal/di.d.ts.map +1 -1
  436. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  437. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  438. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  439. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  440. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  441. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  442. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  443. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  444. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  445. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  446. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  447. package/package.json +6 -6
  448. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  449. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  450. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  451. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  452. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js +0 -2
  453. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js.map +0 -7
  454. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js +0 -2
  455. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js.map +0 -7
  456. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  457. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  458. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  459. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  460. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js +0 -2
  461. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js.map +0 -7
  462. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js +0 -2
  463. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js.map +0 -7
  464. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -29
  465. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +0 -1
  466. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +0 -2
  467. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +0 -1
  468. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts +0 -44
  469. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts.map +0 -1
  470. package/lib/types/internal/app-binder/task/ProvideContextsTask.test.d.ts +0 -2
  471. package/lib/types/internal/app-binder/task/ProvideContextsTask.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/StartTransactionCommand.test.ts"],
4
- "sourcesContent": ["import {\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport { StartTransactionCommand } from \"./StartTransactionCommand\";\n\ndescribe(\"StartTransactionCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // WHEN\n const command = new StartTransactionCommand();\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x02, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(32).fill(0x03),\n ]), // Some data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data.extract()).toEqual({\n r: \"0x0202020202020202020202020202020202020202020202020202020202020202\",\n s: \"0x0303030303030303030303030303030303030303030303030303030303030303\",\n v: 1,\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if v is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // No data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"V is missing\"));\n }\n });\n\n it(\"should return an error if r is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01, ...Array<number>(20).fill(0x02)]), // Invalid r\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"R is missing\"));\n }\n });\n\n it(\"should return an error if s is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(20).fill(0x02),\n ]), // Invalid s\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"S is missing\"));\n }\n });\n });\n});\n"],
5
- "mappings": "AAAA,OACE,0BAAAA,EACA,0BAAAC,MACK,kCAEP,OAAS,sBAAAC,MAA0B,uBACnC,OAAS,2BAAAC,MAA+B,4BAExC,SAAS,0BAA2B,IAAM,CACxC,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAGrC,MAAMC,EADU,IAAID,EAAwB,EACvB,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAIH,EAAwB,EACrB,cAAcE,CAAQ,EAGzCJ,EAAuBK,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,eAAeJ,CAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMG,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAIH,EAAwB,EACrB,cAAcE,CAAQ,EAGzCJ,EAAuBK,CAAM,EAC/B,OAAOA,EAAO,KAAK,QAAQ,CAAC,EAAE,QAAQ,CACpC,EAAG,qEACH,EAAG,qEACH,EAAG,CACL,CAAC,EAED,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAIH,EAAwB,EACrB,cAAcE,CAAQ,EAGzCJ,EAAuBK,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAeN,CAAsB,EAC1D,OAAOM,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,EAAM,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAAC,CAAC,EAC7D,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAIH,EAAwB,EACrB,cAAcE,CAAQ,EAGzCJ,EAAuBK,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAeN,CAAsB,EAC1D,OAAOM,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAIH,EAAwB,EACrB,cAAcE,CAAQ,EAGzCJ,EAAuBK,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAeN,CAAsB,EAC1D,OAAOM,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["InvalidStatusWordError", "isSuccessCommandResult", "EthAppCommandError", "StartTransactionCommand", "apdu", "response", "result"]
4
+ "sourcesContent": ["import {\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport { StartTransactionCommand } from \"./StartTransactionCommand\";\n\ndescribe(\"StartTransactionCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'startTransaction'\", () => {\n const command = new StartTransactionCommand();\n expect(command.name).toBe(\"startTransaction\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // WHEN\n const command = new StartTransactionCommand();\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x02, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(32).fill(0x03),\n ]), // Some data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data.extract()).toEqual({\n r: \"0x0202020202020202020202020202020202020202020202020202020202020202\",\n s: \"0x0303030303030303030303030303030303030303030303030303030303030303\",\n v: 1,\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if v is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // No data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"V is missing\"));\n }\n });\n\n it(\"should return an error if r is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01, ...Array<number>(20).fill(0x02)]), // Invalid r\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"R is missing\"));\n }\n });\n\n it(\"should return an error if s is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(20).fill(0x02),\n ]), // Invalid s\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(new Error(\"S is missing\"));\n }\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["InvalidStatusWordError", "isSuccessCommandResult", "EthAppCommandError", "StartTransactionCommand", "command", "apdu", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as t,CommandResultFactory as a}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as n}from"@ledgerhq/signer-utils";import{Maybe as s}from"purify-ts";import{ETH_APP_ERRORS as d,EthAppCommandErrorFactory as i}from"./utils/ethAppErrors";class c{constructor(r){this.args=r}errorHelper=new n(d,i);getApdu(){const{serializedTransaction:r,isFirstChunk:o}=this.args,e={cla:224,ins:4,p1:o?0:128,p2:1};return new t(e).addBufferToData(r).build()}parseResponse(r){return s.fromNullable(this.errorHelper.getError(r)).orDefault(a({data:void 0}))}}export{c as StoreTransactionCommand};
1
+ import{ApduBuilder as t,CommandResultFactory as a}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as n}from"@ledgerhq/signer-utils";import{Maybe as s}from"purify-ts";import{ETH_APP_ERRORS as d,EthAppCommandErrorFactory as i}from"./utils/ethAppErrors";class C{constructor(r){this.args=r}name="storeTransaction";errorHelper=new n(d,i);getApdu(){const{serializedTransaction:r,isFirstChunk:o}=this.args,e={cla:224,ins:4,p1:o?0:128,p2:1};return new t(e).addBufferToData(r).build()}parseResponse(r){return s.fromNullable(this.errorHelper.getError(r)).orDefault(a({data:void 0}))}}export{C as StoreTransactionCommand};
2
2
  //# sourceMappingURL=StoreTransactionCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/StoreTransactionCommand.ts"],
4
- "sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nexport type StoreTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\n/**\n * StoreTransactionCommand is a SignTransactionCommand that is used to initiate\n * the sign transaction flow. It signature differs from the SignTransactionCommand\n * because the command does not return any data.\n */\nexport class StoreTransactionCommand\n implements Command<void, StoreTransactionCommandArgs, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: StoreTransactionCommandArgs) {}\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x01,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.addBufferToData(serializedTransaction).build();\n }\n\n parseResponse(response: ApduResponse): CommandResult<void, EthErrorCodes> {\n return Maybe.fromNullable(this.errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: undefined }),\n );\n }\n}\n"],
5
- "mappings": "AAEA,OAEE,eAAAA,EAKA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,uBAkBA,MAAMC,CAEb,CAME,YAA6BC,EAAmC,CAAnC,UAAAA,CAAoC,CALhD,YAAc,IAAIL,EACjCE,EACAC,CACF,EAIA,SAAgB,CACd,KAAM,CAAE,sBAAAG,EAAuB,aAAAC,CAAa,EAAI,KAAK,KAE/CC,EAA0C,CAC9C,IAAK,IACL,IAAK,EACL,GAAID,EAAe,EAAO,IAC1B,GAAI,CACN,EAEA,OADgB,IAAIT,EAAYU,CAAsB,EACvC,gBAAgBF,CAAqB,EAAE,MAAM,CAC9D,CAEA,cAAcG,EAA4D,CACxE,OAAOR,EAAM,aAAa,KAAK,YAAY,SAASQ,CAAQ,CAAC,EAAE,UAC7DV,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,CACF,CACF",
4
+ "sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nexport type StoreTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\n/**\n * StoreTransactionCommand is a SignTransactionCommand that is used to initiate\n * the sign transaction flow. It signature differs from the SignTransactionCommand\n * because the command does not return any data.\n */\nexport class StoreTransactionCommand\n implements Command<void, StoreTransactionCommandArgs, EthErrorCodes>\n{\n readonly name = \"storeTransaction\";\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: StoreTransactionCommandArgs) {}\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x01,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.addBufferToData(serializedTransaction).build();\n }\n\n parseResponse(response: ApduResponse): CommandResult<void, EthErrorCodes> {\n return Maybe.fromNullable(this.errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: undefined }),\n );\n }\n}\n"],
5
+ "mappings": "AAEA,OAEE,eAAAA,EAKA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,uBAkBA,MAAMC,CAEb,CAOE,YAA6BC,EAAmC,CAAnC,UAAAA,CAAoC,CANxD,KAAO,mBACC,YAAc,IAAIL,EACjCE,EACAC,CACF,EAIA,SAAgB,CACd,KAAM,CAAE,sBAAAG,EAAuB,aAAAC,CAAa,EAAI,KAAK,KAE/CC,EAA0C,CAC9C,IAAK,IACL,IAAK,EACL,GAAID,EAAe,EAAO,IAC1B,GAAI,CACN,EAEA,OADgB,IAAIT,EAAYU,CAAsB,EACvC,gBAAgBF,CAAqB,EAAE,MAAM,CAC9D,CAEA,cAAcG,EAA4D,CACxE,OAAOR,EAAM,aAAa,KAAK,YAAY,SAASQ,CAAQ,CAAC,EAAE,UAC7DV,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,CACF,CACF",
6
6
  "names": ["ApduBuilder", "CommandResultFactory", "CommandErrorHelper", "Maybe", "ETH_APP_ERRORS", "EthAppCommandErrorFactory", "StoreTransactionCommand", "args", "serializedTransaction", "isFirstChunk", "signEthTransactionArgs", "response"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{EthAppCommandError as o}from"./utils/ethAppErrors";import{StoreTransactionCommand as t}from"./StoreTransactionCommand";describe("StoreTransactionCommand",()=>{describe("getApdu",()=>{it("should return the raw APDU for the first chunk",()=>{const e={serializedTransaction:Uint8Array.from([1,2,3]),isFirstChunk:!0},r=new t(e).getApdu();expect(r.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,0,1,3,1,2,3]))}),it("should return the raw APDU for the subsequent chunk",()=>{const e={serializedTransaction:Uint8Array.from([4,5,6]),isFirstChunk:!1},r=new t(e).getApdu();expect(r.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,128,1,3,4,5,6]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([109,0])},r=new t({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(e);if(n(r))throw new Error("Expected error");expect(r.error).toBeInstanceOf(o)}),it("should return the correct response",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},r=new t({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(e);if(n(r))expect(r.data).toBeUndefined();else throw new Error("Expected success")})})});
1
+ import{isSuccessCommandResult as s}from"@ledgerhq/device-management-kit";import{EthAppCommandError as o}from"./utils/ethAppErrors";import{StoreTransactionCommand as t}from"./StoreTransactionCommand";describe("StoreTransactionCommand",()=>{describe("name",()=>{it("should be 'storeTransaction'",()=>{const r=new t({serializedTransaction:new Uint8Array,isFirstChunk:!0});expect(r.name).toBe("storeTransaction")})}),describe("getApdu",()=>{it("should return the raw APDU for the first chunk",()=>{const r={serializedTransaction:Uint8Array.from([1,2,3]),isFirstChunk:!0},e=new t(r).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,0,1,3,1,2,3]))}),it("should return the raw APDU for the subsequent chunk",()=>{const r={serializedTransaction:Uint8Array.from([4,5,6]),isFirstChunk:!1},e=new t(r).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,128,1,3,4,5,6]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const r={data:Uint8Array.from([]),statusCode:Uint8Array.from([109,0])},e=new t({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(r);if(s(e))throw new Error("Expected error");expect(e.error).toBeInstanceOf(o)}),it("should return the correct response",()=>{const r={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},e=new t({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(r);if(s(e))expect(e.data).toBeUndefined();else throw new Error("Expected success")})})});
2
2
  //# sourceMappingURL=StoreTransactionCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/StoreTransactionCommand.test.ts"],
4
- "sourcesContent": ["import {\n type ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport {\n StoreTransactionCommand,\n type StoreTransactionCommandArgs,\n} from \"./StoreTransactionCommand\";\n\ndescribe(\"StoreTransactionCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU for the first chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x01, 0x02, 0x03]),\n isFirstChunk: true,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x01, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n\n it(\"should return the raw APDU for the subsequent chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x04, 0x05, 0x06]),\n isFirstChunk: false,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x80, 0x01, 0x03, 0x04, 0x05, 0x06]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n throw new Error(\"Expected error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n } else {\n throw new Error(\"Expected success\");\n }\n });\n });\n});\n"],
5
- "mappings": "AAAA,OAEE,0BAAAA,MACK,kCAEP,OAAS,sBAAAC,MAA0B,uBACnC,OACE,2BAAAC,MAEK,4BAEP,SAAS,0BAA2B,IAAM,CACxC,SAAS,UAAW,IAAM,CACxB,GAAG,iDAAkD,IAAM,CAEzD,MAAMC,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAIF,EAAwBC,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,EAED,GAAG,sDAAuD,IAAM,CAE9D,MAAMD,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAIF,EAAwBC,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAIJ,EAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcG,CAAQ,EAG7C,GAAIL,EAAuBM,CAAM,EAC/B,MAAM,IAAI,MAAM,gBAAgB,EAEhC,OAAOA,EAAO,KAAK,EAAE,eAAeL,CAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMI,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAIJ,EAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcG,CAAQ,EAG7C,GAAIL,EAAuBM,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,MAElC,OAAM,IAAI,MAAM,kBAAkB,CAEtC,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["isSuccessCommandResult", "EthAppCommandError", "StoreTransactionCommand", "args", "apdu", "response", "result"]
4
+ "sourcesContent": ["import {\n type ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport {\n StoreTransactionCommand,\n type StoreTransactionCommandArgs,\n} from \"./StoreTransactionCommand\";\n\ndescribe(\"StoreTransactionCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'storeTransaction'\", () => {\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n });\n expect(command.name).toBe(\"storeTransaction\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU for the first chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x01, 0x02, 0x03]),\n isFirstChunk: true,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x01, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n\n it(\"should return the raw APDU for the subsequent chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x04, 0x05, 0x06]),\n isFirstChunk: false,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x80, 0x01, 0x03, 0x04, 0x05, 0x06]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n throw new Error(\"Expected error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n } else {\n throw new Error(\"Expected success\");\n }\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAEE,0BAAAA,MACK,kCAEP,OAAS,sBAAAC,MAA0B,uBACnC,OACE,2BAAAC,MAEK,4BAEP,SAAS,0BAA2B,IAAM,CACxC,SAAS,OAAQ,IAAM,CACrB,GAAG,+BAAgC,IAAM,CACvC,MAAMC,EAAU,IAAID,EAAwB,CAC1C,sBAAuB,IAAI,WAC3B,aAAc,EAChB,CAAC,EACD,OAAOC,EAAQ,IAAI,EAAE,KAAK,kBAAkB,CAC9C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,iDAAkD,IAAM,CAEzD,MAAMC,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAIH,EAAwBE,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,EAED,GAAG,sDAAuD,IAAM,CAE9D,MAAMD,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAIH,EAAwBE,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAIL,EAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcI,CAAQ,EAG7C,GAAIN,EAAuBO,CAAM,EAC/B,MAAM,IAAI,MAAM,gBAAgB,EAEhC,OAAOA,EAAO,KAAK,EAAE,eAAeN,CAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMK,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAIL,EAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcI,CAAQ,EAG7C,GAAIN,EAAuBO,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,MAElC,OAAM,IAAI,MAAM,kBAAkB,CAEtC,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["isSuccessCommandResult", "EthAppCommandError", "StoreTransactionCommand", "command", "args", "apdu", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as t,ApduParser as n,CommandResultFactory as o}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as p}from"@ledgerhq/signer-utils";import{Maybe as d}from"purify-ts";import{ETH_APP_ERRORS as a,EthAppCommandErrorFactory as m}from"../../app-binder/command/utils/ethAppErrors";class c{errorHelper=new p(a,m);constructor(){}getApdu(){const e={cla:224,ins:50,p1:1,p2:0};return new t(e).build()}parseResponse(e){return d.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const r=new n(e).extract8BitUInt();return r===void 0?o({data:{enabled:!1}}):o({data:{enabled:r!==0}})})}}export{c as Web3CheckOptInCommand};
1
+ import{ApduBuilder as t,ApduParser as n,CommandResultFactory as o}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as p}from"@ledgerhq/signer-utils";import{Maybe as d}from"purify-ts";import{ETH_APP_ERRORS as a,EthAppCommandErrorFactory as m}from"../../app-binder/command/utils/ethAppErrors";class c{name="web3CheckOptIn";errorHelper=new p(a,m);constructor(){}getApdu(){const e={cla:224,ins:50,p1:1,p2:0};return new t(e).build()}parseResponse(e){return d.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const r=new n(e).extract8BitUInt();return r===void 0?o({data:{enabled:!1}}):o({data:{enabled:r!==0}})})}}export{c as Web3CheckOptInCommand};
2
2
  //# sourceMappingURL=Web3CheckOptInCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/Web3CheckOptInCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nexport type Web3CheckOptInCommandResponse = {\n enabled: boolean;\n};\n\n/**\n * The command that trigger web3check opt-in on device.\n */\nexport class Web3CheckOptInCommand\n implements Command<Web3CheckOptInCommandResponse, void, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n Web3CheckOptInCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n const apduBuilderArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x32,\n p1: 0x01,\n p2: 0x00,\n };\n\n return new ApduBuilder(apduBuilderArgs).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const enabled = new ApduParser(response).extract8BitUInt();\n if (enabled === undefined) {\n return CommandResultFactory({ data: { enabled: false } });\n }\n return CommandResultFactory({ data: { enabled: enabled !== 0 } });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,kDASA,MAAMC,CAEb,CACmB,YAAc,IAAIJ,EAGjCE,EAAgBC,CAAyB,EAE3C,aAAc,CAAC,CAEf,SAAgB,CACd,MAAME,EAAmC,CACvC,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,CACN,EAEA,OAAO,IAAIR,EAAYQ,CAAe,EAAE,MAAM,CAChD,CAEA,cACEC,EAC6D,CAC7D,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAU,IAAIT,EAAWQ,CAAQ,EAAE,gBAAgB,EACzD,OAAIC,IAAY,OACPR,EAAqB,CAAE,KAAM,CAAE,QAAS,EAAM,CAAE,CAAC,EAEnDA,EAAqB,CAAE,KAAM,CAAE,QAASQ,IAAY,CAAE,CAAE,CAAC,CAClE,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nexport type Web3CheckOptInCommandResponse = {\n enabled: boolean;\n};\n\n/**\n * The command that trigger web3check opt-in on device.\n */\nexport class Web3CheckOptInCommand\n implements Command<Web3CheckOptInCommandResponse, void, EthErrorCodes>\n{\n readonly name = \"web3CheckOptIn\";\n private readonly errorHelper = new CommandErrorHelper<\n Web3CheckOptInCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n const apduBuilderArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x32,\n p1: 0x01,\n p2: 0x00,\n };\n\n return new ApduBuilder(apduBuilderArgs).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const enabled = new ApduParser(response).extract8BitUInt();\n if (enabled === undefined) {\n return CommandResultFactory({ data: { enabled: false } });\n }\n return CommandResultFactory({ data: { enabled: enabled !== 0 } });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,kDASA,MAAMC,CAEb,CACW,KAAO,iBACC,YAAc,IAAIJ,EAGjCE,EAAgBC,CAAyB,EAE3C,aAAc,CAAC,CAEf,SAAgB,CACd,MAAME,EAAmC,CACvC,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,CACN,EAEA,OAAO,IAAIR,EAAYQ,CAAe,EAAE,MAAM,CAChD,CAEA,cACEC,EAC6D,CAC7D,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAU,IAAIT,EAAWQ,CAAQ,EAAE,gBAAgB,EACzD,OAAIC,IAAY,OACPR,EAAqB,CAAE,KAAM,CAAE,QAAS,EAAM,CAAE,CAAC,EAEnDA,EAAqB,CAAE,KAAM,CAAE,QAASQ,IAAY,CAAE,CAAE,CAAC,CAClE,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "CommandErrorHelper", "Maybe", "ETH_APP_ERRORS", "EthAppCommandErrorFactory", "Web3CheckOptInCommand", "apduBuilderArgs", "response", "enabled"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{Web3CheckOptInCommand as s}from"../../app-binder/command/Web3CheckOptInCommand";describe("Web3CheckOptInCommand",()=>{describe("getApdu",()=>{it("should return the raw APDU",()=>{const e=new s().getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,1,0,0]))})}),describe("parseResponse",()=>{it("should return true",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!0}):assert.fail("Expected a success")}),it("should return false",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([0])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return false if missing",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const t={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=new s().parseResponse(t);r(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))})})});
1
+ import{isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{Web3CheckOptInCommand as s}from"../../app-binder/command/Web3CheckOptInCommand";describe("Web3CheckOptInCommand",()=>{describe("name",()=>{it("should be 'web3CheckOptIn'",()=>{const t=new s;expect(t.name).toBe("web3CheckOptIn")})}),describe("getApdu",()=>{it("should return the raw APDU",()=>{const e=new s().getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,1,0,0]))})}),describe("parseResponse",()=>{it("should return true",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!0}):assert.fail("Expected a success")}),it("should return false",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([0])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return false if missing",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])},e=new s().parseResponse(t);r(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const t={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=new s().parseResponse(t);r(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))})})});
2
2
  //# sourceMappingURL=Web3CheckOptInCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/Web3CheckOptInCommand.test.ts"],
4
- "sourcesContent": ["import { isSuccessCommandResult } from \"@ledgerhq/device-management-kit\";\n\nimport { Web3CheckOptInCommand } from \"@internal/app-binder/command/Web3CheckOptInCommand\";\n\ndescribe(\"Web3CheckOptInCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // GIVEN\n const command = new Web3CheckOptInCommand();\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x01, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return true\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: true });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x00]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false if missing\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if the device is locked\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x55, 0x15]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"5515\",\n message: \"Device is locked.\",\n }),\n );\n }\n });\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,0BAAAA,MAA8B,kCAEvC,OAAS,yBAAAC,MAA6B,qDAEtC,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAKrC,MAAMC,EAHU,IAAID,EAAsB,EAGrB,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,qBAAsB,IAAM,CAE7B,MAAMC,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAIH,EAAsB,EAAE,cAAcE,CAAQ,EAG7DH,EAAuBI,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAK,CAAC,EAEnD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAIH,EAAsB,EAAE,cAAcE,CAAQ,EAG7DH,EAAuBI,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iCAAkC,IAAM,CAEzC,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,EAGMC,EAAS,IAAIH,EAAsB,EAAE,cAAcE,CAAQ,EAG7DH,EAAuBI,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iDAAkD,IAAM,CAEzD,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAIH,EAAsB,EAAE,cAAcE,CAAQ,EAG7DH,EAAuBI,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,UAAW,OACX,QAAS,mBACX,CAAC,CACH,CAEJ,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["isSuccessCommandResult", "Web3CheckOptInCommand", "apdu", "response", "result"]
4
+ "sourcesContent": ["import { isSuccessCommandResult } from \"@ledgerhq/device-management-kit\";\n\nimport { Web3CheckOptInCommand } from \"@internal/app-binder/command/Web3CheckOptInCommand\";\n\ndescribe(\"Web3CheckOptInCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'web3CheckOptIn'\", () => {\n const command = new Web3CheckOptInCommand();\n expect(command.name).toBe(\"web3CheckOptIn\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // GIVEN\n const command = new Web3CheckOptInCommand();\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x01, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return true\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: true });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x00]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false if missing\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if the device is locked\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x55, 0x15]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"5515\",\n message: \"Device is locked.\",\n }),\n );\n }\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,0BAAAA,MAA8B,kCAEvC,OAAS,yBAAAC,MAA6B,qDAEtC,SAAS,wBAAyB,IAAM,CACtC,SAAS,OAAQ,IAAM,CACrB,GAAG,6BAA8B,IAAM,CACrC,MAAMC,EAAU,IAAID,EACpB,OAAOC,EAAQ,IAAI,EAAE,KAAK,gBAAgB,CAC5C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAKrC,MAAMC,EAHU,IAAIF,EAAsB,EAGrB,QAAQ,EAG7B,OAAOE,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,qBAAsB,IAAM,CAE7B,MAAMC,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAIJ,EAAsB,EAAE,cAAcG,CAAQ,EAG7DJ,EAAuBK,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAK,CAAC,EAEnD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAIJ,EAAsB,EAAE,cAAcG,CAAQ,EAG7DJ,EAAuBK,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iCAAkC,IAAM,CAEzC,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,EAGMC,EAAS,IAAIJ,EAAsB,EAAE,cAAcG,CAAQ,EAG7DJ,EAAuBK,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iDAAkD,IAAM,CAEzD,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAIJ,EAAsB,EAAE,cAAcG,CAAQ,EAG7DJ,EAAuBK,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,UAAW,OACX,QAAS,mBACX,CAAC,CACH,CAEJ,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["isSuccessCommandResult", "Web3CheckOptInCommand", "command", "apdu", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as p,isSuccessCommandResult as s,OpenAppDeviceAction as T,UnknownDAError as C,UserInteractionRequired as i,XStateDeviceAction as m}from"@ledgerhq/device-management-kit";import{Left as y,Right as A}from"purify-ts";import{and as h,assign as n,fromPromise as o,setup as I}from"xstate";import{SignTransactionDAStep as a}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{ClearSigningType as E}from"../../../../api/model/ClearSigningType";import{GetAppConfiguration as k}from"../../../app-binder/command/GetAppConfigurationCommand";import{Web3CheckOptInCommand as _}from"../../../app-binder/command/Web3CheckOptInCommand";import{BuildFullContextsTask as f}from"../../../app-binder/task/BuildFullContextsTask";import{ParseTransactionTask as v}from"../../../app-binder/task/ParseTransactionTask";import{ProvideContextsTask as D}from"../../../app-binder/task/ProvideContextsTask";import{SendSignTransactionTask as P}from"../../../app-binder/task/SendSignTransactionTask";import{ApplicationChecker as b}from"../../../shared/utils/ApplicationChecker";class L extends m{makeStateMachine(r){const{getAppConfig:c,web3CheckOptIn:u,parseTransaction:l,buildContexts:g,signTransaction:d,provideContexts:S}=this.extractDependencies(r);return I({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new T({input:{appName:"Ethereum"}}).makeStateMachine(r),getAppConfig:o(c),web3CheckOptIn:o(u),parseTransaction:o(l),buildContexts:o(g),provideContexts:o(S),signTransaction:o(d)},guards:{noInternalError:({context:t})=>t._internalState.error===null,notRefusedByUser:({context:t})=>t._internalState.error!==null&&(!("errorCode"in t._internalState.error)||t._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:t})=>new b(r.getDeviceSessionState(),t._internalState.appConfig).withMinVersionExclusive("1.15.0").excludeDeviceModel(p.NANO_S).excludeDeviceModel(p.NANO_SP).excludeDeviceModel(p.NANO_X).check(),shouldOptIn:({context:t})=>!t._internalState.appConfig.web3ChecksEnabled&&!t._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:t})=>!!t.input.options.skipOpenApp},actions:{assignErrorFromEvent:n({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:i.None,step:a.OPEN_APP},_internalState:{error:null,appConfig:null,subset:null,contexts:[],clearSigningType:null,transactionType:null,signature:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:"Ethereum"},src:"openAppStateMachine",onSnapshot:{actions:n({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:a.OPEN_APP})})},onDone:{actions:n({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:e=>({...t.context._internalState,error:e})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,appConfig:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:h(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"ParseTransaction",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:n({intermediateValue:{requiredUserInteraction:i.Web3ChecksOptIn,step:a.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,appConfig:{...e._internalState.appConfig,web3ChecksEnabled:t.output.data.enabled}}:e._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:n(({context:t})=>({intermediateValue:{requiredUserInteraction:i.None,step:a.WEB3_CHECKS_OPT_IN_RESULT,result:t._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"ParseTransaction"}}},ParseTransaction:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.PARSE_TRANSACTION}}),invoke:{id:"parseTransaction",src:"parseTransaction",input:({context:t})=>({mapper:t.input.mapper,transaction:t.input.transaction}),onDone:{target:"BuildContexts",actions:n({_internalState:({event:t,context:e})=>({...e._internalState,subset:t.output.subset,transactionType:t.output.type})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContexts:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.BUILD_CONTEXTS}}),invoke:{id:"buildContexts",src:"buildContexts",input:({context:t})=>({contextModule:t.input.contextModule,mapper:t.input.mapper,parser:t.input.parser,options:t.input.options,appConfig:t._internalState.appConfig,derivationPath:t.input.derivationPath,subset:t._internalState.subset,transaction:t.input.transaction,deviceModelId:r.getDeviceModel().id}),onDone:{target:"ProvideContexts",actions:[n({_internalState:({event:t,context:e})=>({...e._internalState,contexts:t.output.clearSignContexts,clearSigningType:t.output.clearSigningType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.PROVIDE_CONTEXTS}}),exit:n({_internalState:({context:t})=>({...t._internalState,contexts:t._internalState.contexts.slice(1)})}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:t})=>({contexts:t._internalState.contexts,derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:n({intermediateValue:{requiredUserInteraction:i.SignTransaction,step:a.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:t._internalState.clearSigningType}),onDone:{target:"SignTransactionResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,signature:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"SignTransactionResultCheck",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{guard:"notRefusedByUser",target:"BlindSignTransactionFallback"},{target:"Error"}]},BlindSignTransactionFallback:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.BLIND_SIGN_TRANSACTION_FALLBACK}}),invoke:{id:"blindSignTransactionFallback",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:E.BASIC}),onDone:{target:"BlindSignTransactionFallbackResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,signature:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BlindSignTransactionFallbackResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.signature?A(t._internalState.signature):y(t._internalState.error||new C("No error in final state"))})}extractDependencies(r){return{getAppConfig:async()=>r.sendCommand(new k),web3CheckOptIn:async()=>r.sendCommand(new _),parseTransaction:async t=>Promise.resolve(new v({mapper:t.input.mapper,transaction:t.input.transaction}).run()),buildContexts:async t=>new f(r,t.input).run(),provideContexts:async t=>new D(r,t.input).run(),signTransaction:async t=>new P(r,{...t.input}).run()}}}export{L as SignTransactionDeviceAction};
1
+ import{DeviceModelId as p,isSuccessCommandResult as s,OpenAppDeviceAction as m,UnknownDAError as A,UserInteractionRequired as i,XStateDeviceAction as y}from"@ledgerhq/device-management-kit";import{Left as h,Right as E}from"purify-ts";import{and as I,assign as n,fromPromise as o,setup as k}from"xstate";import{SignTransactionDAStep as a}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{ClearSigningType as _}from"../../../../api/model/ClearSigningType";import{GetAddressCommand as f}from"../../../app-binder/command/GetAddressCommand";import{GetAppConfiguration as D}from"../../../app-binder/command/GetAppConfigurationCommand";import{Web3CheckOptInCommand as v}from"../../../app-binder/command/Web3CheckOptInCommand";import{BuildFullContextsTask as P}from"../../../app-binder/task/BuildFullContextsTask";import{ParseTransactionTask as b}from"../../../app-binder/task/ParseTransactionTask";import{ProvideTransactionContextsTask as O}from"../../../app-binder/task/ProvideTransactionContextsTask";import{SendSignTransactionTask as R}from"../../../app-binder/task/SendSignTransactionTask";import{ApplicationChecker as N}from"../../../shared/utils/ApplicationChecker";class H extends y{makeStateMachine(r){const{getAddress:c,getAppConfig:u,web3CheckOptIn:l,parseTransaction:d,buildContexts:g,signTransaction:S,provideContexts:T}=this.extractDependencies(r);return k({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new m({input:{appName:"Ethereum"}}).makeStateMachine(r),getAddress:o(c),getAppConfig:o(u),web3CheckOptIn:o(l),parseTransaction:o(d),buildContexts:o(g),provideContexts:o(T),signTransaction:o(S)},guards:{noInternalError:({context:t})=>t._internalState.error===null,notRefusedByUser:({context:t})=>t._internalState.error!==null&&(!("errorCode"in t._internalState.error)||t._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:t})=>new N(r.getDeviceSessionState(),t._internalState.appConfig).withMinVersionExclusive("1.15.0").excludeDeviceModel(p.NANO_S).excludeDeviceModel(p.NANO_SP).excludeDeviceModel(p.NANO_X).check(),shouldOptIn:({context:t})=>!t._internalState.appConfig.web3ChecksEnabled&&!t._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:t})=>!!t.input.options.skipOpenApp},actions:{assignErrorFromEvent:n({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:i.None,step:a.OPEN_APP},_internalState:{error:null,appConfig:null,subset:null,contexts:[],clearSigningType:null,transactionType:null,signature:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:"Ethereum"},src:"openAppStateMachine",onSnapshot:{actions:n({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:a.OPEN_APP})})},onDone:{actions:n({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:e=>({...t.context._internalState,error:e})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,appConfig:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:I(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"ParseTransaction",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:n({intermediateValue:{requiredUserInteraction:i.Web3ChecksOptIn,step:a.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,appConfig:{...e._internalState.appConfig,web3ChecksEnabled:t.output.data.enabled}}:e._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:n(({context:t})=>({intermediateValue:{requiredUserInteraction:i.None,step:a.WEB3_CHECKS_OPT_IN_RESULT,result:t._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"ParseTransaction"}}},ParseTransaction:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.PARSE_TRANSACTION}}),invoke:{id:"parseTransaction",src:"parseTransaction",input:({context:t})=>({mapper:t.input.mapper,transaction:t.input.transaction}),onDone:{target:"GetAddress",actions:n({_internalState:({event:t,context:e})=>({...e._internalState,subset:t.output.subset,transactionType:t.output.type})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAddress:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:t})=>({derivationPath:t.input.derivationPath,checkOnDevice:!1,returnChainCode:!1}),onDone:{target:"BuildContexts",actions:n({_internalState:({event:t,context:e})=>{if(s(t.output)){const C={...e._internalState.subset,from:t.output.data.address};return{...e._internalState,subset:C}}return{...e._internalState}}})},onError:{target:"Error"}}},BuildContexts:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.BUILD_CONTEXTS}}),invoke:{id:"buildContexts",src:"buildContexts",input:({context:t})=>({contextModule:t.input.contextModule,mapper:t.input.mapper,parser:t.input.parser,options:t.input.options,appConfig:t._internalState.appConfig,derivationPath:t.input.derivationPath,subset:t._internalState.subset,transaction:t.input.transaction,deviceModelId:r.getDeviceModel().id}),onDone:{target:"ProvideContexts",actions:[n({_internalState:({event:t,context:e})=>({...e._internalState,contexts:t.output.clearSignContexts,clearSigningType:t.output.clearSigningType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.PROVIDE_CONTEXTS}}),exit:n({_internalState:({context:t})=>({...t._internalState,contexts:t._internalState.contexts.slice(1)})}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:t})=>({contexts:t._internalState.contexts,derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:n({intermediateValue:{requiredUserInteraction:i.SignTransaction,step:a.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:t._internalState.clearSigningType}),onDone:{target:"SignTransactionResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,signature:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"SignTransactionResultCheck",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{guard:"notRefusedByUser",target:"BlindSignTransactionFallback"},{target:"Error"}]},BlindSignTransactionFallback:{entry:n({intermediateValue:{requiredUserInteraction:i.None,step:a.BLIND_SIGN_TRANSACTION_FALLBACK}}),invoke:{id:"blindSignTransactionFallback",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:_.BASIC}),onDone:{target:"BlindSignTransactionFallbackResultCheck",actions:[n({_internalState:({event:t,context:e})=>s(t.output)?{...e._internalState,signature:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BlindSignTransactionFallbackResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.signature?E(t._internalState.signature):h(t._internalState.error||new A("No error in final state"))})}extractDependencies(r){return{getAddress:async t=>r.sendCommand(new f(t.input)),getAppConfig:async()=>r.sendCommand(new D),web3CheckOptIn:async()=>r.sendCommand(new v),parseTransaction:async t=>Promise.resolve(new b({mapper:t.input.mapper,transaction:t.input.transaction}).run()),buildContexts:async t=>new P(r,t.input).run(),provideContexts:async t=>new O(r,t.input).run(),signTransaction:async t=>new R(r,{...t.input}).run()}}}export{H as SignTransactionDeviceAction};
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { and, assign, fromPromise, setup } from \"xstate\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { GetAppConfiguration } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport {\n Web3CheckOptInCommand,\n type Web3CheckOptInCommandResponse,\n} from \"@internal/app-binder/command/Web3CheckOptInCommand\";\nimport {\n BuildFullContextsTask,\n type BuildFullContextsTaskArgs,\n type BuildFullContextsTaskResult,\n} from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport {\n ParseTransactionTask,\n type ParseTransactionTaskArgs,\n type ParseTransactionTaskResult,\n} from \"@internal/app-binder/task/ParseTransactionTask\";\nimport {\n ProvideContextsTask,\n type ProvideContextsTaskArgs,\n type ProvideContextsTaskResult,\n} from \"@internal/app-binder/task/ProvideContextsTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\n\nexport type MachineDependencies = {\n readonly getAppConfig: () => Promise<\n CommandResult<GetConfigCommandResponse, EthErrorCodes>\n >;\n readonly web3CheckOptIn: () => Promise<\n CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes>\n >;\n readonly parseTransaction: (arg0: {\n input: ParseTransactionTaskArgs;\n }) => Promise<ParseTransactionTaskResult>;\n readonly buildContexts: (arg0: {\n input: BuildFullContextsTaskArgs;\n }) => Promise<BuildFullContextsTaskResult>;\n readonly provideContexts: (arg0: {\n input: ProvideContextsTaskArgs;\n }) => Promise<ProvideContextsTaskResult>;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n clearSigningType: ClearSigningType;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getAppConfig,\n web3CheckOptIn,\n parseTransaction,\n buildContexts,\n signTransaction,\n provideContexts,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getAppConfig: fromPromise(getAppConfig),\n web3CheckOptIn: fromPromise(web3CheckOptIn),\n parseTransaction: fromPromise(parseTransaction),\n buildContexts: fromPromise(buildContexts),\n provideContexts: fromPromise(provideContexts),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n notRefusedByUser: ({ context }) =>\n context._internalState.error !== null &&\n (!(\"errorCode\" in context._internalState.error) ||\n context._internalState.error.errorCode !== \"6985\"),\n isWeb3ChecksSupported: ({ context }) =>\n new ApplicationChecker(\n internalApi.getDeviceSessionState(),\n context._internalState.appConfig!,\n )\n .withMinVersionExclusive(\"1.15.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .excludeDeviceModel(DeviceModelId.NANO_SP)\n .excludeDeviceModel(DeviceModelId.NANO_X)\n .check(),\n shouldOptIn: ({ context }) =>\n !context._internalState.appConfig!.web3ChecksEnabled &&\n !context._internalState.appConfig!.web3ChecksOptIn,\n skipOpenApp: ({ context }) => !!context.input.options.skipOpenApp,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoBJDVcvADbJSeUmADEAbQAMAXUSgADhVh92CkAA9EARgDsAZg4AOACzGAnAFYDNgGxXpF6ToA0IAJ67TOgEwcDHTsLCz9pQN9bAF8o9zRMXAIiNipaBiZWcipuXn4hETEpHXkkEGVVLIwNbQR9IzNLG3tHZzdPXV87aQ5I5ztfSON+zpi49Gx8QhJKtMYWFM4AeUUwDGZFRVmMhfEIKjAOVAw6CgBrA4oVtY3hUTAAWRIACyOwGRKlFTUqasQ9RxMVjMdgcdj0xnBvncXlqkTsHAsQxcnVMvmM4TsoxA8QmSWm7C280qHAAwk8wMRTstVutNvQ5pl2AAlOAAVwEpCkcg05W+VVKNR0gW6IOsoWMfgMdlMdmhHRBHActisFnMMqCmNi2PGiSmC0JjOyZIpVKutINCxZsHZnMkxR5X0qv1qwsVwRVOglcJlcoQEo4ns9pmkQL00mCFgMWJxuuSM3p22JAHEwKRaSSqAAzdC7faHY5nA4wNMbDMYbNQd4OirqAW6CVWDhWPR2fR2Yy+Fu+UwGX1C4zGHoGcPSDuGCx6HTRnWTOMEhNE9gcFMlxRliviMA4HAUHAcRQCUSZ3cAWw4xfTWfQVdKvKdddqDabLbbY-6Pb7IQ4I+sPdR1n+KMtRjWd8VSBdDU4FdL3LdArRtY1KS5D4ykdWtQBqAYO2-MFwyBHRTEjNoYT8Lpv3CKwrG7Zt0VMPRpwSUD9QghZl1TGCK3gjlENOIoULvdCtEQLD-HDMMHAlQjAj7VEdADENg1MYNhQMUwGNxPV43SRdsmg0srygLjSB4qRfH4tCfgfEScPE-CpOIxBVO6HQiLbVUQR8dTYzAmgWOJAB1MAACMDB42BllIHhcwwA4jhOc4OAAd2C0LyUpCKeBvT4a0sjDhKGfxmxDXwMT0SIDF7dpYUono9B7YxbAI4xHGMLymK0hlWMCkKwoyjBN23Xd90PUhjxwM9kp6tLTUijAstQnL+TyhA0X6Z9itK8rKphUwgW-MrfFCXpKJcejgJnPFmO0yCOG61KTXCxRZqM8RNFgAoDjwTMxBwAAKaQAEpxBAy6OsTJc7t6p6eCM+aBNyoSEAqgjFVIz0LE6CxWz0PtOz0Dg9HBMquh8LowTa0H52u1iAAU8BwWAwG8nY9hi-N4oORR6cZ5nKjhiylsRgxwQsJtCOlIIdFHaQWz7AwJ2-FyCMGEMMbOsZGMp8DqeJOmGaZ9r2AGnc9wPI9T33bmDa1ubuVvAXnWFywxax0mpfRWWqpVUWSqUgYw2F5xWvOzXNKpzriQAIVZVABAgMsxE0UhYGi2KCwSoKY7jhOwCT2B+cW50e09RUSshJwQ0nGSdEbKx-1bUI7IsCmw+1iOl2j2P46oRPk+NoazdGi3M67nO84Lvki8CQd+hljsK+bByEDq7oKocbtI3BOurBbuc2-B7IaZ3BgIDAMe+9ZtOOf3Y-UFP8-87t7LJ4fcwyqbbGezq-orFlKqCLIs4XwVFgjSFOr-XePkLS61vvfHuuc+5bhNsNc240b4UBPmfeB48n4LRfstN+hVP7CxlMAv+MIBxyRlAVSck5xSQKuu3bIINW79UvuzQsHBVChz3rbcyhcHx1xKhwVEwwQgV0nFYGSv8EQDCFD4GuehVQ7xDhpXh0ClwsN4f3U2I0xpnm4WonyE97zLSEd0URAxxHOEkX2aQAxFRgLKqqVWDYGFgx0pwLRPkjImRMYJGoQJnBNiFIdCSIJwgySGE2SwZVwgr1DO48OB8vEXVYb46afFqz4MRkE7oVhQlYyBBE7augDC+DkgUiUZgqnlLqkk-eniOCRwEEcCA3iFgADFBACCCiQXi7C4qcKCq0jA7S0m8O6QIXp-T-EIxqNKFs35VQSlVDKQmpg5aohESqAcnQQT1NUbzZJTSWltI6ZUKZMykJIIHno4eozxk8J8lcvplI5mCwWeYRsEkWzNXbJ2YwfY-D42kKieJHY2zNgab5HWHdHkXPYK8-pGSTTIWyaYxGk5IjPmsHXfQeEoT-1UqLfowpKIdlWUBDWRjGEpOaQiiZLyelvNOKipCdp+E5JqNiowzY8U+FskSkiw5TAmGlCEQioR-j6BiFqDAFBT7wFKIixpkEMUBMQAAWnIdqxsIQQiE3BGClx0QjmGzVaxHgahBC3DEBq+ZiBUQyXCE2YWSjJxgOFtC81NsNHZGpNcOkcKEbw0+Y5OuJg1ZDCUSqQFuNgHfmDN2AOYCnBTl9aw-1nAeKBvNH5ZkbIOQOvDQgA1AQxy2BbKdWwuNmwmDqo4cwjRykwuzWxVc650AludDXMBPRmoGAlP8cwTg5aRs6GGGu+g0RgJUTS45lrkzsX0rBQyRbjLTR7VZex-g0QuU6HXIdE5Sm1GDKLHQSsgkShDMLNtBbsiQ2mo9Wa27lrANdWYP2-QPKdikf-ORAQpZKLBUKds96Q2cCfQ9PqRk31Cxlvjaw7YKIQk9iRYB-hKUFJogU4BEGmGcD1jzC1gsw2Ox7EYYWql5aqS6MUuWdgjAhjrpQ7GSiCP0s7tnbByd4M1GDK6hwlEpRbyBcS-0-LURlTqiEMwnGmlHwwXfLBGBe7KufpigTVFGzlKVJ6cMX65YQnkljaVUo-DdgUzdVVZGHaCNHP4Fy2KP32OCDJBx1gzCIkIuiexzdM3qIfak55loN08X44gX+nYAzlOA-oKio4ZKExMFLFUQJ4mnWs6xM5YzbPIspJFhAXR0QBkOkKLGdUOybIA4YAIwDDCehVCCfDgWoHBYZecplXSWUovC1u+2AjlpgiYyIicl6St4SXvI7oX7RzWCDFhbLxJkCsmIEwWAGm8Fab+LYIwLk66tnCEOsFyXdPyKGO7QIGaF2kfbQAUUGjgIrhgbABl-EdiqtFfT-HxgOd0TsQMdjlVEIAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.OPEN_APP,\n },\n _internalState: {\n error: null,\n appConfig: null,\n subset: null,\n contexts: [],\n clearSigningType: null,\n transactionType: null,\n signature: null,\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: \"Ethereum\",\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: SignTransactionDAStep.OPEN_APP,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetAppConfig: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.GET_APP_CONFIG,\n },\n }),\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"GetAppConfigResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n appConfig: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppConfigResultCheck: {\n always: [\n {\n target: \"Web3ChecksOptIn\",\n guard: and([\n \"noInternalError\",\n \"isWeb3ChecksSupported\",\n \"shouldOptIn\",\n ]),\n },\n {\n target: \"ParseTransaction\",\n guard: \"noInternalError\",\n },\n {\n target: \"Error\",\n },\n ],\n },\n Web3ChecksOptIn: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.Web3ChecksOptIn,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN,\n },\n }),\n invoke: {\n id: \"web3CheckOptIn\",\n src: \"web3CheckOptIn\",\n onDone: {\n target: \"Web3ChecksOptInResult\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n appConfig: {\n ...context._internalState.appConfig!,\n web3ChecksEnabled: event.output.data.enabled,\n },\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Web3ChecksOptInResult: {\n entry: assign(({ context }) => ({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT,\n result: context._internalState.appConfig!.web3ChecksEnabled,\n },\n })),\n // Using after transition to force a snapshot of the state after the entry action\n // This ensures the intermediateValue is captured before moving to ParseTransaction\n after: {\n 0: {\n target: \"ParseTransaction\",\n },\n },\n },\n ParseTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PARSE_TRANSACTION,\n },\n }),\n invoke: {\n id: \"parseTransaction\",\n src: \"parseTransaction\",\n input: ({ context }) => ({\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n }),\n onDone: {\n target: \"BuildContexts\",\n actions: assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n subset: event.output.subset,\n transactionType: event.output.type,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BUILD_CONTEXTS,\n },\n }),\n invoke: {\n id: \"buildContexts\",\n src: \"buildContexts\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n parser: context.input.parser,\n options: context.input.options,\n appConfig: context._internalState.appConfig!,\n derivationPath: context.input.derivationPath,\n subset: context._internalState.subset!,\n transaction: context.input.transaction,\n deviceModelId: internalApi.getDeviceModel().id,\n }),\n onDone: {\n target: \"ProvideContexts\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n contexts: event.output.clearSignContexts,\n clearSigningType: event.output.clearSigningType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PROVIDE_CONTEXTS,\n },\n }),\n exit: assign({\n // remove the first context of the first transaction details as it has been consumed\n _internalState: ({ context }) => {\n return {\n ...context._internalState,\n contexts: context._internalState.contexts.slice(1),\n };\n },\n }),\n invoke: {\n id: \"provideContexts\",\n src: \"provideContexts\",\n input: ({ context }) => ({\n contexts: context._internalState.contexts,\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: SignTransactionDAStep.SIGN_TRANSACTION,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n chainId: context._internalState.subset!.chainId,\n transactionType: context._internalState.transactionType!,\n clearSigningType: context._internalState.clearSigningType!,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"SignTransactionResultCheck\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n {\n guard: \"notRefusedByUser\",\n target: \"BlindSignTransactionFallback\",\n },\n { target: \"Error\" },\n ],\n },\n BlindSignTransactionFallback: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BLIND_SIGN_TRANSACTION_FALLBACK,\n },\n }),\n invoke: {\n id: \"blindSignTransactionFallback\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n chainId: context._internalState.subset!.chainId,\n transactionType: context._internalState.transactionType!,\n clearSigningType: ClearSigningType.BASIC,\n }),\n onDone: {\n target: \"BlindSignTransactionFallbackResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BlindSignTransactionFallbackResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppConfig = async () =>\n internalApi.sendCommand(new GetAppConfiguration());\n const web3CheckOptIn = async () =>\n internalApi.sendCommand(new Web3CheckOptInCommand());\n const parseTransaction = async (arg0: {\n input: ParseTransactionTaskArgs;\n }) =>\n Promise.resolve(\n new ParseTransactionTask({\n mapper: arg0.input.mapper,\n transaction: arg0.input.transaction,\n }).run(),\n );\n const buildContexts = async (arg0: { input: BuildFullContextsTaskArgs }) =>\n new BuildFullContextsTask(internalApi, arg0.input).run();\n\n const provideContexts = async (arg0: {\n input: ProvideContextsTaskArgs;\n }) => {\n return new ProvideContextsTask(internalApi, arg0.input).run();\n };\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n clearSigningType: ClearSigningType;\n };\n }) =>\n new SendSignTransactionTask(internalApi, {\n ...arg0.input,\n }).run();\n\n return {\n getAppConfig,\n web3CheckOptIn,\n parseTransaction,\n buildContexts,\n provideContexts,\n signTransaction,\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["DeviceModelId", "isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "and", "assign", "fromPromise", "setup", "SignTransactionDAStep", "ClearSigningType", "GetAppConfiguration", "Web3CheckOptInCommand", "BuildFullContextsTask", "ParseTransactionTask", "ProvideContextsTask", "SendSignTransactionTask", "ApplicationChecker", "SignTransactionDeviceAction", "internalApi", "getAppConfig", "web3CheckOptIn", "parseTransaction", "buildContexts", "signTransaction", "provideContexts", "context", "_", "input", "error", "event", "arg0"]
4
+ "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { and, assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type GetAddressCommandArgs,\n type GetAddressCommandResponse,\n} from \"@api/app-binder/GetAddressCommandTypes\";\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfiguration } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport {\n Web3CheckOptInCommand,\n type Web3CheckOptInCommandResponse,\n} from \"@internal/app-binder/command/Web3CheckOptInCommand\";\nimport {\n BuildFullContextsTask,\n type BuildFullContextsTaskArgs,\n type BuildFullContextsTaskResult,\n} from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport {\n ParseTransactionTask,\n type ParseTransactionTaskArgs,\n type ParseTransactionTaskResult,\n} from \"@internal/app-binder/task/ParseTransactionTask\";\nimport {\n ProvideTransactionContextsTask,\n type ProvideTransactionContextsTaskArgs,\n type ProvideTransactionContextsTaskResult,\n} from \"@internal/app-binder/task/ProvideTransactionContextsTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\n\nexport type MachineDependencies = {\n readonly getAddress: (arg0: {\n input: GetAddressCommandArgs;\n }) => Promise<CommandResult<GetAddressCommandResponse, EthErrorCodes>>;\n readonly getAppConfig: () => Promise<\n CommandResult<GetConfigCommandResponse, EthErrorCodes>\n >;\n readonly web3CheckOptIn: () => Promise<\n CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes>\n >;\n readonly parseTransaction: (arg0: {\n input: ParseTransactionTaskArgs;\n }) => Promise<ParseTransactionTaskResult>;\n readonly buildContexts: (arg0: {\n input: BuildFullContextsTaskArgs;\n }) => Promise<BuildFullContextsTaskResult>;\n readonly provideContexts: (arg0: {\n input: ProvideTransactionContextsTaskArgs;\n }) => Promise<ProvideTransactionContextsTaskResult>;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n clearSigningType: ClearSigningType;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getAddress,\n getAppConfig,\n web3CheckOptIn,\n parseTransaction,\n buildContexts,\n signTransaction,\n provideContexts,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getAddress: fromPromise(getAddress),\n getAppConfig: fromPromise(getAppConfig),\n web3CheckOptIn: fromPromise(web3CheckOptIn),\n parseTransaction: fromPromise(parseTransaction),\n buildContexts: fromPromise(buildContexts),\n provideContexts: fromPromise(provideContexts),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n notRefusedByUser: ({ context }) =>\n context._internalState.error !== null &&\n (!(\"errorCode\" in context._internalState.error) ||\n context._internalState.error.errorCode !== \"6985\"),\n isWeb3ChecksSupported: ({ context }) =>\n new ApplicationChecker(\n internalApi.getDeviceSessionState(),\n context._internalState.appConfig!,\n )\n .withMinVersionExclusive(\"1.15.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .excludeDeviceModel(DeviceModelId.NANO_SP)\n .excludeDeviceModel(DeviceModelId.NANO_X)\n .check(),\n shouldOptIn: ({ context }) =>\n !context._internalState.appConfig!.web3ChecksEnabled &&\n !context._internalState.appConfig!.web3ChecksOptIn,\n skipOpenApp: ({ context }) => !!context.input.options.skipOpenApp,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoBJDVcvADbJSeUmADEAbQAMAXUSgADhVh92CkAA9EARgDsAZg4AOACzGAnAFYDNgGxXpF6ToA0IAJ67TOgEwcDHTsLCz9pQN9bAF8o9zRMXAIiNipaBiZWcipuXn4hETEpHXkkEGVVLIwNbQR9IzNLG3tHZzdPXV87aQ5I5ztfSON+zpi49Gx8QhJKtMYWFM4AeUUwDGZFRVmMhfEIKjAOVAw6CgBrA4oVtY3hUTAAWRIACyOwGRKlFTUqasQ9RxMVjMdgcdj0xnBvncXlqkTsHAsQxcnVMvmM4TsoxA8QmSWm7C280qHAAwk8wMRTstVutNvQ5pl2AAlOAAVwEpCkcg05W+VVKNR0gW6IOsoWMfgMdlMdmhHRBHActisFnMMqCmNi2PGiSmC0JjOyZIpVKutINCxZsHZnMkxR5X0qv1qwsVwRVOglcJlcoQEo4ns9pmkQL00mCFgMWJxuuSM3p22JAHEwKRaSSqAAzdC7faHY5nA4wNMbDMYbNQd4OirqAW6CVWDhWPR2fR2Yy+Fu+UwGX1C4zGHoGcPSDuGCx6HTRnWTOMEhNE9gcFMlxRliviMA4HAUHAcRQCUSZ3cAWw4xfTWfQVdKvKdddqDabLbbY-6Pb7IQ4I+sPdR1n+KMtRjWd8VSBdDU4FdL3LdArRtY1KS5D4ykdWtQBqAYO2-MFwyBHRTEjNoYT8Lpv3CKwrG7Zt0VMPRpwSUD9QghZl1TGCK3gjlENOIoULvdCtEQLD-HDMMHAlQjAj7VEdADENg1MYNhQMUwGNxPV43SRdsmg0srygLjSB4qRfH4tCfgfEScPE-CpOIxBVO6HQiLbVUQR8dTYzAmgWOJAB1MAACMDB42BllIHhcwwA4jhOc4OAAd2C0LyUpCKeBvT4a0sjDhKGfxmxDXwMT0SIDF7dpYUono9B7YxbAI4xHGMLymK0hlWMCkKwoyjBN23Xd90PUhjxwM9kp6tLTUijAstQnL+TyhA0X6Z9itK8rKphUwgW-MrfFCXpKJcejgJnPFmO0yCOG61KTXCxRZqM8RNFgAoDjwTMxBwAAKaQAEpxBAy6OsTJc7t6p6eCM+aBNyoSEAqgjFVIz0LE6CxWz0PtOz0Dg9HBMquh8LowTa0H52u1iAAU8BwWAwG8nY9hi-N4oORR6cZ5nKjhiylsRgxwQsJtCOlIIdFHaQWz7AwJ2-FyCMGEMMbOsZGMp8DqeJOmGaZ9r2AGnc9wPI9T33bmDa1ubuVvAXnWFywxax0mpfRWWqpVUWSqUgYw2F5xWvOzXNKpzriQAIVZVABAgMsxE0UhYGi2KCwSoKY7jhOwCT2B+cW50e09RUSshJwQ0nGSdEbKx-1bUI7IsCmw+1iOl2j2P46oRPk+NoazdGi3M67nO84Lvki8CQd+hljsK+bByEDq7oKocbtI3BOurBbuc2-B7IaZ3BgIDAMe+9ZtOOf3Y-UFP8-87t7LJ4fcwyqbbGezq-orFlKqCLIs4XwVFgjSFOr-XePkLS61vvfHuuc+5bhNsNc240b4UBPmfeB48n4LRfstN+hVP7CxlMAv+MIBxyRlAVSck5xSQKuu3bIINW79UvuzQsHBVChz3rbcyhcHx1xKhwVEwwQgV0nFYGSv8EQDCFD4GuehVQ7xDhpXh0ClwsN4f3U2I0xpnm4WonyE97zLSEd0URAxxHOEkX2aQAxFRgLKqqVWDYGFgx0pwLRPkjImRMYJGoQJnBNiFIdCSIJwgySGE2SwZVwgr1DO48OB8vEXVYb46afFqz4MRkE7oVhQlYyBBE7augDC+DkgUiUZgqnlLqkk-eniOCRwEEcCA3iFgADFBACCCiQXi7C4qcKCq0jA7S0m8O6QIXp-T-EIxqNKFs35VQSlVDKQmpg5aohESqAcnQQT1NUbzZJTSWltI6ZUKZMykJIIHno4eozxk8J8lcvplI5mCwWeYRsEkWzNXbJ2YwfY-D42kKieJHY2zNgab5HWHdHkXPYK8-pGSTTIWyaYxGk5IjPmsHXfQeEoT-1UqLfowpKIdlWUBDWRjGEpOaQiiZLyelvNOKipCdp+E5JqNiowzY8U+FskSkiw5TAmGlCEQioR-j6BiFqDAFBT7wFKIixpkEMUBMQAAWnIdqxsIQQiE3BGClx0QjmGzVaxHgahBC3DEBq+ZiBUQyXCE2YWSjJxgOFtC81NsNHZGpNcOkcKEbw0+Y5OuJg1ZDCUSqQFuNgHfmDN2AOYCnBTl9aw-1nAeKBvNH5ZkbIOQOvDQgA1AQxy2BbKdWwuNmwmDqo4cwjRykwuzWxVc650AludDXMBPRmoGAlP8cwTg5aRs6GGGu+g0RgJUTS45lrkzsX0rBQyRbjLTR7VZex-g0QuU6HXIdE5Sm1GDKLHQSsgkShDMLNtBbsiQ2mo9Wa27lrANdWYP2-QPKdikf-ORAQpZKLBUKds96Q2cCfQ9PqRk31Cxlvjaw7YKIQk9iRYB-hKUFJogU4BEGmGcD1jzC1gsw2Ox7EYYWql5aqS6MUuWdgjAhjrpQ7GSiCP0s7tnbByd4M1GDK6hwlEpRbyBcS-0-LURlTqiEMwnGmlHwwXfLBGBe7KufpigTVFGzlKVJ6cMX65YQnkljaVUo-DdgUzdVVZGHaCNHP4Fy2KP32OCDJBx1gzCIkIuiexzdM3qIfak55loN08X44gX+nYAzlOA-oKio4ZKExMFLFUQJ4mnWs6xM5YzbPIspJFhAXR0QBkOkKLGdUOybIA4YAIwDDCehVCCfDgWoHBYZecplXSWUovC1u+2AjlpgiYyIicl6St4SXvI7oX7RzWCDFhbLxJkCsmIEwWAGm8Fab+LYIwLk66tnCEOsFyXdPyKGO7QIGaF2kfbQAUUGjgIrhgbABl-EdiqtFfT-HxgOd0TsQMdjlVEIAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.OPEN_APP,\n },\n _internalState: {\n error: null,\n appConfig: null,\n subset: null,\n contexts: [],\n clearSigningType: null,\n transactionType: null,\n signature: null,\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: \"Ethereum\",\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: SignTransactionDAStep.OPEN_APP,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetAppConfig: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.GET_APP_CONFIG,\n },\n }),\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"GetAppConfigResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n appConfig: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppConfigResultCheck: {\n always: [\n {\n target: \"Web3ChecksOptIn\",\n guard: and([\n \"noInternalError\",\n \"isWeb3ChecksSupported\",\n \"shouldOptIn\",\n ]),\n },\n {\n target: \"ParseTransaction\",\n guard: \"noInternalError\",\n },\n {\n target: \"Error\",\n },\n ],\n },\n Web3ChecksOptIn: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.Web3ChecksOptIn,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN,\n },\n }),\n invoke: {\n id: \"web3CheckOptIn\",\n src: \"web3CheckOptIn\",\n onDone: {\n target: \"Web3ChecksOptInResult\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n appConfig: {\n ...context._internalState.appConfig!,\n web3ChecksEnabled: event.output.data.enabled,\n },\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Web3ChecksOptInResult: {\n entry: assign(({ context }) => ({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT,\n result: context._internalState.appConfig!.web3ChecksEnabled,\n },\n })),\n // Using after transition to force a snapshot of the state after the entry action\n // This ensures the intermediateValue is captured before moving to ParseTransaction\n after: {\n 0: {\n target: \"ParseTransaction\",\n },\n },\n },\n ParseTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PARSE_TRANSACTION,\n },\n }),\n invoke: {\n id: \"parseTransaction\",\n src: \"parseTransaction\",\n input: ({ context }) => ({\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n }),\n onDone: {\n target: \"GetAddress\",\n actions: assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n subset: event.output.subset,\n transactionType: event.output.type,\n }),\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAddress: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.GET_ADDRESS,\n },\n }),\n invoke: {\n id: \"getAddress\",\n src: \"getAddress\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n checkOnDevice: false,\n returnChainCode: false,\n }),\n onDone: {\n target: \"BuildContexts\",\n actions: assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n const subset = {\n ...context._internalState.subset!,\n from: event.output.data.address,\n };\n return {\n ...context._internalState,\n subset,\n };\n }\n return {\n ...context._internalState,\n };\n },\n }),\n },\n onError: {\n target: \"Error\",\n },\n },\n },\n BuildContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BUILD_CONTEXTS,\n },\n }),\n invoke: {\n id: \"buildContexts\",\n src: \"buildContexts\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n parser: context.input.parser,\n options: context.input.options,\n appConfig: context._internalState.appConfig!,\n derivationPath: context.input.derivationPath,\n subset: context._internalState.subset!,\n transaction: context.input.transaction,\n deviceModelId: internalApi.getDeviceModel().id,\n }),\n onDone: {\n target: \"ProvideContexts\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n contexts: event.output.clearSignContexts,\n clearSigningType: event.output.clearSigningType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideContexts: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PROVIDE_CONTEXTS,\n },\n }),\n exit: assign({\n // remove the first context of the first transaction details as it has been consumed\n _internalState: ({ context }) => {\n return {\n ...context._internalState,\n contexts: context._internalState.contexts.slice(1),\n };\n },\n }),\n invoke: {\n id: \"provideContexts\",\n src: \"provideContexts\",\n input: ({ context }) => ({\n contexts: context._internalState.contexts,\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: SignTransactionDAStep.SIGN_TRANSACTION,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n chainId: context._internalState.subset!.chainId,\n transactionType: context._internalState.transactionType!,\n clearSigningType: context._internalState.clearSigningType!,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"SignTransactionResultCheck\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n {\n guard: \"notRefusedByUser\",\n target: \"BlindSignTransactionFallback\",\n },\n { target: \"Error\" },\n ],\n },\n BlindSignTransactionFallback: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BLIND_SIGN_TRANSACTION_FALLBACK,\n },\n }),\n invoke: {\n id: \"blindSignTransactionFallback\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction: context.input.transaction,\n chainId: context._internalState.subset!.chainId,\n transactionType: context._internalState.transactionType!,\n clearSigningType: ClearSigningType.BASIC,\n }),\n onDone: {\n target: \"BlindSignTransactionFallbackResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BlindSignTransactionFallbackResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAddress = async (arg0: { input: GetAddressCommandArgs }) =>\n internalApi.sendCommand(new GetAddressCommand(arg0.input));\n const getAppConfig = async () =>\n internalApi.sendCommand(new GetAppConfiguration());\n const web3CheckOptIn = async () =>\n internalApi.sendCommand(new Web3CheckOptInCommand());\n const parseTransaction = async (arg0: {\n input: ParseTransactionTaskArgs;\n }) =>\n Promise.resolve(\n new ParseTransactionTask({\n mapper: arg0.input.mapper,\n transaction: arg0.input.transaction,\n }).run(),\n );\n const buildContexts = async (arg0: { input: BuildFullContextsTaskArgs }) =>\n new BuildFullContextsTask(internalApi, arg0.input).run();\n\n const provideContexts = async (arg0: {\n input: ProvideTransactionContextsTaskArgs;\n }) => {\n return new ProvideTransactionContextsTask(internalApi, arg0.input).run();\n };\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n clearSigningType: ClearSigningType;\n };\n }) =>\n new SendSignTransactionTask(internalApi, {\n ...arg0.input,\n }).run();\n\n return {\n getAddress,\n getAppConfig,\n web3CheckOptIn,\n parseTransaction,\n buildContexts,\n provideContexts,\n signTransaction,\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "and", "assign", "fromPromise", "setup", "SignTransactionDAStep", "ClearSigningType", "GetAddressCommand", "GetAppConfiguration", "Web3CheckOptInCommand", "BuildFullContextsTask", "ParseTransactionTask", "ProvideTransactionContextsTask", "SendSignTransactionTask", "ApplicationChecker", "SignTransactionDeviceAction", "internalApi", "getAddress", "getAppConfig", "web3CheckOptIn", "parseTransaction", "buildContexts", "signTransaction", "provideContexts", "context", "_", "input", "error", "event", "subset", "arg0"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ClearSignContextType as M}from"@ledgerhq/context-module";import{CommandResultFactory as d,DeviceActionStatus as g,DeviceModelId as I,DeviceSessionStateType as B,DeviceStatus as D,hexaStringToBuffer as _,InvalidStatusWordError as T,UserInteractionRequired as N}from"@ledgerhq/device-management-kit";import{Transaction as H}from"ethers";import{Just as E}from"purify-ts";import{lastValueFrom as k}from"rxjs";import{SignTransactionDAStep as w}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{ClearSigningType as x}from"../../../../api/model/ClearSigningType";import{TransactionType as b}from"../../../../api/model/TransactionType";import{makeDeviceActionInternalApiMock as W}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as f}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{executeUntilStep as S}from"../../../app-binder/device-action/__test-utils__/testDeviceActionUntilStep";import{SignTransactionDeviceAction as v}from"./SignTransactionDeviceAction";vi.mock("@ledgerhq/device-management-kit",async a=>({...await a(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{let a;const i={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn(),getSolanaContext:vi.fn()},c={mapTransactionToSubset:vi.fn()},s={extractValue:vi.fn()},A=vi.fn(),V=vi.fn(),m=vi.fn(),h=vi.fn(),C=vi.fn(),n=vi.fn();function p(){return{getAppConfig:A,web3CheckOptIn:V,parseTransaction:m,buildContexts:h,provideContexts:C,signTransaction:n}}const r=W(),l={domain:"domain-name.eth"},o=_(H.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),O={chainId:1,data:"0x",selector:"0x",to:"0x",value:0n};function P(e,t,R){return{blindSigningEnabled:!1,web3ChecksEnabled:t,web3ChecksOptIn:R,version:e}}function u(e,t,R){r.getDeviceSessionState.mockReturnValueOnce({sessionStateType:B.ReadyWithoutSecureChannel,deviceStatus:D.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:e},deviceModelId:I.FLEX,isSecureConnectionAllowed:!1}),r.getDeviceModel.mockReturnValueOnce({id:I.FLEX}),A.mockResolvedValue(d({data:P(e,t,R)}))}const y=(e,t)=>{if(e[t]?.status!==g.Pending)throw new Error(`Step ${t} is not pending: ${JSON.stringify(e[t])}`);return e[t]};describe("Happy path",()=>{describe("should sign a transaction",()=>{const e=[{context:{type:M.TRANSACTION_INFO,payload:"payload-1"},subcontextCallbacks:[]},{context:{type:M.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},subcontextCallbacks:[]}];beforeEach(()=>{vi.resetAllMocks(),f(),u("1.15.0",!1,!1),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:e,clearSigningType:x.EIP7730}),C.mockResolvedValueOnce(E(void 0)),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}));const t=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(t,"extractDependencies").mockReturnValue(p()),a=t._execute(r).observable}),it("should open the app",async()=>{const{steps:t}=await S(0,a);expect(y(t,0).intermediateValue.step).toBe(w.OPEN_APP)}),it("should confirm open app",async()=>{const{steps:t}=await S(1,a);expect(y(t,1).intermediateValue.requiredUserInteraction).toBe(N.ConfirmOpenApp)}),it("should get app config",async()=>{const{steps:t}=await S(2,a);expect(y(t,2).intermediateValue.step).toBe(w.GET_APP_CONFIG)}),it("should prebuild context",async()=>{const{steps:t}=await S(3,a);expect(y(t,3).intermediateValue.step).toBe(w.PARSE_TRANSACTION),expect(m).toHaveBeenCalledTimes(1),expect(m).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{mapper:c,transaction:o}}))}),it("should build context",async()=>{const{steps:t}=await S(4,a);expect(y(t,4).intermediateValue.step).toBe(w.BUILD_CONTEXTS),expect(h).toHaveBeenCalledTimes(1),expect(h).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{contextModule:i,parser:s,mapper:c,options:l,subset:O,transaction:o,appConfig:P("1.15.0",!1,!1),derivationPath:"44'/60'/0'/0/0",deviceModelId:I.FLEX}}))}),it("should provide context",async()=>{const{steps:t}=await S(5,a);expect(y(t,5).intermediateValue.step).toBe(w.PROVIDE_CONTEXTS),expect(C).toHaveBeenCalledTimes(1),expect(C).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{contexts:e,serializedTransaction:o,derivationPath:"44'/60'/0'/0/0"}}))}),it("should sign transaction",async()=>{const{steps:t}=await S(6,a);expect(y(t,6).intermediateValue.step).toBe(w.SIGN_TRANSACTION),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:o,chainId:1,transactionType:b.EIP1559,clearSigningType:x.EIP7730}}))}),it("should return the signature",async()=>{const t=await k(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})})}),describe("should skip open app",()=>{beforeEach(()=>{vi.resetAllMocks(),f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:{...l,skipOpenApp:!0},contextModule:i,mapper:c,parser:s}});m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),C.mockResolvedValueOnce(E(void 0)),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(r).observable}),it("should skip open app and get app config directly",async()=>{const{steps:e}=await S(0,a);expect(y(e,0).intermediateValue.step).toBe(w.GET_APP_CONFIG)})}),describe("should opt in to web3 checks",()=>{beforeEach(()=>{vi.resetAllMocks(),f(),u("1.16.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),V.mockResolvedValueOnce(d({data:{enabled:!0}})),a=e._execute(r).observable}),it("should opt in to web3 checks if app config is supported and not already enabled",async()=>{const{steps:e}=await S(4,a);expect(y(e,3).intermediateValue.step).toBe(w.WEB3_CHECKS_OPT_IN),expect(V).toHaveBeenCalledTimes(1),expect(y(e,4).intermediateValue.step).toBe(w.WEB3_CHECKS_OPT_IN_RESULT),expect(y(e,4).intermediateValue.result).toBe(!0)})}),describe("should not opt in to web3 checks",()=>{beforeEach(()=>{vi.resetAllMocks(),f();const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(r).observable}),it("should not opt in to web3 checks if app config is not supported",async()=>{u("1.15.0",!1,!1),await S(3,a),expect(V).not.toHaveBeenCalled()}),it("should not opt in to web3 checks if already enabled",async()=>{u("1.16.0",!0,!1),await S(3,a),expect(V).not.toHaveBeenCalled()}),it("should not opt in to web3 checks if already opted out",async()=>{u("1.16.0",!1,!0),await S(3,a),expect(V).not.toHaveBeenCalled()})})}),describe("Error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("should return an error if the open app throw an error",async()=>{f(new Error("Open app failed")),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new Error("Open app failed")})}),it("should return an error if the get app config return an error",async()=>{f(),A.mockResolvedValueOnce(d({error:new T("Get app config failed")}));const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new T("Get app config failed")})}),it("should return an error if the get app config throw an error",async()=>{f(),A.mockRejectedValueOnce(new Error("Get app config failed"));const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new Error("Get app config failed")})}),it("should ignore the web3checks result if the command fails",async()=>{f(),u("1.16.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),V.mockResolvedValueOnce(d({error:new T("web3 check opt in failed")})),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})}),it("should return an error if the parse transaction throw an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockRejectedValueOnce(new Error("Parse transaction failed")),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new Error("Parse transaction failed")})}),it("should blind sign if the first sign transaction fails and the second sign transaction succeeds",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),C.mockResolvedValueOnce(E(void 0)),n.mockResolvedValueOnce(d({error:new T("Sign transaction failed")})),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})}),it("should blind sign if the first sign transaction throws an error and the second sign transaction succeeds",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.EIP7730}),C.mockResolvedValueOnce(E(void 0)),n.mockRejectedValueOnce(new Error("Sign transaction failed")),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}),expect(n).toHaveBeenCalledTimes(2),expect(n).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:o,chainId:1,transactionType:b.EIP1559,clearSigningType:x.EIP7730}})),expect(n).toHaveBeenNthCalledWith(2,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:o,chainId:1,transactionType:b.EIP1559,clearSigningType:x.BASIC}}))}),it("should return an error if the sign transaction return two times an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),C.mockResolvedValueOnce(E(void 0)),n.mockResolvedValueOnce(d({error:new T("Sign transaction failed")})),n.mockResolvedValueOnce(d({error:new T("Blind sign transaction failed")})),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new T("Blind sign transaction failed")})}),it("should return an error if the blind sign transaction fallback throws an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),C.mockResolvedValueOnce(E(void 0)),n.mockResolvedValueOnce(d({error:new T("Sign transaction failed")})),n.mockRejectedValueOnce(new Error("Blind sign transaction fallback failed")),a=e._execute(r).observable;const t=await k(a);expect(t).toEqual({status:g.Error,error:new Error("Blind sign transaction fallback failed")})}),it("should return an error without trying blind sign fallback when user refuses transaction (error code 6985)",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),C.mockResolvedValueOnce(E(void 0));const t=new T("User refused transaction");t.errorCode="6985",n.mockResolvedValueOnce(d({error:t})),a=e._execute(r).observable;const R=await k(a);expect(R).toEqual({status:g.Error,error:t}),expect(n).toHaveBeenCalledTimes(1)}),it("should try blind sign fallback when error is not user refusal (different error code)",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:o,options:l,contextModule:i,mapper:c,parser:s}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),m.mockResolvedValueOnce({subset:O,type:b.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.EIP7730}),C.mockResolvedValueOnce(E(void 0));const t=new T("Some other error");t.errorCode="6A80",n.mockResolvedValueOnce(d({error:t})),n.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(r).observable;const R=await k(a);expect(R).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}),expect(n).toHaveBeenCalledTimes(2),expect(n).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:o,chainId:1,transactionType:b.EIP1559,clearSigningType:x.EIP7730}})),expect(n).toHaveBeenNthCalledWith(2,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:o,chainId:1,transactionType:b.EIP1559,clearSigningType:x.BASIC}}))})})});
1
+ import{ClearSignContextType as D}from"@ledgerhq/context-module";import{CommandResultFactory as n,DeviceActionStatus as g,DeviceModelId as P,DeviceSessionStateType as _,DeviceStatus as N,hexaStringToBuffer as H,InvalidStatusWordError as T,UserInteractionRequired as q}from"@ledgerhq/device-management-kit";import{Transaction as W}from"ethers";import{Just as R}from"purify-ts";import{lastValueFrom as S}from"rxjs";import{SignTransactionDAStep as E}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{ClearSigningType as x}from"../../../../api/model/ClearSigningType";import{TransactionType as m}from"../../../../api/model/TransactionType";import{makeDeviceActionInternalApiMock as j}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as f}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{executeUntilStep as k}from"../../../app-binder/device-action/__test-utils__/testDeviceActionUntilStep";import{SignTransactionDeviceAction as v}from"./SignTransactionDeviceAction";vi.mock("@ledgerhq/device-management-kit",async a=>({...await a(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{let a;const c={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn()},r={mapTransactionToSubset:vi.fn()},d={extractValue:vi.fn()},M=vi.fn(),A=vi.fn(),b=vi.fn(),h=vi.fn(),O=vi.fn(),o=vi.fn(),w=vi.fn();function p(){return{getAppConfig:M,web3CheckOptIn:A,parseTransaction:b,buildContexts:h,provideContexts:O,signTransaction:o,getAddress:w}}const i=j(),l={domain:"domain-name.eth"},s=H(W.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),y={chainId:1,data:"0x",selector:"0x",to:"0x",value:0n},V="0x8ceb23fd6bc0add59e62ac25578270cff1b9f619";function B(e,t,I){return{blindSigningEnabled:!1,web3ChecksEnabled:t,web3ChecksOptIn:I,version:e}}function u(e,t,I){i.getDeviceSessionState.mockReturnValueOnce({sessionStateType:_.ReadyWithoutSecureChannel,deviceStatus:N.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:e},deviceModelId:P.FLEX,isSecureConnectionAllowed:!1}),i.getDeviceModel.mockReturnValueOnce({id:P.FLEX}),M.mockResolvedValue(n({data:B(e,t,I)}))}const C=(e,t)=>{if(e[t]?.status!==g.Pending)throw new Error(`Step ${t} is not pending: ${JSON.stringify(e[t])}`);return e[t]};describe("Happy path",()=>{describe("should sign a transaction",()=>{const e=[{context:{type:D.TRANSACTION_INFO,payload:"payload-1"},subcontextCallbacks:[]},{context:{type:D.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},subcontextCallbacks:[]}];beforeEach(()=>{vi.resetAllMocks(),f(),u("1.15.0",!1,!1),w.mockResolvedValueOnce(n({data:{address:V}})),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:e,clearSigningType:x.EIP7730}),O.mockResolvedValueOnce(R(void 0)),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}));const t=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(t,"extractDependencies").mockReturnValue(p()),a=t._execute(i).observable}),it("should open the app",async()=>{const{steps:t}=await k(0,a);expect(C(t,0).intermediateValue.step).toBe(E.OPEN_APP)}),it("should confirm open app",async()=>{const{steps:t}=await k(1,a);expect(C(t,1).intermediateValue.requiredUserInteraction).toBe(q.ConfirmOpenApp)}),it("should get app config",async()=>{const{steps:t}=await k(2,a);expect(C(t,2).intermediateValue.step).toBe(E.GET_APP_CONFIG)}),it("should prebuild context",async()=>{const{steps:t}=await k(3,a);expect(C(t,3).intermediateValue.step).toBe(E.PARSE_TRANSACTION),expect(b).toHaveBeenCalledTimes(1),expect(b).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{mapper:r,transaction:s}}))}),it("should get address",async()=>{const{steps:t}=await k(4,a);expect(C(t,4).intermediateValue.step).toBe(E.GET_ADDRESS)}),it("should build context",async()=>{const{steps:t}=await k(5,a);expect(C(t,5).intermediateValue.step).toBe(E.BUILD_CONTEXTS),expect(h).toHaveBeenCalledTimes(1),expect(h).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{contextModule:c,parser:d,mapper:r,options:l,subset:{...y,from:V},transaction:s,appConfig:B("1.15.0",!1,!1),derivationPath:"44'/60'/0'/0/0",deviceModelId:P.FLEX}}))}),it("should provide context",async()=>{const{steps:t}=await k(6,a);expect(C(t,6).intermediateValue.step).toBe(E.PROVIDE_CONTEXTS),expect(O).toHaveBeenCalledTimes(1),expect(O).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{contexts:e,serializedTransaction:s,derivationPath:"44'/60'/0'/0/0"}}))}),it("should sign transaction",async()=>{const{steps:t}=await k(7,a);expect(C(t,7).intermediateValue.step).toBe(E.SIGN_TRANSACTION),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:s,chainId:1,transactionType:m.EIP1559,clearSigningType:x.EIP7730}}))}),it("should return the signature",async()=>{const t=await S(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})})}),describe("should skip open app",()=>{beforeEach(()=>{vi.resetAllMocks(),f(),u("1.15.0",!1,!1),w.mockResolvedValueOnce(n({data:{address:V}}));const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:{...l,skipOpenApp:!0},contextModule:c,mapper:r,parser:d}});b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),O.mockResolvedValueOnce(R(void 0)),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(i).observable}),it("should skip open app and get app config directly",async()=>{const{steps:e}=await k(0,a);expect(C(e,0).intermediateValue.step).toBe(E.GET_APP_CONFIG)})}),describe("should opt in to web3 checks",()=>{beforeEach(()=>{vi.resetAllMocks(),f(),u("1.16.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),A.mockResolvedValueOnce(n({data:{enabled:!0}})),a=e._execute(i).observable}),it("should opt in to web3 checks if app config is supported and not already enabled",async()=>{const{steps:e}=await k(4,a);expect(C(e,3).intermediateValue.step).toBe(E.WEB3_CHECKS_OPT_IN),expect(A).toHaveBeenCalledTimes(1),expect(C(e,4).intermediateValue.step).toBe(E.WEB3_CHECKS_OPT_IN_RESULT),expect(C(e,4).intermediateValue.result).toBe(!0)})}),describe("should not opt in to web3 checks",()=>{beforeEach(()=>{vi.resetAllMocks(),f();const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(i).observable}),it("should not opt in to web3 checks if app config is not supported",async()=>{u("1.15.0",!1,!1),await k(3,a),expect(A).not.toHaveBeenCalled()}),it("should not opt in to web3 checks if already enabled",async()=>{u("1.16.0",!0,!1),await k(3,a),expect(A).not.toHaveBeenCalled()}),it("should not opt in to web3 checks if already opted out",async()=>{u("1.16.0",!1,!0),await k(3,a),expect(A).not.toHaveBeenCalled()})})}),describe("Error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("should return an error if the open app throw an error",async()=>{f(new Error("Open app failed")),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new Error("Open app failed")})}),it("should return an error if the get app config return an error",async()=>{f(),M.mockResolvedValueOnce(n({error:new T("Get app config failed")}));const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new T("Get app config failed")})}),it("should return an error if the get app config throw an error",async()=>{f(),M.mockRejectedValueOnce(new Error("Get app config failed"));const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new Error("Get app config failed")})}),it("should ignore the web3checks result if the command fails",async()=>{f(),u("1.16.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),A.mockResolvedValueOnce(n({error:new T("web3 check opt in failed")})),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})}),it("should return an error if the parse transaction throw an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockRejectedValueOnce(new Error("Parse transaction failed")),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new Error("Parse transaction failed")})}),it("should blind sign if the first sign transaction fails and the second sign transaction succeeds",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),O.mockResolvedValueOnce(R(void 0)),o.mockResolvedValueOnce(n({error:new T("Sign transaction failed")})),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})}),it("should blind sign if the first sign transaction throws an error and the second sign transaction succeeds",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.EIP7730}),O.mockResolvedValueOnce(R(void 0)),o.mockRejectedValueOnce(new Error("Sign transaction failed")),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}),expect(o).toHaveBeenCalledTimes(2),expect(o).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:s,chainId:1,transactionType:m.EIP1559,clearSigningType:x.EIP7730}})),expect(o).toHaveBeenNthCalledWith(2,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:s,chainId:1,transactionType:m.EIP1559,clearSigningType:x.BASIC}}))}),it("should return an error if the sign transaction return two times an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),O.mockResolvedValueOnce(R(void 0)),o.mockResolvedValueOnce(n({error:new T("Sign transaction failed")})),o.mockResolvedValueOnce(n({error:new T("Blind sign transaction failed")})),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new T("Blind sign transaction failed")})}),it("should return an error if the blind sign transaction fallback throws an error",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),O.mockResolvedValueOnce(R(void 0)),o.mockResolvedValueOnce(n({error:new T("Sign transaction failed")})),o.mockRejectedValueOnce(new Error("Blind sign transaction fallback failed")),a=e._execute(i).observable;const t=await S(a);expect(t).toEqual({status:g.Error,error:new Error("Blind sign transaction fallback failed")})}),it("should return an error without trying blind sign fallback when user refuses transaction (error code 6985)",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.BASIC}),O.mockResolvedValueOnce(R(void 0));const t=new T("User refused transaction");t.errorCode="6985",o.mockResolvedValueOnce(n({error:t})),a=e._execute(i).observable;const I=await S(a);expect(I).toEqual({status:g.Error,error:t}),expect(o).toHaveBeenCalledTimes(1)}),it("should try blind sign fallback when error is not user refusal (different error code)",async()=>{f(),u("1.15.0",!1,!1);const e=new v({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:l,contextModule:c,mapper:r,parser:d}});vi.spyOn(e,"extractDependencies").mockReturnValue(p()),b.mockResolvedValueOnce({subset:y,type:m.EIP1559}),w.mockResolvedValueOnce(n({data:{address:V}})),h.mockResolvedValueOnce({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:x.EIP7730}),O.mockResolvedValueOnce(R(void 0));const t=new T("Some other error");t.errorCode="6A80",o.mockResolvedValueOnce(n({error:t})),o.mockResolvedValueOnce(n({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),a=e._execute(i).observable;const I=await S(a);expect(I).toEqual({status:g.Completed,output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad789",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}}),expect(o).toHaveBeenCalledTimes(2),expect(o).toHaveBeenNthCalledWith(1,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:s,chainId:1,transactionType:m.EIP1559,clearSigningType:x.EIP7730}})),expect(o).toHaveBeenNthCalledWith(2,expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:s,chainId:1,transactionType:m.EIP1559,clearSigningType:x.BASIC}}))})})});
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.test.js.map