@ledgerhq/device-signer-kit-ethereum 1.5.0 → 1.7.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 (255) hide show
  1. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  2. package/lib/cjs/api/SignerEthBuilder.test.js.map +1 -1
  3. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  4. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  5. package/lib/cjs/api/index.js +1 -1
  6. package/lib/cjs/api/index.js.map +3 -3
  7. package/lib/cjs/api/model/ClearSigningType.js +2 -0
  8. package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
  9. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  10. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  11. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  12. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  13. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  14. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  15. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  16. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  17. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  18. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  19. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  20. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  21. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  22. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  23. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  24. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  25. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  26. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  27. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  28. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
  29. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  30. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  31. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +2 -0
  32. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
  33. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
  34. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
  35. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  36. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  37. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  38. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  39. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  40. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  41. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  42. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  43. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +2 -0
  44. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
  45. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  46. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  48. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  49. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  51. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  52. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  53. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  54. package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  55. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  56. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  57. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  58. package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  59. package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
  60. package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
  61. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
  62. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  63. package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
  64. package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
  65. package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
  66. package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
  67. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  68. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  69. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  70. package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  71. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
  72. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
  73. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  74. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  75. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  76. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  77. package/lib/cjs/package.json +3 -3
  78. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  79. package/lib/esm/api/SignerEthBuilder.test.js.map +1 -1
  80. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  81. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  82. package/lib/esm/api/index.js +1 -1
  83. package/lib/esm/api/index.js.map +2 -2
  84. package/lib/esm/api/model/ClearSigningType.js +2 -0
  85. package/lib/esm/api/model/ClearSigningType.js.map +7 -0
  86. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  87. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  88. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  89. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  90. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
  91. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
  92. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
  93. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
  94. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
  95. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
  96. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
  97. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
  98. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  99. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  100. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  101. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  102. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  103. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  104. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  105. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
  106. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  107. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  108. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +2 -0
  109. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
  110. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
  111. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
  112. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  113. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  114. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  115. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  116. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  117. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  118. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  119. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  120. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +2 -0
  121. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
  122. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  123. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
  124. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  125. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  126. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  127. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  128. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
  129. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
  130. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
  131. package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
  132. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
  133. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
  134. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
  135. package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
  136. package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
  137. package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
  138. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
  139. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
  140. package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
  141. package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
  142. package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
  143. package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
  144. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
  145. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
  146. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
  147. package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
  148. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
  149. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
  150. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  151. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
  152. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  153. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
  154. package/lib/esm/package.json +3 -3
  155. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +8 -9
  156. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  157. package/lib/types/api/index.d.ts +5 -9
  158. package/lib/types/api/index.d.ts.map +1 -1
  159. package/lib/types/api/model/ClearSigningType.d.ts +5 -0
  160. package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
  161. package/lib/types/internal/app-binder/EthAppBinder.d.ts +1 -1
  162. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  163. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
  164. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
  165. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
  166. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
  167. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
  168. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
  169. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
  170. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
  171. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +14 -31
  172. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  173. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  174. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +20 -0
  175. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +1 -0
  176. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +2 -0
  177. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +1 -0
  178. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +10 -14
  179. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
  180. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
  181. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
  182. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts +17 -0
  183. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +1 -0
  184. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +28 -22
  185. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
  186. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
  187. package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
  188. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
  189. package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
  190. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
  191. package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
  192. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
  193. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
  194. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
  195. package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
  196. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
  197. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
  198. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
  199. package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
  200. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  201. package/package.json +10 -10
  202. package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
  203. package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
  204. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  205. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  206. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  207. package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  208. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  209. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  210. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  211. package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  212. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  213. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  214. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  215. package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  216. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
  217. package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
  218. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  219. package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  220. package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
  221. package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
  222. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
  223. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
  224. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
  225. package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
  226. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
  227. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
  228. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
  229. package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
  230. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
  231. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
  232. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
  233. package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
  234. package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
  235. package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
  236. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
  237. package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
  238. package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
  239. package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
  240. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
  241. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
  242. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
  243. package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
  244. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
  245. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
  246. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
  247. package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
  248. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
  249. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
  250. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
  251. package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
  252. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
  253. package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
  254. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
  255. package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideEIP712ContextTask.test.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\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 {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Filter with trusted name\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Filter with trusted name and certificate\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n certificate: {\n keyUsageNumber: 7,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 7,\n certificate: new Uint8Array(3).fill(42),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\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 {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Filter with trusted name\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Filter with trusted name and certificate\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n certificate: {\n keyUsageNumber: 7,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 7,\n certificate: new Uint8Array(3).fill(42),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
5
+ "mappings": "AAAA,OAEE,wBAAAA,MAEK,2BACP,OACE,wBAAAC,EACA,sBAAAC,EACA,0BAAAC,EACA,8BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,WAAAC,MAAe,YAE9B,OAAS,uBAAAC,MAA2B,mDACpC,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,2BAAAC,MAA+B,uDACxC,OACE,oBAAAC,EACA,8BAAAC,MACK,0DACP,OACE,qCAAAC,EACA,2BAAAC,MACK,iEACP,OACE,iCAAAC,EACA,oBAAAC,MACK,6DACP,OAAS,mCAAAC,MAAuC,oEAChD,OAEE,iBAAAC,EACA,cAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,sBAAAC,MACK,mCAEP,OACE,4BAAAC,MAEK,6BAEP,SAAS,2BAA4B,IAAM,CACzC,MAAMC,EAAUP,EAAgC,EAC1CQ,EAAoB,CACxB,WAAY,GAAG,GAAG,EAClB,YAAa,GAAG,GAAG,EACnB,oBAAqB,GAAG,GAAG,EAC3B,cAAe,GAAG,GAAG,EACrB,iBAAkB,GAAG,GAAG,CAC1B,EAEMC,EAAa,CACjB,aAAc,CACZ,KAAM,IAAIR,EAAc,SAAU,SAAUX,CAAO,EACnD,QAAS,IAAIW,EAAc,UAAW,OAAQZ,EAAK,EAAE,CAAC,EACtD,kBAAmB,IAAIY,EAAc,UAAW,UAAWX,CAAO,CACpE,EACA,aAAc,CACZ,QAAS,IAAIY,EAAW,eAAe,EACvC,QAAS,IAAID,EAAc,UAAW,UAAWX,CAAO,EACxD,YAAa,IAAIW,EAAc,UAAW,OAAQZ,EAAK,EAAE,CAAC,CAC5D,EACA,cAAe,CACb,MAAO,IAAIY,EAAc,UAAW,UAAWX,CAAO,EACtD,OAAQ,IAAIW,EAAc,UAAW,OAAQZ,EAAK,EAAE,CAAC,EACrD,WAAY,IAAIY,EAAc,SAAU,OAAQZ,EAAK,CAAC,CAAC,EACvD,MAAO,IAAIY,EAAc,SAAU,OAAQZ,EAAK,CAAC,CAAC,CACpD,CACF,EACMqB,EAAqB,CACzB,CACE,KAAM,GACN,KAAM,GACN,MAAO,IAAIL,EAAmB,cAAc,CAC9C,EACA,CACE,KAAM,OACN,KAAM,SACN,MAAO,IAAID,EAAoB,IAAI,YAAY,EAAE,OAAO,SAAS,CAAC,CACpE,EACA,CACE,KAAM,UACN,KAAM,UACN,MAAO,IAAIA,EAAoB,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CACvD,EACA,CACE,KAAM,oBACN,KAAM,UACN,MAAO,IAAIA,EACTlB,EAAmB,4CAA4C,CACjE,CACF,CACF,EACMyB,EAAsB,CAC1B,CACE,KAAM,GACN,KAAM,GACN,MAAO,IAAIN,EAAmB,cAAc,CAC9C,EACA,CACE,KAAM,gBACN,KAAM,UACN,MAAO,IAAID,EACTlB,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,iBACN,KAAM,UACN,MAAO,IAAIkB,EAAoB,WAAW,KAAK,CAAC,EAAI,CAAC,CAAC,CACxD,EACA,CACE,KAAM,qBACN,KAAM,SACN,MAAO,IAAIA,EAAoB,WAAW,KAAK,CAAC,EAAI,CAAC,CAAC,CACxD,EACA,CACE,KAAM,gBACN,KAAM,SACN,MAAO,IAAIA,EAAoB,WAAW,KAAK,CAAC,CAAI,CAAC,CAAC,CACxD,EACA,CACE,KAAM,UACN,KAAM,UACN,MAAO,IAAIA,EACTlB,EAAmB,4CAA4C,CACjE,CACF,EACA,CACE,KAAM,cACN,KAAM,UACN,MAAO,IAAIkB,EAAoB,WAAW,KAAK,CAAC,EAAI,CAAC,CAAC,CACxD,CACF,EACMQ,EAA4D,CAChE,KAAM,UACN,YAAa,CACX,YAAa,UACb,aAAc,EACd,UACE,gJACJ,EACA,sBAAuB,CAAC,EACxB,OAAQ,CACN,EAAG,qDACH,IAAK,oDACP,EACA,QAAS,CACP,iBAAkB,CAChB,YAAa,mBACb,KAAM,iBACN,UACE,+IACF,WAAY,IACZ,KAAM,QACR,EACA,qBAAsB,CACpB,YAAa,kBACb,KAAM,qBACN,UACE,+IACF,KAAM,UACR,EACA,gBAAiB,CACf,YAAa,mBACb,KAAM,gBACN,UACE,+IACF,WAAY,EACZ,KAAM,OACR,EACA,QAAS,CACP,YAAa,qBACb,KAAM,UACN,UACE,+IACF,KAAM,KACR,CACF,CACF,EAEMC,EAAU,IAAIZ,EAAc,UAAW,UAAWX,CAAO,EACzDwB,EAAS,IAAIb,EAAc,SAAU,SAAUX,CAAO,EACtDyB,EAAU,IAAId,EAAc,UAAW,OAAQZ,EAAK,EAAE,CAAC,EACvD2B,EAAU,IAAIf,EAAc,UAAW,OAAQZ,EAAK,EAAE,CAAC,EACvD4B,EAAS,IAAIhB,EAAc,SAAU,OAAQZ,EAAK,CAAC,CAAC,EACpD6B,EAAUC,GAAiB,IAAIjB,EAAWiB,CAAI,EAE9CC,EAAqBD,GACzB,IAAIvB,EAAkC,CACpC,QAASC,EAAwB,KACjC,KAAAsB,CACF,CAAC,EACGE,EAAqB,CAACF,EAAcG,IACxC,IAAI1B,EAAkC,CACpC,QAASC,EAAwB,MACjC,KAAAsB,EACA,KAAAG,CACF,CAAC,EACGC,EAAsBC,GAC1B,IAAI1B,EAA8B,CAChC,KAAMC,EAAiB,KACvB,MAAAyB,CACF,CAAC,EACGC,EAAuBD,GAC3B,IAAI1B,EAA8B,CAChC,KAAMC,EAAiB,MACvB,MAAAyB,CACF,CAAC,EACGE,EAAuBC,GAC3B,IAAI7B,EAA8B,CAChC,KAAMC,EAAiB,MACvB,MAAO,CACL,KAAA4B,EACA,YAAa,EACf,CACF,CAAC,EAEH,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,GAAG,6CAA8C,SAAY,CAE3D,MAAMC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBrB,CACpB,EAEAiB,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,YAAY,KAAK,KAAK,EAAE,aAAa,EAAE,EAEtD,OAAOA,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,cAAc,CAClC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,OAAQP,CAAM,CACnC,EACA,OAAOP,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,UAAWN,CAAO,CACvC,EACA,OAAOR,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,oBAAqBR,CAAO,CACjD,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,eAAe,CACnC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,QAASR,CAAO,CACrC,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,SAAUL,CAAO,CACtC,EACA,OAAOT,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,aAAcJ,CAAM,CACzC,EACA,OAAOV,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,QAASJ,CAAM,CACpC,EACA,OAAOV,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,cAAc,CAClC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,UAAWH,EAAO,eAAe,CAAC,CACvD,EACA,OAAOX,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,UAAWR,CAAO,CACvC,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,cAAeN,CAAO,CAC3C,EAEA,OAAOR,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CgB,EAAmB,cAAc,CACnC,EACA,OAAOhB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CAAC,EAAM,EAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAI,CAAC,CACxE,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,GAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,IAAM,IAAM,EAC5D,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAC9D,CAAC,CACH,CACF,EAEA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CgB,EAAmB,cAAc,CACnC,EACA,OAAOhB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC5D,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAC9D,CAAC,CACH,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAC5D,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAC9D,CAAC,CACH,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,CACF,CAAC,EAED,GAAG,kCAAmC,SAAY,CAEhD,MAAME,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAKuB,CAAuB,CAChD,EACAL,EAAQ,YACL,sBAAsBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAAC,EACvE,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAAC,EAE1EsB,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,YAAY,KAAK,KAAK,EAAE,aAAa,EAAE,EAEtD,OAAOA,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,cAAc,CAClC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,OAAQP,CAAM,CACnC,EACA,OAAOP,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,UAAWN,CAAO,CACvC,EACA,OAAOR,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,oBAAqBR,CAAO,CACjD,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,eAAe,CACnC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,QAASR,CAAO,CACrC,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,SAAUL,CAAO,CACtC,EACA,OAAOT,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,aAAcJ,CAAM,CACzC,EACA,OAAOV,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Cc,EAAmB,QAASJ,CAAM,CACpC,EACA,OAAOV,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5Ca,EAAkB,cAAc,CAClC,EACA,OAAOb,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,UAAWH,EAAO,eAAe,CAAC,CACvD,EACA,OAAOX,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,UAAWR,CAAO,CACvC,EACA,OAAON,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7Cc,EAAmB,cAAeN,CAAO,CAC3C,EAEA,OAAOR,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAAE,KAAMD,EAAiB,UAAW,CAAC,CACtE,EAEA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CgB,EAAmB,cAAc,CACnC,EACA,OAAOhB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CAAC,EAAM,EAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAI,CAAC,CACxE,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,GAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,IAAM,IAAM,EAC5D,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAC9D,CAAC,CACH,CACF,EAEA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,YAAa,UACb,aAAc,EACd,UACE,gJACJ,CAAC,CACH,EAEA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CgB,EAAmB,cAAc,CACnC,EACA,OAAOhB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIf,EAA+B,CACjC,QAAS,oDACX,CAAC,CACH,EACA,OAAOe,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAW,GACX,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC5D,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAC9D,CAAC,CACH,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIf,EAA+B,CACjC,QAAS,oDACX,CAAC,CACH,EACA,OAAOe,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAW,GACX,YAAa,mBACb,WAAY,IACZ,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,SACvB,UAAW,GACX,YAAa,kBACb,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,CACzD,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,IACvB,UAAW,GACX,YAAa,qBACb,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAC5D,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAC9D,CAAC,CACH,CACF,EACA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,EAAE,EAAG,CAAC,CAAC,EAAE,cAC7CmB,EAAoB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAI,CAAC,CAAC,CACzD,CACF,CAAC,EAED,GAAG,0BAA2B,SAAY,CAExC,MAAME,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAK,CACrB,KAAM,UACN,YAAauB,EAAwB,YACrC,QAASA,EAAwB,QACjC,sBAAuB,CAAC,EACxB,OAAQ,CAAC,CACX,CAAC,CACH,EAGAL,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,IAAI,qBAC9B,IAAIf,EAA+B,CACjC,QAAS,oDACX,CAAC,CACH,EACA,OAAOe,EAAQ,WAAW,EAAE,IAAI,qBAC9B,IAAIf,EAA+B,CACjC,QAAS,oDACX,CAAC,CACH,EACA,OAAOe,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAW,GACX,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAW,GACX,YAAa,mBACb,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,CACF,CAAC,EAED,GAAG,0BAA2B,SAAY,CAExC,MAAMkC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAK,CACrB,KAAM,UACN,YAAauB,EAAwB,YACrC,QAASA,EAAwB,QACjC,sBAAuB,CAAC,EACxB,OAAQ,CAAE,IAAK,oDAAqD,CACtE,CAAC,CACH,EAGAL,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAClD,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAW,GACX,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAW,GACX,YAAa,mBACb,WAAY,IACZ,UACE,8IACJ,CAAC,CACH,CACF,CAAC,EAED,GAAG,2BAA4B,SAAY,CAEzC,MAAMkC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAK,CACrB,KAAM,UACN,YAAauB,EAAwB,YACrC,QAASA,EAAwB,QACjC,sBAAuB,CAAC,EACxB,OAAQ,CAAE,EAAG,oDAAqD,CACpE,CAAC,CACH,EAGAL,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAClD,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAW,GACX,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,EACA,OAAOa,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAW,GACX,YAAa,mBACb,WAAY,EACZ,UACE,8IACJ,CAAC,CACH,CACF,CAAC,EAED,GAAG,2BAA4B,SAAY,CAEzC,MAAMkC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAK,CACrB,KAAM,UACN,YAAauB,EAAwB,YACrC,QAAS,CACP,gBAAiB,CACf,YAAa,mBACb,KAAM,gBACN,UACE,+IACF,MAAO,CAAC,UAAU,EAClB,QAAS,CAAC,QAAS,KAAK,EACxB,uBAAwB,eACxB,KAAM,cACR,CACF,EACA,sBAAuB,CACrB,gBAAiB,4CACnB,EACA,OAAQ,CAAC,CACX,CAAC,CACH,EAGAL,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,CAAE,UAAW,MAAO,CAAE,CAAC,CACtD,EACAuB,EAAkB,WAAW,kBAAkB,CAC7C,KAAMxB,EAAqB,aAC3B,QAAS,YACX,CAAC,EACD,MAAM,IAAIsB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAAqB,IAAIhB,CAAqB,EAC1E,OAAOiB,EAAkB,UAAU,EAAE,qBAAqB,CACxD,KAAMxB,EAAqB,aAC3B,QAAS,IACT,QAAS,6CACT,MAAO,CAAC,UAAU,EAClB,QAAS,CAAC,QAAS,KAAK,EACxB,UAAW,MACb,CAAC,EACD,OAAOuB,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,UAAW,GACX,YAAa,mBACb,uBAAwB,eACxB,UACE,8IACJ,CAAC,CACH,CACF,CAAC,EAED,GAAG,2CAA4C,SAAY,CAEzD,MAAMkC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAK,CACrB,KAAM,UACN,YAAauB,EAAwB,YACrC,QAAS,CACP,gBAAiB,CACf,YAAa,mBACb,KAAM,gBACN,UACE,+IACF,MAAO,CAAC,UAAU,EAClB,QAAS,CAAC,QAAS,KAAK,EACxB,uBAAwB,eACxB,KAAM,cACR,CACF,EACA,sBAAuB,CACrB,gBAAiB,4CACnB,EACA,OAAQ,CAAC,CACX,CAAC,CACH,EAGAL,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,CAAE,UAAW,MAAO,CAAE,CAAC,CACtD,EACAuB,EAAkB,WAAW,kBAAkB,CAC7C,KAAMxB,EAAqB,aAC3B,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,CACpC,EACA,QAAS,YACX,CAAC,EACD,MAAM,IAAIsB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAAqB,IAAIhB,CAAqB,EAC1E,OAAOiB,EAAkB,UAAU,EAAE,qBAAqB,CACxD,KAAMxB,EAAqB,aAC3B,QAAS,IACT,QAAS,6CACT,MAAO,CAAC,UAAU,EAClB,QAAS,CAAC,QAAS,KAAK,EACxB,UAAW,MACb,CAAC,EACD,OAAOuB,EAAQ,WAAW,EAAE,qBAC1B,IAAIpB,EAAuB,CACzB,SAAU,EACV,YAAa,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,CACxC,CAAC,CACH,EACA,OAAOoB,EAAQ,WAAW,EAAE,qBAC1B,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,UAAW,GACX,YAAa,mBACb,uBAAwB,eACxB,UACE,8IACJ,CAAC,CACH,CACF,CAAC,EAED,GAAG,oBAAqB,SAAY,CAOlC,MAAMkC,EAAqC,CACzC,UALA,CACE,KAAM5C,EAAqB,WAC3B,QAAS,UACX,EAGA,MAAOyB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBrB,CACpB,EAGAiB,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAC1B,IAAId,EAAwB,CAC1B,QAASP,EAAmB,cAAc,EAC1C,aAAc,EAChB,CAAC,CACH,CACF,CAAC,EAED,GAAG,oCAAqC,SAAY,CAElD,MAAM2C,EACJ,CACE,KAAM7C,EAAqB,WAC3B,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,CACpC,EACA,QAAS,UACX,EACI4C,EAAqC,CACzC,UAAAC,EACA,MAAOpB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBrB,CACpB,EAGAiB,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAGzE,OAAOrB,EAAQ,WAAW,EAAE,qBAC1B,IAAIpB,EAAuB,CACzB,SAAU,EACV,YAAa0C,EAAU,YAAa,OACtC,CAAC,CACH,EACA,OAAOtB,EAAQ,WAAW,EAAE,qBAC1B,IAAId,EAAwB,CAC1B,QAASP,EAAmB,cAAc,EAC1C,aAAc,EAChB,CAAC,CACH,CACF,CAAC,EAED,GAAG,8BAA+B,SAAY,CAE5C,MAAM0C,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAKuB,CAAuB,CAChD,EACAL,EAAQ,YAAY,sBAClBtB,EAAqB,CACnB,MAAO,IAAIG,EAA2B,OAAO,CAC/C,CAAC,CACH,EAEA,MAAM0C,EAAU,IAAIxB,EAClBC,EACAC,EACAoB,CACF,EAAE,IAAI,EAGN,MAAM,OAAOE,CAAO,EAAE,SAAS,cAC7B7C,EAAqB,CACnB,MAAO,IAAIG,EAA2B,OAAO,CAC/C,CAAC,CACH,CACF,CAAC,EAED,GAAG,wCAAyC,SAAY,CAEtD,MAAMwC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBtB,EAAKuB,CAAuB,CAChD,EACAL,EAAQ,YACL,sBAAsBtB,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAAC,EACvE,sBAAsBA,EAAqB,CAAE,KAAM,CAAE,WAAY,CAAE,CAAE,CAAC,CAAC,EACvE,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBACCA,EAAqB,CACnB,MAAO,IAAIG,EAA2B,OAAO,CAC/C,CAAC,CACH,EAEF,MAAM0C,EAAU,IAAIxB,EAClBC,EACAC,EACAoB,CACF,EAAE,IAAI,EAGN,MAAM,OAAOE,CAAO,EAAE,SAAS,cAC7B7C,EAAqB,CAAE,MAAO,IAAIG,EAA2B,OAAO,CAAE,CAAC,CACzE,CACF,CAAC,EAED,GAAG,4CAA6C,SAAY,CAE1D,MAAMwC,EAAqC,CACzC,UAAW,KACX,MAAOnB,EACP,OAAQC,EACR,QAASC,EACT,iBAAkBrB,CACpB,EAEAiB,EAAQ,YAEL,sBAAsBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBAAsBA,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAE/D,sBACCA,EAAqB,CACnB,MAAO,IAAIG,EAA2B,OAAO,CAC/C,CAAC,CACH,EACC,kBAAkBH,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC9D,MAAM6C,EAAU,IAAIxB,EAClBC,EACAC,EACAoB,CACF,EAAE,IAAI,EAGN,MAAM,OAAOE,CAAO,EAAE,SAAS,cAC7B7C,EAAqB,CAAE,MAAO,IAAIG,EAA2B,OAAO,CAAE,CAAC,CACzE,CACF,CAAC,EAED,GAAG,oBAAqB,SAAY,CAElC,MAAMwC,EAAqC,CACzC,UAAW,KACX,MAAO,CAAC,EACR,OAAQ,CAAC,EACT,QAAS,CAEP,CACE,KAAM,WACN,KAAM,YACN,MAAO,IAAIzB,EAAoB,CAAC,CAClC,EACA,CACE,KAAM,cACN,KAAM,UACN,MAAO,IAAIC,EACTlB,EAAmB,4CAA4C,CACjE,CACF,EAEA,CACE,KAAM,gBACN,KAAM,YACN,MAAO,IAAIiB,EAAoB,CAAC,CAClC,CACF,EACA,iBAAkBd,EAAK,CACrB,KAAM,UACN,YAAa,CACX,YAAa,UACb,aAAc,EACd,UAAW,KACb,EACA,sBAAuB,CAAC,EACxB,OAAQ,CAAC,EACT,QAAS,CACP,cAAe,CACb,YAAa,UACb,KAAM,cACN,UAAW,MACX,KAAM,KACR,EACA,mBAAoB,CAClB,YAAa,cACb,KAAM,mBACN,UAAW,MACX,KAAM,KACR,CACF,CACF,CAAC,CACH,EAEAkB,EAAQ,YAAY,kBAClBtB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACA,MAAM,IAAIqB,EAAyBC,EAASC,EAAmBoB,CAAI,EAAE,IAAI,EAIzE,OAAOrB,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5C,IAAIZ,EAA2B,CAAE,KAAMD,EAAiB,UAAW,CAAC,CACtE,EAEA,OAAOa,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,YAAa,UACb,aAAc,EACd,UAAW,KACb,CAAC,CACH,EAEA,OAAOa,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5CkB,EAAoB,CAAC,CACvB,EACA,OAAOlB,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,IACvB,UAAW,GACX,YAAa,UACb,UAAW,KACb,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5CmB,EACE,WAAW,KAAK,CACd,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAC5D,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAC9D,CAAC,CACH,CACF,EAEA,OAAOnB,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5CkB,EAAoB,CAAC,CACvB,EACA,OAAOlB,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,cACvB,KAAM,kBACR,CAAC,CACH,EACA,OAAOa,EAAQ,YAAY,KAAK,MAAM,CAAC,EAAG,CAAC,CAAC,EAAE,cAC5C,IAAIZ,EAA2B,CAC7B,KAAMD,EAAiB,IACvB,UAAW,GACX,YAAa,cACb,UAAW,KACb,CAAC,CACH,CACF,CAAC,CACH,CAAC",
6
6
  "names": ["ClearSignContextType", "CommandResultFactory", "hexaStringToBuffer", "LoadCertificateCommand", "UnknownDeviceExchangeError", "Just", "Nothing", "GetChallengeCommand", "ProvideTokenInformationCommand", "ProvideWeb3CheckCommand", "Eip712FilterType", "SendEIP712FilteringCommand", "SendEIP712StructDefinitionCommand", "StructDefinitionCommand", "SendEIP712StructImplemCommand", "StructImplemType", "makeDeviceActionInternalApiMock", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "ProvideEIP712ContextTask", "apiMock", "contextModuleMock", "TEST_TYPES", "TEST_DOMAIN_VALUES", "TEST_MESSAGE_VALUES", "TEST_CLEAR_SIGN_CONTEXT", "ADDRESS", "STRING", "UINT256", "UINT160", "UINT48", "CUSTOM", "name", "sendStructDefName", "sendStructDefField", "type", "sendStructImplRoot", "value", "sendStructImplArray", "sendStructImplField", "data", "args", "web3Check", "promise"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ClearSignContextType as t}from"@ledgerhq/context-module";import{CommandResultFactory as a,InvalidStatusWordError as i,isSuccessCommandResult as s,LoadCertificateCommand as d}from"@ledgerhq/device-management-kit";import{Just as m,Nothing as c}from"purify-ts";import{ProvideNFTInformationCommand as u}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideTokenInformationCommand as p}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTrustedNameCommand as h}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as T}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as E}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as l}from"../../app-binder/command/SetPluginCommand";import{SendPayloadInChunksTask as C}from"./SendPayloadInChunksTask";class R{constructor(r,e){this.api=r;this.args=e}async run(){if(this.args.web3Check){const r=await this.provideContext(this.args.web3Check);if(!s(r))return m(r)}for(const r of this.args.clearSignContexts){const e=await this.provideContext(r);if(!s(e))return m(e)}return c}async provideContext({type:r,payload:e,certificate:o}){switch(o&&await this.api.sendCommand(new d({keyUsage:o.keyUsageNumber,certificate:o.payload})),r){case t.PLUGIN:return await this.api.sendCommand(new l({payload:e}));case t.EXTERNAL_PLUGIN:return await this.api.sendCommand(new E({payload:e}));case t.NFT:return await this.api.sendCommand(new u({payload:e}));case t.TOKEN:return await this.api.sendCommand(new p({payload:e}));case t.TRUSTED_NAME:return new C(this.api,{payload:e,commandFactory:n=>new h({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case t.ENUM:case t.TRANSACTION_FIELD_DESCRIPTION:case t.TRANSACTION_INFO:return a({error:new i("The context type [EXTERNAL_PLUGIN] is not valid here")});case t.WEB3_CHECK:return new C(this.api,{payload:e,commandFactory:n=>new T({payload:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();default:{const n=r;return a({error:new i(`The context type [${n}] is not covered`)})}}}}export{R as ProvideTransactionContextTask};
1
+ import{ClearSignContextType as a}from"@ledgerhq/context-module";import{ByteArrayBuilder as C,CommandResultFactory as h,InvalidStatusWordError as k,isSuccessCommandResult as d,LoadCertificateCommand as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{Left as m,Right as y}from"purify-ts";import{ProvideEnumCommand as l}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as u,ProvideNetworkConfigurationCommand as c}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as F}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as I}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as _}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as f}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as P}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as w}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as E}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as v}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as N}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as S}from"../../app-binder/command/StoreTransactionCommand";import{SendCommandInChunksTask as x}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as A}from"./SendPayloadInChunksTask";class J{constructor(i,t,o=(r,s)=>new A(r,s),n=(r,s)=>new x(r,s)){this._api=i;this._args=t;this._sendPayloadInChunksTaskFactory=o;this._sendCommandInChunksTaskFactory=n}async run(){for(const t of this._args.subcontextsCallbacks){const o=await t();if(o.type===a.ERROR)continue;const n=await this.provideContext(o);if(!d(n))return m(n)}const i=await this.provideContext(this._args.context);return d(i)?y(void 0):m(i)}async provideContext({type:i,payload:t,certificate:o}){switch(o&&await this._api.sendCommand(new p({keyUsage:o.keyUsageNumber,certificate:o.payload})),i){case a.PLUGIN:return await this._api.sendCommand(new N({payload:t}));case a.EXTERNAL_PLUGIN:return await this._api.sendCommand(new v({payload:t}));case a.NFT:return await this._api.sendCommand(new F({payload:t}));case a.TOKEN:return await this._api.sendCommand(new _({payload:t}));case a.TRANSACTION_INFO:{const n=T.splitPath(this._args.derivationPath),r=new C;return r.add8BitUIntToData(n.length),n.forEach(e=>{r.add32BitUIntToData(e)}),r.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:r.build(),commandFactory:e=>new S({serializedTransaction:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run(),await this._sendPayloadInChunksTaskFactory(this._api,{payload:this._args.context.payload,commandFactory:e=>new P({data:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run()}case a.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new w({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new l({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new f({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new E({payload:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.PROXY_DELEGATE_CALL:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new I({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new c({data:n.chunkedData,isFirstChunk:n.isFirstChunk,configurationType:u.CONFIGURATION})}).run();case a.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new c({data:n.chunkedData,isFirstChunk:n.isFirstChunk,configurationType:u.ICON}),withPayloadLength:!1}).run();default:{const n=i;return h({error:new k(`The context type [${n}] is not covered`)})}}}}export{J as ProvideTransactionContextTask};
2
2
  //# sourceMappingURL=ProvideTransactionContextTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, type Maybe, Nothing } from \"purify-ts\";\n\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport {\n ProvideTokenInformationCommand,\n type ProvideTokenInformationCommandResponse,\n} from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\nexport type ProvideTransactionContextTaskArgs = {\n /**\n * The valid clear sign contexts offerred by the `BuildTrancationContextTask`.\n */\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n};\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the 5 necessary commands:\n * - `SetPluginCommand` (single command)\n * - `SetExternalPluginCommand` (single command)\n * - `ProvideNFTInformationCommand` (single command)\n * - `ProvideTokenInformationCommand` (single command)\n * - `ProvideTrustedNameCommand` (__mulpitle commands__)\n *\n * The method `provideTrustedNameTask` is dedicated to send the multiple `ProvideTrustedNameCommand`.\n */\nexport class ProvideTransactionContextTask {\n constructor(\n private api: InternalApi,\n private args: ProvideTransactionContextTaskArgs,\n ) {}\n\n async run(): Promise<Maybe<CommandErrorResult<EthErrorCodes>>> {\n if (this.args.web3Check) {\n const res = await this.provideContext(this.args.web3Check);\n if (!isSuccessCommandResult(res)) {\n return Just(res);\n }\n }\n for (const context of this.args.clearSignContexts) {\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Just(res);\n }\n }\n return Nothing;\n }\n\n /**\n * This method will send a command according to the clear sign context type and return the command result if only one command\n * is sent, otherwise it will return the result of the `provideTrustedNameTask`.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent or result of the `provideTrustedNameTask`.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<\n CommandResult<void | ProvideTokenInformationCommandResponse, EthErrorCodes>\n > {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this.api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this.api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this.api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.TRANSACTION_INFO: {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"The context type [EXTERNAL_PLUGIN] is not valid here\",\n ),\n });\n }\n case ClearSignContextType.WEB3_CHECK:\n return new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,wBAAAA,MACK,2BACP,OAGE,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,QAAAC,EAAkB,WAAAC,MAAe,YAE1C,OAAS,gCAAAC,MAAoC,4DAC7C,OACE,kCAAAC,MAEK,8DACP,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,4BAAAC,MAAgC,wDACzC,OAAS,oBAAAC,MAAwB,gDAGjC,OAAS,2BAAAC,MAA+B,4BAqBjC,MAAMC,CAA8B,CACzC,YACUC,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CAEH,MAAM,KAAyD,CAC7D,GAAI,KAAK,KAAK,UAAW,CACvB,MAAMC,EAAM,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,EACzD,GAAI,CAACd,EAAuBc,CAAG,EAC7B,OAAOZ,EAAKY,CAAG,CAEnB,CACA,UAAWC,KAAW,KAAK,KAAK,kBAAmB,CACjD,MAAMD,EAAM,MAAM,KAAK,eAAeC,CAAO,EAC7C,GAAI,CAACf,EAAuBc,CAAG,EAC7B,OAAOZ,EAAKY,CAAG,CAEnB,CACA,OAAOX,CACT,CASA,MAAM,eAAe,CACnB,KAAAa,EACA,QAAAC,EACA,YAAAC,CACF,EAEE,CAWA,OATIA,GACF,MAAM,KAAK,IAAI,YACb,IAAIjB,EAAuB,CACzB,SAAUiB,EAAY,eACtB,YAAaA,EAAY,OAC3B,CAAC,CACH,EAGMF,EAAM,CACZ,KAAKnB,EAAqB,OACxB,OAAO,MAAM,KAAK,IAAI,YAAY,IAAIY,EAAiB,CAAE,QAAAQ,CAAQ,CAAC,CAAC,EAErE,KAAKpB,EAAqB,gBACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIW,EAAyB,CAAE,QAAAS,CAAQ,CAAC,CAC1C,EAEF,KAAKpB,EAAqB,IACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIO,EAA6B,CAAE,QAAAa,CAAQ,CAAC,CAC9C,EAEF,KAAKpB,EAAqB,MACxB,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIQ,EAA+B,CAAE,QAAAY,CAAQ,CAAC,CAChD,EAEF,KAAKpB,EAAqB,aACxB,OAAO,IAAIa,EAAwB,KAAK,IAAK,CAC3C,QAAAO,EACA,eAAiBJ,GACf,IAAIP,EAA0B,CAC5B,KAAMO,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EAET,KAAKhB,EAAqB,KAC1B,KAAKA,EAAqB,8BAC1B,KAAKA,EAAqB,iBACxB,OAAOC,EAAqB,CAC1B,MAAO,IAAIC,EACT,sDACF,CACF,CAAC,EAEH,KAAKF,EAAqB,WACxB,OAAO,IAAIa,EAAwB,KAAK,IAAK,CAC3C,QAAAO,EACA,eAAiBJ,GACf,IAAIN,EAAwB,CAC1B,QAASM,EAAK,YACd,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,QAAS,CACP,MAAMM,EAAuBH,EAC7B,OAAOlB,EAAqB,CAC1B,MAAO,IAAIC,EACT,qBAAqBoB,CAAa,kBACpC,CACF,CAAC,CACH,CACF,CACF,CACF",
6
- "names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "Just", "Nothing", "ProvideNFTInformationCommand", "ProvideTokenInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "SendPayloadInChunksTask", "ProvideTransactionContextTask", "api", "args", "res", "context", "type", "payload", "certificate", "uncoveredType"]
4
+ "sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideTransactionContextTaskArgs = {\n /**\n * The clear sign context to provide.\n */\n context: ClearSignContextSuccess;\n /**\n * The subcontexts callbacks to provide.\n */\n subcontextsCallbacks: (() => Promise<ClearSignContext>)[];\n /**\n * The serialized transaction to provide.\n */\n serializedTransaction: Uint8Array;\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n};\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideTransactionContextTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideTransactionContextTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<Either<CommandErrorResult<EthErrorCodes>, void>> {\n for (const callback of this._args.subcontextsCallbacks) {\n const subcontext = await callback();\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n const res = await this.provideContext(this._args.context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload: this._args.context.payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_DELEGATE_CALL:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
+ "mappings": "AAAA,OAGE,wBAAAA,MACK,2BACP,OACE,oBAAAC,EAGA,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBACpC,OAAsB,QAAAC,EAAM,SAAAC,MAAa,YAEzC,OAAS,sBAAAC,MAA0B,kDACnC,OACE,4BAAAC,EACA,sCAAAC,MACK,kEACP,OAAS,gCAAAC,MAAoC,4DAC7C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,6CAAAC,MAAiD,yEAC1D,OAAS,wCAAAC,MAA4C,oEACrD,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,4BAAAC,MAAgC,wDACzC,OAAS,oBAAAC,MAAwB,gDACjC,OAAS,2BAAAC,MAA+B,uDAGxC,OACE,2BAAAC,MAEK,4BACP,OACE,2BAAAC,MAEK,4BAyBA,MAAMC,CAA8B,CACzC,YACUC,EACAC,EACAC,EAAkC,CACxCC,EACAC,IACG,IAAIN,EAAwBK,EAAKC,CAAI,EAClCC,EAAkC,CACxCF,EACAC,IACG,IAAIP,EAAwBM,EAAKC,CAAI,EAC1C,CAVQ,UAAAJ,EACA,WAAAC,EACA,qCAAAC,EAIA,qCAAAG,CAIP,CAEH,MAAM,KAAgE,CACpE,UAAWC,KAAY,KAAK,MAAM,qBAAsB,CACtD,MAAMC,EAAa,MAAMD,EAAS,EAElC,GAAIC,EAAW,OAAShC,EAAqB,MAE3C,SAGF,MAAMiC,EAAM,MAAM,KAAK,eAAeD,CAAU,EAChD,GAAI,CAAC5B,EAAuB6B,CAAG,EAC7B,OAAO1B,EAAK0B,CAAG,CAEnB,CAEA,MAAMA,EAAM,MAAM,KAAK,eAAe,KAAK,MAAM,OAAO,EACxD,OAAK7B,EAAuB6B,CAAG,EAIxBzB,EAAM,MAAM,EAHVD,EAAK0B,CAAG,CAInB,CAQA,MAAM,eAAe,CACnB,KAAAC,EACA,QAAAC,EACA,YAAAC,CACF,EAA4E,CAW1E,OATIA,GACF,MAAM,KAAK,KAAK,YACd,IAAI/B,EAAuB,CACzB,SAAU+B,EAAY,eACtB,YAAaA,EAAY,OAC3B,CAAC,CACH,EAGMF,EAAM,CACZ,KAAKlC,EAAqB,OACxB,OAAO,MAAM,KAAK,KAAK,YAAY,IAAIoB,EAAiB,CAAE,QAAAe,CAAQ,CAAC,CAAC,EAEtE,KAAKnC,EAAqB,gBACxB,OAAO,MAAM,KAAK,KAAK,YACrB,IAAImB,EAAyB,CAAE,QAAAgB,CAAQ,CAAC,CAC1C,EAEF,KAAKnC,EAAqB,IACxB,OAAO,MAAM,KAAK,KAAK,YACrB,IAAIY,EAA6B,CAAE,QAAAuB,CAAQ,CAAC,CAC9C,EAEF,KAAKnC,EAAqB,MACxB,OAAO,MAAM,KAAK,KAAK,YACrB,IAAIc,EAA+B,CAAE,QAAAqB,CAAQ,CAAC,CAChD,EAEF,KAAKnC,EAAqB,iBAAkB,CAC1C,MAAMqC,EAAQ/B,EAAoB,UAAU,KAAK,MAAM,cAAc,EAC/DgC,EAAU,IAAIrC,EACpB,OAAAqC,EAAQ,kBAAkBD,EAAM,MAAM,EACtCA,EAAM,QAASE,GAAS,CACtBD,EAAQ,mBAAmBC,CAAI,CACjC,CAAC,EACDD,EAAQ,gBAAgB,KAAK,MAAM,qBAAqB,EACxD,MAAM,KAAK,gCAAgC,KAAK,KAAM,CACpD,KAAMA,EAAQ,MAAM,EACpB,eAAiBT,GACf,IAAIR,EAAwB,CAC1B,sBAAuBQ,EAAK,YAC5B,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EAGL,MAAM,KAAK,gCAAgC,KAAK,KAAM,CACpD,QAAS,KAAK,MAAM,QAAQ,QAC5B,eAAiBA,GACf,IAAIb,EAAqC,CACvC,KAAMa,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,CAGX,CACA,KAAK7B,EAAqB,aACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIZ,EAA0B,CAC5B,KAAMY,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EAET,KAAK7B,EAAqB,KACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIpB,EAAmB,CACrB,KAAMoB,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,KAAK7B,EAAqB,8BACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAId,EAA0C,CAC5C,KAAMc,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,KAAK7B,EAAqB,WACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIX,EAAwB,CAC1B,QAASW,EAAK,YACd,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,KAAK7B,EAAqB,oBACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIhB,EAAwB,CAC1B,KAAMgB,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACT,KAAK7B,EAAqB,gBAGxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIlB,EAAmC,CACrC,KAAMkB,EAAK,YACX,aAAcA,EAAK,aACnB,kBAAmBnB,EAAyB,aAC9C,CAAC,CACL,CAAC,EAAE,IAAI,EACT,KAAKV,EAAqB,qBACxB,OAAO,KAAK,gCAAgC,KAAK,KAAM,CACrD,QAAAmC,EACA,eAAiBN,GACf,IAAIlB,EAAmC,CACrC,KAAMkB,EAAK,YACX,aAAcA,EAAK,aACnB,kBAAmBnB,EAAyB,IAC9C,CAAC,EACH,kBAAmB,EACrB,CAAC,EAAE,IAAI,EAET,QAAS,CACP,MAAM8B,EAAuBN,EAC7B,OAAOhC,EAAqB,CAC1B,MAAO,IAAIC,EACT,qBAAqBqC,CAAa,kBACpC,CACF,CAAC,CACH,CACF,CACF,CACF",
6
+ "names": ["ClearSignContextType", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "DerivationPathUtils", "Left", "Right", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "SendCommandInChunksTask", "SendPayloadInChunksTask", "ProvideTransactionContextTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "_sendCommandInChunksTaskFactory", "callback", "subcontext", "res", "type", "payload", "certificate", "paths", "builder", "path", "uncoveredType"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ClearSignContextType as n}from"@ledgerhq/context-module";import{CommandResultFactory as s,hexaStringToBuffer as c,LoadCertificateCommand as m}from"@ledgerhq/device-management-kit";import{ProvideNFTInformationCommand as l}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideTokenInformationCommand as C}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideWeb3CheckCommand as p}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as x}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as h}from"../../app-binder/command/SetPluginCommand";import{makeDeviceActionInternalApiMock as y}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideTransactionContextTask as a}from"./ProvideTransactionContextTask";describe("ProvideTransactionContextTask",()=>{const e=y(),r=s({data:void 0}),i=s({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o={clearSignContexts:[{type:n.PLUGIN,payload:"706c7567696e"},{type:n.EXTERNAL_PLUGIN,payload:"65787465726e616c506c7567696e"},{type:n.NFT,payload:"6e6674"},{type:n.TOKEN,payload:"746f6b656e"}],web3Check:null};beforeEach(()=>{vi.resetAllMocks()}),it("should send relative commands when receiving ClearSignContexts of type not trustedName",async()=>{e.sendCommand.mockResolvedValue(r),await new a(e,o).run(),expect(e.sendCommand).toHaveBeenCalledTimes(4),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.PLUGIN)+1,expect.objectContaining(new h({payload:"706c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.EXTERNAL_PLUGIN)+1,expect.objectContaining(new x({payload:"65787465726e616c506c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.NFT)+1,expect.objectContaining(new l({payload:"6e6674"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.TOKEN)+1,expect.objectContaining(new C({payload:"746f6b656e"})))}),it("should return the command error result and stop when the command fails",async()=>{e.sendCommand.mockResolvedValueOnce(i);const t=await new a(e,o).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t.isJust()).toBe(!0),expect(t.extract()).toStrictEqual(i)}),it("should send the web3Check command when it is provided",async()=>{e.sendCommand.mockResolvedValue(r);const t=await new a(e,{...o,web3Check:{type:n.WEB3_CHECK,payload:"0x01020304",certificate:{payload:new Uint8Array,keyUsageNumber:1}}}).run();expect(e.sendCommand).toHaveBeenCalledTimes(6),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining(new m({certificate:new Uint8Array,keyUsage:1}))),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining(new p({payload:c("0x000401020304"),isFirstChunk:!0}))),expect(t.isJust()).toBe(!1)})})});
1
+ import{ClearSignContextType as t}from"@ledgerhq/context-module";import{CommandResultFactory as A,InvalidStatusWordError as g,LoadCertificateCommand as v}from"@ledgerhq/device-management-kit";import{Left as w,Right as p}from"purify-ts";import{ProvideEnumCommand as B}from"../../app-binder/command/ProvideEnumCommand";import{ProvideNetworkConfigurationCommand as P}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as R}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as h}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as E}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as F}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as b}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as U}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as O}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as H}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as N}from"../../app-binder/command/StoreTransactionCommand";import{makeDeviceActionInternalApiMock as S}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideTransactionContextTask as i}from"./ProvideTransactionContextTask";import{SendCommandInChunksTask as _}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideTransactionContextTask",()=>{const e=S(),c=A({data:void 0}),T=A({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const n=vi.fn(),x=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((a,o)=>({run:()=>x(a,o)})),d.mockImplementation((a,o)=>({run:()=>n(a,o)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const a={context:{type:t.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};x.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(x).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(v)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const a={context:{type:t.TRANSACTION_INFO,payload:"0x00"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};x.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(x).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it.each([[t.PLUGIN,H],[t.EXTERNAL_PLUGIN,O],[t.NFT,I],[t.TOKEN,h]])("should provide the transaction context by calling sendCommand for a %s context",async(a,o)=>{const s={context:{type:a,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const m=await new i(e,s,d,r).run();expect(m).toEqual(p(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(o))}),it.each([[t.ENUM,B],[t.TRUSTED_NAME,b],[t.WEB3_CHECK,U],[t.TRANSACTION_FIELD_DESCRIPTION,E],[t.PROXY_DELEGATE_CALL,R],[t.DYNAMIC_NETWORK_ICON,P,!1],[t.DYNAMIC_NETWORK,P]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(a,o,s=void 0)=>{const C={context:{type:a,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c);const l=await new i(e,C,d,r).run();expect(l).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),s===void 0?expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:s});const f=d.mock.calls[0][1].commandFactory,u={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},k=f(u);expect(k).toBeInstanceOf(o)}),it("should skip the subcontexts if the context is an error",async()=>{const a={context:{type:t.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[()=>Promise.resolve({type:t.ERROR,error:new Error("error")})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(0),expect(x).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(v)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const a={context:{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.TOKEN,payload:"payload"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(E),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const a={context:{type:t.TRUSTED_NAME,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.NFT,payload:"payload1"}),()=>Promise.resolve({type:t.TOKEN,payload:"payload2"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(b),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const a={context:{type:t.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[()=>Promise.resolve({type:t.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i(e,a,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(v)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(v))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const a={context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const s=await new i(e,a,d,r).run();expect(s).toEqual(w(T))}),it("should return an error if the provide subcontext fails",async()=>{const a={context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.TOKEN,payload:"payload"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const s=await new i(e,a,d,r).run();expect(s).toEqual(w(T))}),it("should return an error if the type is not supported",async()=>{const a={context:{type:"unsupported",payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},s=await new i(e,a,d,r).run();expect(s).toEqual(w(A({error:new g("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const a=new i(e,{context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(a._sendPayloadInChunksTaskFactory).toBeDefined();const o=a._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new E({data:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(D)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const a=new i(e,{context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(a._sendCommandInChunksTaskFactory).toBeDefined();const o=a._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new N({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(_)})})})});
2
2
  //# sourceMappingURL=ProvideTransactionContextTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.test.ts"],
4
- "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideTransactionContextTask,\n type ProvideTransactionContextTaskArgs,\n} from \"./ProvideTransactionContextTask\";\n\ndescribe(\"ProvideTransactionContextTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const args: ProvideTransactionContextTaskArgs = {\n clearSignContexts: [\n {\n type: ClearSignContextType.PLUGIN,\n payload: \"706c7567696e\", // \"plugin\"\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"65787465726e616c506c7567696e\", // \"externalPlugin\"\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"6e6674\", // \"nft\"\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"746f6b656e\", // \"token\"\n },\n ],\n web3Check: null,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should send relative commands when receiving ClearSignContexts of type not trustedName\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(4);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetPluginCommand({ payload: \"706c7567696e\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.EXTERNAL_PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetExternalPluginCommand({\n payload: \"65787465726e616c506c7567696e\",\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.NFT,\n ) + 1,\n expect.objectContaining(\n new ProvideNFTInformationCommand({ payload: \"6e6674\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.TOKEN,\n ) + 1,\n expect.objectContaining(\n new ProvideTokenInformationCommand({ payload: \"746f6b656e\" }),\n ),\n );\n });\n\n it(\"should return the command error result and stop when the command fails\", async () => {\n api.sendCommand.mockResolvedValueOnce(errorResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(result.isJust()).toBe(true);\n expect(result.extract()).toStrictEqual(errorResult);\n });\n\n it(\"should send the web3Check command when it is provided\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n ...args,\n web3Check: {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x01020304\",\n certificate: {\n payload: new Uint8Array(),\n keyUsageNumber: 1,\n },\n },\n });\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(6);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining(\n new LoadCertificateCommand({\n certificate: new Uint8Array(),\n keyUsage: 1,\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x000401020304\")!,\n isFirstChunk: true,\n }),\n ),\n );\n expect(result.isJust()).toBe(false);\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["ClearSignContextType", "CommandResultFactory", "hexaStringToBuffer", "LoadCertificateCommand", "ProvideNFTInformationCommand", "ProvideTokenInformationCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "makeDeviceActionInternalApiMock", "ProvideTransactionContextTask", "api", "successResult", "errorResult", "args", "c", "result"]
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideTransactionContextTask,\n type ProvideTransactionContextTaskArgs,\n} from \"./ProvideTransactionContextTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideTransactionContextTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n sendCommandInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendCommandInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendCommandInChunksTaskRunMock(a, args),\n }) as unknown as SendCommandInChunksTask<unknown>,\n );\n sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<unknown>,\n );\n });\n\n describe(\"with no subcontexts\", () => {\n it(\"should provide the transaction context for a TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [ClearSignContextType.PROXY_DELEGATE_CALL, ProvideProxyInfoCommand],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n } as ClearSignContextSuccess,\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(commandClass);\n },\n );\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "Left", "Right", "ProvideEnumCommand", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "makeDeviceActionInternalApiMock", "ProvideTransactionContextTask", "SendCommandInChunksTask", "SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendCommandInChunksTaskRunMock", "sendCommandInChunksTaskMockFactory", "sendPayloadInChunksTaskMockFactory", "args", "result", "commandFactory", "mockArgs", "command", "commandFactory2", "command2", "contextType", "commandClass", "withPayloadLength", "task", "sendPayloadInChunksTask", "sendCommandInChunksTask"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as r,InvalidStatusWordError as n}from"@ledgerhq/device-management-kit";import{PayloadUtils as o}from"../../shared/utils/PayloadUtils";import{SendCommandInChunksTask as t}from"./SendCommandInChunksTask";class p{constructor(a,d){this.api=a;this.args=d}async run(){const a=o.getBufferFromPayload(this.args.payload);return a?new t(this.api,{data:a,commandFactory:this.args.commandFactory}).run():r({error:new n("Invalid payload")})}}export{p as SendPayloadInChunksTask};
1
+ import{CommandResultFactory as o,hexaStringToBuffer as t,InvalidStatusWordError as e}from"@ledgerhq/device-management-kit";import{PayloadUtils as s}from"../../shared/utils/PayloadUtils";import{SendCommandInChunksTask as d}from"./SendCommandInChunksTask";class p{constructor(r,n){this.api=r;this.args=n}async run(){const{payload:r,withPayloadLength:n=!0}=this.args;let a=null;return n?a=s.getBufferFromPayload(r):a=t(r),a?new d(this.api,{data:a,commandFactory:this.args.commandFactory}).run():o({error:new e("Invalid payload")})}}export{p as SendPayloadInChunksTask};
2
2
  //# sourceMappingURL=SendPayloadInChunksTask.js.map