@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,2 @@
1
+ "use strict";var n=require("@ledgerhq/context-module"),t=require("@ledgerhq/device-management-kit"),C=require("ethers"),r=require("../../../api/model/ClearSigningType"),S=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),i=require("./BuildBaseContexts");describe("BuildBaseContexts",()=>{const l={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getSolanaContext:vi.fn()},y={domain:"domain-name.eth"},u=(0,t.hexaStringToBuffer)(C.Transaction.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized),s={keyUsageNumber:1,payload:new Uint8Array([1,2,3])};let c;const a=(0,S.makeDeviceActionInternalApiMock)();function p(e){return{blindSigningEnabled:!1,web3ChecksEnabled:e,web3ChecksOptIn:!1,version:"1.13.0"}}beforeEach(()=>{vi.resetAllMocks(),a.sendCommand.mockResolvedValue((0,t.CommandResultFactory)({data:{challenge:"challenge"}})),c={contextModule:l,subset:{chainId:1,to:void 0,data:"0x",selector:"0x"},transaction:u,options:y,appConfig:p(!1)}}),it("should build the transaction context without clear sign contexts",async()=>{const e=[],o=[];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new i.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:e,clearSignContextsOptional:o,clearSigningType:r.ClearSigningType.BASIC})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}],o={type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"};l.getContexts.mockResolvedValueOnce([...e,o]),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new i.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:[o,e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with transaction check and generic-parser clear sign contexts in the correct order",async()=>{const e=[{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s}],o={type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"};l.getContexts.mockResolvedValueOnce([...e,o]),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new i.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run();expect(d).toEqual({clearSignContexts:[o,e[3],e[1],e[2]],clearSignContextsOptional:[e[0]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with clear sign contexts",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:e,clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should build the transaction context with generic-parser context",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2,certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0],e[1],e[3]],clearSignContextsOptional:[e[2]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should build the transaction context with proxy delegate call context",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1",certificate:s},{type:n.ClearSignContextType.PROXY_INFO,payload:"payload-2"}],o=[];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const d=await new i.BuildBaseContexts(a,c).run();expect(d).toEqual({clearSignContexts:[e[1],e[0]],clearSignContextsOptional:o,clearSigningType:r.ClearSigningType.EIP7730})}),it("should call the context module with the correct parameters if transaction check is enabled",async()=>{const e=[];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new i.BuildBaseContexts(a,{...c,appConfig:p(!0)}).run(),expect(l.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.FLEX,challenge:"challenge",domain:"domain-name.eth",transaction:u,...c.subset},i.BASE_CONTEXT_TYPES_FILTER)}),it("should call the context module with the correct parameters if transaction check is disabled",async()=>{const e=[];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),await new i.BuildBaseContexts(a,{...c,appConfig:p(!1)}).run(),expect(l.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.FLEX,challenge:"challenge",domain:"domain-name.eth",...c.subset},i.BASE_CONTEXT_TYPES_FILTER)}),it("should call the context module without challenge for Nano S",async()=>{const e=[];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1}),await new i.BuildBaseContexts(a,c).run(),expect(l.getContexts).toHaveBeenCalledWith({deviceModelId:t.DeviceModelId.NANO_S,domain:"domain-name.eth",challenge:void 0,...c.subset},i.BASE_CONTEXT_TYPES_FILTER)}),it("should exclude error contexts from the result",async()=>{const e=[{type:n.ClearSignContextType.ERROR,error:new Error("error")},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.ERROR,error:new Error("error")},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts from the result on old apps",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"transaction_info",certificate:s},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:n.ClearSignContextType.NFT,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"enum",id:1,value:2,certificate:s}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts from the result if no transaction_info was found",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"transaction_field"},{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.ENUM,payload:"enum",id:1,value:2},{type:n.ClearSignContextType.NFT,payload:"payload-2"}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude legacy contexts from the result for generic-parser transactions",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.EXTERNAL_PLUGIN,payload:"payload-3"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-4"},{type:n.ClearSignContextType.ENUM,payload:"payload-5",id:1,value:2,certificate:s}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.15.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[1],e[3]],clearSignContextsOptional:[e[4]],clearSigningType:r.ClearSigningType.EIP7730})}),it("should exclude generic-parser contexts with a nano s device",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.14.0"},deviceModelId:t.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts with an old app version",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should exclude generic-parser contexts with a non ready device",async()=>{const e=[{type:n.ClearSignContextType.TOKEN,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-2",certificate:s},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},{type:n.ClearSignContextType.ENUM,payload:"payload-4",id:1,value:2,certificate:s}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.Connected,deviceStatus:t.DeviceStatus.NOT_CONNECTED,deviceModelId:t.DeviceModelId.FLEX});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[e[0]],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.BASIC})}),it("should return no clear sign context if the transaction info certificate is missing",async()=>{const e=[{type:n.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:n.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:n.ClearSignContextType.ENUM,payload:"payload-3",id:1,value:2}];l.getContexts.mockResolvedValueOnce(e),a.getDeviceSessionState.mockReturnValueOnce({sessionStateType:t.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:t.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.17.0"},deviceModelId:t.DeviceModelId.FLEX,isSecureConnectionAllowed:!1});const o=await new i.BuildBaseContexts(a,c).run();expect(o).toEqual({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:r.ClearSigningType.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": ["import_context_module", "import_device_management_kit", "import_ethers", "import_ClearSigningType", "import_makeInternalApi", "import_BuildBaseContexts", "contextModuleMock", "defaultOptions", "defaultTransaction", "defaultCertificate", "defaultArgs", "apiMock", "createAppConfig", "web3ChecksEnabled", "clearSignContexts", "clearSignContextsOptional", "result", "expectedTxCheck"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var I=(e,t)=>{for(var a in t)p(e,a,{get:t[a],enumerable:!0})},F=(e,t,a,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of A(t))!E.call(e,s)&&s!==a&&p(e,s,{get:()=>t[s],enumerable:!(i=P(t,s))||i.enumerable});return e};var M=e=>F(p({},"__esModule",{value:!0}),e);var k={};I(k,{BuildEIP712ContextTask:()=>V,ZERO_ADDRESS:()=>f});module.exports=M(k);var l=require("@ledgerhq/device-management-kit"),d=require("ethers"),r=require("purify-ts"),u=require("semver"),v=require("../../typed-data/model/Types");const f="0x0000000000000000000000000000000000000000";class V{constructor(t,a,i,s){this.api=t;this.contextModule=a;this.parser=i;this.data=s}async run(){const t=d.TypedDataEncoder.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:i,...s}=a,T=d.TypedDataEncoder.hashStruct(this.data.primaryType,s,this.data.message),n=this.parser.parse(this.data);if(n.isLeft())throw n.extract();const{types:g,domain:C,message:c}=n.unsafeCoerce();let y=r.Nothing;const m=this.getClearSignVersion();if(m.isJust()){const D=this.data.domain.verifyingContract?.toLowerCase()||f,S=this.data.domain.chainId||0,x=c.filter(o=>o.value instanceof v.TypedDataValueField).map(o=>({path:o.path,value:o.value.data})),h=await this.contextModule.getTypedDataFilters({verifyingContract:D,chainId:S,version:m.extract(),schema:this.data.types,fieldsValues:x});h.type==="success"&&(y=(0,r.Just)(h))}return{types:g,domain:C,message:c,clearSignContext:y,domainHash:t,messageHash:T}}getClearSignVersion(){const t=this.api.getDeviceSessionState();return t.sessionStateType===l.DeviceSessionStateType.Connected?r.Nothing:t.currentApp.name!=="Ethereum"?r.Nothing:(0,u.gte)(t.currentApp.version,"1.12.0")?(0,r.Just)("v2"):(0,r.Just)("v1")}}0&&(module.exports={BuildEIP712ContextTask,ZERO_ADDRESS});
1
+ "use strict";var v=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var R=(i,e)=>{for(var t in e)v(i,t,{get:e[t],enumerable:!0})},E=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of b(e))!F.call(i,a)&&a!==t&&v(i,a,{get:()=>e[a],enumerable:!(n=w(e,a))||n.enumerable});return i};var V=i=>E(v({},"__esModule",{value:!0}),i);var B={};R(B,{BuildEIP712ContextTask:()=>N,ZERO_ADDRESS:()=>D});module.exports=V(B);var y=require("@ledgerhq/context-module"),l=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),S=require("../../../api/model/ClearSigningType"),T=require("../../app-binder/command/GetChallengeCommand"),I=require("../../app-binder/task/BuildFullContextsTask"),g=require("../../shared/utils/ApplicationChecker"),M=require("../../typed-data/model/Types");const D="0x0000000000000000000000000000000000000000";class N{constructor(e,t,n,a,o,r,m,p,C,u=(x,d)=>new I.BuildFullContextsTask(x,d)){this.api=e;this.contextModule=t;this.parser=n;this.transactionParser=a;this.transactionMapper=o;this.data=r;this.derivationPath=m;this.appConfig=p;this.from=C;this.buildFullContextFactory=u}async run(){const e=this.parser.parse(this.data);if(e.isLeft())throw e.extract();const{types:t,domain:n,message:a}=e.unsafeCoerce(),o=this.api.getDeviceSessionState(),r=o.deviceModelId,m=await this.getTransactionChecks(r);let p=s.Nothing,C={};const u=this.getClearSignVersion(o);if(u.isJust()){let d;const f=await this.api.sendCommand(new T.GetChallengeCommand);(0,l.isSuccessCommandResult)(f)&&(d=f.data.challenge);const P=this.data.domain.verifyingContract?.toLowerCase()||D,A=this.data.domain.chainId||0,k=a.filter(c=>c.value instanceof M.TypedDataValueField).map(c=>({path:c.path,value:c.value.data})),h=await this.contextModule.getTypedDataFilters({verifyingContract:P,chainId:A,version:u.extract(),schema:this.data.types,challenge:d,deviceModelId:o.deviceModelId,fieldsValues:k});h.type==="success"&&(p=(0,s.Just)(h),C=await this.getCalldatasContexts(o,h))}return{derivationPath:this.derivationPath,transactionChecks:m,types:t,domain:n,message:a,clearSignContext:p,calldatasContexts:C,deviceModelId:o.deviceModelId}}async getTransactionChecks(e){if(!this.appConfig.web3ChecksEnabled)return;const t=await this.contextModule.getContexts({deviceModelId:e,data:this.data,from:this.from},[y.ClearSignContextType.TRANSACTION_CHECK]);if(t.length>0&&t[0]?.type===y.ClearSignContextType.TRANSACTION_CHECK)return t[0]}getClearSignVersion(e){return new g.ApplicationChecker(e,this.appConfig).withMinVersionInclusive("1.10.0").excludeDeviceModel(l.DeviceModelId.NANO_S).check()?new g.ApplicationChecker(e,this.appConfig).withMinVersionInclusive("1.12.0").check()?(0,s.Just)("v2"):(0,s.Just)("v1"):s.Nothing}async getCalldatasContexts(e,t){const n={};for(const a in t.calldatas){const{subset:o}=t.calldatas[a],r=await this.buildFullContextFactory(this.api,{contextModule:this.contextModule,mapper:this.transactionMapper,parser:this.transactionParser,options:{},appConfig:this.appConfig,derivationPath:this.derivationPath,subset:o,deviceModelId:e.deviceModelId}).run();r.clearSigningType===S.ClearSigningType.EIP7730&&(n[a]=r.clearSignContexts)}return n}}0&&(module.exports={BuildEIP712ContextTask,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": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,iBAAAC,IAAA,eAAAC,EAAAJ,GAIA,IAAAK,EAGO,2CACPC,EAAsD,kBACtDC,EAA0C,qBAC1CC,EAAoB,kBAIpBC,EAAoC,4CAG7B,MAAMN,EAAe,6CAErB,MAAMD,CAAuB,CAClC,YACUQ,EACAC,EACAC,EACAC,EACR,CAJQ,SAAAH,EACA,mBAAAC,EACA,YAAAC,EACA,UAAAC,CACP,CAEH,MAAM,KAA6C,CAEjD,MAAMC,EAAa,mBAAiB,WAAW,KAAK,KAAK,MAAM,EAE/D,GAAI,CAAC,KAAK,KAAK,MAAM,KAAK,KAAK,WAAW,EACxC,MAAM,IAAI,MACR,iBAAiB,KAAK,KAAK,WAAW,gCACxC,EAGF,MAAMC,EAAgD,KAAK,KAAK,MAC1D,CAAE,aAAAC,EAAc,GAAGC,CAAK,EAAIF,EAC5BG,EAAc,mBAAiB,WACnC,KAAK,KAAK,YACVD,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,EAA4D,UAChE,MAAMC,EAAU,KAAK,oBAAoB,EACzC,GAAIA,EAAQ,OAAO,EAAG,CACpB,MAAMC,EACJ,KAAK,KAAK,OAAO,mBAAmB,YAAY,GAAKtB,EACjDuB,EAAU,KAAK,KAAK,OAAO,SAAW,EACtCC,EAAeL,EAClB,OAAQM,GAAMA,EAAE,iBAAiB,qBAAmB,EACpD,IAAKA,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,KAAmB,QAAKM,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,mBAAqB,yBAAuB,UACnD,UAELA,EAAY,WAAW,OAAS,WAC3B,aAUkB,OAAIA,EAAY,WAAW,QAAS,QAAQ,KAC3C,QAAK,IAAI,KAAI,QAAK,IAAI,CACpD,CACF",
6
- "names": ["BuildEIP712ContextTask_exports", "__export", "BuildEIP712ContextTask", "ZERO_ADDRESS", "__toCommonJS", "import_device_management_kit", "import_ethers", "import_purify_ts", "import_semver", "import_Types", "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": ["BuildEIP712ContextTask_exports", "__export", "BuildEIP712ContextTask", "ZERO_ADDRESS", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_purify_ts", "import_ClearSigningType", "import_GetChallengeCommand", "import_BuildFullContextsTask", "import_ApplicationChecker", "import_Types", "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
- "use strict";var a=require("@ledgerhq/device-management-kit"),e=require("purify-ts"),f=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),t=require("../../typed-data/model/Types"),u=require("./BuildEIP712ContextTask");describe("BuildEIP712ContextTask",()=>{const o=(0,f.makeDeviceActionInternalApiMock)(),i={getContext:jest.fn(),getContexts:jest.fn(),getTypedDataFilters:jest.fn()},n={parse:jest.fn()},c={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"}]}},d={PermitSingle:{details:new t.StructType("PermitDetails"),spender:new t.PrimitiveType("address","address",e.Nothing),sigDeadline:new t.PrimitiveType("uint256","uint",(0,e.Just)(32))},PermitDetails:{token:new t.PrimitiveType("address","address",e.Nothing),amount:new t.PrimitiveType("uint160","uint",(0,e.Just)(20)),expiration:new t.PrimitiveType("uint48","uint",(0,e.Just)(6)),nonce:new t.PrimitiveType("uint48","uint",(0,e.Just)(6))}},p=[{path:"",type:"",value:new t.TypedDataValueRoot("EIP712Domain")},{path:"chainId",type:"uint256",value:new t.TypedDataValueField(Uint8Array.from([137]))}],l=[{path:"",type:"",value:new t.TypedDataValueRoot("PermitSingle")},{path:"details.amount",type:"uint160",value:new t.TypedDataValueField(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new t.TypedDataValueField(Uint8Array.from([19]))}],m={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 s=new u.BuildEIP712ContextTask(o,i,n,c);n.parse.mockReturnValueOnce((0,e.Right)({types:d,domain:p,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:a.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Bitcoin",version:"1.0"},deviceModelId:a.DeviceModelId.FLEX});const r=await s.run();expect(r).toStrictEqual({types:d,domain:p,message:l,clearSignContext:e.Nothing,domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"})}),it("Build context with no clear signing context",async()=>{const s=new u.BuildEIP712ContextTask(o,i,n,c);n.parse.mockReturnValueOnce((0,e.Right)({types:d,domain:p,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:a.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:a.DeviceModelId.FLEX}),i.getTypedDataFilters.mockResolvedValueOnce({type:"error",error:new Error("no filter")});const r=await s.run();expect(r).toStrictEqual({types:d,domain:p,message:l,clearSignContext:e.Nothing,domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"})}),it("Build context with clear signing context",async()=>{const s=new u.BuildEIP712ContextTask(o,i,n,c);n.parse.mockReturnValueOnce((0,e.Right)({types:d,domain:p,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:a.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:a.DeviceModelId.FLEX}),i.getTypedDataFilters.mockResolvedValueOnce(m);const r=await s.run();expect(r).toStrictEqual({types:d,domain:p,message:l,clearSignContext:(0,e.Just)(m),domainHash:"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca",messageHash:"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a"}),expect(n.parse).toHaveBeenCalledWith(c),expect(i.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v2",schema:c.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 s=new u.BuildEIP712ContextTask(o,i,n,c);n.parse.mockReturnValueOnce((0,e.Right)({types:d,domain:p,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:a.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:a.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:a.DeviceModelId.FLEX}),i.getTypedDataFilters.mockResolvedValueOnce(m),await s.run(),expect(i.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v1",schema:c.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 s=new u.BuildEIP712ContextTask(o,i,n,{...c,primaryType:""});n.parse.mockReturnValueOnce((0,e.Right)({types:d,domain:p,message:l}));try{await s.run()}catch(r){expect(r).toBeInstanceOf(Error),expect(r.message).toBe('Primary type "" is not defined in the types.')}}),it("Should throw an error if parsing fails",async()=>{const s=new u.BuildEIP712ContextTask(o,i,n,c);n.parse.mockReturnValueOnce((0,e.Left)(new Error("Parsing error")));try{await s.run()}catch(r){expect(r).toBeInstanceOf(Error),expect(r.message).toBe("Parsing error")}})});
1
+ "use strict";var v=require("@ledgerhq/context-module"),T=require("@ledgerhq/context-module"),e=require("@ledgerhq/device-management-kit"),t=require("purify-ts"),b=require("../../../api/model/ClearSigningType"),k=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),s=require("../../typed-data/model/Types"),f=require("./BuildEIP712ContextTask");describe("BuildEIP712ContextTask",()=>{const o=(0,k.makeDeviceActionInternalApiMock)(),a={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn()},i={parse:vi.fn()},C={extractValue:vi.fn()},y={mapTransactionToSubset:vi.fn()},p=vi.fn();function g(n){return{blindSigningEnabled:!1,web3ChecksEnabled:n,web3ChecksOptIn:!1,version:"1.13.0"}}const u={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 s.StructType("PermitDetails"),spender:new s.PrimitiveType("address","address",t.Nothing),sigDeadline:new s.PrimitiveType("uint256","uint",(0,t.Just)(32))},PermitDetails:{token:new s.PrimitiveType("address","address",t.Nothing),amount:new s.PrimitiveType("uint160","uint",(0,t.Just)(20)),expiration:new s.PrimitiveType("uint48","uint",(0,t.Just)(6)),nonce:new s.PrimitiveType("uint48","uint",(0,t.Just)(6))}},d=[{path:"",type:"",value:new s.TypedDataValueRoot("EIP712Domain")},{path:"chainId",type:"uint256",value:new s.TypedDataValueField(Uint8Array.from([137]))}],l=[{path:"",type:"",value:new s.TypedDataValueRoot("PermitSingle")},{path:"details.amount",type:"uint160",value:new s.TypedDataValueField(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new s.TypedDataValueField(Uint8Array.from([19]))}],S={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"}}},h="0x1234",m="0x8ceb23fd6bc0add59e62ac25578270cff1b9f619";beforeEach(()=>{vi.resetAllMocks(),o.sendCommand.mockResolvedValue((0,e.CommandResultFactory)({data:{challenge:h}})),p.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:b.ClearSigningType.BASIC})})}),it("Build context with clear signing context not supported by the device",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:e.DeviceModelId.NANO_S,isSecureConnectionAllowed:!1});const c=await n.run();expect(c).toStrictEqual({deviceModelId:e.DeviceModelId.NANO_S,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:t.Nothing,calldatasContexts:{}})}),it("Build context with no clear signing context",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce({type:v.ClearSignContextType.ERROR,error:new Error("no filter")});const c=await n.run();expect(c).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:t.Nothing,calldatasContexts:{}})}),it("Build context with clear signing context",async()=>{const n={type:v.ClearSignContextType.TRANSACTION_CHECK,payload:"web3Check"},c=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);a.getContexts.mockResolvedValueOnce([n]),i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S);const x=await c.run();expect(x).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:(0,t.Just)(S),calldatasContexts:{}}),expect(i.parse).toHaveBeenCalledWith(u),expect(a.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v2",schema:u.types,challenge:h,deviceModelId:e.DeviceModelId.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 n={type:v.ClearSignContextType.TRANSACTION_CHECK,payload:"transactionCheck"},c=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!0),m,p);a.getContexts.mockResolvedValueOnce([n]),i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S);const x=await c.run();expect(x).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",types:r,domain:d,message:l,clearSignContext:(0,t.Just)(S),calldatasContexts:{},transactionChecks:n})}),it("Build context with clear signing context V1",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.11.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(S),await n.run(),expect(a.getTypedDataFilters).toHaveBeenCalledWith({verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:137,version:"v1",schema:u.types,challenge:h,deviceModelId:e.DeviceModelId.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 n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p),c={chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:m,selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n},x={...S,calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:T.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:T.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:c}}};i.parse.mockReturnValueOnce((0,t.Right)({types:r,domain:d,message:l})),o.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:"1.12.0"},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1}),a.getTypedDataFilters.mockResolvedValueOnce(x),p.mockReturnValue({run:async()=>({clearSignContexts:[],clearSigningType:b.ClearSigningType.EIP7730})});const E=await n.run();expect(E).toStrictEqual({deviceModelId:e.DeviceModelId.FLEX,derivationPath:"44'/60'/0'/0/0",transactionChecks:void 0,types:r,domain:d,message:l,clearSignContext:(0,t.Just)(x),calldatasContexts:{0:[]}})}),it("Should throw an error if parsing fails",async()=>{const n=new f.BuildEIP712ContextTask(o,a,i,C,y,u,"44'/60'/0'/0/0",g(!1),m,p);i.parse.mockReturnValueOnce((0,t.Left)(new Error("Parsing error")));try{await n.run()}catch(c){expect(c).toBeInstanceOf(Error),expect(c.message).toBe("Parsing error")}})});
2
2
  //# sourceMappingURL=BuildEIP712ContextTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/BuildEIP712ContextTask.test.ts"],
4
- "sourcesContent": ["import { type TypedDataClearSignContextSuccess } from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Left, Nothing, Right } from \"purify-ts\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n PrimitiveType,\n StructType,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { BuildEIP712ContextTask } from \"./BuildEIP712ContextTask\";\n\ndescribe(\"BuildEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextMouleMock = {\n getContext: jest.fn(),\n getContexts: jest.fn(),\n getTypedDataFilters: jest.fn(),\n };\n const parserMock = {\n parse: jest.fn(),\n };\n\n const TEST_DATA = {\n domain: {\n name: \"Permit2\",\n chainId: 137,\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n primaryType: \"PermitSingle\",\n message: {\n details: {\n token: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n amount: \"69420000000000000000\",\n expiration: \"1718184249\",\n nonce: \"0\",\n },\n spender: \"0xec7be89e9d109e7e3fec59c222cf297125fefda2\",\n sigDeadline: \"1715594049\",\n },\n types: {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint\" },\n { name: \"expiration\", type: \"uint\" },\n { name: \"nonce\", type: \"uint\" },\n ],\n },\n };\n\n const TEST_TYPES = {\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x13])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 1,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n tokens: {},\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n },\n };\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Build context with clear signing context not supported by the device\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n TEST_DATA,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Bitcoin\", version: \"1.0\" },\n deviceModelId: DeviceModelId.FLEX,\n });\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n domainHash:\n \"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca\",\n messageHash:\n \"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a\",\n });\n });\n\n it(\"Build context with no clear signing context\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n TEST_DATA,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 });\n contextMouleMock.getTypedDataFilters.mockResolvedValueOnce({\n type: \"error\",\n error: new Error(\"no filter\"),\n });\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n domainHash:\n \"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca\",\n messageHash:\n \"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a\",\n });\n });\n\n it(\"Build context with clear signing context\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n TEST_DATA,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 });\n contextMouleMock.getTypedDataFilters.mockResolvedValueOnce(\n TEST_CLEAR_SIGN_CONTEXT,\n );\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n domainHash:\n \"0xf033048cb2764f596bc4d98e089fa38bb84b4be3d5da2e77f9bfac0e4d6c68ca\",\n messageHash:\n \"0x1087495b5e10337738059920fe1de8216235299745e8c97e21b409009a4c362a\",\n });\n expect(parserMock.parse).toHaveBeenCalledWith(TEST_DATA);\n expect(contextMouleMock.getTypedDataFilters).toHaveBeenCalledWith({\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 137,\n version: \"v2\",\n schema: TEST_DATA[\"types\"],\n fieldsValues: [\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x13]),\n },\n ],\n });\n });\n\n it(\"Build context with clear signing context V1\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n TEST_DATA,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.11.0\" },\n deviceModelId: DeviceModelId.FLEX,\n });\n contextMouleMock.getTypedDataFilters.mockResolvedValueOnce(\n TEST_CLEAR_SIGN_CONTEXT,\n );\n // WHEN\n await task.run();\n // THEN\n expect(contextMouleMock.getTypedDataFilters).toHaveBeenCalledWith({\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 137,\n version: \"v1\",\n schema: TEST_DATA[\"types\"],\n fieldsValues: [\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x13]),\n },\n ],\n });\n });\n\n it(\"Should throw error if no primary type\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n {\n ...TEST_DATA,\n primaryType: \"\",\n },\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\n // WHEN\n try {\n await task.run();\n } catch (e) {\n // THEN\n expect(e).toBeInstanceOf(Error);\n // @ts-expect-error\n expect(e.message).toBe('Primary type \"\" is not defined in the types.');\n }\n });\n\n it(\"Should throw an error if parsing fails\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextMouleMock,\n parserMock,\n TEST_DATA,\n );\n parserMock.parse.mockReturnValueOnce(Left(new Error(\"Parsing error\")));\n // WHEN\n try {\n await task.run();\n } catch (e) {\n // THEN\n expect(e).toBeInstanceOf(Error);\n // @ts-expect-error\n expect(e.message).toBe(\"Parsing error\");\n }\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_device_management_kit", "import_purify_ts", "import_makeInternalApi", "import_Types", "import_BuildEIP712ContextTask", "apiMock", "contextMouleMock", "parserMock", "TEST_DATA", "TEST_TYPES", "TEST_DOMAIN_VALUES", "TEST_MESSAGE_VALUES", "TEST_CLEAR_SIGN_CONTEXT", "task", "builtContext", "e"]
4
+ "sourcesContent": ["import {\n ClearSignContextType,\n type ContextModule,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport { TypedDataCalldataParamPresence } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Left, Nothing, Right } from \"purify-ts\";\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\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport {\n PrimitiveType,\n StructType,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { BuildEIP712ContextTask } from \"./BuildEIP712ContextTask\";\n\ndescribe(\"BuildEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getFieldContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n };\n const parserMock = {\n parse: vi.fn(),\n };\n const mockTransactionParser: TransactionParserService = {\n extractValue: vi.fn(),\n } as unknown as TransactionParserService;\n const mockTransactionMapper: TransactionMapperService = {\n mapTransactionToSubset: vi.fn(),\n };\n const buildFullContextFactoryMock = vi.fn();\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 const TEST_DATA = {\n domain: {\n name: \"Permit2\",\n chainId: 137,\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n primaryType: \"PermitSingle\",\n message: {\n details: {\n token: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n amount: \"69420000000000000000\",\n expiration: \"1718184249\",\n nonce: \"0\",\n },\n spender: \"0xec7be89e9d109e7e3fec59c222cf297125fefda2\",\n sigDeadline: \"1715594049\",\n },\n types: {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint\" },\n { name: \"expiration\", type: \"uint\" },\n { name: \"nonce\", type: \"uint\" },\n ],\n },\n };\n\n const TEST_TYPES = {\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x13])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 1,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n proxy: undefined,\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n },\n };\n\n const TEST_CHALLENGE = \"0x1234\";\n const TEST_FROM = \"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619\";\n\n beforeEach(() => {\n vi.resetAllMocks();\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: TEST_CHALLENGE } }),\n );\n buildFullContextFactoryMock.mockReturnValue({\n run: async () => ({\n clearSignContexts: [],\n clearSigningType: ClearSigningType.BASIC,\n }),\n });\n });\n\n it(\"Build context with clear signing context not supported by the device\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.11.0\" },\n deviceModelId: DeviceModelId.NANO_S,\n isSecureConnectionAllowed: false,\n });\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n deviceModelId: DeviceModelId.NANO_S,\n derivationPath: \"44'/60'/0'/0/0\",\n transactionChecks: undefined,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n });\n });\n\n it(\"Build context with no clear signing context\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 contextModuleMock.getTypedDataFilters.mockResolvedValueOnce({\n type: ClearSignContextType.ERROR,\n error: new Error(\"no filter\"),\n });\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n deviceModelId: DeviceModelId.FLEX,\n derivationPath: \"44'/60'/0'/0/0\",\n transactionChecks: undefined,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n });\n });\n\n it(\"Build context with clear signing context\", async () => {\n // GIVEN\n const txCheckContext = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"web3Check\",\n };\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n contextModuleMock.getContexts.mockResolvedValueOnce([txCheckContext]);\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 contextModuleMock.getTypedDataFilters.mockResolvedValueOnce(\n TEST_CLEAR_SIGN_CONTEXT,\n );\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n deviceModelId: DeviceModelId.FLEX,\n derivationPath: \"44'/60'/0'/0/0\",\n transactionChecks: undefined,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n calldatasContexts: {},\n });\n expect(parserMock.parse).toHaveBeenCalledWith(TEST_DATA);\n expect(contextModuleMock.getTypedDataFilters).toHaveBeenCalledWith({\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 137,\n version: \"v2\",\n schema: TEST_DATA[\"types\"],\n challenge: TEST_CHALLENGE,\n deviceModelId: DeviceModelId.FLEX,\n fieldsValues: [\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x13]),\n },\n ],\n });\n });\n\n it(\"Build context with clear signing context and transaction checks\", async () => {\n // GIVEN\n const txCheckContext = {\n type: ClearSignContextType.TRANSACTION_CHECK,\n payload: \"transactionCheck\",\n };\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(true),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n contextModuleMock.getContexts.mockResolvedValueOnce([txCheckContext]);\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 contextModuleMock.getTypedDataFilters.mockResolvedValueOnce(\n TEST_CLEAR_SIGN_CONTEXT,\n );\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n deviceModelId: DeviceModelId.FLEX,\n derivationPath: \"44'/60'/0'/0/0\",\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n calldatasContexts: {},\n transactionChecks: txCheckContext,\n });\n });\n\n it(\"Build context with clear signing context V1\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.11.0\" },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n contextModuleMock.getTypedDataFilters.mockResolvedValueOnce(\n TEST_CLEAR_SIGN_CONTEXT,\n );\n // WHEN\n await task.run();\n // THEN\n expect(contextModuleMock.getTypedDataFilters).toHaveBeenCalledWith({\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 137,\n version: \"v1\",\n schema: TEST_DATA[\"types\"],\n challenge: TEST_CHALLENGE,\n deviceModelId: DeviceModelId.FLEX,\n fieldsValues: [\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x13]),\n },\n ],\n });\n });\n\n it(\"Build context with clear signing context and calldatas\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n const subset = {\n chainId: 0x1234,\n data: \"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99\",\n from: TEST_FROM,\n selector: \"0x778899aa\",\n to: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n value: 4200000000000000n,\n };\n const clearSignContext = {\n ...TEST_CLEAR_SIGN_CONTEXT,\n calldatas: {\n 0: {\n filter: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.Present,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset,\n },\n },\n };\n parserMock.parse.mockReturnValueOnce(\n Right({\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n }),\n );\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 contextModuleMock.getTypedDataFilters.mockResolvedValueOnce(\n clearSignContext,\n );\n buildFullContextFactoryMock.mockReturnValue({\n run: async () => ({\n clearSignContexts: [],\n clearSigningType: ClearSigningType.EIP7730,\n }),\n });\n // WHEN\n const builtContext = await task.run();\n // THEN\n expect(builtContext).toStrictEqual({\n deviceModelId: DeviceModelId.FLEX,\n derivationPath: \"44'/60'/0'/0/0\",\n transactionChecks: undefined,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(clearSignContext),\n calldatasContexts: {\n 0: [],\n },\n });\n });\n\n it(\"Should throw an error if parsing fails\", async () => {\n // GIVEN\n const task = new BuildEIP712ContextTask(\n apiMock,\n contextModuleMock as unknown as ContextModule,\n parserMock,\n mockTransactionParser,\n mockTransactionMapper,\n TEST_DATA,\n \"44'/60'/0'/0/0\",\n createAppConfig(false),\n TEST_FROM,\n buildFullContextFactoryMock,\n );\n parserMock.parse.mockReturnValueOnce(Left(new Error(\"Parsing error\")));\n // WHEN\n try {\n await task.run();\n } catch (e) {\n // THEN\n expect(e).toBeInstanceOf(Error);\n // @ts-expect-error\n expect(e.message).toBe(\"Parsing error\");\n }\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_ClearSigningType", "import_makeInternalApi", "import_Types", "import_BuildEIP712ContextTask", "apiMock", "contextModuleMock", "parserMock", "mockTransactionParser", "mockTransactionMapper", "buildFullContextFactoryMock", "createAppConfig", "web3ChecksEnabled", "TEST_DATA", "TEST_TYPES", "TEST_DOMAIN_VALUES", "TEST_MESSAGE_VALUES", "TEST_CLEAR_SIGN_CONTEXT", "TEST_CHALLENGE", "TEST_FROM", "task", "builtContext", "txCheckContext", "subset", "clearSignContext", "e"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var c=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var b=(n,e)=>{for(var a in e)c(n,a,{get:e[a],enumerable:!0})},m=(n,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of T(e))!S.call(n,s)&&s!==a&&c(n,s,{get:()=>e[s],enumerable:!(r=g(e,s))||r.enumerable});return n};var h=n=>m(c({},"__esModule",{value:!0}),n);var _={};b(_,{BuildFullContextsTask:()=>p});module.exports=h(_);var l=require("@ledgerhq/context-module"),d=require("./BuildBaseContexts"),u=require("./BuildSubcontextsTask"),x=require("./ParseNestedTransactionTask");class p{constructor(e,a,r=(t,o)=>new u.BuildSubcontextsTask(t,o),s=(t,o)=>new d.BuildBaseContexts(t,o),i=t=>new x.ParseNestedTransactionTask(t)){this._api=e;this._args=a;this._buildSubcontextsTaskFactory=r;this._buildBaseContextsTaskFactory=s;this._preBuildNestedCallDataTaskFactory=i}async run(){const{clearSignContexts:e,clearSigningType:a,clearSignContextsOptional:r}=await this._buildBaseContextsTaskFactory(this._api,this._args).run(),s=e.map(t=>{const{subcontextCallbacks:o}=this._buildSubcontextsTaskFactory(this._api,{context:t,contextOptional:r,contextModule:this._args.contextModule,subset:this._args.subset,transactionParser:this._args.parser,deviceModelId:this._args.deviceModelId}).run();return{context:t,subcontextCallbacks:o}}),i=[];for(const t of s)if(i.push(t),t.context.type===l.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION&&t.context.reference?.type===l.ClearSignContextReferenceType.CALLDATA){const{subsets:o}=this._preBuildNestedCallDataTaskFactory({parser:this._args.parser,subset:this._args.subset,context:t.context}).run();for(const C of o){const{clearSignContexts:y}=await new p(this._api,{...this._args,transaction:void 0,subset:C},this._buildSubcontextsTaskFactory,this._buildBaseContextsTaskFactory,this._preBuildNestedCallDataTaskFactory).run();i.push(...y)}}return{clearSignContexts:i,clearSigningType:a}}}0&&(module.exports={BuildFullContextsTask});
2
+ //# sourceMappingURL=BuildFullContextsTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/BuildFullContextsTask.ts"],
4
+ "sourcesContent": ["import {\n type ClearSignContext,\n ClearSignContextReferenceType,\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceModelId,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport {\n BuildBaseContexts,\n type BuildBaseContextsArgs,\n} from \"./BuildBaseContexts\";\nimport {\n BuildSubcontextsTask,\n type BuildSubcontextsTaskArgs,\n} from \"./BuildSubcontextsTask\";\nimport {\n ParseNestedTransactionTask,\n type ParseNestedTransactionTaskArgs,\n} from \"./ParseNestedTransactionTask\";\n\nexport type BuildFullContextsTaskResult = {\n readonly clearSignContexts: ContextWithSubContexts[];\n readonly clearSigningType: ClearSigningType;\n};\n\nexport type BuildFullContextsTaskArgs = {\n readonly contextModule: ContextModule;\n readonly mapper: TransactionMapperService;\n readonly parser: TransactionParserService;\n readonly options: TransactionOptions;\n readonly appConfig: GetConfigCommandResponse;\n readonly derivationPath: string;\n readonly subset: TransactionSubset;\n readonly deviceModelId: DeviceModelId;\n readonly transaction?: Uint8Array;\n};\n\nexport type ContextWithSubContexts = {\n context: ClearSignContextSuccess;\n subcontextCallbacks: (() => Promise<ClearSignContext>)[];\n};\n\nexport class BuildFullContextsTask {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: BuildFullContextsTaskArgs,\n private readonly _buildSubcontextsTaskFactory = (\n api: InternalApi,\n args: BuildSubcontextsTaskArgs,\n ) => new BuildSubcontextsTask(api, args),\n private readonly _buildBaseContextsTaskFactory = (\n api: InternalApi,\n args: BuildBaseContextsArgs,\n ) => new BuildBaseContexts(api, args),\n private readonly _preBuildNestedCallDataTaskFactory = (\n args: ParseNestedTransactionTaskArgs,\n ) => new ParseNestedTransactionTask(args),\n ) {}\n\n async run(): Promise<BuildFullContextsTaskResult> {\n // get the base contexts\n const { clearSignContexts, clearSigningType, clearSignContextsOptional } =\n await this._buildBaseContextsTaskFactory(this._api, this._args).run();\n\n // for each context, build the subcontexts\n const contextsWithSubContexts: ContextWithSubContexts[] =\n clearSignContexts.map((context: ClearSignContextSuccess) => {\n const { subcontextCallbacks } = this._buildSubcontextsTaskFactory(\n this._api,\n {\n context,\n contextOptional: clearSignContextsOptional,\n contextModule: this._args.contextModule,\n subset: this._args.subset,\n transactionParser: this._args.parser,\n deviceModelId: this._args.deviceModelId,\n },\n ).run();\n\n return {\n context,\n subcontextCallbacks,\n };\n });\n\n // recursively build the nested contexts\n const contextWithNestedContexts: ContextWithSubContexts[] = [];\n for (const context of contextsWithSubContexts) {\n contextWithNestedContexts.push(context);\n\n if (\n context.context.type ===\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION &&\n context.context.reference?.type ===\n ClearSignContextReferenceType.CALLDATA\n ) {\n const { subsets } = this._preBuildNestedCallDataTaskFactory({\n parser: this._args.parser,\n subset: this._args.subset,\n context: context.context,\n }).run();\n\n for (const subset of subsets) {\n const { clearSignContexts: nestedContexts } =\n await new BuildFullContextsTask(\n this._api,\n {\n ...this._args,\n transaction: undefined, // don't pass the transaction to the nested context builder\n subset,\n },\n // inject the factories for testing\n this._buildSubcontextsTaskFactory,\n this._buildBaseContextsTaskFactory,\n this._preBuildNestedCallDataTaskFactory,\n ).run();\n\n // Contexts order as expected by the Ethereum application:\n // * previous contexts\n // * calldata field from the parent\n // * list of nested transactions infos and nested fields\n contextWithNestedContexts.push(...nestedContexts);\n }\n }\n }\n\n return {\n clearSignContexts: contextWithNestedContexts,\n clearSigningType,\n };\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAOO,oCAYPC,EAGO,+BACPC,EAGO,kCACPC,EAGO,wCAwBA,MAAML,CAAsB,CACjC,YACmBM,EACAC,EACAC,EAA+B,CAC9CC,EACAC,IACG,IAAI,uBAAqBD,EAAKC,CAAI,EACtBC,EAAgC,CAC/CF,EACAC,IACG,IAAI,oBAAkBD,EAAKC,CAAI,EACnBE,EACfF,GACG,IAAI,6BAA2BA,CAAI,EACxC,CAbiB,UAAAJ,EACA,WAAAC,EACA,kCAAAC,EAIA,mCAAAG,EAIA,wCAAAC,CAGhB,CAEH,MAAM,KAA4C,CAEhD,KAAM,CAAE,kBAAAC,EAAmB,iBAAAC,EAAkB,0BAAAC,CAA0B,EACrE,MAAM,KAAK,8BAA8B,KAAK,KAAM,KAAK,KAAK,EAAE,IAAI,EAGhEC,EACJH,EAAkB,IAAKI,GAAqC,CAC1D,KAAM,CAAE,oBAAAC,CAAoB,EAAI,KAAK,6BACnC,KAAK,KACL,CACE,QAAAD,EACA,gBAAiBF,EACjB,cAAe,KAAK,MAAM,cAC1B,OAAQ,KAAK,MAAM,OACnB,kBAAmB,KAAK,MAAM,OAC9B,cAAe,KAAK,MAAM,aAC5B,CACF,EAAE,IAAI,EAEN,MAAO,CACL,QAAAE,EACA,oBAAAC,CACF,CACF,CAAC,EAGGC,EAAsD,CAAC,EAC7D,UAAWF,KAAWD,EAGpB,GAFAG,EAA0B,KAAKF,CAAO,EAGpCA,EAAQ,QAAQ,OACd,uBAAqB,+BACvBA,EAAQ,QAAQ,WAAW,OACzB,gCAA8B,SAChC,CACA,KAAM,CAAE,QAAAG,CAAQ,EAAI,KAAK,mCAAmC,CAC1D,OAAQ,KAAK,MAAM,OACnB,OAAQ,KAAK,MAAM,OACnB,QAASH,EAAQ,OACnB,CAAC,EAAE,IAAI,EAEP,UAAWI,KAAUD,EAAS,CAC5B,KAAM,CAAE,kBAAmBE,CAAe,EACxC,MAAM,IAAItB,EACR,KAAK,KACL,CACE,GAAG,KAAK,MACR,YAAa,OACb,OAAAqB,CACF,EAEA,KAAK,6BACL,KAAK,8BACL,KAAK,kCACP,EAAE,IAAI,EAMRF,EAA0B,KAAK,GAAGG,CAAc,CAClD,CACF,CAGF,MAAO,CACL,kBAAmBH,EACnB,iBAAAL,CACF,CACF,CACF",
6
+ "names": ["BuildFullContextsTask_exports", "__export", "BuildFullContextsTask", "__toCommonJS", "import_context_module", "import_BuildBaseContexts", "import_BuildSubcontextsTask", "import_ParseNestedTransactionTask", "_api", "_args", "_buildSubcontextsTaskFactory", "api", "args", "_buildBaseContextsTaskFactory", "_preBuildNestedCallDataTaskFactory", "clearSignContexts", "clearSigningType", "clearSignContextsOptional", "contextsWithSubContexts", "context", "subcontextCallbacks", "contextWithNestedContexts", "subsets", "subset", "nestedContexts"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@ledgerhq/context-module"),c=require("@ledgerhq/device-management-kit"),o=require("../../../api/model/ClearSigningType"),b=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),A=require("./BuildBaseContexts"),l=require("./BuildFullContextsTask"),N=require("./BuildSubcontextsTask"),g=require("./ParseNestedTransactionTask");describe("BuildFullContextsTask",()=>{const n=(0,b.makeDeviceActionInternalApiMock)(),p={},i={},r={},d={blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.0.0"},u={},y={chainId:1,data:"0x",selector:"0x"},x="44'/60'/0'/0/0",T=vi.fn(),C=(a,t)=>({run:T}),s=vi.fn(),S=(a,t)=>({run:s}),k=vi.fn(),I=a=>({run:k});describe("Init",()=>{it("should init with defaults tasks",()=>{const a=new l.BuildFullContextsTask(n,{contextModule:p,mapper:i,parser:r,options:u,appConfig:d,derivationPath:x,subset:y,deviceModelId:c.DeviceModelId.STAX});expect(a).toBeDefined(),expect(a._buildSubcontextsTaskFactory(n,{})).toBeInstanceOf(N.BuildSubcontextsTask),expect(a._buildBaseContextsTaskFactory(n,{})).toBeInstanceOf(A.BuildBaseContexts),expect(a._preBuildNestedCallDataTaskFactory({})).toBeInstanceOf(g.ParseNestedTransactionTask)})}),describe("Happy path",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("should build with no context",async()=>{s.mockReturnValue({clearSignContexts:[],clearSignContextsOptional:[],clearSigningType:o.ClearSigningType.BASIC});const t=await new l.BuildFullContextsTask(n,{contextModule:p,mapper:i,parser:r,options:u,appConfig:d,derivationPath:x,subset:y,deviceModelId:c.DeviceModelId.STAX},C,S,I).run();expect(t).toEqual({clearSignContexts:[],clearSigningType:o.ClearSigningType.BASIC})}),it("should build with multiple contexts and no subcontexts",async()=>{s.mockReturnValueOnce({clearSignContexts:[{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"}],clearSigningType:o.ClearSigningType.EIP7730}),T.mockReturnValue({subcontextCallbacks:[]});const t=await new l.BuildFullContextsTask(n,{contextModule:p,mapper:i,parser:r,options:u,appConfig:d,derivationPath:x,subset:y,deviceModelId:c.DeviceModelId.STAX},C,S,I).run();expect(t).toEqual({clearSignContexts:[{context:{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},subcontextCallbacks:[]},{context:{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},subcontextCallbacks:[]},{context:{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-3"},subcontextCallbacks:[]}],clearSigningType:o.ClearSigningType.EIP7730})}),it("should build with multiple contexts and subcontexts",async()=>{s.mockReturnValueOnce({clearSignContexts:[{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"}],clearSignContextsOptional:[],clearSigningType:o.ClearSigningType.EIP7730}),T.mockReturnValueOnce({subcontextCallbacks:[]}),T.mockReturnValueOnce({subcontextCallbacks:[()=>Promise.resolve({type:e.ClearSignContextType.TOKEN,payload:"payload-3"}),()=>Promise.resolve({type:e.ClearSignContextType.TOKEN,payload:"payload-4"})]});const t=await new l.BuildFullContextsTask(n,{contextModule:p,mapper:i,parser:r,options:u,appConfig:d,derivationPath:x,subset:y,deviceModelId:c.DeviceModelId.STAX},C,S,I).run();expect(t.clearSignContexts[0]).toEqual({context:{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},subcontextCallbacks:[]}),expect(t.clearSignContexts[1]).toEqual({context:{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2"},subcontextCallbacks:[expect.any(Function),expect.any(Function)]}),await expect(t.clearSignContexts[1].subcontextCallbacks[0]()).resolves.toEqual({type:e.ClearSignContextType.TOKEN,payload:"payload-3"}),await expect(t.clearSignContexts[1].subcontextCallbacks[1]()).resolves.toEqual({type:e.ClearSignContextType.TOKEN,payload:"payload-4"})}),it("should build with nested contexts",async()=>{s.mockReturnValueOnce({clearSignContexts:[{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2",reference:{type:e.ClearSignContextReferenceType.CALLDATA,subset:{chainId:1,data:"0x",selector:"0x"}}}],clearSigningType:o.ClearSigningType.EIP7730}),s.mockReturnValueOnce({clearSignContexts:[{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-3"},{type:e.ClearSignContextType.TOKEN,payload:"payload-4"}],clearSignContextsOptional:[],clearSigningType:o.ClearSigningType.EIP7730}),T.mockReturnValue({subcontextCallbacks:[]}),k.mockReturnValue({subsets:[{chainId:1,data:"0x",selector:"0x"}]});const t=await new l.BuildFullContextsTask(n,{contextModule:p,mapper:i,parser:r,options:u,appConfig:d,derivationPath:x,subset:y,deviceModelId:c.DeviceModelId.STAX},C,S,I).run();expect(t).toEqual({clearSignContexts:expect.any(Array),clearSigningType:o.ClearSigningType.EIP7730}),expect(t.clearSignContexts[0]).toEqual({context:{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-1"},subcontextCallbacks:[]}),expect(t.clearSignContexts[1]).toEqual({context:{type:e.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"payload-2",reference:{type:e.ClearSignContextReferenceType.CALLDATA,subset:{chainId:1,data:"0x",selector:"0x"}}},subcontextCallbacks:[]}),expect(t.clearSignContexts[2]).toEqual({context:{type:e.ClearSignContextType.TRANSACTION_INFO,payload:"payload-3"},subcontextCallbacks:[]}),expect(t.clearSignContexts[3]).toEqual({context:{type:e.ClearSignContextType.TOKEN,payload:"payload-4"},subcontextCallbacks:[]})})})});
2
+ //# sourceMappingURL=BuildFullContextsTask.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/BuildFullContextsTask.test.ts"],
4
+ "sourcesContent": ["import {\n ClearSignContextReferenceType,\n ClearSignContextType,\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n type InternalApi,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type TransactionOptions } from \"@api/index\";\nimport { ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport {\n BuildBaseContexts,\n type BuildBaseContextsArgs,\n} from \"./BuildBaseContexts\";\nimport { BuildFullContextsTask } from \"./BuildFullContextsTask\";\nimport {\n BuildSubcontextsTask,\n type BuildSubcontextsTaskArgs,\n} from \"./BuildSubcontextsTask\";\nimport {\n ParseNestedTransactionTask,\n type ParseNestedTransactionTaskArgs,\n} from \"./ParseNestedTransactionTask\";\n\ndescribe(\"BuildFullContextsTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {} as ContextModule;\n const mapperMock = {} as TransactionMapperService;\n const parserMock = {} as TransactionParserService;\n\n const defaultAppConfig: GetConfigCommandResponse = {\n blindSigningEnabled: false,\n web3ChecksEnabled: false,\n web3ChecksOptIn: false,\n version: \"1.0.0\",\n };\n const defaultOptions: TransactionOptions = {};\n const defaultSubset: TransactionSubset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n };\n const defaultDerivationPath = \"44'/60'/0'/0/0\";\n\n const buildSubContextTaskRunMock = vi.fn();\n const buildSubcontextsTaskFactory = (\n _api: InternalApi,\n _args: BuildSubcontextsTaskArgs,\n ) =>\n ({\n run: buildSubContextTaskRunMock,\n }) as unknown as BuildSubcontextsTask;\n\n const buildBaseContextsTaskRunMock = vi.fn();\n const buildBaseContextsTaskFactory = (\n _api: InternalApi,\n _args: BuildBaseContextsArgs,\n ) =>\n ({\n run: buildBaseContextsTaskRunMock,\n }) as unknown as BuildBaseContexts;\n\n const parseNestedTransactionTaskRunMock = vi.fn();\n const parseNestedTransactionTaskFactory = (\n _args: ParseNestedTransactionTaskArgs,\n ) =>\n ({\n run: parseNestedTransactionTaskRunMock,\n }) as unknown as ParseNestedTransactionTask;\n\n describe(\"Init\", () => {\n it(\"should init with defaults tasks\", () => {\n const task = new BuildFullContextsTask(apiMock, {\n contextModule: contextModuleMock,\n mapper: mapperMock,\n parser: parserMock,\n options: defaultOptions,\n appConfig: defaultAppConfig,\n derivationPath: defaultDerivationPath,\n subset: defaultSubset,\n deviceModelId: DeviceModelId.STAX,\n });\n\n expect(task).toBeDefined();\n expect(\n task[\"_buildSubcontextsTaskFactory\"](\n apiMock,\n {} as BuildSubcontextsTaskArgs,\n ),\n ).toBeInstanceOf(BuildSubcontextsTask);\n expect(\n task[\"_buildBaseContextsTaskFactory\"](\n apiMock,\n {} as BuildBaseContextsArgs,\n ),\n ).toBeInstanceOf(BuildBaseContexts);\n expect(\n task[\"_preBuildNestedCallDataTaskFactory\"](\n {} as ParseNestedTransactionTaskArgs,\n ),\n ).toBeInstanceOf(ParseNestedTransactionTask);\n });\n });\n\n describe(\"Happy path\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should build with no context\", async () => {\n // GIVEN\n buildBaseContextsTaskRunMock.mockReturnValue({\n clearSignContexts: [],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n\n const task = new BuildFullContextsTask(\n apiMock,\n {\n contextModule: contextModuleMock,\n mapper: mapperMock,\n parser: parserMock,\n options: defaultOptions,\n appConfig: defaultAppConfig,\n derivationPath: defaultDerivationPath,\n subset: defaultSubset,\n deviceModelId: DeviceModelId.STAX,\n },\n buildSubcontextsTaskFactory,\n buildBaseContextsTaskFactory,\n parseNestedTransactionTaskFactory,\n );\n\n // WHEN\n const result = await task.run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [],\n clearSigningType: ClearSigningType.BASIC,\n });\n });\n\n it(\"should build with multiple contexts and no subcontexts\", async () => {\n // GIVEN\n buildBaseContextsTaskRunMock.mockReturnValueOnce({\n clearSignContexts: [\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.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n ],\n clearSigningType: ClearSigningType.EIP7730,\n });\n buildSubContextTaskRunMock.mockReturnValue({\n subcontextCallbacks: [],\n });\n\n const task = new BuildFullContextsTask(\n apiMock,\n {\n contextModule: contextModuleMock,\n mapper: mapperMock,\n parser: parserMock,\n options: defaultOptions,\n appConfig: defaultAppConfig,\n derivationPath: defaultDerivationPath,\n subset: defaultSubset,\n deviceModelId: DeviceModelId.STAX,\n },\n buildSubcontextsTaskFactory,\n buildBaseContextsTaskFactory,\n parseNestedTransactionTaskFactory,\n );\n\n // WHEN\n const result = await task.run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n subcontextCallbacks: [],\n },\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-3\",\n },\n subcontextCallbacks: [],\n },\n ],\n clearSigningType: ClearSigningType.EIP7730,\n });\n });\n\n it(\"should build with multiple contexts and subcontexts\", async () => {\n // GIVEN\n buildBaseContextsTaskRunMock.mockReturnValueOnce({\n clearSignContexts: [\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 clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.EIP7730,\n });\n buildSubContextTaskRunMock.mockReturnValueOnce({\n subcontextCallbacks: [],\n });\n buildSubContextTaskRunMock.mockReturnValueOnce({\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload-3\",\n }),\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload-4\",\n }),\n ],\n });\n\n const task = new BuildFullContextsTask(\n apiMock,\n {\n contextModule: contextModuleMock,\n mapper: mapperMock,\n parser: parserMock,\n options: defaultOptions,\n appConfig: defaultAppConfig,\n derivationPath: defaultDerivationPath,\n subset: defaultSubset,\n deviceModelId: DeviceModelId.STAX,\n },\n buildSubcontextsTaskFactory,\n buildBaseContextsTaskFactory,\n parseNestedTransactionTaskFactory,\n );\n\n // WHEN\n const result = await task.run();\n\n // THEN\n expect(result.clearSignContexts[0]).toEqual({\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n subcontextCallbacks: [],\n });\n expect(result.clearSignContexts[1]).toEqual({\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n },\n subcontextCallbacks: [expect.any(Function), expect.any(Function)],\n });\n await expect(\n result.clearSignContexts[1]!.subcontextCallbacks[0]!(),\n ).resolves.toEqual({\n type: ClearSignContextType.TOKEN,\n payload: \"payload-3\",\n });\n await expect(\n result.clearSignContexts[1]!.subcontextCallbacks[1]!(),\n ).resolves.toEqual({\n type: ClearSignContextType.TOKEN,\n payload: \"payload-4\",\n });\n });\n\n it(\"should build with nested contexts\", async () => {\n // GIVEN\n buildBaseContextsTaskRunMock.mockReturnValueOnce({\n clearSignContexts: [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n subset: {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n },\n },\n },\n ],\n clearSigningType: ClearSigningType.EIP7730,\n });\n // nested context\n buildBaseContextsTaskRunMock.mockReturnValueOnce({\n clearSignContexts: [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-3\",\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-4\",\n },\n ],\n clearSignContextsOptional: [],\n clearSigningType: ClearSigningType.EIP7730,\n });\n buildSubContextTaskRunMock.mockReturnValue({\n subcontextCallbacks: [],\n });\n parseNestedTransactionTaskRunMock.mockReturnValue({\n subsets: [\n {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n },\n ],\n });\n\n const task = new BuildFullContextsTask(\n apiMock,\n {\n contextModule: contextModuleMock,\n mapper: mapperMock,\n parser: parserMock,\n options: defaultOptions,\n appConfig: defaultAppConfig,\n derivationPath: defaultDerivationPath,\n subset: defaultSubset,\n deviceModelId: DeviceModelId.STAX,\n },\n buildSubcontextsTaskFactory,\n buildBaseContextsTaskFactory,\n parseNestedTransactionTaskFactory,\n );\n\n // WHEN\n const result = await task.run();\n\n // THEN\n expect(result).toEqual({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n clearSignContexts: expect.any(Array),\n clearSigningType: ClearSigningType.EIP7730,\n });\n expect(result.clearSignContexts[0]).toEqual({\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-1\",\n },\n subcontextCallbacks: [],\n });\n expect(result.clearSignContexts[1]).toEqual({\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-2\",\n reference: {\n type: ClearSignContextReferenceType.CALLDATA,\n subset: {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n },\n },\n },\n subcontextCallbacks: [],\n });\n expect(result.clearSignContexts[2]).toEqual({\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"payload-3\",\n },\n subcontextCallbacks: [],\n });\n expect(result.clearSignContexts[3]).toEqual({\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-4\",\n },\n subcontextCallbacks: [],\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_context_module", "import_device_management_kit", "import_ClearSigningType", "import_makeInternalApi", "import_BuildBaseContexts", "import_BuildFullContextsTask", "import_BuildSubcontextsTask", "import_ParseNestedTransactionTask", "apiMock", "contextModuleMock", "mapperMock", "parserMock", "defaultAppConfig", "defaultOptions", "defaultSubset", "defaultDerivationPath", "buildSubContextTaskRunMock", "buildSubcontextsTaskFactory", "_api", "_args", "buildBaseContextsTaskRunMock", "buildBaseContextsTaskFactory", "parseNestedTransactionTaskRunMock", "parseNestedTransactionTaskFactory", "task", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var C=(s,e)=>{for(var o in e)a(s,o,{get:e[o],enumerable:!0})},f=(s,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of c(e))!p.call(s,t)&&t!==o&&a(s,t,{get:()=>e[t],enumerable:!(n=l(e,t))||n.enumerable});return s};var g=s=>f(a({},"__esModule",{value:!0}),s);var S={};C(S,{BuildSafeAddressContextTask:()=>u});module.exports=g(S);var r=require("@ledgerhq/context-module"),d=require("@ledgerhq/device-management-kit"),i=require("../../app-binder/command/GetChallengeCommand");class u{constructor(e,o){this._api=e;this._args=o}async run(){const e=await this._api.sendCommand(new i.GetChallengeCommand);if(!(0,d.isSuccessCommandResult)(e))throw new Error("Failed to get challenge");const o=e.data.challenge,n=await this._args.contextModule.getContexts({safeContractAddress:this._args.safeContractAddress,chainId:this._args.options.chainId,deviceModelId:this._args.deviceModelId,challenge:o},[r.ClearSignContextType.SAFE,r.ClearSignContextType.SIGNER]);if(n.forEach(t=>{if(t.type===r.ClearSignContextType.ERROR)throw new Error(t.error.message)}),n.length!==2||n.find(t=>t.type===r.ClearSignContextType.SAFE)===void 0||n.find(t=>t.type===r.ClearSignContextType.SIGNER)===void 0)throw new Error("Invalid safe address contexts");return{clearSignContexts:n}}}0&&(module.exports={BuildSafeAddressContextTask});
2
+ //# sourceMappingURL=BuildSafeAddressContextTask.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/task/BuildSafeAddressContextTask.ts"],
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\n\nexport type BuildSafeAddressContextTaskArgs = {\n readonly contextModule: ContextModule;\n readonly safeContractAddress: string;\n readonly options: SafeAddressOptions;\n readonly deviceModelId: DeviceModelId;\n};\n\nexport type BuildSafeAddressContextTaskResult = {\n readonly clearSignContexts: ClearSignContextSuccess[];\n};\n\nexport class BuildSafeAddressContextTask {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: BuildSafeAddressContextTaskArgs,\n ) {}\n\n async run(): Promise<BuildSafeAddressContextTaskResult> {\n const challengeResponse = await this._api.sendCommand(\n new GetChallengeCommand(),\n );\n\n if (!isSuccessCommandResult(challengeResponse)) {\n throw new Error(\"Failed to get challenge\");\n }\n\n const challenge = challengeResponse.data.challenge;\n\n const contexts = await this._args.contextModule.getContexts(\n {\n safeContractAddress: this._args.safeContractAddress,\n chainId: this._args.options.chainId,\n deviceModelId: this._args.deviceModelId,\n challenge,\n },\n [ClearSignContextType.SAFE, ClearSignContextType.SIGNER],\n );\n\n contexts.forEach((context) => {\n if (context.type === ClearSignContextType.ERROR) {\n throw new Error(context.error.message);\n }\n });\n\n // should contain one SAFE and one SIGNER context\n if (\n contexts.length !== 2 ||\n contexts.find((context) => context.type === ClearSignContextType.SAFE) ===\n undefined ||\n contexts.find(\n (context) => context.type === ClearSignContextType.SIGNER,\n ) === undefined\n ) {\n throw new Error(\"Invalid safe address contexts\");\n }\n\n return {\n clearSignContexts: contexts as ClearSignContextSuccess[],\n };\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,oCACPC,EAIO,2CAGPC,EAAoC,4DAa7B,MAAMJ,CAA4B,CACvC,YACmBK,EACAC,EACjB,CAFiB,UAAAD,EACA,WAAAC,CAChB,CAEH,MAAM,KAAkD,CACtD,MAAMC,EAAoB,MAAM,KAAK,KAAK,YACxC,IAAI,qBACN,EAEA,GAAI,IAAC,0BAAuBA,CAAiB,EAC3C,MAAM,IAAI,MAAM,yBAAyB,EAG3C,MAAMC,EAAYD,EAAkB,KAAK,UAEnCE,EAAW,MAAM,KAAK,MAAM,cAAc,YAC9C,CACE,oBAAqB,KAAK,MAAM,oBAChC,QAAS,KAAK,MAAM,QAAQ,QAC5B,cAAe,KAAK,MAAM,cAC1B,UAAAD,CACF,EACA,CAAC,uBAAqB,KAAM,uBAAqB,MAAM,CACzD,EASA,GAPAC,EAAS,QAASC,GAAY,CAC5B,GAAIA,EAAQ,OAAS,uBAAqB,MACxC,MAAM,IAAI,MAAMA,EAAQ,MAAM,OAAO,CAEzC,CAAC,EAICD,EAAS,SAAW,GACpBA,EAAS,KAAMC,GAAYA,EAAQ,OAAS,uBAAqB,IAAI,IACnE,QACFD,EAAS,KACNC,GAAYA,EAAQ,OAAS,uBAAqB,MACrD,IAAM,OAEN,MAAM,IAAI,MAAM,+BAA+B,EAGjD,MAAO,CACL,kBAAmBD,CACrB,CACF,CACF",
6
+ "names": ["BuildSafeAddressContextTask_exports", "__export", "BuildSafeAddressContextTask", "__toCommonJS", "import_context_module", "import_device_management_kit", "import_GetChallengeCommand", "_api", "_args", "challengeResponse", "challenge", "contexts", "context"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=require("@ledgerhq/context-module"),s=require("@ledgerhq/device-management-kit"),p=require("../../app-binder/device-action/__test-utils__/makeInternalApi"),l=require("./BuildSafeAddressContextTask");describe("BuildSafeAddressContextTask",()=>{const o=(0,p.makeDeviceActionInternalApiMock)(),e={getContexts:vi.fn()},k="0x12345678",d="0x1234567890123456789012345678901234567890",r=1,i=(0,s.CommandResultFactory)({data:{challenge:k}}),S=(0,s.CommandResultFactory)({data:void 0,error:{}}),u={type:a.ClearSignContextType.SAFE,payload:"safe_payload"},C={type:a.ClearSignContextType.SIGNER,payload:"signer_payload"};beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{it("should successfully build safe address contexts with valid SAFE and SIGNER contexts",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([u,C]);const c=await new l.BuildSafeAddressContextTask(o,t).run();expect(c).toEqual({clearSignContexts:[u,C]}),expect(o.sendCommand).toHaveBeenCalledTimes(1),expect(e.getContexts).toHaveBeenCalledWith({safeContractAddress:d,chainId:r,deviceModelId:s.DeviceModelId.FLEX,challenge:k},[a.ClearSignContextType.SAFE,a.ClearSignContextType.SIGNER])}),it("should include certificates when provided in contexts",async()=>{const t={type:a.ClearSignContextType.SAFE,payload:"safe_payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},n={type:a.ClearSignContextType.SIGNER,payload:"signer_payload",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}},c={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([t,n]);const g=await new l.BuildSafeAddressContextTask(o,c).run();expect(g).toEqual({clearSignContexts:[t,n]})})}),describe("error handling",()=>{it("should throw error when GetChallengeCommand fails",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(S);const n=new l.BuildSafeAddressContextTask(o,t);await expect(n.run()).rejects.toThrow("Failed to get challenge")}),it("should throw error when context contains ERROR type",async()=>{const t={type:a.ClearSignContextType.ERROR,error:new Error("Context error")},n={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([t,C]);const c=new l.BuildSafeAddressContextTask(o,n);await expect(c.run()).rejects.toThrow("Context error")}),it("should throw error when only one context is returned",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([u]);const n=new l.BuildSafeAddressContextTask(o,t);await expect(n.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error when no contexts are returned",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([]);const n=new l.BuildSafeAddressContextTask(o,t);await expect(n.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error when more than two contexts are returned",async()=>{const t={type:a.ClearSignContextType.TOKEN,payload:"extra_payload"},n={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([u,C,t]);const c=new l.BuildSafeAddressContextTask(o,n);await expect(c.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error when SAFE context is missing",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([C,C]);const n=new l.BuildSafeAddressContextTask(o,t);await expect(n.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error when SIGNER context is missing",async()=>{const t={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([u,u]);const n=new l.BuildSafeAddressContextTask(o,t);await expect(n.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error when contexts are of wrong types",async()=>{const t={type:a.ClearSignContextType.TOKEN,payload:"token_payload"},n={type:a.ClearSignContextType.NFT,payload:"nft_payload"},c={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([t,n]);const x=new l.BuildSafeAddressContextTask(o,c);await expect(x.run()).rejects.toThrow("Invalid safe address contexts")}),it("should throw error with multiple ERROR contexts",async()=>{const t={type:a.ClearSignContextType.ERROR,error:new Error("First error")},n={type:a.ClearSignContextType.ERROR,error:new Error("Second error")},c={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([t,n]);const x=new l.BuildSafeAddressContextTask(o,c);await expect(x.run()).rejects.toThrow("First error")})}),describe("device model variants",()=>{it.each([[s.DeviceModelId.NANO_S,"Nano S"],[s.DeviceModelId.NANO_SP,"Nano S Plus"],[s.DeviceModelId.NANO_X,"Nano X"],[s.DeviceModelId.FLEX,"Flex"],[s.DeviceModelId.STAX,"Stax"]])("should successfully build contexts for %s device",async(t,n)=>{const c={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:t};o.sendCommand.mockResolvedValue(i),e.getContexts=vi.fn().mockResolvedValue([u,C]);const g=await new l.BuildSafeAddressContextTask(o,c).run();expect(g).toEqual({clearSignContexts:[u,C]}),expect(e.getContexts).toHaveBeenCalledWith(expect.objectContaining({deviceModelId:t}),[a.ClearSignContextType.SAFE,a.ClearSignContextType.SIGNER])})}),describe("challenge handling",()=>{it("should pass the correct challenge to contextModule",async()=>{const t="0xabcdef12",n={contextModule:e,safeContractAddress:d,options:{chainId:r},deviceModelId:s.DeviceModelId.FLEX};o.sendCommand.mockResolvedValue((0,s.CommandResultFactory)({data:{challenge:t}})),e.getContexts=vi.fn().mockResolvedValue([u,C]),await new l.BuildSafeAddressContextTask(o,n).run(),expect(e.getContexts).toHaveBeenCalledWith(expect.objectContaining({challenge:t}),[a.ClearSignContextType.SAFE,a.ClearSignContextType.SIGNER])})})});
2
+ //# sourceMappingURL=BuildSafeAddressContextTask.test.js.map