@ledgerhq/device-signer-kit-ethereum 0.0.0-signer-eth-20250122093657 → 0.0.0-sol-signer-20251203164116

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 (886) hide show
  1. package/README.md +139 -16
  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.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.js.map +3 -3
  6. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  7. package/lib/cjs/api/SignerEthBuilder.test.js.map +3 -3
  8. package/lib/cjs/api/app-binder/GetConfigCommandTypes.js +2 -0
  9. package/lib/cjs/api/app-binder/GetConfigCommandTypes.js.map +7 -0
  10. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
  11. package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
  12. package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js +1 -1
  13. package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js.map +1 -1
  14. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  15. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +3 -3
  16. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  17. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +3 -3
  18. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  19. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  20. package/lib/cjs/api/index.js +1 -1
  21. package/lib/cjs/api/index.js.map +3 -3
  22. package/lib/cjs/api/model/AddressOptions.js +1 -1
  23. package/lib/cjs/api/model/AddressOptions.js.map +1 -1
  24. package/lib/cjs/api/model/ClearSigningType.js +2 -0
  25. package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
  26. package/lib/cjs/api/model/MessageOptions.js +2 -0
  27. package/lib/cjs/api/model/MessageOptions.js.map +7 -0
  28. package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
  29. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  30. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  31. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  32. package/lib/cjs/api/model/TypedDataOptions.js +2 -0
  33. package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
  34. package/lib/cjs/index.js.map +1 -1
  35. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  36. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  37. package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
  38. package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
  39. package/lib/cjs/internal/address/di/addressModule.js +1 -1
  40. package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
  41. package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
  42. package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
  43. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
  44. package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  45. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  46. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  48. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  49. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  51. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js +1 -1
  52. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  54. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
  56. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
  57. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
  58. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
  59. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
  60. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  61. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  62. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  63. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  64. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  65. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  66. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  67. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  68. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  69. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  70. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  71. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  72. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  73. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  74. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  75. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  76. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  77. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  78. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  79. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  80. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  81. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  82. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  83. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  84. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  85. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  86. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  87. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  88. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  89. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  90. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  91. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  92. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  93. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  94. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  95. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  96. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  97. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  98. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  99. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
  100. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
  101. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
  102. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
  103. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  104. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  105. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  106. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  107. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  108. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  109. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  110. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  111. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  112. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  113. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  114. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  115. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  116. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  117. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  118. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  119. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
  120. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  121. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  122. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  123. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  124. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  125. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  126. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  127. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
  128. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
  129. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  130. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  131. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  132. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  133. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  134. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  135. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
  136. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  137. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  138. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  139. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
  140. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  141. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  142. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  143. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  144. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  145. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  146. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  147. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
  148. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
  149. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
  150. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
  151. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js +1 -1
  152. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js.map +2 -2
  153. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  154. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  155. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  156. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  157. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  158. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  159. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  160. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  161. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  162. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  163. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  164. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  165. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  166. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  167. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  168. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  169. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  170. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  171. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  172. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  173. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  174. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  175. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
  176. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  177. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  178. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  179. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  180. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  181. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  182. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  183. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  184. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  185. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  186. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  187. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  188. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  189. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  190. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  191. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  192. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  193. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  194. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  195. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  196. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  197. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  198. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  199. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
  200. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  201. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  202. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  203. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  204. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  205. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  206. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  207. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  208. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  209. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  210. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  211. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  212. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  213. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  214. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  215. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
  216. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
  217. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  218. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  219. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  220. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  221. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  222. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  223. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  224. package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  225. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
  226. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
  227. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  228. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  229. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  230. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  231. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  232. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  233. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  234. package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  235. package/lib/cjs/internal/di.js +1 -1
  236. package/lib/cjs/internal/di.js.map +3 -3
  237. package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
  238. package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
  239. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
  240. package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  241. package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
  242. package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
  243. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  244. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  245. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  246. package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  247. package/lib/cjs/internal/message/di/messageModule.js +1 -1
  248. package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
  249. package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
  250. package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
  251. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
  252. package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  253. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  254. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  255. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  256. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  257. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  258. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  259. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  260. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  261. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  262. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  263. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  264. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  265. package/lib/cjs/internal/shared/utils/ApplicationChecker.js +2 -0
  266. package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +7 -0
  267. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +2 -0
  268. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
  269. package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
  270. package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
  271. package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
  272. package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
  273. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  274. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  275. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  276. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  277. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  278. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
  279. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  280. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  281. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  282. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  283. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
  284. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js.map +2 -2
  285. package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
  286. package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
  287. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
  288. package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  289. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  290. package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  291. package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
  292. package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
  293. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
  294. package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  295. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  296. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  297. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  298. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  299. package/lib/cjs/package.json +44 -41
  300. package/lib/esm/api/SignerEthBuilder.js +1 -1
  301. package/lib/esm/api/SignerEthBuilder.js.map +3 -3
  302. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  303. package/lib/esm/api/SignerEthBuilder.test.js.map +3 -3
  304. package/lib/esm/api/app-binder/GetConfigCommandTypes.js +1 -0
  305. package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
  306. package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
  307. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
  308. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +4 -4
  309. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -0
  310. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +4 -4
  311. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  312. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  313. package/lib/esm/api/index.js +1 -1
  314. package/lib/esm/api/index.js.map +3 -3
  315. package/lib/esm/api/model/ClearSigningType.js +2 -0
  316. package/lib/esm/api/model/ClearSigningType.js.map +7 -0
  317. package/lib/esm/api/model/MessageOptions.js +1 -0
  318. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  319. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  320. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  321. package/lib/esm/api/model/TypedDataOptions.js +1 -0
  322. package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
  323. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  324. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  325. package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
  326. package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
  327. package/lib/esm/internal/address/di/addressModule.js +1 -1
  328. package/lib/esm/internal/address/di/addressModule.js.map +3 -3
  329. package/lib/esm/internal/address/di/addressModule.test.js +1 -1
  330. package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
  331. package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
  332. package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
  333. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  334. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  335. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  336. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  337. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  338. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  339. package/lib/esm/internal/app-binder/command/GetAddressCommand.js +1 -1
  340. package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  341. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  342. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  343. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
  344. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
  345. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
  346. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
  347. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
  348. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  349. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  350. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  351. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  352. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  353. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  354. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  355. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  356. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  357. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  358. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  359. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  360. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  361. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  362. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  363. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  364. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  365. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  366. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  367. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  368. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  369. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  370. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  371. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  372. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  373. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  374. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  375. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  376. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  377. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  378. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  379. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  380. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  381. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  382. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  383. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  384. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  385. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  386. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  387. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
  388. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
  389. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
  390. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
  391. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  392. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  393. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  394. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  395. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  396. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  397. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  398. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  399. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  400. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  401. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  402. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  403. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  404. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  405. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  406. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  407. package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
  408. package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  409. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  410. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  411. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
  412. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
  413. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
  414. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
  415. package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
  416. package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +2 -2
  417. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  418. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  419. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  420. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  421. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  422. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  423. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
  424. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  425. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  426. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  427. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
  428. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  429. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  430. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  431. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  432. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  433. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  434. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  435. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
  436. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
  437. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
  438. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
  439. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js +1 -1
  440. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js.map +2 -2
  441. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  442. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  443. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  444. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  445. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  446. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  447. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  448. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  449. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  450. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  451. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  452. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  453. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  454. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  455. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  456. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  457. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  458. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  459. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  460. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  461. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  462. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  463. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
  464. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  465. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  466. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  467. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  468. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  469. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  470. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  471. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  472. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  473. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  474. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  475. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  476. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  477. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  478. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  479. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  480. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  481. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  482. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  483. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  484. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  485. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  486. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  487. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
  488. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  489. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  490. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  491. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  492. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  493. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  494. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  495. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  496. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  497. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  498. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  499. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  500. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  501. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  502. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  503. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
  504. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
  505. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  506. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  507. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  508. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  509. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
  510. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
  511. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
  512. package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
  513. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
  514. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
  515. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  516. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  517. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  518. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  519. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
  520. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
  521. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
  522. package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
  523. package/lib/esm/internal/di.js +1 -1
  524. package/lib/esm/internal/di.js.map +3 -3
  525. package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
  526. package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
  527. package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
  528. package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
  529. package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
  530. package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
  531. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
  532. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
  533. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
  534. package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
  535. package/lib/esm/internal/message/di/messageModule.js +1 -1
  536. package/lib/esm/internal/message/di/messageModule.js.map +3 -3
  537. package/lib/esm/internal/message/di/messageModule.test.js +1 -1
  538. package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
  539. package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
  540. package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
  541. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  542. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  543. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  544. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  545. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  546. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  547. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  548. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  549. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  550. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  551. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  552. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  553. package/lib/esm/internal/shared/utils/ApplicationChecker.js +2 -0
  554. package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +7 -0
  555. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +2 -0
  556. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
  557. package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
  558. package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
  559. package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
  560. package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
  561. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  562. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  563. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  564. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  565. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
  566. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
  567. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  568. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  569. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  570. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  571. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
  572. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js.map +2 -2
  573. package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
  574. package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
  575. package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
  576. package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
  577. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
  578. package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
  579. package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
  580. package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
  581. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
  582. package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
  583. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
  584. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
  585. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  586. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  587. package/lib/esm/package.json +44 -41
  588. package/lib/types/api/SignerEth.d.ts +11 -4
  589. package/lib/types/api/SignerEth.d.ts.map +1 -1
  590. package/lib/types/api/SignerEthBuilder.d.ts +4 -2
  591. package/lib/types/api/SignerEthBuilder.d.ts.map +1 -1
  592. package/lib/types/api/app-binder/GetConfigCommandTypes.d.ts +7 -0
  593. package/lib/types/api/app-binder/GetConfigCommandTypes.d.ts.map +1 -0
  594. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
  595. package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
  596. package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts +1 -10
  597. package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts.map +1 -1
  598. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +26 -8
  599. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  600. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +26 -1
  601. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  602. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  603. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  604. package/lib/types/api/index.d.ts +5 -4
  605. package/lib/types/api/index.d.ts.map +1 -1
  606. package/lib/types/api/model/AddressOptions.d.ts +1 -0
  607. package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
  608. package/lib/types/api/model/ClearSigningType.d.ts +5 -0
  609. package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
  610. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  611. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  612. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  613. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  614. package/lib/types/api/model/TransactionOptions.d.ts +1 -0
  615. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  616. package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
  617. package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
  618. package/lib/types/internal/DefaultSignerEth.d.ts +10 -3
  619. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  620. package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
  621. package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
  622. package/lib/types/internal/app-binder/EthAppBinder.d.ts +19 -3
  623. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  624. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +1 -0
  625. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
  626. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +11 -0
  627. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -0
  628. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts +2 -0
  629. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts.map +1 -0
  630. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +1 -0
  631. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
  632. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +1 -0
  633. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
  634. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +1 -0
  635. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
  636. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +29 -0
  637. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
  638. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
  639. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
  640. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +21 -0
  641. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
  642. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
  643. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
  644. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +35 -0
  645. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  646. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  647. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  648. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +1 -0
  649. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
  650. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +1 -0
  651. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
  652. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +1 -0
  653. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
  654. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +1 -0
  655. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
  656. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +18 -0
  657. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -0
  658. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts +2 -0
  659. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts.map +1 -0
  660. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +37 -1
  661. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  662. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +1 -0
  663. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
  664. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +1 -0
  665. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
  666. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +1 -0
  667. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
  668. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +1 -0
  669. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
  670. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +30 -0
  671. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
  672. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
  673. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
  674. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +1 -0
  675. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
  676. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +1 -0
  677. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
  678. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +1 -0
  679. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
  680. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +1 -0
  681. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
  682. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +1 -0
  683. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
  684. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +16 -0
  685. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -0
  686. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts +2 -0
  687. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts.map +1 -0
  688. package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
  689. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +23 -35
  690. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  691. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +17 -2
  692. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  693. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  694. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  695. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  696. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  697. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
  698. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  699. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  700. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
  701. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  702. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
  703. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
  704. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  705. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +47 -0
  706. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
  707. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
  708. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
  709. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +17 -5
  710. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  711. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
  712. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
  713. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
  714. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
  715. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  716. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  717. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  718. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  719. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
  720. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
  721. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
  722. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
  723. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
  724. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
  725. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
  726. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
  727. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
  728. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
  729. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
  730. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
  731. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  732. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  733. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  734. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  735. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +19 -5
  736. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  737. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  738. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  739. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  740. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  741. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
  742. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  743. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
  744. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
  745. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
  746. package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
  747. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
  748. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
  749. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
  750. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
  751. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
  752. package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
  753. package/lib/types/internal/di.d.ts.map +1 -1
  754. package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
  755. package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
  756. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
  757. package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
  758. package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
  759. package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
  760. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
  761. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
  762. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
  763. package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
  764. package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
  765. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
  766. package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
  767. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  768. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  769. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  770. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  771. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  772. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  773. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  774. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  775. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  776. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  777. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts +13 -0
  778. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -0
  779. package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts +2 -0
  780. package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts.map +1 -0
  781. package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
  782. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
  783. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
  784. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
  785. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
  786. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
  787. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
  788. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
  789. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
  790. package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
  791. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
  792. package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
  793. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
  794. package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
  795. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  796. package/package.json +42 -39
  797. package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
  798. package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
  799. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
  800. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
  801. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
  802. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
  803. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  804. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  805. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  806. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  807. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  808. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  809. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  810. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  811. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  812. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  813. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  814. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  815. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  816. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  817. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  818. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  819. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  820. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  821. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  822. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  823. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
  824. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
  825. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  826. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  827. package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
  828. package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
  829. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
  830. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
  831. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
  832. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
  833. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  834. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  835. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  836. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  837. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  838. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  839. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  840. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  841. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  842. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  843. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  844. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  845. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  846. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  847. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  848. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  849. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  850. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  851. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  852. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  853. package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
  854. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  855. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  856. package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
  857. package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
  858. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts +0 -18
  859. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts.map +0 -1
  860. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts +0 -2
  861. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts.map +0 -1
  862. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -27
  863. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
  864. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
  865. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
  866. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -37
  867. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
  868. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
  869. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
  870. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -73
  871. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
  872. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
  873. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
  874. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -26
  875. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
  876. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
  877. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
  878. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
  879. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
  880. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
  881. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
  882. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
  883. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
  884. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
  885. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
  886. /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/GetConfigCommandTypes.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.ts"],
4
+ "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: 0 */\nimport {\n ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceActionState,\n DeviceActionStatus,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n InvalidStatusWordError,\n TransportDeviceModel,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { lastValueFrom, Observable } from \"rxjs\";\n\nimport {\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue,\n type VerifySafeAddressDAState,\n VerifySafeAddressDAStep,\n} from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { executeUntilStep } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep\";\n\nimport { VerifySafeAddressDeviceAction } from \"./VerifySafeAddress\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"VerifySafeAddressDeviceAction\", () => {\n let observable: Observable<\n DeviceActionState<\n void,\n VerifySafeAddressDAError,\n VerifySafeAddressDAIntermediateValue\n >\n >;\n const contextModuleMock = {\n getContexts: vi.fn(),\n };\n const buildSafeAddressContextsMock = vi.fn();\n const provideContextsMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n buildSafeAddressContexts: buildSafeAddressContextsMock,\n provideContexts: provideContextsMock,\n };\n }\n\n const apiMock = makeDeviceActionInternalApiMock();\n const TEST_SAFE_ADDRESS = \"0x1234567890123456789012345678901234567890\";\n const TEST_CHAIN_ID = 1;\n\n const validSafeContext = {\n type: ClearSignContextType.SAFE,\n payload: \"safe_payload\",\n };\n\n const validSignerContext = {\n type: ClearSignContextType.SIGNER,\n payload: \"signer_payload\",\n };\n\n function setupDeviceModel(deviceModelId: DeviceModelId) {\n apiMock.getDeviceModel.mockReturnValue({\n id: deviceModelId,\n } as unknown as TransportDeviceModel);\n apiMock.getDeviceSessionState.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId,\n isSecureConnectionAllowed: false,\n });\n }\n\n const getStep = (s: Array<VerifySafeAddressDAState>, index: number) => {\n if (s[index]?.status !== DeviceActionStatus.Pending) {\n throw new Error(\n `Step ${index} is not pending: ${JSON.stringify(s[index])}`,\n );\n }\n return s[index];\n };\n\n describe(\"Happy path\", () => {\n describe(\"should verify safe address\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n // Mock the dependencies to return some sample data\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should open the app\", async () => {\n const { steps } = await executeUntilStep(0, observable);\n expect(getStep(steps, 0).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.OPEN_APP,\n );\n });\n\n it(\"should confirm open app\", async () => {\n const { steps } = await executeUntilStep(1, observable);\n expect(\n getStep(steps, 1).intermediateValue.requiredUserInteraction,\n ).toBe(UserInteractionRequired.ConfirmOpenApp);\n });\n\n it(\"should build safe address contexts\", async () => {\n const { steps } = await executeUntilStep(2, observable);\n expect(getStep(steps, 2).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.BUILD_CONTEXTS,\n );\n expect(buildSafeAddressContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n contextModule: contextModuleMock as unknown as ContextModule,\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n deviceModelId: DeviceModelId.FLEX,\n },\n }),\n );\n });\n\n it(\"should provide contexts (verify safe address)\", async () => {\n const { steps } = await executeUntilStep(3, observable);\n expect(getStep(steps, 3).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.VERIFY_SAFE_ADDRESS,\n );\n expect(provideContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n contexts: [validSafeContext, validSignerContext],\n },\n }),\n );\n });\n\n it(\"should complete successfully\", async () => {\n const result = await lastValueFrom(observable);\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n });\n });\n\n describe(\"should skip open app\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should skip open app and build contexts directly\", async () => {\n const { steps } = await executeUntilStep(0, observable);\n\n expect(getStep(steps, 0).intermediateValue.step).toBe(\n VerifySafeAddressDAStep.BUILD_CONTEXTS,\n );\n });\n });\n\n describe(\"should work with different device models\", () => {\n it.each([\n [DeviceModelId.NANO_S, \"Nano S\"],\n [DeviceModelId.NANO_SP, \"Nano S Plus\"],\n [DeviceModelId.NANO_X, \"Nano X\"],\n [DeviceModelId.FLEX, \"Flex\"],\n [DeviceModelId.STAX, \"Stax\"],\n ])(\n \"should verify safe address on %s device\",\n async (deviceModelId, _deviceName) => {\n // GIVEN\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(deviceModelId);\n\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n expect(buildSafeAddressContextsMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: expect.objectContaining({\n deviceModelId,\n }),\n }),\n );\n },\n );\n });\n\n describe(\"should work with contexts with certificates\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n\n const safeContextWithCert = {\n type: ClearSignContextType.SAFE,\n payload: \"safe_payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n };\n\n const signerContextWithCert = {\n type: ClearSignContextType.SIGNER,\n payload: \"signer_payload\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n };\n\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [safeContextWithCert, signerContextWithCert],\n });\n provideContextsMock.mockResolvedValueOnce(Right(void 0));\n\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID, skipOpenApp: true },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n observable = deviceAction._execute(apiMock).observable;\n });\n\n it(\"should handle contexts with certificates\", async () => {\n const result = await lastValueFrom(observable);\n expect(result).toEqual({\n status: DeviceActionStatus.Completed,\n output: void 0,\n });\n });\n });\n });\n\n describe(\"Error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return an error if the open app throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock(new Error(\"Open app failed\"));\n setupDeviceModel(DeviceModelId.FLEX);\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Open app failed\"),\n });\n });\n\n it(\"should return an error if buildSafeAddressContexts throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockRejectedValueOnce(\n new Error(\"Failed to build contexts\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Failed to build contexts\"),\n });\n });\n\n it(\"should return an error if provideContexts returns Left (error)\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n const provideError = new InvalidStatusWordError(\n \"Failed to provide context\",\n );\n provideContextsMock.mockResolvedValueOnce(Left(provideError));\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: provideError,\n });\n });\n\n it(\"should return an error if provideContexts throws an error\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n provideContextsMock.mockRejectedValueOnce(\n new Error(\"Provide contexts failed\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Provide contexts failed\"),\n });\n });\n\n it(\"should return an error when buildSafeAddressContexts returns invalid data\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockRejectedValueOnce(\n new Error(\"Invalid safe address contexts\"),\n );\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: new Error(\"Invalid safe address contexts\"),\n });\n });\n\n it(\"should handle user rejection during provide contexts\", async () => {\n // GIVEN\n setupOpenAppDAMock();\n setupDeviceModel(DeviceModelId.FLEX);\n buildSafeAddressContextsMock.mockResolvedValueOnce({\n clearSignContexts: [validSafeContext, validSignerContext],\n });\n const userRejectionError = new InvalidStatusWordError(\"User rejected\");\n (\n userRejectionError as InvalidStatusWordError & { errorCode: string }\n ).errorCode = \"6985\";\n provideContextsMock.mockResolvedValueOnce(Left(userRejectionError));\n const deviceAction = new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: TEST_SAFE_ADDRESS,\n options: { chainId: TEST_CHAIN_ID },\n contextModule: contextModuleMock as unknown as ContextModule,\n },\n });\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n observable = deviceAction._execute(apiMock).observable;\n\n // WHEN\n const result = await lastValueFrom(observable);\n\n // THEN\n expect(result).toEqual({\n status: DeviceActionStatus.Error,\n error: userRejectionError,\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "DeviceActionStatus", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "InvalidStatusWordError", "UserInteractionRequired", "Left", "Right", "lastValueFrom", "VerifySafeAddressDAStep", "makeDeviceActionInternalApiMock", "setupOpenAppDAMock", "executeUntilStep", "VerifySafeAddressDeviceAction", "importOriginal", "observable", "contextModuleMock", "buildSafeAddressContextsMock", "provideContextsMock", "extractDependenciesMock", "apiMock", "TEST_SAFE_ADDRESS", "TEST_CHAIN_ID", "validSafeContext", "validSignerContext", "setupDeviceModel", "deviceModelId", "getStep", "s", "index", "deviceAction", "steps", "result", "_deviceName", "safeContextWithCert", "signerContextWithCert", "provideError", "userRejectionError"]
7
+ }
@@ -1,2 +1,2 @@
1
- const e=jest.fn(),t=jest.fn(),n=jest.fn(),s=jest.fn(),i=jest.fn();function o(){return{sendCommand:e,getDeviceSessionState:t,getDeviceSessionStateObservable:n,setDeviceSessionState:s,getManagerApiService:i}}export{o as makeDeviceActionInternalApiMock};
1
+ const e=vi.fn(),n=vi.fn(),t=vi.fn(),i=vi.fn(),c=vi.fn(),o=vi.fn(),s=vi.fn(),a=vi.fn(),r=vi.fn();function v(){return{sendApdu:e,sendCommand:n,getDeviceModel:t,getDeviceSessionState:i,getDeviceSessionStateObservable:c,setDeviceSessionState:o,getManagerApiService:s,getSecureChannelService:a,disableRefresher:r}}export{v as makeDeviceActionInternalApiMock};
2
2
  //# sourceMappingURL=makeInternalApi.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/makeInternalApi.ts"],
4
- "sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\n\nconst sendCommandMock = jest.fn();\nconst apiGetDeviceSessionStateMock = jest.fn();\nconst apiGetDeviceSessionStateObservableMock = jest.fn();\nconst setDeviceSessionStateMock = jest.fn();\nconst getManagerApiServiceMock = jest.fn();\n\nexport function makeDeviceActionInternalApiMock(): jest.Mocked<InternalApi> {\n return {\n sendCommand: sendCommandMock,\n getDeviceSessionState: apiGetDeviceSessionStateMock,\n getDeviceSessionStateObservable: apiGetDeviceSessionStateObservableMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n getManagerApiService: getManagerApiServiceMock,\n };\n}\n"],
5
- "mappings": "AAEA,MAAMA,EAAkB,KAAK,GAAG,EAC1BC,EAA+B,KAAK,GAAG,EACvCC,EAAyC,KAAK,GAAG,EACjDC,EAA4B,KAAK,GAAG,EACpCC,EAA2B,KAAK,GAAG,EAElC,SAASC,GAA4D,CAC1E,MAAO,CACL,YAAaL,EACb,sBAAuBC,EACvB,gCAAiCC,EACjC,sBAAuBC,EACvB,qBAAsBC,CACxB,CACF",
6
- "names": ["sendCommandMock", "apiGetDeviceSessionStateMock", "apiGetDeviceSessionStateObservableMock", "setDeviceSessionStateMock", "getManagerApiServiceMock", "makeDeviceActionInternalApiMock"]
4
+ "sourcesContent": ["import { type InternalApi } from \"@ledgerhq/device-management-kit\";\nimport { type Mocked } from \"vitest\";\n\nconst sendApduMock = vi.fn();\nconst sendCommandMock = vi.fn();\nconst apiGetDeviceModelMock = vi.fn();\nconst apiGetDeviceSessionStateMock = vi.fn();\nconst apiGetDeviceSessionStateObservableMock = vi.fn();\nconst setDeviceSessionStateMock = vi.fn();\nconst getManagerApiServiceMock = vi.fn();\nconst getSecureChannelServiceMock = vi.fn();\nconst disableRefresherMock = vi.fn();\n\nexport function makeDeviceActionInternalApiMock(): Mocked<InternalApi> {\n return {\n sendApdu: sendApduMock,\n sendCommand: sendCommandMock,\n getDeviceModel: apiGetDeviceModelMock,\n getDeviceSessionState: apiGetDeviceSessionStateMock,\n getDeviceSessionStateObservable: apiGetDeviceSessionStateObservableMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n getManagerApiService: getManagerApiServiceMock,\n getSecureChannelService: getSecureChannelServiceMock,\n disableRefresher: disableRefresherMock,\n };\n}\n"],
5
+ "mappings": "AAGA,MAAMA,EAAe,GAAG,GAAG,EACrBC,EAAkB,GAAG,GAAG,EACxBC,EAAwB,GAAG,GAAG,EAC9BC,EAA+B,GAAG,GAAG,EACrCC,EAAyC,GAAG,GAAG,EAC/CC,EAA4B,GAAG,GAAG,EAClCC,EAA2B,GAAG,GAAG,EACjCC,EAA8B,GAAG,GAAG,EACpCC,EAAuB,GAAG,GAAG,EAE5B,SAASC,GAAuD,CACrE,MAAO,CACL,SAAUT,EACV,YAAaC,EACb,eAAgBC,EAChB,sBAAuBC,EACvB,gCAAiCC,EACjC,sBAAuBC,EACvB,qBAAsBC,EACtB,wBAAyBC,EACzB,iBAAkBC,CACpB,CACF",
6
+ "names": ["sendApduMock", "sendCommandMock", "apiGetDeviceModelMock", "apiGetDeviceSessionStateMock", "apiGetDeviceSessionStateObservableMock", "setDeviceSessionStateMock", "getManagerApiServiceMock", "getSecureChannelServiceMock", "disableRefresherMock", "makeDeviceActionInternalApiMock"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{OpenAppDeviceAction as n,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{Left as i,Right as o}from"purify-ts";import{assign as p,createMachine as a}from"xstate";const s=e=>{n.mockImplementation(()=>({makeStateMachine:jest.fn().mockImplementation(()=>a({initial:"pending",states:{pending:{entry:p({intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}}),after:{0:"done"}},done:{type:"final"}},output:()=>e?i(e):o(void 0)}))}))};export{s as setupOpenAppDAMock};
1
+ import{OpenAppDeviceAction as n,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{Left as i,Right as o}from"purify-ts";import{assign as p,createMachine as r}from"xstate";const f=e=>{n.mockImplementation(()=>({makeStateMachine:vi.fn().mockImplementation(()=>r({initial:"pending",states:{pending:{entry:p({intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}}),after:{0:"done"}},done:{type:"final"}},output:()=>e?i(e):o(void 0)}))}))};export{f as setupOpenAppDAMock};
2
2
  //# sourceMappingURL=setupOpenAppDAMock.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.ts"],
4
- "sourcesContent": ["import {\n OpenAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, createMachine } from \"xstate\";\n\nexport const setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as jest.Mock).mockImplementation(() => ({\n makeStateMachine: jest.fn().mockImplementation(() =>\n createMachine({\n initial: \"pending\",\n states: {\n pending: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n }),\n after: {\n 0: \"done\",\n },\n },\n done: {\n type: \"final\",\n },\n },\n output: () => (error ? Left(error) : Right(undefined)),\n }),\n ),\n }));\n};\n"],
5
- "mappings": "AAAA,OACE,uBAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAC5B,OAAS,UAAAC,EAAQ,iBAAAC,MAAqB,SAE/B,MAAMC,EAAsBC,GAAoB,CACpDP,EAAkC,mBAAmB,KAAO,CAC3D,iBAAkB,KAAK,GAAG,EAAE,mBAAmB,IAC7CK,EAAc,CACZ,QAAS,UACT,OAAQ,CACN,QAAS,CACP,MAAOD,EAAO,CACZ,kBAAmB,CACjB,wBAAyBH,EAAwB,cACnD,CACF,CAAC,EACD,MAAO,CACL,EAAG,MACL,CACF,EACA,KAAM,CACJ,KAAM,OACR,CACF,EACA,OAAQ,IAAOM,EAAQL,EAAKK,CAAK,EAAIJ,EAAM,MAAS,CACtD,CAAC,CACH,CACF,EAAE,CACJ",
4
+ "sourcesContent": ["import {\n OpenAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { type Mock } from \"vitest\";\nimport { assign, createMachine } from \"xstate\";\n\nexport const setupOpenAppDAMock = (error?: unknown) => {\n (OpenAppDeviceAction as Mock).mockImplementation(() => ({\n makeStateMachine: vi.fn().mockImplementation(() =>\n createMachine({\n initial: \"pending\",\n states: {\n pending: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n }),\n after: {\n 0: \"done\",\n },\n },\n done: {\n type: \"final\",\n },\n },\n output: () => (error ? Left(error) : Right(undefined)),\n }),\n ),\n }));\n};\n"],
5
+ "mappings": "AAAA,OACE,uBAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAE5B,OAAS,UAAAC,EAAQ,iBAAAC,MAAqB,SAE/B,MAAMC,EAAsBC,GAAoB,CACpDP,EAA6B,mBAAmB,KAAO,CACtD,iBAAkB,GAAG,GAAG,EAAE,mBAAmB,IAC3CK,EAAc,CACZ,QAAS,UACT,OAAQ,CACN,QAAS,CACP,MAAOD,EAAO,CACZ,kBAAmB,CACjB,wBAAyBH,EAAwB,cACnD,CACF,CAAC,EACD,MAAO,CACL,EAAG,MACL,CACF,EACA,KAAM,CACJ,KAAM,OACR,CACF,EACA,OAAQ,IAAOM,EAAQL,EAAKK,CAAK,EAAIJ,EAAM,MAAS,CACtD,CAAC,CACH,CACF,EAAE,CACJ",
6
6
  "names": ["OpenAppDeviceAction", "UserInteractionRequired", "Left", "Right", "assign", "createMachine", "setupOpenAppDAMock", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- function o(c,a,n,e){const r=[],{observable:i,cancel:u}=c._execute(n);return i.subscribe({next:t=>{r.push(t)},error:t=>{e&&e(t)},complete:()=>{try{expect(r).toEqual(a),e&&e()}catch(t){e&&e(t)}}}),{observable:i,cancel:u}}export{o as testDeviceActionStates};
1
+ function p(n,i,c,{onDone:a,onError:t}){const r=[],{observable:o,cancel:u}=n._execute(c);return o.subscribe({next:e=>{r.push(e)},error:e=>{t(e)},complete:()=>{try{expect(r).toEqual(i),a()}catch(e){t(e)}}}),{observable:o,cancel:u}}export{p as testDeviceActionStates};
2
2
  //# sourceMappingURL=testDeviceActionStates.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.ts"],
4
- "sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param done The Jest done callback.\n */\nexport function testDeviceActionStates<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n expectedStates: Array<DeviceActionState<Output, Error, IntermediateValue>>,\n internalApi: InternalApi,\n done?: jest.DoneCallback,\n) {\n const observedStates: Array<\n DeviceActionState<Output, Error, IntermediateValue>\n > = [];\n\n const { observable, cancel } = deviceAction._execute(internalApi);\n observable.subscribe({\n next: (state) => {\n observedStates.push(state);\n },\n error: (error) => {\n if (done) done(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n if (done) done();\n } catch (e) {\n if (done) done(e);\n }\n },\n });\n return { observable, cancel };\n}\n"],
5
- "mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,EACAC,EACA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIN,EAAa,SAASE,CAAW,EAChE,OAAAG,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CACZL,GAAMA,EAAKK,CAAK,CACtB,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQH,CAAc,EACzCE,GAAMA,EAAK,CACjB,OAASM,EAAG,CACNN,GAAMA,EAAKM,CAAC,CAClB,CACF,CACF,CAAC,EACM,CAAE,WAAAJ,EAAY,OAAAC,CAAO,CAC9B",
6
- "names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "done", "observedStates", "observable", "cancel", "state", "error", "e"]
4
+ "sourcesContent": ["import {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n type DmkError,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\n/**\n * Test that the states emitted by a device action match the expected states.\n * @param deviceAction The device action to test.\n * @param expectedStates The expected states.\n * @param callbacks { onDone, onError } The callbacks to call when the test is done or an error occurs.\n */\nexport function testDeviceActionStates<\n Output,\n Input,\n Error extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>(\n deviceAction: DeviceAction<Output, Input, Error, IntermediateValue>,\n expectedStates: Array<DeviceActionState<Output, Error, IntermediateValue>>,\n internalApi: InternalApi,\n {\n onDone,\n onError,\n }: {\n onDone: () => void;\n onError: (error: Error) => void;\n },\n) {\n const observedStates: Array<\n DeviceActionState<Output, Error, IntermediateValue>\n > = [];\n\n const { observable, cancel } = deviceAction._execute(internalApi);\n observable.subscribe({\n next: (state) => {\n observedStates.push(state);\n },\n error: (error) => {\n onError(error);\n },\n complete: () => {\n try {\n expect(observedStates).toEqual(expectedStates);\n onDone();\n } catch (e) {\n onError(e as Error);\n }\n },\n });\n return { observable, cancel };\n}\n"],
5
+ "mappings": "AAcO,SAASA,EAMdC,EACAC,EACAC,EACA,CACE,OAAAC,EACA,QAAAC,CACF,EAIA,CACA,MAAMC,EAEF,CAAC,EAEC,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIP,EAAa,SAASE,CAAW,EAChE,OAAAI,EAAW,UAAU,CACnB,KAAOE,GAAU,CACfH,EAAe,KAAKG,CAAK,CAC3B,EACA,MAAQC,GAAU,CAChBL,EAAQK,CAAK,CACf,EACA,SAAU,IAAM,CACd,GAAI,CACF,OAAOJ,CAAc,EAAE,QAAQJ,CAAc,EAC7CE,EAAO,CACT,OAAS,EAAG,CACVC,EAAQ,CAAU,CACpB,CACF,CACF,CAAC,EACM,CAAE,WAAAE,EAAY,OAAAC,CAAO,CAC9B",
6
+ "names": ["testDeviceActionStates", "deviceAction", "expectedStates", "internalApi", "onDone", "onError", "observedStates", "observable", "cancel", "state", "error"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ const p=async(n,o)=>await new Promise((s,b)=>{const e=[];let t=0,i;i=o.subscribe({next:r=>{e.push(r),t++,t>n&&(i?.unsubscribe(),s({steps:e}))},error:r=>{b({steps:e,error:r})},complete:()=>{s({steps:e})}})});export{p as executeUntilStep};
2
+ //# sourceMappingURL=testDeviceActionUntilStep.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.ts"],
4
+ "sourcesContent": ["import { type Observable, type Subscription } from \"rxjs\";\n\nexport const executeUntilStep = async <T>(\n targetStep: number,\n o: Observable<T>,\n): Promise<{ steps: T[]; error?: Error }> =>\n await new Promise((resolve, reject) => {\n const steps: T[] = [];\n let index = 0;\n let subscription: Subscription | undefined = undefined;\n\n subscription = o.subscribe({\n next: (state) => {\n steps.push(state);\n index++;\n\n if (index > targetStep) {\n subscription?.unsubscribe();\n resolve({ steps });\n }\n },\n error: (error) => {\n reject({ steps, error: error as Error });\n },\n complete: () => {\n resolve({ steps });\n },\n });\n });\n"],
5
+ "mappings": "AAEO,MAAMA,EAAmB,MAC9BC,EACA,IAEA,MAAM,IAAI,QAAQ,CAACC,EAASC,IAAW,CACrC,MAAMC,EAAa,CAAC,EACpB,IAAIC,EAAQ,EACRC,EAEJA,EAAe,EAAE,UAAU,CACzB,KAAOC,GAAU,CACfH,EAAM,KAAKG,CAAK,EAChBF,IAEIA,EAAQJ,IACVK,GAAc,YAAY,EAC1BJ,EAAQ,CAAE,MAAAE,CAAM,CAAC,EAErB,EACA,MAAQI,GAAU,CAChBL,EAAO,CAAE,MAAAC,EAAO,MAAOI,CAAe,CAAC,CACzC,EACA,SAAU,IAAM,CACdN,EAAQ,CAAE,MAAAE,CAAM,CAAC,CACnB,CACF,CAAC,CACH,CAAC",
6
+ "names": ["executeUntilStep", "targetStep", "resolve", "reject", "steps", "index", "subscription", "state", "error"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as i}from"inversify";import{appBinderTypes as o}from"../../app-binder/di/appBinderTypes";import{EthAppBinder as p}from"../../app-binder/EthAppBinder";const B=()=>new i((n,t,r,d,e,a,m)=>{n(o.AppBinding).to(p)});export{B as appBindingModuleFactory};
1
+ import{ContainerModule as p}from"inversify";import{appBinderTypes as r}from"../../app-binder/di/appBinderTypes";import{EthAppBinder as i}from"../../app-binder/EthAppBinder";const d=()=>new p(({bind:o})=>{o(r.AppBinding).to(i)});export{d as appBindingModuleFactory};
2
2
  //# sourceMappingURL=appBinderModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/di/appBinderModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\nexport const appBindingModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(appBinderTypes.AppBinding).to(EthAppBinder);\n },\n );\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,gBAAAC,MAAoB,oCAEtB,MAAMC,EAA0B,IACrC,IAAIH,EACF,CACEI,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKH,EAAe,UAAU,EAAE,GAAGC,CAAY,CACjD,CACF",
6
- "names": ["ContainerModule", "appBinderTypes", "EthAppBinder", "appBindingModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { EthAppBinder } from \"@internal/app-binder/EthAppBinder\";\n\nexport const appBindingModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(appBinderTypes.AppBinding).to(EthAppBinder);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,kBAAAC,MAAsB,yCAC/B,OAAS,gBAAAC,MAAoB,oCAEtB,MAAMC,EAA0B,IACrC,IAAIH,EAAgB,CAAC,CAAE,KAAAI,CAAK,IAAM,CAChCA,EAAKH,EAAe,UAAU,EAAE,GAAGC,CAAY,CACjD,CAAC",
6
+ "names": ["ContainerModule", "appBinderTypes", "EthAppBinder", "appBindingModuleFactory", "bind"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{ClearSignContextType as e}from"@ledgerhq/context-module";import{DeviceModelId as l,isSuccessCommandResult as d}from"@ledgerhq/device-management-kit";import{ClearSigningType as S}from"../../../api/model/ClearSigningType";import{GetChallengeCommand as I}from"../../app-binder/command/GetChallengeCommand";import{ApplicationChecker as _}from"../../shared/utils/ApplicationChecker";const g=[e.TRANSACTION_INFO,e.TRANSACTION_FIELD_DESCRIPTION,e.ENUM,e.PROXY_INFO],E=[e.TRANSACTION_INFO,e.TRANSACTION_FIELD_DESCRIPTION,e.PROXY_INFO,e.TRANSACTION_CHECK,e.DYNAMIC_NETWORK,e.DYNAMIC_NETWORK_ICON,e.ENUM,e.TRUSTED_NAME,e.TOKEN,e.NFT,e.PLUGIN,e.EXTERNAL_PLUGIN];class f{constructor(t,n){this._api=t;this._args=n}async run(){const{contextModule:t,options:n,appConfig:a,transaction:s,subset:r}=this._args,C=s===void 0,T=!C&&a.web3ChecksEnabled,i=this._api.getDeviceSessionState();let N;if(i.deviceModelId!==l.NANO_S){const o=await this._api.sendCommand(new I);d(o)&&(N=o.data.challenge)}const c=(await t.getContexts({challenge:N,domain:n.domain,deviceModelId:i.deviceModelId,transaction:T?s:void 0,...r},C?g:E)).filter(o=>o.type!==e.ERROR);return this._supportsGenericParser(i,a)&&this._hasValidTransactionInfo(c)?this._getERC7730Contexts(c):this._getBasicContexts(c)}_getERC7730Contexts(t){const n=t.filter(s=>this._isContextNeededForERC7730ClearSigning(s)).sort((s,r)=>this._getContextPriority(s)-this._getContextPriority(r)),a=t.filter(s=>s.type===e.ENUM);return{clearSignContexts:n,clearSignContextsOptional:a,clearSigningType:S.EIP7730}}_getBasicContexts(t){return{clearSignContexts:t.filter(a=>this._isContextNeededForBasicClearSigning(a)).sort((a,s)=>this._getContextPriority(a)-this._getContextPriority(s)),clearSignContextsOptional:[],clearSigningType:S.BASIC}}_isContextNeededForBasicClearSigning({type:t}){switch(t){case e.TRANSACTION_CHECK:case e.PLUGIN:case e.EXTERNAL_PLUGIN:case e.DYNAMIC_NETWORK:case e.DYNAMIC_NETWORK_ICON:case e.TRUSTED_NAME:case e.TOKEN:case e.NFT:return!0;case e.TRANSACTION_INFO:case e.TRANSACTION_FIELD_DESCRIPTION:case e.ENUM:case e.PROXY_INFO:case e.SAFE:case e.SIGNER:return!1;default:{const n=t;throw new Error(`Unhandled context type ${String(n)}`)}}}_isContextNeededForERC7730ClearSigning({type:t}){switch(t){case e.TRANSACTION_INFO:case e.TRANSACTION_FIELD_DESCRIPTION:case e.PROXY_INFO:case e.DYNAMIC_NETWORK:case e.DYNAMIC_NETWORK_ICON:case e.TRANSACTION_CHECK:return!0;case e.ENUM:case e.TRUSTED_NAME:case e.TOKEN:case e.NFT:case e.PLUGIN:case e.EXTERNAL_PLUGIN:case e.SAFE:case e.SIGNER:return!1;default:{const n=t;throw new Error(`Unhandled context type ${String(n)}`)}}}_hasValidTransactionInfo(t){return t.find(n=>n.type===e.TRANSACTION_INFO)?.certificate!==void 0}_supportsGenericParser(t,n){return new _(t,n).withMinVersionExclusive("1.14.0").excludeDeviceModel(l.NANO_S).check()}_getContextPriority({type:t}){switch(t){case e.TRANSACTION_CHECK:return 10;case e.DYNAMIC_NETWORK:case e.DYNAMIC_NETWORK_ICON:case e.PROXY_INFO:return 30;case e.TRANSACTION_INFO:return 50;case e.PLUGIN:case e.EXTERNAL_PLUGIN:case e.TOKEN:case e.NFT:case e.TRUSTED_NAME:case e.TRANSACTION_FIELD_DESCRIPTION:case e.ENUM:return 70;case e.SAFE:case e.SIGNER:return 90;default:{const n=t;throw new Error(`Unhandled context type for priority: ${String(n)}`)}}}}export{E as BASE_CONTEXT_TYPES_FILTER,f as BuildBaseContexts,g as NESTED_CALLDATA_CONTEXT_TYPES_FILTER};
2
+ //# sourceMappingURL=BuildBaseContexts.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/BuildBaseContexts.ts"],
4
+ "sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type DeviceSessionState,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\n\nexport const NESTED_CALLDATA_CONTEXT_TYPES_FILTER: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.ENUM,\n ClearSignContextType.PROXY_INFO,\n];\n\nexport const BASE_CONTEXT_TYPES_FILTER: ClearSignContextType[] = [\n ClearSignContextType.TRANSACTION_INFO,\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ClearSignContextType.PROXY_INFO,\n ClearSignContextType.TRANSACTION_CHECK,\n ClearSignContextType.DYNAMIC_NETWORK,\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ClearSignContextType.ENUM,\n ClearSignContextType.TRUSTED_NAME,\n ClearSignContextType.TOKEN,\n ClearSignContextType.NFT,\n ClearSignContextType.PLUGIN,\n ClearSignContextType.EXTERNAL_PLUGIN,\n];\n\nexport type BuildBaseContextsResult = {\n readonly clearSignContexts: ClearSignContextSuccess[];\n readonly clearSignContextsOptional: ClearSignContextSuccess[];\n readonly clearSigningType: ClearSigningType;\n};\n\nexport type BuildBaseContextsArgs = {\n readonly contextModule: ContextModule;\n readonly options: TransactionOptions;\n readonly appConfig: GetConfigCommandResponse;\n readonly subset: TransactionSubset;\n readonly transaction?: Uint8Array;\n};\n\n/**\n * Builds the base contexts for a transaction\n * @param api - The internal API\n * @param args - The arguments for the build\n *\n * returns the base contexts for a transaction, without subcontexts or nested call data contexts\n */\nexport class BuildBaseContexts {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: BuildBaseContextsArgs,\n ) {}\n\n async run(): Promise<BuildBaseContextsResult> {\n const { contextModule, options, appConfig, transaction, subset } =\n this._args;\n const isNestedCallData = transaction === undefined;\n // As only transaction checks needs the transaction, we don't need to send it if it's not needed\n const needTransaction = !isNestedCallData && appConfig.web3ChecksEnabled;\n\n const deviceState = this._api.getDeviceSessionState();\n\n // Get challenge (not supported on Nano S)\n let challenge: string | undefined = undefined;\n if (deviceState.deviceModelId !== DeviceModelId.NANO_S) {\n const challengeRes = await this._api.sendCommand(\n new GetChallengeCommand(),\n );\n if (isSuccessCommandResult(challengeRes)) {\n challenge = challengeRes.data.challenge;\n }\n }\n\n // Get the clear sign contexts\n const clearSignContexts: ClearSignContext[] =\n await contextModule.getContexts(\n {\n challenge: challenge,\n domain: options.domain,\n deviceModelId: deviceState.deviceModelId,\n transaction: needTransaction ? transaction : undefined,\n ...subset,\n },\n isNestedCallData\n ? NESTED_CALLDATA_CONTEXT_TYPES_FILTER\n : BASE_CONTEXT_TYPES_FILTER,\n );\n\n // filter out the error contexts\n const contextsSuccess: ClearSignContextSuccess[] = clearSignContexts.filter(\n (context) => context.type !== ClearSignContextType.ERROR,\n );\n\n if (\n this._supportsGenericParser(deviceState, appConfig) &&\n this._hasValidTransactionInfo(contextsSuccess)\n ) {\n return this._getERC7730Contexts(contextsSuccess);\n } else {\n return this._getBasicContexts(contextsSuccess);\n }\n }\n\n private _getERC7730Contexts(\n contexts: ClearSignContextSuccess[],\n ): BuildBaseContextsResult {\n const clearSignContexts: ClearSignContextSuccess[] = contexts\n .filter((context) => this._isContextNeededForERC7730ClearSigning(context))\n .sort(\n (a, b) => this._getContextPriority(a) - this._getContextPriority(b),\n );\n\n const clearSignContextsOptional: ClearSignContextSuccess[] =\n contexts.filter((context) => context.type === ClearSignContextType.ENUM);\n\n return {\n clearSignContexts,\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.EIP7730,\n };\n }\n\n private _getBasicContexts(\n contexts: ClearSignContextSuccess[],\n ): BuildBaseContextsResult {\n const clearSignContexts: ClearSignContextSuccess[] = contexts\n .filter((context) => this._isContextNeededForBasicClearSigning(context))\n .sort(\n (a, b) => this._getContextPriority(a) - this._getContextPriority(b),\n );\n\n return {\n clearSignContexts,\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n };\n }\n\n private _isContextNeededForBasicClearSigning({\n type,\n }: ClearSignContextSuccess): boolean {\n switch (type) {\n case ClearSignContextType.TRANSACTION_CHECK:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n return true;\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.ENUM:\n case ClearSignContextType.PROXY_INFO:\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return false;\n default: {\n const uncoveredType: never = type;\n throw new Error(`Unhandled context type ${String(uncoveredType)}`);\n }\n }\n }\n\n private _isContextNeededForERC7730ClearSigning({\n type,\n }: ClearSignContextSuccess): boolean {\n switch (type) {\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.PROXY_INFO:\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.TRANSACTION_CHECK:\n return true;\n case ClearSignContextType.ENUM: // enum is needed but as optional\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return false;\n default: {\n const uncoveredType: never = type;\n throw new Error(`Unhandled context type ${String(uncoveredType)}`);\n }\n }\n }\n\n private _hasValidTransactionInfo(\n contexts: ClearSignContextSuccess[],\n ): boolean {\n return (\n contexts.find(\n (context) => context.type === ClearSignContextType.TRANSACTION_INFO,\n )?.certificate !== undefined\n );\n }\n\n private _supportsGenericParser(\n deviceState: DeviceSessionState,\n appConfig: GetConfigCommandResponse,\n ): boolean {\n return new ApplicationChecker(deviceState, appConfig)\n .withMinVersionExclusive(\"1.14.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check();\n }\n\n /**\n * Determines the processing priority of a clear sign context.\n * Lower numbers indicate higher priority (processed first).\n *\n * @param context The clear sign context to get priority for\n * @returns Priority number (lower = higher priority)\n */\n private _getContextPriority({ type }: ClearSignContextSuccess): number {\n switch (type) {\n case ClearSignContextType.TRANSACTION_CHECK:\n return 10;\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.PROXY_INFO:\n return 30;\n case ClearSignContextType.TRANSACTION_INFO:\n return 50;\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.ENUM:\n return 70;\n\n /* not used here */\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n return 90;\n\n default: {\n const uncoveredType: never = type;\n throw new Error(\n `Unhandled context type for priority: ${String(uncoveredType)}`,\n );\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "DeviceModelId", "isSuccessCommandResult", "ClearSigningType", "GetChallengeCommand", "ApplicationChecker", "NESTED_CALLDATA_CONTEXT_TYPES_FILTER", "BASE_CONTEXT_TYPES_FILTER", "BuildBaseContexts", "_api", "_args", "contextModule", "options", "appConfig", "transaction", "subset", "isNestedCallData", "needTransaction", "deviceState", "challenge", "challengeRes", "contextsSuccess", "context", "contexts", "clearSignContexts", "a", "b", "clearSignContextsOptional", "type", "uncoveredType"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ClearSignContextType as t}from"@ledgerhq/context-module";import{CommandResultFactory as x,DeviceModelId as l,DeviceSessionStateType as s,DeviceStatus as r,hexaStringToBuffer as E}from"@ledgerhq/device-management-kit";import{Transaction as N}from"ethers";import{ClearSigningType as p}from"../../../api/model/ClearSigningType";import{makeDeviceActionInternalApiMock as T}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{BASE_CONTEXT_TYPES_FILTER as S,BuildBaseContexts as d}from"./BuildBaseContexts";describe("BuildBaseContexts",()=>{const o={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getSolanaContext:vi.fn()},g={domain:"domain-name.eth"},y=E(N.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),c={keyUsageNumber:1,payload:new Uint8Array([1,2,3])};let i;const n=T();function C(e){return{blindSigningEnabled:!1,web3ChecksEnabled:e,web3ChecksOptIn:!1,version:"1.13.0"}}beforeEach(()=>{vi.resetAllMocks(),n.sendCommand.mockResolvedValue(x({data:{challenge:"challenge"}})),i={contextModule:o,subset:{chainId:1,to:void 0,data:"0x",selector:"0x"},transaction:y,options:g,appConfig:C(!1)}}),it("should build the transaction context without clear sign contexts",async()=>{const e=[],a=[];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const u=await new d(n,{...i,appConfig:C(!0)}).run();expect(u).toEqual({clearSignContexts:e,clearSignContextsOptional:a,clearSigningType:p.BASIC})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts",async()=>{const e=[{type:t.TRANSACTION_INFO,payload:"payload-1",certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:t.ENUM,payload:"payload-3",id:1,value:2,certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}],a={type:t.TRANSACTION_CHECK,payload:"transactionCheck"};o.getContexts.mockResolvedValueOnce([...e,a]),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const u=await new d(n,{...i,appConfig:C(!0)}).run();expect(u).toEqual({clearSignContexts:[a,e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:p.EIP7730})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts in the correct order",async()=>{const e=[{type:t.ENUM,payload:"payload-3",id:1,value:2,certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:t.TRANSACTION_INFO,payload:"payload-1",certificate:c}],a={type:t.TRANSACTION_CHECK,payload:"transactionCheck"};o.getContexts.mockResolvedValueOnce([...e,a]),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const u=await new d(n,{...i,appConfig:C(!0)}).run();expect(u).toEqual({clearSignContexts:[a,e[3],e[1],e[2]],clearSignContextsOptional:[e[0]],clearSigningType:p.EIP7730})}),it("should build the transaction context with clear sign contexts",async()=>{const e=[{type:t.TRANSACTION_CHECK,payload:"transactionCheck"},{type:t.TOKEN,payload:"payload-1"},{type:t.NFT,payload:"payload-2"}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:e,clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should build the transaction context with generic-parser context",async()=>{const e=[{type:t.TRANSACTION_INFO,payload:"payload-1",certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:t.ENUM,payload:"payload-3",id:1,value:2,certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:p.EIP7730})}),it("should build the transaction context with proxy delegate call context",async()=>{const e=[{type:t.TRANSACTION_INFO,payload:"payload-1",certificate:c},{type:t.PROXY_INFO,payload:"payload-2"}],a=[];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const u=await new d(n,i).run();expect(u).toEqual({clearSignContexts:[e[1],e[0]],clearSignContextsOptional:a,clearSigningType:p.EIP7730})}),it("should call the context module with the correct parameters if transaction check is enabled",async()=>{const e=[];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1}),await new d(n,{...i,appConfig:C(!0)}).run(),expect(o.getContexts).toHaveBeenCalledWith({deviceModelId:l.FLEX,challenge:"challenge",domain:"domain-name.eth",transaction:y,...i.subset},S)}),it("should call the context module with the correct parameters if transaction check is disabled",async()=>{const e=[];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1}),await new d(n,{...i,appConfig:C(!1)}).run(),expect(o.getContexts).toHaveBeenCalledWith({deviceModelId:l.FLEX,challenge:"challenge",domain:"domain-name.eth",...i.subset},S)}),it("should call the context module without challenge for Nano S",async()=>{const e=[];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.NANO_S,isSecureConnectionAllowed:!1}),await new d(n,i).run(),expect(o.getContexts).toHaveBeenCalledWith({deviceModelId:l.NANO_S,domain:"domain-name.eth",challenge:void 0,...i.subset},S)}),it("should exclude error contexts from the result",async()=>{const e=[{type:t.ERROR,error:new Error("error")},{type:t.TOKEN,payload:"payload-1"},{type:t.ERROR,error:new Error("error")},{type:t.NFT,payload:"payload-2"}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should exclude generic-parser contexts from the result on old apps",async()=>{const e=[{type:t.TRANSACTION_INFO,payload:"transaction_info",certificate:c},{type:t.TOKEN,payload:"payload-1"},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:t.NFT,payload:"payload-2"},{type:t.ENUM,payload:"enum",id:1,value:2,certificate:c}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should exclude generic-parser contexts from the result if no transaction_info was found",async()=>{const e=[{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:t.TOKEN,payload:"payload-1"},{type:t.ENUM,payload:"enum",id:1,value:2},{type:t.NFT,payload:"payload-2"}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should exclude legacy contexts from the result for generic-parser transactions",async()=>{const e=[{type:t.TOKEN,payload:"payload-1"},{type:t.TRANSACTION_INFO,payload:"payload-2",certificate:c},{type:t.EXTERNAL_PLUGIN,payload:"payload-3"},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:t.ENUM,payload:"payload-5",id:1,value:2,certificate:c}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[e[4]],clearSigningType:p.EIP7730})}),it("should exclude generic-parser contexts with a nano s device",async()=>{const e=[{type:t.TOKEN,payload:"payload-1"},{type:t.TRANSACTION_INFO,payload:"payload-2",certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:t.ENUM,payload:"payload-4",id:1,value:2,certificate:c}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:l.NANO_S,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should exclude generic-parser contexts with an old app version",async()=>{const e=[{type:t.TOKEN,payload:"payload-1"},{type:t.TRANSACTION_INFO,payload:"payload-2",certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:t.ENUM,payload:"payload-4",id:1,value:2,certificate:c}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should exclude generic-parser contexts with a non ready device",async()=>{const e=[{type:t.TOKEN,payload:"payload-1"},{type:t.TRANSACTION_INFO,payload:"payload-2",certificate:c},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:t.ENUM,payload:"payload-4",id:1,value:2,certificate:c}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.Connected,deviceStatus:r.NOT_CONNECTED,deviceModelId:l.FLEX});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:p.BASIC})}),it("should return no clear sign context if the transaction info certificate is missing",async()=>{const e=[{type:t.TRANSACTION_INFO,payload:"payload-1"},{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:t.ENUM,payload:"payload-3",id:1,value:2}];o.getContexts.mockResolvedValueOnce(e),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:r.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.17.0"},deviceModelId:l.FLEX,isSecureConnectionAllowed:!1});const a=await new d(n,i).run();expect(a).toEqual({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:p.BASIC})})});
2
+ //# sourceMappingURL=BuildBaseContexts.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/BuildBaseContexts.test.ts"],
4
+ "sourcesContent": ["import {\n type ClearSignContext,\n ClearSignContextType,\n type PkiCertificate,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\n\nimport type { GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n BASE_CONTEXT_TYPES_FILTER,\n BuildBaseContexts,\n type BuildBaseContextsArgs,\n} from \"./BuildBaseContexts\";\n\ndescribe(\"BuildBaseContexts\", () => {\n const contextModuleMock = {\n getFieldContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n const defaultOptions = {\n domain: \"domain-name.eth\",\n };\n const defaultTransaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n chainId: 1n,\n nonce: 0,\n data: \"0x\",\n }).unsignedSerialized,\n )!;\n const defaultCertificate: PkiCertificate = {\n keyUsageNumber: 1,\n payload: new Uint8Array([0x01, 0x02, 0x03]),\n };\n\n let defaultArgs: BuildBaseContextsArgs;\n const apiMock = makeDeviceActionInternalApiMock();\n\n function createAppConfig(\n web3ChecksEnabled: boolean,\n ): GetConfigCommandResponse {\n return {\n blindSigningEnabled: false,\n web3ChecksEnabled,\n web3ChecksOptIn: false,\n version: \"1.13.0\",\n };\n }\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"challenge\" } }),\n );\n\n defaultArgs = {\n contextModule: contextModuleMock,\n subset: { chainId: 1, to: undefined, data: \"0x\", selector: \"0x\" },\n transaction: defaultTransaction,\n options: defaultOptions,\n appConfig: createAppConfig(false),\n };\n });\n\n it(\"should build the transaction context without clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n const clearSignContextsOptional: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should build the transaction context with transaction check and generic-parser clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n const expectedTxCheck = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n };\n contextModuleMock.getContexts.mockResolvedValueOnce([\n ...clearSignContexts,\n expectedTxCheck,\n ]);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n expectedTxCheck,\n clearSignContexts[0],\n clearSignContexts[1],\n clearSignContexts[3],\n ],\n clearSignContextsOptional: [clearSignContexts[2]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with transaction check and generic-parser clear sign contexts in the correct order\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n ];\n const expectedTxCheck = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n };\n contextModuleMock.getContexts.mockResolvedValueOnce([\n ...clearSignContexts,\n expectedTxCheck,\n ]);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n expectedTxCheck, // transaction check\n clearSignContexts[3], // transaction info\n clearSignContexts[1], // transaction field description\n clearSignContexts[2], // transaction field description\n ],\n clearSignContextsOptional: [clearSignContexts[0]], // enum\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with clear sign contexts\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should build the transaction context with generic-parser context\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n clearSignContexts[0],\n clearSignContexts[1],\n clearSignContexts[3],\n ],\n clearSignContextsOptional: [clearSignContexts[2]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build the transaction context with proxy delegate call context\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"payload-2\",\n },\n ];\n const clearSignContextsOptional: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[0]],\n clearSignContextsOptional,\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should call the context module with the correct parameters if transaction check is enabled\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(true),\n }).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n domain: \"domain-name.eth\",\n transaction: defaultTransaction,\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should call the context module with the correct parameters if transaction check is disabled\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, {\n ...defaultArgs,\n appConfig: createAppConfig(false),\n }).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n domain: \"domain-name.eth\",\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should call the context module without challenge for Nano S\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith(\n {\n deviceModelId: DeviceModelId.NANO_S,\n domain: \"domain-name.eth\",\n challenge: undefined,\n ...defaultArgs.subset,\n },\n BASE_CONTEXT_TYPES_FILTER,\n );\n });\n\n it(\"should exclude error contexts from the result\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result on old apps\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"transaction_info\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result if no transaction_info was found\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"transaction_field\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"enum\",\n id: 1,\n value: 2,\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude legacy contexts from the result for generic-parser transactions\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-5\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n clearSignContextsOptional: [clearSignContexts[4]],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should exclude generic-parser contexts with a nano s device\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts with an old app version\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should exclude generic-parser contexts with a non ready device\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-2\",\n certificate: defaultCertificate,\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-4\",\n id: 1,\n value: 2,\n certificate: defaultCertificate,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.NOT_CONNECTED,\n deviceModelId: DeviceModelId.FLEX,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should return no clear sign context if the transaction info certificate is missing\", async () => {\n // GIVEN\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n {\n type: ClearSignContextType.ENUM,\n payload: \"payload-3\",\n id: 1,\n value: 2,\n },\n ];\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.17.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n // WHEN\n const result = await new BuildBaseContexts(apiMock, defaultArgs).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "CommandResultFactory", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "hexaStringToBuffer", "Transaction", "ClearSigningType", "makeDeviceActionInternalApiMock", "BASE_CONTEXT_TYPES_FILTER", "BuildBaseContexts", "contextModuleMock", "defaultOptions", "defaultTransaction", "defaultCertificate", "defaultArgs", "apiMock", "createAppConfig", "web3ChecksEnabled", "clearSignContexts", "clearSignContextsOptional", "result", "expectedTxCheck"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{DeviceSessionStateType as g}from"@ledgerhq/device-management-kit";import{TypedDataEncoder as y}from"ethers";import{Just as r,Nothing as i}from"purify-ts";import{gte as C}from"semver";import{TypedDataValueField as D}from"../../typed-data/model/Types";const S="0x0000000000000000000000000000000000000000";class V{constructor(t,a,m,o){this.api=t;this.contextModule=a;this.parser=m;this.data=o}async run(){const t=y.hashDomain(this.data.domain);if(!this.data.types[this.data.primaryType])throw new Error(`Primary type "${this.data.primaryType}" is not defined in the types.`);const a=this.data.types,{EIP712Domain:m,...o}=a,h=y.hashStruct(this.data.primaryType,o,this.data.message),s=this.parser.parse(this.data);if(s.isLeft())throw s.extract();const{types:l,domain:u,message:n}=s.unsafeCoerce();let p=i;const d=this.getClearSignVersion();if(d.isJust()){const v=this.data.domain.verifyingContract?.toLowerCase()||S,f=this.data.domain.chainId||0,T=n.filter(e=>e.value instanceof D).map(e=>({path:e.path,value:e.value.data})),c=await this.contextModule.getTypedDataFilters({verifyingContract:v,chainId:f,version:d.extract(),schema:this.data.types,fieldsValues:T});c.type==="success"&&(p=r(c))}return{types:l,domain:u,message:n,clearSignContext:p,domainHash:t,messageHash:h}}getClearSignVersion(){const t=this.api.getDeviceSessionState();return t.sessionStateType===g.Connected?i:t.currentApp.name!=="Ethereum"?i:C(t.currentApp.version,"1.12.0")?r("v2"):r("v1")}}export{V as BuildEIP712ContextTask,S as ZERO_ADDRESS};
1
+ import{ClearSignContextType as y}from"@ledgerhq/context-module";import{DeviceModelId as T,isSuccessCommandResult as I}from"@ledgerhq/device-management-kit";import{Just as C,Nothing as g}from"purify-ts";import{ClearSigningType as M}from"../../../api/model/ClearSigningType";import{GetChallengeCommand as D}from"../../app-binder/command/GetChallengeCommand";import{BuildFullContextsTask as P}from"../../app-binder/task/BuildFullContextsTask";import{ApplicationChecker as m}from"../../shared/utils/ApplicationChecker";import{TypedDataValueField as A}from"../../typed-data/model/Types";const k="0x0000000000000000000000000000000000000000";class W{constructor(e,t,n,i,a,o,u,d,c,l=(h,s)=>new P(h,s)){this.api=e;this.contextModule=t;this.parser=n;this.transactionParser=i;this.transactionMapper=a;this.data=o;this.derivationPath=u;this.appConfig=d;this.from=c;this.buildFullContextFactory=l}async run(){const e=this.parser.parse(this.data);if(e.isLeft())throw e.extract();const{types:t,domain:n,message:i}=e.unsafeCoerce(),a=this.api.getDeviceSessionState(),o=a.deviceModelId,u=await this.getTransactionChecks(o);let d=g,c={};const l=this.getClearSignVersion(a);if(l.isJust()){let s;const v=await this.api.sendCommand(new D);I(v)&&(s=v.data.challenge);const x=this.data.domain.verifyingContract?.toLowerCase()||k,f=this.data.domain.chainId||0,S=i.filter(r=>r.value instanceof A).map(r=>({path:r.path,value:r.value.data})),p=await this.contextModule.getTypedDataFilters({verifyingContract:x,chainId:f,version:l.extract(),schema:this.data.types,challenge:s,deviceModelId:a.deviceModelId,fieldsValues:S});p.type==="success"&&(d=C(p),c=await this.getCalldatasContexts(a,p))}return{derivationPath:this.derivationPath,transactionChecks:u,types:t,domain:n,message:i,clearSignContext:d,calldatasContexts:c,deviceModelId:a.deviceModelId}}async getTransactionChecks(e){if(!this.appConfig.web3ChecksEnabled)return;const t=await this.contextModule.getContexts({deviceModelId:e,data:this.data,from:this.from},[y.TRANSACTION_CHECK]);if(t.length>0&&t[0]?.type===y.TRANSACTION_CHECK)return t[0]}getClearSignVersion(e){return new m(e,this.appConfig).withMinVersionInclusive("1.10.0").excludeDeviceModel(T.NANO_S).check()?new m(e,this.appConfig).withMinVersionInclusive("1.12.0").check()?C("v2"):C("v1"):g}async getCalldatasContexts(e,t){const n={};for(const i in t.calldatas){const{subset:a}=t.calldatas[i],o=await this.buildFullContextFactory(this.api,{contextModule:this.contextModule,mapper:this.transactionMapper,parser:this.transactionParser,options:{},appConfig:this.appConfig,derivationPath:this.derivationPath,subset:a,deviceModelId:e.deviceModelId}).run();o.clearSigningType===M.EIP7730&&(n[i]=o.clearSignContexts)}return n}}export{W as BuildEIP712ContextTask,k as ZERO_ADDRESS};
2
2
  //# sourceMappingURL=BuildEIP712ContextTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/BuildEIP712ContextTask.ts"],
4
- "sourcesContent": ["import {\n type ContextModule,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceSessionStateType,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport { TypedDataEncoder, type TypedDataField } from \"ethers\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\nimport { gte } from \"semver\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { TypedDataValueField } from \"@internal/typed-data/model/Types\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport class BuildEIP712ContextTask {\n constructor(\n private api: InternalApi,\n private contextModule: ContextModule,\n private parser: TypedDataParserService,\n private data: TypedData,\n ) {}\n\n async run(): Promise<ProvideEIP712ContextTaskArgs> {\n // Legacy blind signing context\n const domainHash = TypedDataEncoder.hashDomain(this.data.domain);\n\n if (!this.data.types[this.data.primaryType]) {\n throw new Error(\n `Primary type \"${this.data.primaryType}\" is not defined in the types.`,\n );\n }\n\n const typesRecord: Record<string, TypedDataField[]> = this.data.types;\n const { EIP712Domain, ...rest } = typesRecord;\n const messageHash = TypedDataEncoder.hashStruct(\n this.data.primaryType,\n rest,\n this.data.message,\n );\n\n // Clear signing context\n // Parse the message types and values\n const parsed = this.parser.parse(this.data);\n if (parsed.isLeft()) {\n throw parsed.extract();\n }\n const { types, domain, message } = parsed.unsafeCoerce();\n\n // Get clear signing context, if any\n let clearSignContext: Maybe<TypedDataClearSignContextSuccess> = Nothing;\n const version = this.getClearSignVersion();\n if (version.isJust()) {\n const verifyingContract =\n this.data.domain.verifyingContract?.toLowerCase() || ZERO_ADDRESS;\n const chainId = this.data.domain.chainId || 0;\n const fieldsValues = message\n .filter((v) => v.value instanceof TypedDataValueField)\n .map((v) => ({\n path: v.path,\n value: (v.value as TypedDataValueField).data,\n }));\n const filters = await this.contextModule.getTypedDataFilters({\n verifyingContract,\n chainId,\n version: version.extract(),\n schema: this.data.types,\n fieldsValues,\n });\n if (filters.type === \"success\") {\n clearSignContext = Just(filters);\n }\n }\n\n // Return the args for provide context task\n const provideTaskArgs: ProvideEIP712ContextTaskArgs = {\n types,\n domain,\n message,\n clearSignContext,\n domainHash,\n messageHash,\n };\n return provideTaskArgs;\n }\n\n private getClearSignVersion(): Maybe<\"v1\" | \"v2\"> {\n const deviceState = this.api.getDeviceSessionState();\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return Nothing;\n }\n if (deviceState.currentApp.name !== \"Ethereum\") {\n return Nothing;\n }\n // EIP712 v2 (amount & datetime filters) supported since 1.11.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1110-1\n // But some issues were still present until 1.12.0 among which:\n // * V2 descriptor with missing token not supported by the app\n // * Empty arrays with filters not correctly handled\n // * Trusted name filters not yet released\n // Therefore it's safer and easier to use V1 filters before 1.12.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1120\n const shouldUseV2Filters = gte(deviceState.currentApp.version, \"1.12.0\");\n return shouldUseV2Filters ? Just(\"v2\") : Just(\"v1\");\n }\n}\n"],
5
- "mappings": "AAIA,OACE,0BAAAA,MAEK,kCACP,OAAS,oBAAAC,MAA6C,SACtD,OAAS,QAAAC,EAAkB,WAAAC,MAAe,YAC1C,OAAS,OAAAC,MAAW,SAIpB,OAAS,uBAAAC,MAA2B,mCAG7B,MAAMC,EAAe,6CAErB,MAAMC,CAAuB,CAClC,YACUC,EACAC,EACAC,EACAC,EACR,CAJQ,SAAAH,EACA,mBAAAC,EACA,YAAAC,EACA,UAAAC,CACP,CAEH,MAAM,KAA6C,CAEjD,MAAMC,EAAaX,EAAiB,WAAW,KAAK,KAAK,MAAM,EAE/D,GAAI,CAAC,KAAK,KAAK,MAAM,KAAK,KAAK,WAAW,EACxC,MAAM,IAAI,MACR,iBAAiB,KAAK,KAAK,WAAW,gCACxC,EAGF,MAAMY,EAAgD,KAAK,KAAK,MAC1D,CAAE,aAAAC,EAAc,GAAGC,CAAK,EAAIF,EAC5BG,EAAcf,EAAiB,WACnC,KAAK,KAAK,YACVc,EACA,KAAK,KAAK,OACZ,EAIME,EAAS,KAAK,OAAO,MAAM,KAAK,IAAI,EAC1C,GAAIA,EAAO,OAAO,EAChB,MAAMA,EAAO,QAAQ,EAEvB,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,CAAQ,EAAIH,EAAO,aAAa,EAGvD,IAAII,EAA4DlB,EAChE,MAAMmB,EAAU,KAAK,oBAAoB,EACzC,GAAIA,EAAQ,OAAO,EAAG,CACpB,MAAMC,EACJ,KAAK,KAAK,OAAO,mBAAmB,YAAY,GAAKjB,EACjDkB,EAAU,KAAK,KAAK,OAAO,SAAW,EACtCC,EAAeL,EAClB,OAAQM,GAAMA,EAAE,iBAAiBrB,CAAmB,EACpD,IAAKqB,IAAO,CACX,KAAMA,EAAE,KACR,MAAQA,EAAE,MAA8B,IAC1C,EAAE,EACEC,EAAU,MAAM,KAAK,cAAc,oBAAoB,CAC3D,kBAAAJ,EACA,QAAAC,EACA,QAASF,EAAQ,QAAQ,EACzB,OAAQ,KAAK,KAAK,MAClB,aAAAG,CACF,CAAC,EACGE,EAAQ,OAAS,YACnBN,EAAmBnB,EAAKyB,CAAO,EAEnC,CAWA,MARsD,CACpD,MAAAT,EACA,OAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,WAAAT,EACA,YAAAI,CACF,CAEF,CAEQ,qBAA0C,CAChD,MAAMY,EAAc,KAAK,IAAI,sBAAsB,EACnD,OAAIA,EAAY,mBAAqB5B,EAAuB,UACnDG,EAELyB,EAAY,WAAW,OAAS,WAC3BzB,EAUkBC,EAAIwB,EAAY,WAAW,QAAS,QAAQ,EAC3C1B,EAAK,IAAI,EAAIA,EAAK,IAAI,CACpD,CACF",
6
- "names": ["DeviceSessionStateType", "TypedDataEncoder", "Just", "Nothing", "gte", "TypedDataValueField", "ZERO_ADDRESS", "BuildEIP712ContextTask", "api", "contextModule", "parser", "data", "domainHash", "typesRecord", "EIP712Domain", "rest", "messageHash", "parsed", "types", "domain", "message", "clearSignContext", "version", "verifyingContract", "chainId", "fieldsValues", "v", "filters", "deviceState"]
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TypedDataCalldataIndex,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type DeviceSessionState,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport {\n BuildFullContextsTask,\n type BuildFullContextsTaskArgs,\n type ContextWithSubContexts,\n} from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport { type ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { TypedDataValueField } from \"@internal/typed-data/model/Types\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport class BuildEIP712ContextTask {\n constructor(\n private readonly api: InternalApi,\n private readonly contextModule: ContextModule,\n private readonly parser: TypedDataParserService,\n private readonly transactionParser: TransactionParserService,\n private readonly transactionMapper: TransactionMapperService,\n private readonly data: TypedData,\n private readonly derivationPath: string,\n private readonly appConfig: GetConfigCommandResponse,\n private readonly from: string,\n private readonly buildFullContextFactory = (\n api: InternalApi,\n args: BuildFullContextsTaskArgs,\n ) => new BuildFullContextsTask(api, args),\n ) {}\n\n async run(): Promise<ProvideEIP712ContextTaskArgs> {\n // Clear signing context\n // Parse the message types and values\n const parsed = this.parser.parse(this.data);\n if (parsed.isLeft()) {\n throw parsed.extract();\n }\n const { types, domain, message } = parsed.unsafeCoerce();\n\n const deviceState = this.api.getDeviceSessionState();\n const deviceModelId = deviceState.deviceModelId;\n const transactionChecks = await this.getTransactionChecks(deviceModelId);\n\n // Get clear signing context, if any\n let clearSignContext: Maybe<TypedDataClearSignContextSuccess> = Nothing;\n let calldatasContexts: Record<\n TypedDataCalldataIndex,\n ContextWithSubContexts[]\n > = {};\n const version = this.getClearSignVersion(deviceState);\n if (version.isJust()) {\n // Get challenge\n let challenge: string | undefined = undefined;\n const challengeRes = await this.api.sendCommand(\n new GetChallengeCommand(),\n );\n if (isSuccessCommandResult(challengeRes)) {\n challenge = challengeRes.data.challenge;\n }\n\n // Get filters\n const verifyingContract =\n this.data.domain.verifyingContract?.toLowerCase() || ZERO_ADDRESS;\n const chainId = this.data.domain.chainId || 0;\n const fieldsValues = message\n .filter((v) => v.value instanceof TypedDataValueField)\n .map((v) => ({\n path: v.path,\n value: (v.value as TypedDataValueField).data,\n }));\n const filters = await this.contextModule.getTypedDataFilters({\n verifyingContract,\n chainId,\n version: version.extract(),\n schema: this.data.types,\n challenge,\n deviceModelId: deviceState.deviceModelId,\n fieldsValues,\n });\n if (filters.type === \"success\") {\n clearSignContext = Just(filters);\n calldatasContexts = await this.getCalldatasContexts(\n deviceState,\n filters,\n );\n }\n }\n\n // Return the args for provide context task\n const provideTaskArgs: ProvideEIP712ContextTaskArgs = {\n derivationPath: this.derivationPath,\n transactionChecks,\n types,\n domain,\n message,\n clearSignContext,\n calldatasContexts,\n deviceModelId: deviceState.deviceModelId,\n };\n return provideTaskArgs;\n }\n\n private async getTransactionChecks(\n deviceModelId: DeviceModelId,\n ): Promise<ClearSignContextSuccess | undefined> {\n if (!this.appConfig.web3ChecksEnabled) {\n return undefined;\n }\n const contexts = await this.contextModule.getContexts(\n {\n deviceModelId,\n data: this.data,\n from: this.from,\n },\n [ClearSignContextType.TRANSACTION_CHECK],\n );\n if (\n contexts.length > 0 &&\n contexts[0]?.type === ClearSignContextType.TRANSACTION_CHECK\n ) {\n return contexts[0] as ClearSignContextSuccess;\n }\n return undefined;\n }\n\n private getClearSignVersion(\n deviceState: DeviceSessionState,\n ): Maybe<\"v1\" | \"v2\"> {\n if (\n !new ApplicationChecker(deviceState, this.appConfig)\n .withMinVersionInclusive(\"1.10.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check()\n ) {\n return Nothing;\n }\n\n // EIP712 v2 (amount & datetime filters) supported since 1.11.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1110-1\n // But some issues were still present until 1.12.0 among which:\n // * V2 descriptor with missing token not supported by the app\n // * Empty arrays with filters not correctly handled\n // * Trusted name filters not yet released\n // Therefore it's safer and easier to use V1 filters before 1.12.0:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#1120\n const shouldUseV2Filters = new ApplicationChecker(\n deviceState,\n this.appConfig,\n )\n .withMinVersionInclusive(\"1.12.0\")\n .check();\n return shouldUseV2Filters ? Just(\"v2\") : Just(\"v1\");\n }\n\n private async getCalldatasContexts(\n deviceState: DeviceSessionState,\n filters: TypedDataClearSignContextSuccess,\n ): Promise<Record<TypedDataCalldataIndex, ContextWithSubContexts[]>> {\n const calldatasContexts: Record<\n TypedDataCalldataIndex,\n ContextWithSubContexts[]\n > = {};\n for (const calldataIndex in filters.calldatas) {\n const { subset } = filters.calldatas[calldataIndex]!;\n const calldataContext = await this.buildFullContextFactory(this.api, {\n contextModule: this.contextModule,\n mapper: this.transactionMapper,\n parser: this.transactionParser,\n options: {},\n appConfig: this.appConfig,\n derivationPath: this.derivationPath,\n subset,\n deviceModelId: deviceState.deviceModelId,\n }).run();\n if (calldataContext.clearSigningType === ClearSigningType.EIP7730) {\n calldatasContexts[calldataIndex] = calldataContext.clearSignContexts;\n }\n }\n return calldatasContexts;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "DeviceModelId", "isSuccessCommandResult", "Just", "Nothing", "ClearSigningType", "GetChallengeCommand", "BuildFullContextsTask", "ApplicationChecker", "TypedDataValueField", "ZERO_ADDRESS", "BuildEIP712ContextTask", "api", "contextModule", "parser", "transactionParser", "transactionMapper", "data", "derivationPath", "appConfig", "from", "buildFullContextFactory", "args", "parsed", "types", "domain", "message", "deviceState", "deviceModelId", "transactionChecks", "clearSignContext", "calldatasContexts", "version", "challenge", "challengeRes", "verifyingContract", "chainId", "fieldsValues", "v", "filters", "contexts", "calldataIndex", "subset", "calldataContext"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as m,DeviceSessionStateType as f,DeviceStatus as y}from"@ledgerhq/device-management-kit";import{Just as l,Left as S,Nothing as b,Right as u}from"purify-ts";import{makeDeviceActionInternalApiMock as v}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as d,StructType as T,TypedDataValueField as x,TypedDataValueRoot as h}from"../../typed-data/model/Types";import{BuildEIP712ContextTask as p}from"./BuildEIP712ContextTask";describe("BuildEIP712ContextTask",()=>{const i=v(),t={getContext:jest.fn(),getContexts:jest.fn(),getTypedDataFilters:jest.fn()},e={parse:jest.fn()},s={domain:{name:"Permit2",chainId:137,verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3"},primaryType:"PermitSingle",message:{details:{token:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",amount:"69420000000000000000",expiration:"1718184249",nonce:"0"},spender:"0xec7be89e9d109e7e3fec59c222cf297125fefda2",sigDeadline:"1715594049"},types:{PermitSingle:[{name:"details",type:"PermitDetails"},{name:"spender",type:"address"},{name:"sigDeadline",type:"uint256"}],PermitDetails:[{name:"token",type:"address"},{name:"amount",type:"uint"},{name:"expiration",type:"uint"},{name:"nonce",type:"uint"}]}},r={PermitSingle:{details:new T("PermitDetails"),spender:new d("address","address",b),sigDeadline:new d("uint256","uint",l(32))},PermitDetails:{token:new d("address","address",b),amount:new d("uint160","uint",l(20)),expiration:new d("uint48","uint",l(6)),nonce:new d("uint48","uint",l(6))}},o=[{path:"",type:"",value:new h("EIP712Domain")},{path:"chainId",type:"uint256",value:new x(Uint8Array.from([137]))}],c=[{path:"",type:"",value:new h("PermitSingle")},{path:"details.amount",type:"uint160",value:new x(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new x(Uint8Array.from([19]))}],g={type:"success",messageInfo:{displayName:"Permit2",filtersCount:1,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},tokens:{},filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"}}};beforeEach(()=>{jest.resetAllMocks()}),it("Build context with clear signing context not supported by the device",async()=>{const a=new p(i,t,e,s);e.parse.mockReturnValueOnce(u({types:r,domain:o,message:c})),i.getDeviceSessionState.mockReturnValueOnce({sessionStateType:f.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Bitcoin",version:"1.0"},deviceModelId:m.FLEX});const n=await a.run();expect(n).toStrictEqual({types:r,domain:o,message:c,clearSignContext:b,domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"})}),it("Build context with no clear signing context",async()=>{const a=new p(i,t,e,s);e.parse.mockReturnValueOnce(u({types:r,domain:o,message:c})),i.getDeviceSessionState.mockReturnValueOnce({sessionStateType:f.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:m.FLEX}),t.getTypedDataFilters.mockResolvedValueOnce({type:"error",error:new Error("no filter")});const n=await a.run();expect(n).toStrictEqual({types:r,domain:o,message:c,clearSignContext:b,domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"})}),it("Build context with clear signing context",async()=>{const a=new p(i,t,e,s);e.parse.mockReturnValueOnce(u({types:r,domain:o,message:c})),i.getDeviceSessionState.mockReturnValueOnce({sessionStateType:f.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:m.FLEX}),t.getTypedDataFilters.mockResolvedValueOnce(g);const n=await a.run();expect(n).toStrictEqual({types:r,domain:o,message:c,clearSignContext:l(g),domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"}),expect(e.parse).toHaveBeenCalledWith(s),expect(t.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v2",schema:s.types,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Build context with clear signing context V1",async()=>{const a=new p(i,t,e,s);e.parse.mockReturnValueOnce(u({types:r,domain:o,message:c})),i.getDeviceSessionState.mockReturnValueOnce({sessionStateType:f.ReadyWithoutSecureChannel,deviceStatus:y.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:m.FLEX}),t.getTypedDataFilters.mockResolvedValueOnce(g),await a.run(),expect(t.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v1",schema:s.types,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Should throw error if no primary type",async()=>{const a=new p(i,t,e,{...s,primaryType:""});e.parse.mockReturnValueOnce(u({types:r,domain:o,message:c}));try{await a.run()}catch(n){expect(n).toBeInstanceOf(Error),expect(n.message).toBe('Primary type "" is not defined in the types.')}}),it("Should throw an error if parsing fails",async()=>{const a=new p(i,t,e,s);e.parse.mockReturnValueOnce(S(new Error("Parsing error")));try{await a.run()}catch(n){expect(n).toBeInstanceOf(Error),expect(n.message).toBe("Parsing error")}})});
1
+ import{ClearSignContextType as E}from"@ledgerhq/context-module";import{TypedDataCalldataParamPresence as A}from"@ledgerhq/context-module";import{CommandResultFactory as I,DeviceModelId as s,DeviceSessionStateType as x,DeviceStatus as v}from"@ledgerhq/device-management-kit";import{Just as C,Left as M,Nothing as b,Right as h}from"purify-ts";import{ClearSigningType as R}from"../../../api/model/ClearSigningType";import{makeDeviceActionInternalApiMock as F}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as T,StructType as P,TypedDataValueField as w,TypedDataValueRoot as D}from"../../typed-data/model/Types";import{BuildEIP712ContextTask as y}from"./BuildEIP712ContextTask";describe("BuildEIP712ContextTask",()=>{const n=F(),e={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn()},a={parse:vi.fn()},p={extractValue:vi.fn()},m={mapTransactionToSubset:vi.fn()},l=vi.fn();function f(t){return{blindSigningEnabled:!1,web3ChecksEnabled:t,web3ChecksOptIn:!1,version:"1.13.0"}}const d={domain:{name:"Permit2",chainId:137,verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3"},primaryType:"PermitSingle",message:{details:{token:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",amount:"69420000000000000000",expiration:"1718184249",nonce:"0"},spender:"0xec7be89e9d109e7e3fec59c222cf297125fefda2",sigDeadline:"1715594049"},types:{PermitSingle:[{name:"details",type:"PermitDetails"},{name:"spender",type:"address"},{name:"sigDeadline",type:"uint256"}],PermitDetails:[{name:"token",type:"address"},{name:"amount",type:"uint"},{name:"expiration",type:"uint"},{name:"nonce",type:"uint"}]}},o={PermitSingle:{details:new P("PermitDetails"),spender:new T("address","address",b),sigDeadline:new T("uint256","uint",C(32))},PermitDetails:{token:new T("address","address",b),amount:new T("uint160","uint",C(20)),expiration:new T("uint48","uint",C(6)),nonce:new T("uint48","uint",C(6))}},c=[{path:"",type:"",value:new D("EIP712Domain")},{path:"chainId",type:"uint256",value:new w(Uint8Array.from([137]))}],r=[{path:"",type:"",value:new D("PermitSingle")},{path:"details.amount",type:"uint160",value:new w(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new w(Uint8Array.from([19]))}],g={type:"success",messageInfo:{displayName:"Permit2",filtersCount:1,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"}}},k="0x1234",u="0x8ceb23fd6bc0add59e62ac25578270cff1b9f619";beforeEach(()=>{vi.resetAllMocks(),n.sendCommand.mockResolvedValue(I({data:{challenge:k}})),l.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:R.BASIC})})}),it("Build context with clear signing context not supported by the device",async()=>{const t=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l);a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:s.NANO_S,isSecureConnectionAllowed:!1});const i=await t.run();expect(i).toStrictEqual({deviceModelId:s.NANO_S,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:o,domain:c,message:r,clearSignContext:b,calldatasContexts:{}})}),it("Build context with no clear signing context",async()=>{const t=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l);a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:s.FLEX,isSecureConnectionAllowed:!1}),e.getTypedDataFilters.mockResolvedValueOnce({type:E.ERROR,error:new Error("no filter")});const i=await t.run();expect(i).toStrictEqual({deviceModelId:s.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:o,domain:c,message:r,clearSignContext:b,calldatasContexts:{}})}),it("Build context with clear signing context",async()=>{const t={type:E.TRANSACTION_CHECK,payload:"web3Check"},i=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l);e.getContexts.mockResolvedValueOnce([t]),a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:s.FLEX,isSecureConnectionAllowed:!1}),e.getTypedDataFilters.mockResolvedValueOnce(g);const S=await i.run();expect(S).toStrictEqual({deviceModelId:s.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:o,domain:c,message:r,clearSignContext:C(g),calldatasContexts:{}}),expect(a.parse).toHaveBeenCalledWith(d),expect(e.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v2",schema:d.types,challenge:k,deviceModelId:s.FLEX,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Build context with clear signing context and transaction checks",async()=>{const t={type:E.TRANSACTION_CHECK,payload:"transactionCheck"},i=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!0),u,l);e.getContexts.mockResolvedValueOnce([t]),a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:s.FLEX,isSecureConnectionAllowed:!1}),e.getTypedDataFilters.mockResolvedValueOnce(g);const S=await i.run();expect(S).toStrictEqual({deviceModelId:s.FLEX,derivationPath:"44'/60'/0'/0/0",types:o,domain:c,message:r,clearSignContext:C(g),calldatasContexts:{},transactionChecks:t})}),it("Build context with clear signing context V1",async()=>{const t=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l);a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:s.FLEX,isSecureConnectionAllowed:!1}),e.getTypedDataFilters.mockResolvedValueOnce(g),await t.run(),expect(e.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v1",schema:d.types,challenge:k,deviceModelId:s.FLEX,fieldsValues:[{path:"details.amount",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([19])}]})}),it("Build context with clear signing context and calldatas",async()=>{const t=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l),i={chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:u,selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n},S={...g,calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:A.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:A.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:i}}};a.parse.mockReturnValueOnce(h({types:o,domain:c,message:r})),n.getDeviceSessionState.mockReturnValueOnce({sessionStateType:x.ReadyWithoutSecureChannel,deviceStatus:v.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:s.FLEX,isSecureConnectionAllowed:!1}),e.getTypedDataFilters.mockResolvedValueOnce(S),l.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:R.EIP7730})});const O=await t.run();expect(O).toStrictEqual({deviceModelId:s.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:o,domain:c,message:r,clearSignContext:C(S),calldatasContexts:{0:[]}})}),it("Should throw an error if parsing fails",async()=>{const t=new y(n,e,a,p,m,d,"44'/60'/0'/0/0",f(!1),u,l);a.parse.mockReturnValueOnce(M(new Error("Parsing error")));try{await t.run()}catch(i){expect(i).toBeInstanceOf(Error),expect(i.message).toBe("Parsing error")}})});
2
2
  //# sourceMappingURL=BuildEIP712ContextTask.test.js.map