@ledgerhq/device-signer-kit-ethereum 1.1.0 → 1.2.0

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 (487) hide show
  1. package/README.md +162 -371
  2. package/lib/cjs/api/SignerEth.js +1 -1
  3. package/lib/cjs/api/SignerEth.js.map +1 -1
  4. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +1 -1
  6. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +1 -1
  8. package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js.map +1 -1
  10. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  12. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  13. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +1 -1
  14. package/lib/cjs/api/index.js +1 -1
  15. package/lib/cjs/api/index.js.map +2 -2
  16. package/lib/cjs/api/model/TransactionType.js +2 -0
  17. package/lib/cjs/api/model/TransactionType.js.map +7 -0
  18. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  19. package/lib/cjs/internal/DefaultSignerEth.js.map +2 -2
  20. package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
  21. package/lib/cjs/internal/DefaultSignerEth.test.js.map +2 -2
  22. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  23. package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  25. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  26. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  27. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  28. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +3 -3
  30. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  32. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  35. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  36. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  37. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  39. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  48. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  49. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +3 -3
  50. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  51. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  52. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  53. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +3 -3
  54. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  55. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  56. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +3 -3
  58. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  61. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +3 -3
  62. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  63. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +3 -3
  64. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  65. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  66. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  69. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
  72. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  74. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +3 -3
  76. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
  77. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  79. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  80. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
  81. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  83. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  84. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  85. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +3 -3
  86. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  87. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  88. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.js +2 -0
  89. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.js.map +7 -0
  90. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js +2 -0
  91. package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js.map +7 -0
  92. package/lib/cjs/internal/app-binder/constant/plugins.js +2 -0
  93. package/lib/cjs/internal/app-binder/constant/plugins.js.map +7 -0
  94. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  95. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  96. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  97. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  99. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  100. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  101. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  102. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  103. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  104. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  105. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  106. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  107. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  108. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  109. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  110. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  111. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  112. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  113. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  114. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  115. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  116. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  117. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  118. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  119. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  120. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  121. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +2 -2
  122. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  123. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +2 -2
  124. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
  125. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
  126. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
  127. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
  128. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
  129. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
  130. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
  131. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
  132. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
  133. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
  134. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.js +1 -1
  135. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.js.map +2 -2
  136. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
  137. package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
  138. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  139. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +2 -2
  140. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  141. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
  142. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.js +1 -1
  143. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.js.map +2 -2
  144. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
  145. package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
  146. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  147. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  148. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  149. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  150. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  151. package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  152. package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
  153. package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
  154. package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
  155. package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
  156. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +2 -0
  157. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +7 -0
  158. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +2 -0
  159. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +7 -0
  160. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +1 -1
  161. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +1 -1
  162. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  163. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +2 -2
  164. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
  165. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
  166. package/lib/cjs/internal/transaction/service/mapper/model/TransactionMapperResult.js +1 -1
  167. package/lib/cjs/internal/transaction/service/mapper/model/TransactionMapperResult.js.map +1 -1
  168. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  169. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  170. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  171. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  172. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.js +1 -1
  173. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.js.map +2 -2
  174. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
  175. package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js.map +3 -3
  176. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  177. package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  178. package/lib/cjs/package.json +12 -12
  179. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  180. package/lib/esm/api/SignerEthBuilder.test.js.map +1 -1
  181. package/lib/esm/api/index.js +1 -1
  182. package/lib/esm/api/index.js.map +2 -2
  183. package/lib/esm/api/model/TransactionType.js +2 -0
  184. package/lib/esm/api/model/TransactionType.js.map +7 -0
  185. package/lib/esm/internal/DefaultSignerEth.js.map +2 -2
  186. package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
  187. package/lib/esm/internal/DefaultSignerEth.test.js.map +2 -2
  188. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
  189. package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
  190. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  191. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  192. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  193. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  194. package/lib/esm/internal/app-binder/command/GetAddressCommand.js +1 -1
  195. package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +3 -3
  196. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  197. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  198. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
  199. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +3 -3
  200. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  201. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  202. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  203. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +3 -3
  204. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  205. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  206. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  207. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +3 -3
  208. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  209. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +3 -3
  210. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  211. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +3 -3
  212. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  213. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  214. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  215. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +3 -3
  216. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  217. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  218. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  219. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +3 -3
  220. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  221. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  222. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  223. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +3 -3
  224. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  225. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +2 -2
  226. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  227. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +3 -3
  228. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  229. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +3 -3
  230. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  231. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  232. package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
  233. package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +3 -3
  234. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +1 -1
  235. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  236. package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
  237. package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +3 -3
  238. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  239. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  240. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  241. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +3 -3
  242. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
  243. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +3 -3
  244. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  245. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
  246. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
  247. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +3 -3
  248. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  249. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  250. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  251. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +3 -3
  252. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  253. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  254. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.js +2 -0
  255. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.js.map +7 -0
  256. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js +2 -0
  257. package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js.map +7 -0
  258. package/lib/esm/internal/app-binder/constant/plugins.js +2 -0
  259. package/lib/esm/internal/app-binder/constant/plugins.js.map +7 -0
  260. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  261. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  262. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  263. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  264. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  265. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  266. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  267. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  268. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  269. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  270. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  271. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  272. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  273. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  274. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  275. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  276. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  277. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  278. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  279. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  280. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  281. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  282. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  283. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  284. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  285. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  286. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  287. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +2 -2
  288. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  289. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +2 -2
  290. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
  291. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
  292. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
  293. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
  294. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
  295. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
  296. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
  297. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
  298. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +1 -1
  299. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +2 -2
  300. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.js +1 -1
  301. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.js.map +2 -2
  302. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
  303. package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
  304. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  305. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +2 -2
  306. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  307. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
  308. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.js +1 -1
  309. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.js.map +2 -2
  310. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
  311. package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
  312. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  313. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  314. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  315. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +2 -2
  316. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
  317. package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
  318. package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
  319. package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
  320. package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
  321. package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
  322. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +2 -0
  323. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +7 -0
  324. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +2 -0
  325. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +7 -0
  326. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  327. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +2 -2
  328. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
  329. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
  330. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  331. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
  332. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  333. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
  334. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.js +1 -1
  335. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.js.map +2 -2
  336. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
  337. package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js.map +3 -3
  338. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
  339. package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
  340. package/lib/esm/package.json +12 -12
  341. package/lib/types/api/SignerEth.d.ts +1 -2
  342. package/lib/types/api/SignerEth.d.ts.map +1 -1
  343. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +3 -2
  344. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -1
  345. package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts +3 -11
  346. package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts.map +1 -1
  347. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +4 -4
  348. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  349. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +3 -2
  350. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  351. package/lib/types/api/index.d.ts +2 -2
  352. package/lib/types/api/index.d.ts.map +1 -1
  353. package/lib/types/api/model/{Transaction.d.ts → TransactionType.d.ts} +1 -4
  354. package/lib/types/api/model/TransactionType.d.ts.map +1 -0
  355. package/lib/types/internal/DefaultSignerEth.d.ts +1 -2
  356. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  357. package/lib/types/internal/app-binder/EthAppBinder.d.ts +1 -2
  358. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  359. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +5 -3
  360. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
  361. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +4 -2
  362. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
  363. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +4 -2
  364. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
  365. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +4 -3
  366. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
  367. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +4 -2
  368. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
  369. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +4 -2
  370. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
  371. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +4 -2
  372. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
  373. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +4 -2
  374. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
  375. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +4 -2
  376. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  377. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +4 -2
  378. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
  379. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +4 -2
  380. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
  381. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +5 -7
  382. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
  383. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +5 -7
  384. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
  385. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +5 -3
  386. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
  387. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +5 -3
  388. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
  389. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +5 -3
  390. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
  391. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +4 -2
  392. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
  393. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +4 -2
  394. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
  395. package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts +8 -0
  396. package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -0
  397. package/lib/types/internal/app-binder/command/utils/ethAppErrors.test.d.ts +2 -0
  398. package/lib/types/internal/app-binder/command/utils/ethAppErrors.test.d.ts.map +1 -0
  399. package/lib/types/internal/app-binder/constant/plugins.d.ts +2 -0
  400. package/lib/types/internal/app-binder/constant/plugins.d.ts.map +1 -0
  401. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +9 -9
  402. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  403. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +11 -3
  404. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  405. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
  406. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  407. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  408. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
  409. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  410. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  411. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +3 -3
  412. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
  413. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +12 -5
  414. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  415. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +3 -6
  416. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
  417. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +54 -12
  418. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +1 -1
  419. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +6 -6
  420. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +1 -1
  421. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +3 -2
  422. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -1
  423. package/lib/types/internal/app-binder/task/SendEIP712StructImplemTask.d.ts +2 -1
  424. package/lib/types/internal/app-binder/task/SendEIP712StructImplemTask.d.ts.map +1 -1
  425. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -1
  426. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  427. package/lib/types/internal/app-binder/task/SendSignPersonalMessageTask.d.ts +2 -1
  428. package/lib/types/internal/app-binder/task/SendSignPersonalMessageTask.d.ts.map +1 -1
  429. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +3 -2
  430. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
  431. package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
  432. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +7 -0
  433. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +1 -0
  434. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +2 -0
  435. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +1 -0
  436. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +1 -2
  437. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +1 -1
  438. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +1 -2
  439. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
  440. package/lib/types/internal/transaction/service/mapper/model/TransactionMapperResult.d.ts +1 -1
  441. package/lib/types/internal/transaction/service/mapper/model/TransactionMapperResult.d.ts.map +1 -1
  442. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
  443. package/lib/types/internal/transaction/use-case/SignTransactionUseCase.d.ts +1 -2
  444. package/lib/types/internal/transaction/use-case/SignTransactionUseCase.d.ts.map +1 -1
  445. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  446. package/package.json +14 -14
  447. package/lib/cjs/api/model/Transaction.js +0 -2
  448. package/lib/cjs/api/model/Transaction.js.map +0 -7
  449. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
  450. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
  451. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
  452. package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
  453. package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.js +0 -2
  454. package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.js.map +0 -7
  455. package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js +0 -2
  456. package/lib/cjs/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js.map +0 -7
  457. package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.js +0 -2
  458. package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.js.map +0 -7
  459. package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js +0 -2
  460. package/lib/cjs/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js.map +0 -7
  461. package/lib/esm/api/model/Transaction.js +0 -2
  462. package/lib/esm/api/model/Transaction.js.map +0 -7
  463. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
  464. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
  465. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
  466. package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
  467. package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.js +0 -2
  468. package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.js.map +0 -7
  469. package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js +0 -2
  470. package/lib/esm/internal/transaction/service/mapper/EthersV5TransactionMapper.test.js.map +0 -7
  471. package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.js +0 -2
  472. package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.js.map +0 -7
  473. package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js +0 -2
  474. package/lib/esm/internal/transaction/service/mapper/EthersV6TransactionMapper.test.js.map +0 -7
  475. package/lib/types/api/model/Transaction.d.ts.map +0 -1
  476. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts +0 -17
  477. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts.map +0 -1
  478. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts +0 -2
  479. package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts.map +0 -1
  480. package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.d.ts +0 -10
  481. package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.d.ts.map +0 -1
  482. package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.test.d.ts +0 -2
  483. package/lib/types/internal/transaction/service/mapper/EthersV5TransactionMapper.test.d.ts.map +0 -1
  484. package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.d.ts +0 -9
  485. package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.d.ts.map +0 -1
  486. package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.test.d.ts +0 -2
  487. package/lib/types/internal/transaction/service/mapper/EthersV6TransactionMapper.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/BuildTransactionContextTask.test.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers-v6\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { type TransactionMapperResult } from \"@internal/transaction/service/mapper/model/TransactionMapperResult\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n} from \"./BuildTransactionContextTask\";\n\ndescribe(\"BuildTransactionContextTask\", () => {\n const contextModuleMock = {\n getContext: jest.fn(),\n getContexts: jest.fn(),\n getTypedDataFilters: jest.fn(),\n };\n const mapperMock = {\n mapTransactionToSubset: jest.fn(),\n };\n const defaultOptions = {\n domain: \"domain-name.eth\",\n };\n let defaultTransaction: Transaction;\n let defaultArgs: BuildTransactionContextTaskArgs;\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n defaultTransaction = new Transaction();\n defaultTransaction.chainId = 1n;\n defaultTransaction.nonce = 0;\n defaultTransaction.data = \"0x\";\n\n defaultArgs = {\n contextModule: contextModuleMock,\n mapper: mapperMock as unknown as TransactionMapperService,\n transaction: defaultTransaction,\n options: defaultOptions,\n challenge: \"challenge\",\n };\n });\n\n it(\"should build the transaction context without clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should build the transaction context with clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should build the transaction context with generic-parser context\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 },\n {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload-4\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-1\",\n transactionFields: [...clearSignContexts.slice(1)],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should call the mapper with the transaction\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n await new BuildTransactionContextTask(apiMock, defaultArgs).run();\n\n // THEN\n expect(mapperMock.mapTransactionToSubset).toHaveBeenCalledWith(\n defaultTransaction,\n );\n });\n\n it(\"should call the context module with the correct parameters\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n await new BuildTransactionContextTask(apiMock, defaultArgs).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith({\n challenge: \"challenge\",\n domain: \"domain-name.eth\",\n ...mapperResult.subset,\n });\n });\n\n it(\"should throw an error if the mapper returns an error\", async () => {\n // GIVEN\n const error = new Error(\"error\");\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Left(error));\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Ethereum\", version: \"1.12.0\" },\n });\n\n // WHEN\n const task = new BuildTransactionContextTask(apiMock, defaultArgs);\n\n // THEN\n await expect(task.run()).rejects.toThrow(error);\n });\n\n it(\"should exclude error contexts from the result\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result on old apps\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"transaction_info\",\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 },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result if no transaction_info was found\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude legacy contexts from the result for generic-parser transactions\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 },\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-2\",\n transactionFields: [clearSignContexts[3]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["ClearSignContextType", "DeviceSessionStateType", "DeviceStatus", "Transaction", "Left", "Right", "makeDeviceActionInternalApiMock", "BuildTransactionContextTask", "contextModuleMock", "mapperMock", "defaultOptions", "defaultTransaction", "defaultArgs", "apiMock", "serializedTransaction", "clearSignContexts", "mapperResult", "result", "error", "task"]
4
+ "sourcesContent": ["import {\n type ClearSignContext,\n ClearSignContextType,\n type PkiCertificate,\n} from \"@ledgerhq/context-module\";\nimport {\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ETHEREUM_PLUGINS } from \"@internal/app-binder/constant/plugins\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { type TransactionMapperResult } from \"@internal/transaction/service/mapper/model/TransactionMapperResult\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\n\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n} from \"./BuildTransactionContextTask\";\n\ndescribe(\"BuildTransactionContextTask\", () => {\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n };\n const mapperMock = {\n mapTransactionToSubset: 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: BuildTransactionContextTaskArgs;\n const apiMock = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n\n defaultArgs = {\n contextModule: contextModuleMock,\n mapper: mapperMock as unknown as TransactionMapperService,\n transaction: defaultTransaction,\n options: defaultOptions,\n challenge: \"challenge\",\n };\n });\n\n it(\"should build the transaction context without clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should build the transaction context with clear sign contexts\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [\n {\n type: ClearSignContextType.TOKEN,\n payload: \"payload-1\",\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"payload-2\",\n },\n ];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts,\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should build the transaction context with generic-parser context\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-1\",\n transactionInfoCertificate: defaultCertificate,\n transactionFields: [clearSignContexts[1], clearSignContexts[3]],\n transactionEnums: [clearSignContexts[2]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should build the transaction context with generic-parser context and a plugin instead of Ethereum app\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: ETHEREUM_PLUGINS[0]!, version: \"1.15.0\" },\n deviceModelId: DeviceModelId.FLEX,\n });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-1\",\n transactionInfoCertificate: defaultCertificate,\n transactionFields: [clearSignContexts[1], clearSignContexts[3]],\n transactionEnums: [clearSignContexts[2]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should call the mapper with the transaction\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n await new BuildTransactionContextTask(apiMock, defaultArgs).run();\n\n // THEN\n expect(mapperMock.mapTransactionToSubset).toHaveBeenCalledWith(\n defaultTransaction,\n );\n });\n\n it(\"should call the context module with the correct parameters\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\n const clearSignContexts: ClearSignContext[] = [];\n const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n await new BuildTransactionContextTask(apiMock, defaultArgs).run();\n\n // THEN\n expect(contextModuleMock.getContexts).toHaveBeenCalledWith({\n deviceModelId: DeviceModelId.FLEX,\n challenge: \"challenge\",\n domain: \"domain-name.eth\",\n ...mapperResult.subset,\n });\n });\n\n it(\"should throw an error if the mapper returns an error\", async () => {\n // GIVEN\n const error = new Error(\"error\");\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Left(error));\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\n // WHEN\n const task = new BuildTransactionContextTask(apiMock, defaultArgs);\n\n // THEN\n await expect(task.run()).rejects.toThrow(error);\n });\n\n it(\"should exclude error contexts from the result\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result on old apps\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude generic-parser contexts from the result if no transaction_info was found\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 0,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[1], clearSignContexts[3]],\n serializedTransaction,\n chainId: 1,\n transactionType: 0,\n });\n });\n\n it(\"should exclude legacy contexts from the result for generic-parser transactions\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(\n apiMock,\n defaultArgs,\n ).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: {\n transactionInfo: \"payload-2\",\n transactionInfoCertificate: defaultCertificate,\n transactionFields: [clearSignContexts[3]],\n transactionEnums: [clearSignContexts[4]],\n },\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should exclude generic-parser contexts with a nano s device\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(apiMock, {\n ...defaultArgs,\n challenge: null,\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should exclude generic-parser contexts with an old app version\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const result = await new BuildTransactionContextTask(apiMock, {\n ...defaultArgs,\n challenge: null,\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should exclude generic-parser contexts with a non ready device\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 BuildTransactionContextTask(apiMock, {\n ...defaultArgs,\n challenge: null,\n }).run();\n\n // THEN\n expect(result).toEqual({\n clearSignContexts: [clearSignContexts[0]],\n serializedTransaction,\n chainId: 1,\n transactionType: 2,\n });\n });\n\n it(\"should throw an error if the app is not ethereum compatible\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\n contextModuleMock.getContexts.mockResolvedValueOnce(clearSignContexts);\n apiMock.getDeviceSessionState.mockReturnValueOnce({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name: \"Not Ethereum Compatible\", version: \"1.14.0\" },\n deviceModelId: DeviceModelId.FLEX,\n });\n\n // WHEN\n const task = new BuildTransactionContextTask(apiMock, defaultArgs);\n\n // THEN\n await expect(task.run()).rejects.toThrow(\"Unsupported app\");\n });\n\n it(\"should return an error if the transaction info certificate is missing\", async () => {\n // GIVEN\n const serializedTransaction = new Uint8Array([0x01, 0x02, 0x03]);\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 const mapperResult: TransactionMapperResult = {\n subset: { chainId: 1, to: undefined, data: \"0x\" },\n serializedTransaction,\n type: 2,\n };\n mapperMock.mapTransactionToSubset.mockReturnValueOnce(Right(mapperResult));\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 });\n\n // WHEN\n const task = new BuildTransactionContextTask(apiMock, defaultArgs);\n\n // THEN\n await expect(task.run()).rejects.toThrow(\n \"Transaction info certificate is missing\",\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "hexaStringToBuffer", "Transaction", "Left", "Right", "ETHEREUM_PLUGINS", "makeDeviceActionInternalApiMock", "BuildTransactionContextTask", "contextModuleMock", "mapperMock", "defaultOptions", "defaultTransaction", "defaultCertificate", "defaultArgs", "apiMock", "serializedTransaction", "clearSignContexts", "mapperResult", "result", "error", "task"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{VERIFYING_CONTRACT_TOKEN_INDEX as x}from"@ledgerhq/context-module";import{CommandResultFactory as w,isSuccessCommandResult as i}from"@ledgerhq/device-management-kit";import{Maybe as g,Nothing as l}from"purify-ts";import{ProvideTokenInformationCommand as S}from"../../app-binder/command/ProvideTokenInformationCommand";import{Eip712FilterType as o,SendEIP712FilteringCommand as m}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as C,StructDefinitionCommand as h}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as c}from"../../app-binder/command/SendEIP712StructImplemCommand";import{SendEIP712StructImplemTask as y}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueArray as I,TypedDataValueRoot as k}from"../../typed-data/model/Types";const T=5;class J{constructor(e,t){this.api=e;this.args=t}async run(){let e=w({data:void 0});const t=Object.entries(this.args.types).sort(([n],[r])=>n.localeCompare(r));for(const[n,r]of t){if(e=await this.api.sendCommand(new C({command:h.Name,name:n})),!i(e))return e;for(const[s,d]of Object.entries(r))if(e=await this.api.sendCommand(new C({command:h.Field,name:s,type:d})),!i(e))return e}if(this.args.clearSignContext.isJust()&&(e=await this.api.sendCommand(new m({type:o.Activation})),!i(e)))return e;for(const n of this.args.domain)if(e=await this.getImplementationTask(n).run(),!i(e))return e;if(this.args.clearSignContext.isJust()&&(e=await this.api.sendCommand(new m({type:o.MessageInfo,displayName:this.args.clearSignContext.extract().messageInfo.displayName,filtersCount:this.args.clearSignContext.extract().messageInfo.filtersCount,signature:this.args.clearSignContext.extract().messageInfo.signature})),!i(e)))return e;const a={indexes:{},nextIndex:0};for(const n of this.args.message){const r=await this.provideTokenInformation(n,a);if(r.isJust())return r.extract();const s=await this.filterValue(n,a);if(s.isJust()&&!i(s.extract()))return s.extract();if(e=await this.getImplementationTask(n).run(),!i(e))return e;if(this.args.clearSignContext.isJust()&&n.value instanceof I&&n.value.length===0){const p=Object.entries(this.args.clearSignContext.extract().filters).filter(([u,f])=>u.startsWith(`${n.path}.[]`)).map(([u,f])=>f);for(const u of p)if(e=await this.api.sendCommand(new m({type:o.DiscardedPath,path:u.path})),!i(e)||(e=await this.provideFiltering(u,a,!0),!i(e)))return e}}return e}getImplementationTask(e){return e.value instanceof k?new y(this.api,{type:c.ROOT,value:e.value.root}):e.value instanceof I?new y(this.api,{type:c.ARRAY,value:e.value.length}):new y(this.api,{type:c.FIELD,value:e.value.data})}async provideTokenInformation(e,t){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[e.path];if(a!==void 0&&(a.type==="amount"||a.type==="token")&&t.indexes[a.tokenIndex]===void 0){const n=a.tokenIndex,s=this.args.clearSignContext.extract().tokens[n];if(s===void 0)return l;const d=await this.api.sendCommand(new S({payload:s}));if(!i(d))return g.of(d);let{tokenIndex:p}=d.data;t.nextIndex=(p+1)%T,Number(n)===x&&(p=x),t.indexes[Number(n)]=p}}return l}async filterValue(e,t){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[e.path];return a===void 0?l:g.of(await this.provideFiltering(a,t,!1))}return l}async provideFiltering(e,t,a){switch(e.type){case"datetime":return await this.api.sendCommand(new m({type:o.Datetime,discarded:a,displayName:e.displayName,signature:e.signature}));case"raw":return await this.api.sendCommand(new m({type:o.Raw,discarded:a,displayName:e.displayName,signature:e.signature}));case"token":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new m({type:o.Token,discarded:a,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}));case"amount":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new m({type:o.Amount,discarded:a,displayName:e.displayName,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}))}}sanitizeDeviceIndex(e,t){t.indexes[e]===void 0&&(t.indexes[e]=t.nextIndex,t.nextIndex=(t.nextIndex+1)%T)}}export{J as ProvideEIP712ContextTask};
1
+ import{VERIFYING_CONTRACT_TOKEN_INDEX as I}from"@ledgerhq/context-module";import{CommandResultFactory as h,InvalidStatusWordError as w,isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{Maybe as C,Nothing as u}from"purify-ts";import{ProvideTokenInformationCommand as R}from"../../app-binder/command/ProvideTokenInformationCommand";import{Eip712FilterType as d,SendEIP712FilteringCommand as m}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as T,StructDefinitionCommand as S}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as y}from"../../app-binder/command/SendEIP712StructImplemCommand";import{SendEIP712StructImplemTask as f}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueArray as k,TypedDataValueRoot as D}from"../../typed-data/model/Types";const E=5;class j{constructor(e,n){this.api=e;this.args=n}async run(){const e=h({data:void 0}),n=Object.entries(this.args.types).sort(([t],[i])=>t.localeCompare(i));for(const[t,i]of n){const s=await this.api.sendCommand(new T({command:S.Name,name:t}));if(!r(s))return s;for(const[l,o]of Object.entries(i)){const c=await this.api.sendCommand(new T({command:S.Field,name:l,type:o}));if(!r(c))return c}}if(this.args.clearSignContext.isJust()){const t=await this.api.sendCommand(new m({type:d.Activation}));if(!r(t))return t}for(const t of this.args.domain){const s=await this.getImplementationTask(t).run();if(!r(s))return s}if(this.args.clearSignContext.isJust()){const t=this.args.clearSignContext.extract(),i=await this.api.sendCommand(new m({type:d.MessageInfo,displayName:t.messageInfo.displayName,filtersCount:t.messageInfo.filtersCount,signature:t.messageInfo.signature}));if(!r(i))return i}const a={indexes:{},nextIndex:0};for(const t of this.args.message){const i=await this.provideTokenInformation(t,a);if(i.isJust())return i.extract();const s=await this.filterValue(t,a);if(s.isJust()&&!r(s.extract()))return s.extract();const o=await this.getImplementationTask(t).run();if(!r(o))return o;if(this.args.clearSignContext.isJust()&&t.value instanceof k&&t.value.length===0){const v=Object.entries(this.args.clearSignContext.extract().filters).filter(([p])=>p.startsWith(`${t.path}.[]`)).map(([,p])=>p);for(const p of v){const g=await this.api.sendCommand(new m({type:d.DiscardedPath,path:p.path}));if(!r(g))return g;const x=await this.provideFiltering(p,a,!0);if(!r(x))return x}}}return e}getImplementationTask(e){return e.value instanceof D?new f(this.api,{type:y.ROOT,value:e.value.root}):e.value instanceof k?new f(this.api,{type:y.ARRAY,value:e.value.length}):new f(this.api,{type:y.FIELD,value:e.value.data})}async provideTokenInformation(e,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[e.path];if(a!==void 0&&(a.type==="amount"||a.type==="token")&&n.indexes[a.tokenIndex]===void 0){const t=a.tokenIndex,s=this.args.clearSignContext.extract().tokens[t];if(s===void 0)return u;const l=await this.api.sendCommand(new R({payload:s}));if(!r(l))return C.of(l);let{tokenIndex:o}=l.data;n.nextIndex=(o+1)%E,Number(t)===I&&(o=I),n.indexes[Number(t)]=o}}return u}async filterValue(e,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[e.path];if(a===void 0)return u;const t=await this.provideFiltering(a,n,!1);return C.of(t)}return u}async provideFiltering(e,n,a){switch(e.type){case"datetime":return await this.api.sendCommand(new m({type:d.Datetime,discarded:a,displayName:e.displayName,signature:e.signature}));case"raw":return await this.api.sendCommand(new m({type:d.Raw,discarded:a,displayName:e.displayName,signature:e.signature}));case"token":return this.sanitizeDeviceIndex(e.tokenIndex,n),await this.api.sendCommand(new m({type:d.Token,discarded:a,tokenIndex:n.indexes[e.tokenIndex],signature:e.signature}));case"amount":return this.sanitizeDeviceIndex(e.tokenIndex,n),await this.api.sendCommand(new m({type:d.Amount,discarded:a,displayName:e.displayName,tokenIndex:n.indexes[e.tokenIndex],signature:e.signature}));default:return h({error:new w("ProvideEIP712ContextTask/provideFiltering - Unhandled filter type")})}}sanitizeDeviceIndex(e,n){n.indexes[e]===void 0&&(n.indexes[e]=n.nextIndex,n.nextIndex=(n.nextIndex+1)%E)}}export{j as ProvideEIP712ContextTask};
2
2
  //# sourceMappingURL=ProvideEIP712ContextTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideEIP712ContextTask.ts"],
4
- "sourcesContent": ["import {\n type TypedDataClearSignContextSuccess,\n type TypedDataFilter,\n type TypedDataTokenIndex,\n VERIFYING_CONTRACT_TOKEN_INDEX,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport { StructImplemType } from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { SendEIP712StructImplemTask } from \"@internal/app-binder/task/SendEIP712StructImplemTask\";\nimport {\n type FieldName,\n type FieldType,\n type StructName,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nexport type ProvideEIP712ContextTaskArgs = {\n types: Record<StructName, Record<FieldName, FieldType>>;\n domain: Array<TypedDataValue>;\n message: Array<TypedDataValue>;\n clearSignContext: Maybe<TypedDataClearSignContextSuccess>;\n};\n\nconst DEVICE_ASSETS_MAX = 5;\n\ntype DeviceAssetIndexes = {\n indexes: Record<TypedDataTokenIndex, number>;\n nextIndex: number;\n};\n\nexport class ProvideEIP712ContextTask {\n constructor(\n private api: InternalApi,\n private args: ProvideEIP712ContextTaskArgs,\n ) {}\n\n async run(): Promise<CommandResult<void>> {\n let result = CommandResultFactory<void, void>({ data: undefined });\n // Provide the structure definitions.\n // Should be sent before struct implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-send-struct-definition\n // Note that those types are used to compute the schema hash, in the device and in ClearSignContexts, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\n // Therefore it should be normalized on both sides: sorted per keys\n const types = Object.entries(this.args.types).sort(([aKey], [bKey]) =>\n aKey.localeCompare(bKey),\n );\n for (const [structName, fields] of types) {\n result = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name: structName,\n }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n for (const [fieldName, fieldType] of Object.entries(fields)) {\n result = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name: fieldName,\n type: fieldType,\n }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n }\n }\n\n if (this.args.clearSignContext.isJust()) {\n // Activate the filtering, before sending domain and message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#activation\n result = await this.api.sendCommand(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n }\n\n // Send domain implementation values.\n for (const value of this.args.domain) {\n result = await this.getImplementationTask(value).run();\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n }\n\n if (this.args.clearSignContext.isJust()) {\n // Send MessageInformation filter.\n // Should be sent between Domain and Message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#message-info\n result = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName:\n this.args.clearSignContext.extract().messageInfo.displayName,\n filtersCount:\n this.args.clearSignContext.extract().messageInfo.filtersCount,\n signature: this.args.clearSignContext.extract().messageInfo.signature,\n }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n }\n\n // Send message implementation values\n const deviceIndexes: DeviceAssetIndexes = { indexes: {}, nextIndex: 0 };\n for (const value of this.args.message) {\n // Provide the descriptors of tokens referenced by the message, if any.\n // Keep a map of all device indexes for those provided tokens.\n const maybeError = await this.provideTokenInformation(\n value,\n deviceIndexes,\n );\n if (maybeError.isJust()) {\n return maybeError.extract();\n }\n // If there is a filter, it should be sent just before the corresponding implementation:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-token\n const maybeResult = await this.filterValue(value, deviceIndexes);\n if (\n maybeResult.isJust() &&\n !isSuccessCommandResult(maybeResult.extract())\n ) {\n return maybeResult.extract();\n }\n // Provide message value implementation\n result = await this.getImplementationTask(value).run();\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n\n // If the value is an empty array, we should discard all sub-filters since\n // there will be no according sub-values in the message\n if (\n this.args.clearSignContext.isJust() &&\n value.value instanceof TypedDataValueArray &&\n value.value.length === 0\n ) {\n const filters = Object.entries(\n this.args.clearSignContext.extract().filters,\n );\n const discardedFilters = filters\n .filter(([path, _]) => path.startsWith(`${value.path}.[]`))\n .map(([_, filter]) => filter);\n for (const filter of discardedFilters) {\n result = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: filter.path,\n }),\n );\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n result = await this.provideFiltering(filter, deviceIndexes, true);\n if (!isSuccessCommandResult(result)) {\n return result;\n }\n }\n }\n }\n return result;\n }\n\n getImplementationTask(value: TypedDataValue): SendEIP712StructImplemTask {\n if (value.value instanceof TypedDataValueRoot) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ROOT,\n value: value.value.root,\n });\n } else if (value.value instanceof TypedDataValueArray) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ARRAY,\n value: value.value.length,\n });\n } else {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.FIELD,\n value: value.value.data,\n });\n }\n }\n\n async provideTokenInformation(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandErrorResult>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n // Tokens descriptors only needed when a tokenIndex is available in filter.\n // It should be sent to the device only 1 time so deviceIndexes has to be checked.\n if (\n filter !== undefined &&\n (filter.type === \"amount\" || filter.type === \"token\") &&\n deviceIndexes.indexes[filter.tokenIndex] === undefined\n ) {\n const descriptorIndex = filter.tokenIndex;\n const tokens = this.args.clearSignContext.extract().tokens;\n const token = tokens[descriptorIndex];\n if (token === undefined) {\n return Nothing;\n }\n\n const provideTokenInfoResult = await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload: token }),\n );\n if (!isSuccessCommandResult(provideTokenInfoResult)) {\n return Maybe.of(provideTokenInfoResult);\n }\n let { tokenIndex: deviceIndex } = provideTokenInfoResult.data;\n deviceIndexes.nextIndex = (deviceIndex + 1) % DEVICE_ASSETS_MAX;\n\n // The token corresponding to the Verifying Contract of message domain has a special index value, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-value\n if (Number(descriptorIndex) === VERIFYING_CONTRACT_TOKEN_INDEX) {\n deviceIndex = VERIFYING_CONTRACT_TOKEN_INDEX;\n }\n\n // Save the token index in the device slots. That index will be used by later filtering commands.\n deviceIndexes.indexes[Number(descriptorIndex)] = deviceIndex;\n }\n }\n return Nothing;\n }\n\n async filterValue(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<void>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n if (filter === undefined) {\n return Nothing;\n }\n return Maybe.of(\n await this.provideFiltering(filter, deviceIndexes, false),\n );\n }\n return Nothing;\n }\n\n async provideFiltering(\n filter: TypedDataFilter,\n deviceIndexes: DeviceAssetIndexes,\n discarded: boolean,\n ): Promise<CommandResult<void>> {\n switch (filter.type) {\n case \"datetime\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"raw\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"token\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n case \"amount\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded,\n displayName: filter.displayName,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n }\n }\n\n private sanitizeDeviceIndex(\n descriptorIndex: number,\n deviceIndexes: DeviceAssetIndexes,\n ) {\n // If a token is missing, the device will replace it with a placeholder and use the next available index\n if (deviceIndexes.indexes[descriptorIndex] === undefined) {\n deviceIndexes.indexes[descriptorIndex] = deviceIndexes.nextIndex;\n deviceIndexes.nextIndex =\n (deviceIndexes.nextIndex + 1) % DEVICE_ASSETS_MAX;\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["VERIFYING_CONTRACT_TOKEN_INDEX", "CommandResultFactory", "isSuccessCommandResult", "Maybe", "Nothing", "ProvideTokenInformationCommand", "Eip712FilterType", "SendEIP712FilteringCommand", "SendEIP712StructDefinitionCommand", "StructDefinitionCommand", "StructImplemType", "SendEIP712StructImplemTask", "TypedDataValueArray", "TypedDataValueRoot", "DEVICE_ASSETS_MAX", "ProvideEIP712ContextTask", "api", "args", "result", "types", "aKey", "bKey", "structName", "fields", "fieldName", "fieldType", "value", "deviceIndexes", "maybeError", "maybeResult", "discardedFilters", "path", "_", "filter", "descriptorIndex", "token", "provideTokenInfoResult", "deviceIndex", "discarded"]
4
+ "sourcesContent": ["import {\n type TypedDataClearSignContextSuccess,\n type TypedDataFilter,\n type TypedDataTokenIndex,\n VERIFYING_CONTRACT_TOKEN_INDEX,\n} from \"@ledgerhq/context-module\";\nimport type {\n CommandResult,\n InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport { StructImplemType } from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { SendEIP712StructImplemTask } from \"@internal/app-binder/task/SendEIP712StructImplemTask\";\nimport {\n type FieldName,\n type FieldType,\n type StructName,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\ntype AllSuccessTypes = void | { tokenIndex: number };\n\nexport type ProvideEIP712ContextTaskReturnType = Promise<\n CommandResult<AllSuccessTypes, EthErrorCodes>\n>;\n\nexport type ProvideEIP712ContextTaskArgs = {\n types: Record<StructName, Record<FieldName, FieldType>>;\n domain: Array<TypedDataValue>;\n message: Array<TypedDataValue>;\n clearSignContext: Maybe<TypedDataClearSignContextSuccess>;\n domainHash: string;\n messageHash: string;\n};\n\nconst DEVICE_ASSETS_MAX = 5;\n\ntype DeviceAssetIndexes = {\n indexes: Record<TypedDataTokenIndex, number>;\n nextIndex: number;\n};\n\nexport class ProvideEIP712ContextTask {\n constructor(\n private api: InternalApi,\n private args: ProvideEIP712ContextTaskArgs,\n ) {}\n\n async run(): ProvideEIP712ContextTaskReturnType {\n const result: CommandResult<AllSuccessTypes, EthErrorCodes> =\n CommandResultFactory<AllSuccessTypes, EthErrorCodes>({ data: undefined });\n\n // Provide the structure definitions.\n // Should be sent before struct implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-send-struct-definition\n // Note that those types are used to compute the schema hash, in the device and in ClearSignContexts, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\n // Therefore it should be normalized on both sides: sorted per keys\n const types = Object.entries(this.args.types).sort(([aKey], [bKey]) =>\n aKey.localeCompare(bKey),\n );\n for (const [structName, fields] of types) {\n const structNameResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name: structName,\n }),\n );\n if (!isSuccessCommandResult(structNameResult)) {\n return structNameResult;\n }\n\n for (const [fieldName, fieldType] of Object.entries(fields)) {\n const fieldResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name: fieldName,\n type: fieldType,\n }),\n );\n if (!isSuccessCommandResult(fieldResult)) {\n return fieldResult;\n }\n }\n }\n\n // possibly activate the filtering, before sending domain and message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#activation\n if (this.args.clearSignContext.isJust()) {\n const activationResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n if (!isSuccessCommandResult(activationResult)) {\n return activationResult;\n }\n }\n\n // send domain implementation values.\n for (const value of this.args.domain) {\n const domainImplTask = this.getImplementationTask(value);\n const domainImplResult = await domainImplTask.run();\n if (!isSuccessCommandResult(domainImplResult)) {\n return domainImplResult;\n }\n }\n\n // possibly send MessageInformation filter (between Domain and Message)\n // should be sent between Domain and Message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#message-info\n if (this.args.clearSignContext.isJust()) {\n const clearSignContext = this.args.clearSignContext.extract();\n const messageInfoFilterResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: clearSignContext.messageInfo.displayName,\n filtersCount: clearSignContext.messageInfo.filtersCount,\n signature: clearSignContext.messageInfo.signature,\n }),\n );\n if (!isSuccessCommandResult(messageInfoFilterResult)) {\n return messageInfoFilterResult;\n }\n }\n\n // send message implementation values\n const deviceIndexes: DeviceAssetIndexes = { indexes: {}, nextIndex: 0 };\n for (const value of this.args.message) {\n // 5.1 Provide token descriptors, if any\n // Keep a map of all device indexes for those provided tokens.\n const maybeError = await this.provideTokenInformation(\n value,\n deviceIndexes,\n );\n if (maybeError.isJust()) {\n return maybeError.extract();\n }\n\n // if there's a filter, send it\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-token\n const maybeFilterResult = await this.filterValue(value, deviceIndexes);\n if (\n maybeFilterResult.isJust() &&\n !isSuccessCommandResult(maybeFilterResult.extract())\n ) {\n return maybeFilterResult.extract();\n }\n\n // provide message value implementation\n const messageImplTask = this.getImplementationTask(value);\n const messageImplResult = await messageImplTask.run();\n if (!isSuccessCommandResult(messageImplResult)) {\n return messageImplResult;\n }\n\n // if the value is an empty array, discard sub-filters since\n // there will be no according sub-values in the message\n if (\n this.args.clearSignContext.isJust() &&\n value.value instanceof TypedDataValueArray &&\n value.value.length === 0\n ) {\n const filters = Object.entries(\n this.args.clearSignContext.extract().filters,\n );\n const discardedFilters = filters\n .filter(([path]) => path.startsWith(`${value.path}.[]`))\n .map(([, filter]) => filter);\n for (const filter of discardedFilters) {\n const discardedPathResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: filter.path,\n }),\n );\n if (!isSuccessCommandResult(discardedPathResult)) {\n return discardedPathResult;\n }\n\n const provideFilteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n true,\n );\n if (!isSuccessCommandResult(provideFilteringResult)) {\n return provideFilteringResult;\n }\n }\n }\n }\n\n return result;\n }\n\n getImplementationTask(value: TypedDataValue): SendEIP712StructImplemTask {\n if (value.value instanceof TypedDataValueRoot) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ROOT,\n value: value.value.root,\n });\n } else if (value.value instanceof TypedDataValueArray) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ARRAY,\n value: value.value.length,\n });\n } else {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.FIELD,\n value: value.value.data,\n });\n }\n }\n\n async provideTokenInformation(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n // tokens descriptors only needed when a tokenIndex is available in filter.\n // it should be sent to the device only 1 time so deviceIndexes has to be checked.\n if (\n filter !== undefined &&\n (filter.type === \"amount\" || filter.type === \"token\") &&\n deviceIndexes.indexes[filter.tokenIndex] === undefined\n ) {\n const descriptorIndex = filter.tokenIndex;\n const tokens = this.args.clearSignContext.extract().tokens;\n const token = tokens[descriptorIndex];\n if (token === undefined) {\n return Nothing;\n }\n\n const provideTokenInfoResult = await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload: token }),\n );\n if (!isSuccessCommandResult(provideTokenInfoResult)) {\n return Maybe.of(provideTokenInfoResult);\n }\n let { tokenIndex: deviceIndex } = provideTokenInfoResult.data;\n deviceIndexes.nextIndex = (deviceIndex + 1) % DEVICE_ASSETS_MAX;\n\n // the token corresponding to the Verifying Contract of message domain has a special index value, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-value\n if (Number(descriptorIndex) === VERIFYING_CONTRACT_TOKEN_INDEX) {\n deviceIndex = VERIFYING_CONTRACT_TOKEN_INDEX;\n }\n\n deviceIndexes.indexes[Number(descriptorIndex)] = deviceIndex;\n }\n }\n return Nothing;\n }\n\n async filterValue(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n if (filter === undefined) {\n return Nothing;\n }\n // provide the filter\n const filteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n false,\n );\n return Maybe.of(filteringResult);\n }\n return Nothing;\n }\n\n async provideFiltering(\n filter: TypedDataFilter,\n deviceIndexes: DeviceAssetIndexes,\n discarded: boolean,\n ): Promise<CommandResult<AllSuccessTypes, EthErrorCodes>> {\n switch (filter.type) {\n case \"datetime\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"raw\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"token\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n case \"amount\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded,\n displayName: filter.displayName,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n default:\n return CommandResultFactory<AllSuccessTypes, EthErrorCodes>({\n error: new InvalidStatusWordError(\n \"ProvideEIP712ContextTask/provideFiltering - Unhandled filter type\",\n ),\n });\n }\n }\n\n private sanitizeDeviceIndex(\n descriptorIndex: number,\n deviceIndexes: DeviceAssetIndexes,\n ) {\n // If a token is missing, the device will replace it with a placeholder and use the next available index\n if (deviceIndexes.indexes[descriptorIndex] === undefined) {\n deviceIndexes.indexes[descriptorIndex] = deviceIndexes.nextIndex;\n deviceIndexes.nextIndex =\n (deviceIndexes.nextIndex + 1) % DEVICE_ASSETS_MAX;\n }\n }\n}\n"],
5
+ "mappings": "AAAA,OAIE,kCAAAA,MACK,2BAKP,OACE,wBAAAC,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,SAAAC,EAAO,WAAAC,MAAe,YAE/B,OAAS,kCAAAC,MAAsC,8DAC/C,OACE,oBAAAC,EACA,8BAAAC,MACK,0DACP,OACE,qCAAAC,EACA,2BAAAC,MACK,iEACP,OAAS,oBAAAC,MAAwB,6DAEjC,OAAS,8BAAAC,MAAkC,uDAC3C,OAKE,uBAAAC,EACA,sBAAAC,MACK,mCAiBP,MAAMC,EAAoB,EAOnB,MAAMC,CAAyB,CACpC,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAA0C,CAC9C,MAAMC,EACJlB,EAAqD,CAAE,KAAM,MAAU,CAAC,EAQpEmB,EAAQ,OAAO,QAAQ,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAACC,CAAI,EAAG,CAACC,CAAI,IAC/DD,EAAK,cAAcC,CAAI,CACzB,EACA,SAAW,CAACC,EAAYC,CAAM,IAAKJ,EAAO,CACxC,MAAMK,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAIhB,EAAkC,CACpC,QAASC,EAAwB,KACjC,KAAMa,CACR,CAAC,CACH,EACA,GAAI,CAACpB,EAAuBsB,CAAgB,EAC1C,OAAOA,EAGT,SAAW,CAACC,EAAWC,CAAS,IAAK,OAAO,QAAQH,CAAM,EAAG,CAC3D,MAAMI,EAAc,MAAM,KAAK,IAAI,YACjC,IAAInB,EAAkC,CACpC,QAASC,EAAwB,MACjC,KAAMgB,EACN,KAAMC,CACR,CAAC,CACH,EACA,GAAI,CAACxB,EAAuByB,CAAW,EACrC,OAAOA,CAEX,CACF,CAIA,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMC,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAIrB,EAA2B,CAAE,KAAMD,EAAiB,UAAW,CAAC,CACtE,EACA,GAAI,CAACJ,EAAuB0B,CAAgB,EAC1C,OAAOA,CAEX,CAGA,UAAWC,KAAS,KAAK,KAAK,OAAQ,CAEpC,MAAMC,EAAmB,MADF,KAAK,sBAAsBD,CAAK,EACT,IAAI,EAClD,GAAI,CAAC3B,EAAuB4B,CAAgB,EAC1C,OAAOA,CAEX,CAKA,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMC,EAAmB,KAAK,KAAK,iBAAiB,QAAQ,EACtDC,EAA0B,MAAM,KAAK,IAAI,YAC7C,IAAIzB,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,YAAayB,EAAiB,YAAY,YAC1C,aAAcA,EAAiB,YAAY,aAC3C,UAAWA,EAAiB,YAAY,SAC1C,CAAC,CACH,EACA,GAAI,CAAC7B,EAAuB8B,CAAuB,EACjD,OAAOA,CAEX,CAGA,MAAMC,EAAoC,CAAE,QAAS,CAAC,EAAG,UAAW,CAAE,EACtE,UAAWJ,KAAS,KAAK,KAAK,QAAS,CAGrC,MAAMK,EAAa,MAAM,KAAK,wBAC5BL,EACAI,CACF,EACA,GAAIC,EAAW,OAAO,EACpB,OAAOA,EAAW,QAAQ,EAK5B,MAAMC,EAAoB,MAAM,KAAK,YAAYN,EAAOI,CAAa,EACrE,GACEE,EAAkB,OAAO,GACzB,CAACjC,EAAuBiC,EAAkB,QAAQ,CAAC,EAEnD,OAAOA,EAAkB,QAAQ,EAKnC,MAAMC,EAAoB,MADF,KAAK,sBAAsBP,CAAK,EACR,IAAI,EACpD,GAAI,CAAC3B,EAAuBkC,CAAiB,EAC3C,OAAOA,EAKT,GACE,KAAK,KAAK,iBAAiB,OAAO,GAClCP,EAAM,iBAAiBjB,GACvBiB,EAAM,MAAM,SAAW,EACvB,CAIA,MAAMQ,EAHU,OAAO,QACrB,KAAK,KAAK,iBAAiB,QAAQ,EAAE,OACvC,EAEG,OAAO,CAAC,CAACC,CAAI,IAAMA,EAAK,WAAW,GAAGT,EAAM,IAAI,KAAK,CAAC,EACtD,IAAI,CAAC,CAAC,CAAEU,CAAM,IAAMA,CAAM,EAC7B,UAAWA,KAAUF,EAAkB,CACrC,MAAMG,EAAsB,MAAM,KAAK,IAAI,YACzC,IAAIjC,EAA2B,CAC7B,KAAMD,EAAiB,cACvB,KAAMiC,EAAO,IACf,CAAC,CACH,EACA,GAAI,CAACrC,EAAuBsC,CAAmB,EAC7C,OAAOA,EAGT,MAAMC,EAAyB,MAAM,KAAK,iBACxCF,EACAN,EACA,EACF,EACA,GAAI,CAAC/B,EAAuBuC,CAAsB,EAChD,OAAOA,CAEX,CACF,CACF,CAEA,OAAOvB,CACT,CAEA,sBAAsBW,EAAmD,CACvE,OAAIA,EAAM,iBAAiBhB,EAClB,IAAIF,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,KACvB,MAAOmB,EAAM,MAAM,IACrB,CAAC,EACQA,EAAM,iBAAiBjB,EACzB,IAAID,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,MACvB,MAAOmB,EAAM,MAAM,MACrB,CAAC,EAEM,IAAIlB,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,MACvB,MAAOmB,EAAM,MAAM,IACrB,CAAC,CAEL,CAEA,MAAM,wBACJA,EACAI,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMM,EAAS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,QAAQV,EAAM,IAAI,EAGtE,GACEU,IAAW,SACVA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAC7CN,EAAc,QAAQM,EAAO,UAAU,IAAM,OAC7C,CACA,MAAMG,EAAkBH,EAAO,WAEzBI,EADS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,OAC/BD,CAAe,EACpC,GAAIC,IAAU,OACZ,OAAOvC,EAGT,MAAMwC,EAAyB,MAAM,KAAK,IAAI,YAC5C,IAAIvC,EAA+B,CAAE,QAASsC,CAAM,CAAC,CACvD,EACA,GAAI,CAACzC,EAAuB0C,CAAsB,EAChD,OAAOzC,EAAM,GAAGyC,CAAsB,EAExC,GAAI,CAAE,WAAYC,CAAY,EAAID,EAAuB,KACzDX,EAAc,WAAaY,EAAc,GAAK/B,EAI1C,OAAO4B,CAAe,IAAM3C,IAC9B8C,EAAc9C,GAGhBkC,EAAc,QAAQ,OAAOS,CAAe,CAAC,EAAIG,CACnD,CACF,CACA,OAAOzC,CACT,CAEA,MAAM,YACJyB,EACAI,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMM,EAAS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,QAAQV,EAAM,IAAI,EACtE,GAAIU,IAAW,OACb,OAAOnC,EAGT,MAAM0C,EAAkB,MAAM,KAAK,iBACjCP,EACAN,EACA,EACF,EACA,OAAO9B,EAAM,GAAG2C,CAAe,CACjC,CACA,OAAO1C,CACT,CAEA,MAAM,iBACJmC,EACAN,EACAc,EACwD,CACxD,OAAQR,EAAO,KAAM,CACnB,IAAK,WACH,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIhC,EAA2B,CAC7B,KAAMD,EAAiB,SACvB,UAAAyC,EACA,YAAaR,EAAO,YACpB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,MACH,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIhC,EAA2B,CAC7B,KAAMD,EAAiB,IACvB,UAAAyC,EACA,YAAaR,EAAO,YACpB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,QACH,YAAK,oBAAoBA,EAAO,WAAYN,CAAa,EAClD,MAAM,KAAK,IAAI,YACpB,IAAI1B,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAAyC,EACA,WAAYd,EAAc,QAAQM,EAAO,UAAU,EACnD,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,SACH,YAAK,oBAAoBA,EAAO,WAAYN,CAAa,EAClD,MAAM,KAAK,IAAI,YACpB,IAAI1B,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAAyC,EACA,YAAaR,EAAO,YACpB,WAAYN,EAAc,QAAQM,EAAO,UAAU,EACnD,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,QACE,OAAOvC,EAAqD,CAC1D,MAAO,IAAIC,EACT,mEACF,CACF,CAAC,CACL,CACF,CAEQ,oBACNyC,EACAT,EACA,CAEIA,EAAc,QAAQS,CAAe,IAAM,SAC7CT,EAAc,QAAQS,CAAe,EAAIT,EAAc,UACvDA,EAAc,WACXA,EAAc,UAAY,GAAKnB,EAEtC,CACF",
6
+ "names": ["VERIFYING_CONTRACT_TOKEN_INDEX", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "Maybe", "Nothing", "ProvideTokenInformationCommand", "Eip712FilterType", "SendEIP712FilteringCommand", "SendEIP712StructDefinitionCommand", "StructDefinitionCommand", "StructImplemType", "SendEIP712StructImplemTask", "TypedDataValueArray", "TypedDataValueRoot", "DEVICE_ASSETS_MAX", "ProvideEIP712ContextTask", "api", "args", "result", "types", "aKey", "bKey", "structName", "fields", "structNameResult", "fieldName", "fieldType", "fieldResult", "activationResult", "value", "domainImplResult", "clearSignContext", "messageInfoFilterResult", "deviceIndexes", "maybeError", "maybeFilterResult", "messageImplResult", "discardedFilters", "path", "filter", "discardedPathResult", "provideFilteringResult", "descriptorIndex", "token", "provideTokenInfoResult", "deviceIndex", "filteringResult", "discarded"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as a,hexaStringToBuffer as v,UnknownDeviceExchangeError as C}from"@ledgerhq/device-management-kit";import{Just as s,Nothing as p}from"purify-ts";import{ProvideTokenInformationCommand as w}from"../../app-binder/command/ProvideTokenInformationCommand";import{Eip712FilterType as c,SendEIP712FilteringCommand as o}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as O,StructDefinitionCommand as h}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{SendEIP712StructImplemCommand as q,StructImplemType as I}from"../../app-binder/command/SendEIP712StructImplemCommand";import{makeDeviceActionInternalApiMock as N}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as l,StructType as T,TypedDataValueArray as D,TypedDataValueField as i,TypedDataValueRoot as U}from"../../typed-data/model/Types";import{ProvideEIP712ContextTask as r}from"./ProvideEIP712ContextTask";describe("ProvideEIP712ContextTask",()=>{const e=N(),f={EIP712Domain:{name:new l("string","string",p),chainId:new l("uint256","uint",s(32)),verifyingContract:new l("address","address",p)},PermitSingle:{details:new T("PermitDetails"),spender:new l("address","address",p),sigDeadline:new l("uint256","uint",s(32))},PermitDetails:{token:new l("address","address",p),amount:new l("uint160","uint",s(20)),expiration:new l("uint48","uint",s(6)),nonce:new l("uint48","uint",s(6))}},x=[{path:"",type:"",value:new U("EIP712Domain")},{path:"name",type:"string",value:new i(new TextEncoder().encode("Permit2"))},{path:"chainId",type:"uint256",value:new i(Uint8Array.from([137]))},{path:"verifyingContract",type:"address",value:new i(v("0x000000000022d473030f116ddee9f6b43ac78ba3"))}],u=[{path:"",type:"",value:new U("PermitSingle")},{path:"details.token",type:"address",value:new i(v("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"details.amount",type:"uint160",value:new i(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new i(Uint8Array.from([18]))},{path:"details.nonce",type:"uint48",value:new i(Uint8Array.from([0]))},{path:"spender",type:"address",value:new i(v("0xec7be89e9d109e7e3fec59c222cf297125fefda2"))},{path:"sigDeadline",type:"uint256",value:new i(Uint8Array.from([18]))}],m={type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}},k=new l("address","address",p),A=new l("string","string",p),S=new l("uint256","uint",s(32)),R=new l("uint160","uint",s(20)),g=new l("uint48","uint",s(6)),V=t=>new T(t),y=t=>new O({command:h.Name,name:t}),n=(t,b)=>new O({command:h.Field,name:t,type:b}),E=t=>new q({type:I.ROOT,value:t}),P=t=>new q({type:I.ARRAY,value:t}),d=t=>new q({type:I.FIELD,value:{data:t,isLastChunk:!0}});beforeEach(()=>{jest.resetAllMocks()}),it("Send context with no clear signing context",async()=>{const t={types:f,domain:x,message:u,clearSignContext:p};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(24),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",A)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",S)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",R)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",g)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",g)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",V("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",S)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(E("EIP712Domain")),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(E("PermitSingle")),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Send context with clear signing",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s(m)};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:5}})),e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(32),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",A)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",S)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",R)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",g)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",g)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",V("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",S)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(E("EIP712Domain")),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"})),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(E("PermitSingle")),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(new w({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(new w({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand.mock.calls[24][0]).toStrictEqual(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand.mock.calls[25][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[26][0]).toStrictEqual(new o({type:c.Datetime,discarded:!1,displayName:"Approval expire",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"})),expect(e.sendCommand.mock.calls[27][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[28][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[29][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Approve to spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"})),expect(e.sendCommand.mock.calls[30][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[31][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Both tokens unavailable",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s({type:"success",messageInfo:m.messageInfo,filters:m.filters,tokens:{}})};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand).not.toHaveBeenCalledWith(new w({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand).not.toHaveBeenCalledWith(new w({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:1,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("First token unavailable",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s({type:"success",messageInfo:m.messageInfo,filters:m.filters,tokens:{255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"}})};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new r(e,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Second token unavailable",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s({type:"success",messageInfo:m.messageInfo,filters:m.filters,tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"}})};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new r(e,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Error when providing tokens",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s(m)};e.sendCommand.mockResolvedValueOnce(a({error:new C("error")}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Error when sending struct definitions",async()=>{const t={types:f,domain:x,message:u,clearSignContext:s(m)};e.sendCommand.mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:{tokenIndex:5}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new C("error")}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Error when sending struct implementations",async()=>{const t={types:f,domain:x,message:u,clearSignContext:p};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new C("error")})).mockResolvedValue(a({data:void 0}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Send struct array",async()=>{const t={types:{},domain:[],message:[{path:"spenders",type:"address[]",value:new D(1)},{path:"spenders.[]",type:"address",value:new i(v("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"beneficiaries",type:"address[]",value:new D(0)}],clearSignContext:s({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"sig"},tokens:{},filters:{"spenders.[]":{displayName:"Spender",path:"spenders.[]",signature:"sig",type:"raw"},"beneficiaries.[]":{displayName:"Beneficiary",path:"beneficiaries.[]",signature:"sig",type:"raw"}}})};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:2,signature:"sig"})),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(P(1)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Spender",signature:"sig"})),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(P(0)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(new o({type:c.DiscardedPath,path:"beneficiaries.[]"})),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(new o({type:c.Raw,discarded:!0,displayName:"Beneficiary",signature:"sig"}))})});
1
+ import{CommandResultFactory as a,hexaStringToBuffer as E,UnknownDeviceExchangeError as C}from"@ledgerhq/device-management-kit";import{Just as s,Nothing as p}from"purify-ts";import{ProvideTokenInformationCommand as w}from"../../app-binder/command/ProvideTokenInformationCommand";import{Eip712FilterType as c,SendEIP712FilteringCommand as o}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as P,StructDefinitionCommand as O}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{SendEIP712StructImplemCommand as q,StructImplemType as h}from"../../app-binder/command/SendEIP712StructImplemCommand";import{makeDeviceActionInternalApiMock as H}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as m,StructType as T,TypedDataValueArray as D,TypedDataValueField as l,TypedDataValueRoot as U}from"../../typed-data/model/Types";import{ProvideEIP712ContextTask as r}from"./ProvideEIP712ContextTask";describe("ProvideEIP712ContextTask",()=>{const e=H(),x={EIP712Domain:{name:new m("string","string",p),chainId:new m("uint256","uint",s(32)),verifyingContract:new m("address","address",p)},PermitSingle:{details:new T("PermitDetails"),spender:new m("address","address",p),sigDeadline:new m("uint256","uint",s(32))},PermitDetails:{token:new m("address","address",p),amount:new m("uint160","uint",s(20)),expiration:new m("uint48","uint",s(6)),nonce:new m("uint48","uint",s(6))}},f=[{path:"",type:"",value:new U("EIP712Domain")},{path:"name",type:"string",value:new l(new TextEncoder().encode("Permit2"))},{path:"chainId",type:"uint256",value:new l(Uint8Array.from([137]))},{path:"verifyingContract",type:"address",value:new l(E("0x000000000022d473030f116ddee9f6b43ac78ba3"))}],u=[{path:"",type:"",value:new U("PermitSingle")},{path:"details.token",type:"address",value:new l(E("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"details.amount",type:"uint160",value:new l(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new l(Uint8Array.from([18]))},{path:"details.nonce",type:"uint48",value:new l(Uint8Array.from([0]))},{path:"spender",type:"address",value:new l(E("0xec7be89e9d109e7e3fec59c222cf297125fefda2"))},{path:"sigDeadline",type:"uint256",value:new l(Uint8Array.from([18]))}],i={type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}},k=new m("address","address",p),I=new m("string","string",p),g=new m("uint256","uint",s(32)),A=new m("uint160","uint",s(20)),S=new m("uint48","uint",s(6)),R=t=>new T(t),y=t=>new P({command:O.Name,name:t}),n=(t,b)=>new P({command:O.Field,name:t,type:b}),v=t=>new q({type:h.ROOT,value:t}),V=t=>new q({type:h.ARRAY,value:t}),d=t=>new q({type:h.FIELD,value:{data:t,isLastChunk:!0}});beforeEach(()=>{vi.resetAllMocks()}),it("Send context with no clear signing context",async()=>{const t={types:x,domain:f,message:u,clearSignContext:p,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(24),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",I)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",g)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",A)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",S)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",S)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",R("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",g)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(v("EIP712Domain")),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(v("PermitSingle")),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Send context with clear signing",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s(i),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:5}})),e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(32),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",I)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",g)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",A)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",S)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",S)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",R("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",g)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(v("EIP712Domain")),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"})),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(v("PermitSingle")),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(new w({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(new w({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand.mock.calls[24][0]).toStrictEqual(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand.mock.calls[25][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[26][0]).toStrictEqual(new o({type:c.Datetime,discarded:!1,displayName:"Approval expire",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"})),expect(e.sendCommand.mock.calls[27][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[28][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[29][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Approve to spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"})),expect(e.sendCommand.mock.calls[30][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[31][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Both tokens unavailable",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s({type:"success",messageInfo:i.messageInfo,filters:i.filters,tokens:{}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand).not.toHaveBeenCalledWith(new w({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand).not.toHaveBeenCalledWith(new w({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:1,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("First token unavailable",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s({type:"success",messageInfo:i.messageInfo,filters:i.filters,tokens:{255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new r(e,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Second token unavailable",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s({type:"success",messageInfo:i.messageInfo,filters:i.filters,tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new r(e,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Error when providing tokens",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s(i),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({error:new C("error")}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Error when sending struct definitions",async()=>{const t={types:x,domain:f,message:u,clearSignContext:s(i),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:{tokenIndex:5}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new C("error")}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Error when sending struct implementations",async()=>{const t={types:x,domain:f,message:u,clearSignContext:p,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new C("error")})).mockResolvedValue(a({data:void 0}));const b=new r(e,t).run();await expect(b).resolves.toStrictEqual(a({error:new C("error")}))}),it("Send struct array",async()=>{const t={domainHash:"0x",messageHash:"0x",types:{},domain:[],message:[{path:"spenders",type:"address[]",value:new D(1)},{path:"spenders.[]",type:"address",value:new l(E("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"beneficiaries",type:"address[]",value:new D(0)}],clearSignContext:s({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"sig"},tokens:{},filters:{"spenders.[]":{displayName:"Spender",path:"spenders.[]",signature:"sig",type:"raw"},"beneficiaries.[]":{displayName:"Beneficiary",path:"beneficiaries.[]",signature:"sig",type:"raw"}}})};e.sendCommand.mockResolvedValue(a({data:void 0})),await new r(e,t).run(),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:2,signature:"sig"})),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(V(1)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Spender",signature:"sig"})),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(V(0)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(new o({type:c.DiscardedPath,path:"beneficiaries.[]"})),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(new o({type:c.Raw,discarded:!0,displayName:"Beneficiary",signature:"sig"}))})});
2
2
  //# sourceMappingURL=ProvideEIP712ContextTask.test.js.map