@ledgerhq/context-module 0.0.0-develop-20260428002525 → 0.0.0-develop-20260430002707

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 (233) hide show
  1. package/lib/cjs/package.json +1 -2
  2. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.js +1 -1
  3. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.js.map +3 -3
  4. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js +1 -1
  5. package/lib/cjs/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js.map +3 -3
  6. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  7. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +3 -3
  8. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
  9. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +3 -3
  10. package/lib/cjs/src/calldata/di/calldataModuleFactory.js +1 -1
  11. package/lib/cjs/src/calldata/di/calldataModuleFactory.js.map +3 -3
  12. package/lib/cjs/src/di.js +1 -1
  13. package/lib/cjs/src/di.js.map +3 -3
  14. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  15. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +3 -3
  16. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
  17. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +3 -3
  18. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  19. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  20. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  21. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  22. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js +1 -1
  23. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +3 -3
  24. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
  25. package/lib/cjs/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +3 -3
  26. package/lib/cjs/src/network/di/networkModuleFactory.js +2 -0
  27. package/lib/cjs/src/network/di/networkModuleFactory.js.map +7 -0
  28. package/lib/cjs/src/network/di/networkTypes.js +2 -0
  29. package/lib/cjs/src/network/di/networkTypes.js.map +7 -0
  30. package/lib/cjs/src/network/networkClientFactory.js +2 -0
  31. package/lib/cjs/src/network/networkClientFactory.js.map +7 -0
  32. package/lib/cjs/src/network/networkClientFactory.test.js +2 -0
  33. package/lib/cjs/src/network/networkClientFactory.test.js.map +7 -0
  34. package/lib/cjs/src/nft/data/HttpNftDataSource.js +1 -1
  35. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +3 -3
  36. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  37. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  38. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  39. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  40. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  41. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  42. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +1 -1
  43. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  44. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  45. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  46. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  47. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  48. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  49. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  50. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +1 -1
  51. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  52. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  53. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  54. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  55. package/lib/cjs/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  56. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  57. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  58. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  59. package/lib/cjs/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  60. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  61. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  62. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  63. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  64. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  65. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  66. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  67. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  68. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  69. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  70. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  71. package/lib/cjs/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  72. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  73. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +3 -3
  74. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  75. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  76. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  77. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  78. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  79. package/lib/cjs/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  80. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  81. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  82. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  83. package/lib/cjs/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  84. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  85. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  86. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  87. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  88. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  89. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  90. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  91. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  92. package/lib/esm/package.json +1 -2
  93. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js +1 -1
  94. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.js.map +3 -3
  95. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js +1 -1
  96. package/lib/esm/src/account-ownership/data/HttpAccountOwnershipDataSource.test.js.map +3 -3
  97. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +1 -1
  98. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +3 -3
  99. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
  100. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +3 -3
  101. package/lib/esm/src/calldata/di/calldataModuleFactory.js +1 -1
  102. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +3 -3
  103. package/lib/esm/src/di.js +1 -1
  104. package/lib/esm/src/di.js.map +3 -3
  105. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +1 -1
  106. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +3 -3
  107. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
  108. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +3 -3
  109. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  110. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  111. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  112. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  113. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js +1 -1
  114. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.js.map +3 -3
  115. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
  116. package/lib/esm/src/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +3 -3
  117. package/lib/esm/src/network/di/networkModuleFactory.js +2 -0
  118. package/lib/esm/src/network/di/networkModuleFactory.js.map +7 -0
  119. package/lib/esm/src/network/di/networkTypes.js +2 -0
  120. package/lib/esm/src/network/di/networkTypes.js.map +7 -0
  121. package/lib/esm/src/network/networkClientFactory.js +2 -0
  122. package/lib/esm/src/network/networkClientFactory.js.map +7 -0
  123. package/lib/esm/src/network/networkClientFactory.test.js +2 -0
  124. package/lib/esm/src/network/networkClientFactory.test.js.map +7 -0
  125. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  126. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +3 -3
  127. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  128. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  129. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js +1 -1
  130. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js.map +3 -3
  131. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js +1 -1
  132. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js.map +3 -3
  133. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +1 -1
  134. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +3 -3
  135. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +1 -1
  136. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +3 -3
  137. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +1 -1
  138. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +3 -3
  139. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +1 -1
  140. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +3 -3
  141. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +1 -1
  142. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +3 -3
  143. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  144. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.js.map +3 -3
  145. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  146. package/lib/esm/src/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +3 -3
  147. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js +1 -1
  148. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.js.map +3 -3
  149. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js +1 -1
  150. package/lib/esm/src/safe/data/HttpSafeAccountDataSource.test.js.map +3 -3
  151. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +1 -1
  152. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +3 -3
  153. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +1 -1
  154. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +3 -3
  155. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  156. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  157. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  158. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  159. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js +1 -1
  160. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.js.map +3 -3
  161. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js +6 -6
  162. package/lib/esm/src/solanaToken/data/HttpSolanaTokenDataSource.test.js.map +3 -3
  163. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  164. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +3 -3
  165. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  166. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  167. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js +1 -1
  168. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.js.map +3 -3
  169. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js +1 -1
  170. package/lib/esm/src/transaction-check/data/HttpTransactionCheckDataSource.test.js.map +3 -3
  171. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js +1 -1
  172. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.js.map +3 -3
  173. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js +1 -1
  174. package/lib/esm/src/transaction-check/data/HttpTypedDataCheckDataSource.test.js.map +3 -3
  175. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  176. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  177. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  178. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  179. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  180. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  181. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  182. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  183. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts +10 -10
  184. package/lib/types/src/account-ownership/data/HttpAccountOwnershipDataSource.d.ts.map +1 -1
  185. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts +3 -1
  186. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -1
  187. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -1
  188. package/lib/types/src/di.d.ts.map +1 -1
  189. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +3 -1
  190. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -1
  191. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts +3 -1
  192. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -1
  193. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts +3 -1
  194. package/lib/types/src/gated-signing/data/HttpGatedDescriptorDataSource.d.ts.map +1 -1
  195. package/lib/types/src/network/di/networkModuleFactory.d.ts +4 -0
  196. package/lib/types/src/network/di/networkModuleFactory.d.ts.map +1 -0
  197. package/lib/types/src/network/di/networkTypes.d.ts +4 -0
  198. package/lib/types/src/network/di/networkTypes.d.ts.map +1 -0
  199. package/lib/types/src/network/networkClientFactory.d.ts +4 -0
  200. package/lib/types/src/network/networkClientFactory.d.ts.map +1 -0
  201. package/lib/types/src/network/networkClientFactory.test.d.ts +2 -0
  202. package/lib/types/src/network/networkClientFactory.test.d.ts.map +1 -0
  203. package/lib/types/src/nft/data/HttpNftDataSource.d.ts +3 -1
  204. package/lib/types/src/nft/data/HttpNftDataSource.d.ts.map +1 -1
  205. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts +4 -1
  206. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts.map +1 -1
  207. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +3 -1
  208. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -1
  209. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +3 -1
  210. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -1
  211. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts +3 -1
  212. package/lib/types/src/reporter/data/HttpBlindSigningReporterDatasource.d.ts.map +1 -1
  213. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts +3 -1
  214. package/lib/types/src/safe/data/HttpSafeAccountDataSource.d.ts.map +1 -1
  215. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts +3 -1
  216. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -1
  217. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +3 -2
  218. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
  219. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts +3 -1
  220. package/lib/types/src/solanaToken/data/HttpSolanaTokenDataSource.d.ts.map +1 -1
  221. package/lib/types/src/token/data/HttpTokenDataSource.d.ts +3 -1
  222. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  223. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts +3 -1
  224. package/lib/types/src/transaction-check/data/HttpTransactionCheckDataSource.d.ts.map +1 -1
  225. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts +3 -1
  226. package/lib/types/src/transaction-check/data/HttpTypedDataCheckDataSource.d.ts.map +1 -1
  227. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +3 -1
  228. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  229. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -1
  230. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  231. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  232. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  233. package/package.json +5 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/calldata/data/HttpCalldataDescriptorDataSource.test.ts"],
4
- "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { Left } from \"purify-ts\";\n\nimport type {\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataTransactionInfoV1,\n} from \"@/calldata/data/dto/CalldataDto\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type CalldataDescriptorDataSource } from \"@/index\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpCalldataDescriptorDataSource } from \"./HttpCalldataDescriptorDataSource\";\n\nvi.mock(\"axios\");\nconst config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"test\",\n branch: \"main\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\n\ndescribe(\"HttpCalldataDescriptorDataSource\", () => {\n let datasource: CalldataDescriptorDataSource;\n let transactionInfo: CalldataTransactionInfoV1;\n let enums: CalldataEnumV1;\n let fieldToken: CalldataFieldV1;\n let fieldTrustedName: CalldataFieldV1;\n let fieldNft: CalldataFieldV1;\n let fieldAmount: CalldataFieldV1;\n let fieldDatetime: CalldataFieldV1;\n let fieldUnit: CalldataFieldV1;\n let fieldDuration: CalldataFieldV1;\n let fieldEnum: CalldataFieldV1;\n let fieldCalldata: CalldataFieldV1;\n const certificateLoaderMock = {\n loadCertificate: vi.fn(),\n };\n\n beforeAll(() => {\n vi.clearAllMocks();\n datasource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n \"dapps\",\n );\n\n transactionInfo = {\n descriptor: {\n data: \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c\",\n signatures: {\n test: \"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n },\n },\n };\n enums = {\n \"0\": {\n \"1\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65\",\n signatures: {\n test: \"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n },\n },\n \"2\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65\",\n signatures: {\n test: \"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n },\n },\n },\n };\n\n fieldAmount = createFieldWithoutReference(\"FROM\", \"UFIXED\", \"AMOUNT\", \"06\");\n fieldDatetime = createFieldWithoutReference(\n \"TO\",\n \"FIXED\",\n \"DATETIME\",\n \"07\",\n );\n fieldUnit = createFieldWithoutReference(\"TO\", \"BOOL\", \"UNIT\", \"08\");\n fieldDuration = createFieldWithoutReference(\n \"VALUE\",\n \"INT\",\n \"DURATION\",\n \"09\",\n );\n fieldToken = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"TOKEN_AMOUNT\",\n token: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n },\n descriptor:\n \"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178\",\n };\n fieldTrustedName = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"TO\",\n },\n type_family: \"STRING\",\n type_size: 20,\n },\n type: \"TRUSTED_NAME\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402\",\n };\n fieldNft = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n collection: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n type_family: \"INT\",\n type_size: 20,\n },\n type: \"NFT\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114\",\n };\n fieldEnum = {\n param: {\n id: 0,\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n type: \"ENUM\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020112\",\n };\n fieldCalldata = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n selector: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"FROM\",\n },\n type_family: \"BYTES\",\n type_size: 4,\n },\n amount: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n type_size: 32,\n },\n spender: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n });\n\n function createFieldWithoutReference(\n binary_path: string,\n type_family: string,\n type: string,\n descriptor: string,\n ): CalldataFieldV1 {\n return {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: binary_path,\n },\n type_family,\n type_size: 32,\n },\n type,\n },\n descriptor,\n } as CalldataFieldV1;\n }\n\n function createCalldata(\n calldataTransactionInfo: CalldataTransactionInfoV1,\n calldataEnums: CalldataEnumV1,\n fields: unknown[],\n ): unknown {\n return {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldata\",\n version: \"v1\",\n transaction_info: calldataTransactionInfo,\n enums: calldataEnums,\n fields: fields,\n },\n },\n },\n };\n }\n\n it(\"should call axios with the ledger client version header\", async () => {\n // GIVEN\n const version = `context-module/${PACKAGE.version}`;\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: version,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n\n it.each([[\"dapps\"], [\"tokens\"]])(\n \"should call axios with the correct url for endpoint '%s'\",\n async (endpoint) => {\n // GIVEN\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n const customDataSource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n endpoint,\n );\n\n // WHEN\n await customDataSource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n url: `https://crypto-assets-service.api.ledger.com/v1/${endpoint}`,\n }),\n );\n },\n );\n\n it(\"should return an error when axios throws an error\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error());\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n const response = { data: { test: \"\" } };\n vi.spyOn(axios, \"request\").mockResolvedValue(response);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array\",\n ),\n ),\n );\n });\n\n it(\"should return an error when an empty array is returned\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff\",\n ),\n ),\n );\n });\n\n it(\"should return an error when selector is not found\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [fieldToken]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x01fe\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe\",\n ),\n ),\n );\n });\n\n it(\"Calldata with fields references and enums\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"enum\",\n id: 0,\n value: 1,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"enum\",\n id: 0,\n value: 2,\n },\n {\n payload: fieldToken.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"trustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"enum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata with fields references and enums with certificates\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n const certificate: PkiCertificate = {\n keyUsageNumber: 11,\n payload: new Uint8Array([\n 0x01, 0x02, 0x03, 0x04, 0x15, 0x04, 0x05, 0x06, 0x07, 0x08,\n ]),\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n certificate,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n // certificate is added to the transactionInfo\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"enum\",\n id: 0,\n value: 1,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"enum\",\n id: 0,\n value: 2,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload: fieldToken.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"trustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"enum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata without fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata on third array element\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({\n data: [{}, {}, calldataDTO],\n });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata without fields references and transaction info signature length % 2 different from 0\", async () => {\n // GIVEN\n const newTransactionInfo: CalldataTransactionInfoV1 = {\n descriptor: {\n data: transactionInfo.descriptor.data,\n signatures: {\n test: transactionInfo.descriptor.signatures.test + \"0\",\n },\n },\n };\n const calldataDTO = createCalldata(\n newTransactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata with token fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Amount to exchange\",\n param: {\n type: \"TOKEN_AMOUNT\",\n token: {\n raw: \"0xae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n type: \"constant\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_stETHAmount\",\n },\n ],\n },\n type_size: 32,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n },\n },\n ]);\n });\n\n it(\"Calldata with collection fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Collection ID\",\n param: {\n type: \"NFT\",\n collection: {\n raw: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n type: \"constant\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_collectionId\",\n },\n ],\n },\n type_size: 20,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, [], [fieldCalldata]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: fieldCalldata.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n selector: \"FROM\",\n amount: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"TUPLE_LEAF\",\n },\n ],\n spender: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n ],\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references without optional properties\", async () => {\n // GIVEN\n const fieldCalldataMinimal = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldCalldataMinimal],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: fieldCalldataMinimal.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n selector: undefined,\n amount: undefined,\n spender: undefined,\n chainId: undefined,\n },\n },\n ]);\n });\n\n it(\"should return an error when calldata is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldat\",\n version: \"v1\",\n transaction_info: transactionInfo,\n enums: enums,\n fields: [fieldToken],\n },\n },\n },\n };\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when transactionInfo is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n {\n descriptor: {\n data: \"1234\",\n signatures: {\n prod: \"1234\",\n },\n },\n },\n enums,\n [fieldToken],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [\"badEnum\"] as unknown as CalldataEnumV1,\n [fieldToken],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum does not contain a signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n { 0: { 1: { data: \"1234\" } } } as unknown as CalldataEnumV1,\n [fieldToken],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum contain the wrong signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n {\n 0: {\n 1: {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65\",\n signatures: {\n prod: \"wrongSignature\", // prod instead of test signature\n },\n },\n },\n },\n [fieldToken],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [{ descriptor: 3 }],\n );\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field value is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"UNKNOWN\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field container path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"UNKNOWN\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field calldata path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: {\n elements: [\n {\n type: \"UNKNOWN\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field type is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"UNKNOWN\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [calldataDTO] });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should call axios with the correct headers\", async () => {\n // GIVEN\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(axios.request).toHaveBeenCalledWith(\n expect.objectContaining({\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: config.originToken,\n },\n }),\n );\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAOC,MAAW,QAClB,OAAS,QAAAC,MAAY,YAWrB,OACE,gCAAAC,EACA,8BAAAC,MACK,gCACP,OAAOC,MAAa,qBAEpB,OAAS,oCAAAC,MAAwC,qCAEjD,GAAG,KAAK,OAAO,EACf,MAAMC,EAAS,CACb,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,EACA,YAAa,aACf,EAEA,SAAS,mCAAoC,IAAM,CACjD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAwB,CAC5B,gBAAiB,GAAG,GAAG,CACzB,EAEA,UAAU,IAAM,CACd,GAAG,cAAc,EACjBZ,EAAa,IAAIF,EACfC,EACAa,EACA,OACF,EAEAX,EAAkB,CAChB,WAAY,CACV,KAAM,6PACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,EACAC,EAAQ,CACN,EAAK,CACH,EAAK,CACH,KAAM,iHACN,WAAY,CACV,KAAM,gJACR,CACF,EACA,EAAK,CACH,KAAM,qHACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,CACF,EAEAI,EAAcO,EAA4B,OAAQ,SAAU,SAAU,IAAI,EAC1EN,EAAgBM,EACd,KACA,QACA,WACA,IACF,EACAL,EAAYK,EAA4B,KAAM,OAAQ,OAAQ,IAAI,EAClEJ,EAAgBI,EACd,QACA,MACA,WACA,IACF,EACAV,EAAa,CACX,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,CACF,EACA,WACE,0OACJ,EACAC,EAAmB,CACjB,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,IACT,EACA,YAAa,SACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CAAC,KAAK,EACb,QAAS,CAAC,MAAO,oBAAoB,CACvC,EACA,WACE,oHACJ,EACAC,EAAW,CACT,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,IAAK,CACP,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,WAAY,CACV,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,MAAO,CACT,CACF,CACF,EACA,YAAa,MACb,UAAW,EACb,EACA,KAAM,KACR,EACA,WACE,0EACJ,EACAK,EAAY,CACV,MAAO,CACL,GAAI,EACJ,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CAAC,CACb,EACA,YAAa,QACb,UAAW,EACb,EACA,KAAM,MACR,EACA,WACE,0EACJ,EACAC,EAAgB,CACd,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,aACb,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,SAAU,CACR,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,MACT,EACA,YAAa,QACb,UAAW,CACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,U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",
6
- "names": ["DeviceModelId", "axios", "Left", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpCalldataDescriptorDataSource", "config", "datasource", "transactionInfo", "enums", "fieldToken", "fieldTrustedName", "fieldNft", "fieldAmount", "fieldDatetime", "fieldUnit", "fieldDuration", "fieldEnum", "fieldCalldata", "certificateLoaderMock", "createFieldWithoutReference", "binary_path", "type_family", "type", "descriptor", "createCalldata", "calldataTransactionInfo", "calldataEnums", "fields", "version", "requestSpy", "endpoint", "result", "response", "calldataDTO", "certificate", "newTransactionInfo", "field", "fieldCalldataMinimal"]
4
+ "sourcesContent": ["import {\n DeviceModelId,\n type DmkNetworkClient,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left } from \"purify-ts\";\n\nimport type {\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataTransactionInfoV1,\n} from \"@/calldata/data/dto/CalldataDto\";\nimport type { ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type CalldataDescriptorDataSource } from \"@/index\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nimport { HttpCalldataDescriptorDataSource } from \"./HttpCalldataDescriptorDataSource\";\n\nconst config = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"test\",\n branch: \"main\",\n },\n originToken: \"originToken\",\n} as ContextModuleServiceConfig;\n\ndescribe(\"HttpCalldataDescriptorDataSource\", () => {\n let datasource: CalldataDescriptorDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n let transactionInfo: CalldataTransactionInfoV1;\n let enums: CalldataEnumV1;\n let fieldToken: CalldataFieldV1;\n let fieldTrustedName: CalldataFieldV1;\n let fieldNft: CalldataFieldV1;\n let fieldAmount: CalldataFieldV1;\n let fieldDatetime: CalldataFieldV1;\n let fieldUnit: CalldataFieldV1;\n let fieldDuration: CalldataFieldV1;\n let fieldEnum: CalldataFieldV1;\n let fieldCalldata: CalldataFieldV1;\n const certificateLoaderMock = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n httpMock = { get: vi.fn() };\n datasource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n \"dapps\",\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n beforeAll(() => {\n vi.clearAllMocks();\n\n transactionInfo = {\n descriptor: {\n data: \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c\",\n signatures: {\n test: \"3045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n },\n },\n };\n enums = {\n \"0\": {\n \"1\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c65\",\n signatures: {\n test: \"3045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n },\n },\n \"2\": {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c65\",\n signatures: {\n test: \"3045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n },\n },\n },\n };\n\n fieldAmount = createFieldWithoutReference(\"FROM\", \"UFIXED\", \"AMOUNT\", \"06\");\n fieldDatetime = createFieldWithoutReference(\n \"TO\",\n \"FIXED\",\n \"DATETIME\",\n \"07\",\n );\n fieldUnit = createFieldWithoutReference(\"TO\", \"BOOL\", \"UNIT\", \"08\");\n fieldDuration = createFieldWithoutReference(\n \"VALUE\",\n \"INT\",\n \"DURATION\",\n \"09\",\n );\n fieldToken = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"TOKEN_AMOUNT\",\n token: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n },\n descriptor:\n \"0001000112416d6f756e7420746f20776974686472617702010203580001000115000100010101020120030a000100010200010401030215000100010105020114030a000100010200000401030420ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05034d6178\",\n };\n fieldTrustedName = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"TO\",\n },\n type_family: \"STRING\",\n type_size: 20,\n },\n type: \"TRUSTED_NAME\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114030a00010001020002040103020101030402030402\",\n };\n fieldNft = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n collection: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n type_family: \"INT\",\n type_size: 20,\n },\n type: \"NFT\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020114\",\n };\n fieldEnum = {\n param: {\n id: 0,\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [],\n },\n type_family: \"BYTES\",\n type_size: 20,\n },\n type: \"ENUM\",\n },\n descriptor:\n \"000100010c546f20726563697069656e7402010803230001000115000100010105020112\",\n };\n fieldCalldata = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"ARRAY\",\n weight: 1,\n },\n {\n type: \"LEAF\",\n leaf_type: \"DYNAMIC_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n selector: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: \"FROM\",\n },\n type_family: \"BYTES\",\n type_size: 4,\n },\n amount: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n type_size: 32,\n },\n spender: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leaf_type: \"ARRAY_LEAF\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n });\n\n function createFieldWithoutReference(\n binary_path: string,\n type_family: string,\n type: string,\n descriptor: string,\n ): CalldataFieldV1 {\n return {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"CONTAINER\",\n value: binary_path,\n },\n type_family,\n type_size: 32,\n },\n type,\n },\n descriptor,\n } as CalldataFieldV1;\n }\n\n function createCalldata(\n calldataTransactionInfo: CalldataTransactionInfoV1,\n calldataEnums: CalldataEnumV1,\n fields: unknown[],\n ): unknown {\n return {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldata\",\n version: \"v1\",\n transaction_info: calldataTransactionInfo,\n enums: calldataEnums,\n fields: fields,\n },\n },\n },\n };\n }\n\n it.each([[\"dapps\"], [\"tokens\"]])(\n \"should call http.get with the correct url for endpoint '%s'\",\n async (endpoint) => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n const customDataSource = new HttpCalldataDescriptorDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n endpoint,\n httpMock as unknown as DmkNetworkClient,\n );\n\n // WHEN\n await customDataSource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(httpMock.get).toHaveBeenCalledWith(\n `${config.cal.url}/${endpoint}`,\n {\n params: {\n output: \"descriptors_calldata\",\n chain_id: 1,\n contracts: \"0x0abc\",\n contract_address: \"0x0abc\",\n ref: `branch:${config.cal.branch}`,\n },\n },\n );\n },\n );\n\n it(\"should return an error when http.get throws an error\", async () => {\n // GIVEN\n httpMock.get.mockRejectedValue(new Error(\"boom\"));\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Failed to fetch calldata descriptors: Error: boom\",\n ),\n ),\n );\n });\n\n it(\"should return an error when no payload is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue({ test: \"\" });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Response is not an array\",\n ),\n ),\n );\n });\n\n it(\"should return an error when an empty array is returned\", async () => {\n // GIVEN\n httpMock.get.mockResolvedValue([]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x0abc\",\n selector: \"0x01ff\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: No data for contract 0x0abc and selector 0x01ff\",\n ),\n ),\n );\n });\n\n it(\"should return an error when selector is not found\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [fieldToken]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x01fe\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x01fe\",\n ),\n ),\n );\n });\n\n it(\"Calldata with fields references and enums\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"enum\",\n id: 0,\n value: 1,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"enum\",\n id: 0,\n value: 2,\n },\n {\n payload: fieldToken.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"trustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"enum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata with fields references and enums with certificates\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, enums, [\n fieldToken,\n fieldTrustedName,\n fieldNft,\n fieldEnum,\n ]);\n const certificate: PkiCertificate = {\n keyUsageNumber: 11,\n payload: new Uint8Array([\n 0x01, 0x02, 0x03, 0x04, 0x15, 0x04, 0x05, 0x06, 0x07, 0x08,\n ]),\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n certificate,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80B7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dEc\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n // certificate is added to the transactionInfo\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec0401000501010606737461626c6581ff473045022100862e724db664f5d94484928a6a5963268a22cd8178ad36e8c4ff13769ac5c27e0220079da2b6e86810156f6b5955b8190bc016c2fe813d27fcb878a9b99658546582\",\n type: \"enum\",\n id: 0,\n value: 1,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload:\n \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010206087661726961626c6581ff473045022100b838ee3d597d6bad2533606cef7335f6c8a45b46d5717803e646777f6c8a6897022074f04b82c3dad8445bb6230ab762010c5fc6ee06198fd3e54752287cbf95c523\",\n type: \"enum\",\n id: 0,\n value: 2,\n // certificate is added also to the enum\n certificate,\n },\n {\n payload: fieldToken.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n valuePath: [\n {\n type: \"ARRAY\",\n start: 0,\n end: 5,\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n },\n },\n {\n payload: fieldTrustedName.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"trustedName\",\n valuePath: \"TO\",\n types: [\"eoa\"],\n sources: [\"ens\", \"unstoppable_domain\"],\n },\n },\n {\n payload: fieldNft.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n valuePath: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n },\n ],\n },\n },\n {\n payload: fieldEnum.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"enum\",\n valuePath: [],\n id: 0,\n },\n },\n ]);\n });\n\n it(\"Calldata without fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata on third array element\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([{}, {}, calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata without fields references and transaction info signature length % 2 different from 0\", async () => {\n // GIVEN\n const newTransactionInfo: CalldataTransactionInfoV1 = {\n descriptor: {\n data: transactionInfo.descriptor.data,\n signatures: {\n test: transactionInfo.descriptor.signatures.test + \"0\",\n },\n },\n };\n const calldataDTO = createCalldata(\n newTransactionInfo,\n [],\n [fieldAmount, fieldDatetime, fieldUnit, fieldDuration],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff4803045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f0\",\n type: \"transactionInfo\",\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldAmount.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDatetime.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldUnit.descriptor,\n },\n {\n type: \"transactionFieldDescription\",\n payload: fieldDuration.descriptor,\n },\n ]);\n });\n\n it(\"Calldata with token fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Amount to exchange\",\n param: {\n type: \"TOKEN_AMOUNT\",\n token: {\n raw: \"0xae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n type: \"constant\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_stETHAmount\",\n },\n ],\n },\n type_size: 32,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"UINT\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f0001010101050201140514ae7ab96520de3a18e5e111b5eaab095312d7fe84\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"token\",\n value: \"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84\",\n },\n },\n ]);\n });\n\n it(\"Calldata with collection fields references as constants\", async () => {\n // GIVEN\n const field = {\n name: \"Collection ID\",\n param: {\n type: \"NFT\",\n collection: {\n raw: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n type: \"constant\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n version: 1,\n type_size: 20,\n type_family: \"ADDRESS\",\n },\n value: {\n type: \"path\",\n version: 1,\n abi_path: {\n type: \"data\",\n absolute: true,\n elements: [\n {\n type: \"field\",\n identifier: \"_collectionId\",\n },\n ],\n },\n type_size: 20,\n binary_path: {\n type: \"DATA\",\n version: 1,\n elements: [\n {\n type: \"ARRAY\",\n weight: 2,\n },\n {\n type: \"LEAF\",\n leaf_type: \"TUPLE_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 2,\n },\n ],\n },\n type_family: \"BYTES\",\n },\n version: 1,\n },\n version: 1,\n descriptor:\n \"0001010112416d6f756e7420746f2065786368616e6765020102033b0001010115000101010101020120030a00010101020000040103021f00010101010502011405147d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: field.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"nft\",\n value: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(transactionInfo, [], [fieldCalldata]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: fieldCalldata.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ],\n selector: \"FROM\",\n amount: [\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"TUPLE_LEAF\",\n },\n ],\n spender: [\n {\n type: \"SLICE\",\n start: 0,\n end: 20,\n },\n {\n type: \"LEAF\",\n leafType: \"ARRAY_LEAF\",\n },\n ],\n },\n },\n ]);\n });\n\n it(\"Calldata with CALLDATA fields references without optional properties\", async () => {\n // GIVEN\n const fieldCalldataMinimal = {\n param: {\n value: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n callee: {\n type: \"path\",\n binary_path: {\n type: \"DATA\",\n elements: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leaf_type: \"STATIC_LEAF\",\n },\n ],\n },\n type_family: \"BYTES\",\n type_size: 32,\n },\n type: \"CALLDATA\",\n },\n descriptor:\n \"000100010c43616c6c64617461207465737402010803230001000115000100010105020114\",\n };\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [fieldCalldataMinimal],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result.extract()).toEqual([\n {\n payload:\n \"0001000108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04207d5e9ed0004b8035b164edd9d78c37415ad6b1d123be4943d0abd5a50035cae3050857697468647261770604416176650708416176652044414f081068747470733a2f2f616176652e636f6d0a045fc4ba9c81ff473045022100eb67599abfd9c7360b07599a2a2cb769c6e3f0f74e1e52444d788c8f577a16d20220402e92b0adbf97d890fa2f9654bc30c7bd70dacabe870f160e6842d9eb73d36f\",\n type: \"transactionInfo\",\n },\n {\n payload: fieldCalldataMinimal.descriptor,\n type: \"transactionFieldDescription\",\n reference: {\n type: \"calldata\",\n valuePath: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n callee: [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ],\n selector: undefined,\n amount: undefined,\n spender: undefined,\n chainId: undefined,\n },\n },\n ]);\n });\n\n it(\"should return an error when calldata is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = {\n descriptors_calldata: {\n \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\": {\n \"0x69328dec\": {\n type: \"calldat\",\n version: \"v1\",\n transaction_info: transactionInfo,\n enums: enums,\n fields: [fieldToken],\n },\n },\n },\n };\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when transactionInfo is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n {\n descriptor: {\n data: \"1234\",\n signatures: {\n prod: \"1234\",\n },\n },\n },\n enums,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [\"badEnum\"] as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum does not contain a signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n { 0: { 1: { data: \"1234\" } } } as unknown as CalldataEnumV1,\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when enum contain the wrong signature\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n {\n 0: {\n 1: {\n data: \"0001010108000000000000000102147d2768de32b0b80b7a3454c06bdac94a69ddc7a9030469328dec04010005010106067374626c65\",\n signatures: {\n prod: \"wrongSignature\", // prod instead of test signature\n },\n },\n },\n },\n [fieldToken],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field is not correctly formatted\", async () => {\n // GIVEN\n const calldataDTO = createCalldata(\n transactionInfo,\n [],\n [{ descriptor: 3 }],\n );\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field value is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"UNKNOWN\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field container path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"UNKNOWN\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field calldata path is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: {\n elements: [\n {\n type: \"UNKNOWN\",\n },\n ],\n },\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"DATETIME\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n\n it(\"should return an error when field type is not correctly formatted\", async () => {\n // GIVEN\n const field = {\n param: {\n value: {\n binary_path: \"TO\",\n type_family: \"ADDRESS\",\n type_size: 20,\n },\n type: \"UNKNOWN\",\n },\n descriptor: \"000100010c546f20726563697069667\",\n };\n const calldataDTO = createCalldata(transactionInfo, [], [field]);\n httpMock.get.mockResolvedValue([calldataDTO]);\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const result = await datasource.getCalldataDescriptors({\n deviceModelId: DeviceModelId.FLEX,\n chainId: 1,\n address: \"0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9\",\n selector: \"0x69328dec\",\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpCalldataDescriptorDataSource: Invalid response for contract 0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9 and selector 0x69328dec\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AAAA,OACE,iBAAAA,MAEK,kCACP,OAAS,QAAAC,MAAY,YAYrB,OAAS,oCAAAC,MAAwC,qCAEjD,MAAMC,EAAS,CACb,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,EACA,YAAa,aACf,EAEA,SAAS,mCAAoC,IAAM,CACjD,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAwB,CAC5B,gBAAiB,GAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfZ,EAAW,CAAE,IAAK,GAAG,GAAG,CAAE,EAC1BD,EAAa,IAAIF,EACfC,EACAc,EACA,QACAZ,CACF,CACF,CAAC,EAED,UAAU,IAAM,CACd,GAAG,cAAc,EAEjBC,EAAkB,CAChB,WAAY,CACV,KAAM,6PACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,EACAC,EAAQ,CACN,EAAK,CACH,EAAK,CACH,KAAM,iHACN,WAAY,CACV,KAAM,gJACR,CACF,EACA,EAAK,CACH,KAAM,qHACN,WAAY,CACV,KAAM,gJACR,CACF,CACF,CACF,EAEAI,EAAcO,EAA4B,OAAQ,SAAU,SAAU,IAAI,EAC1EN,EAAgBM,EACd,KACA,QACA,WACA,IACF,EACAL,EAAYK,EAA4B,KAAM,OAAQ,OAAQ,IAAI,EAClEJ,EAAgBI,EACd,QACA,MACA,WACA,IACF,EACAV,EAAa,CACX,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,MAAO,EACP,IAAK,EACL,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,CACF,EACA,WACE,0OACJ,EACAC,EAAmB,CACjB,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,IACT,EACA,YAAa,SACb,UAAW,EACb,EACA,KAAM,eACN,MAAO,CAAC,KAAK,EACb,QAAS,CAAC,MAAO,oBAAoB,CACvC,EACA,WACE,oHACJ,EACAC,EAAW,CACT,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,IAAK,CACP,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,WAAY,CACV,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,EACA,CACE,KAAM,QACN,MAAO,CACT,CACF,CACF,EACA,YAAa,MACb,UAAW,EACb,EACA,KAAM,KACR,EACA,WACE,0EACJ,EACAK,EAAY,CACV,MAAO,CACL,GAAI,EACJ,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CAAC,CACb,EACA,YAAa,QACb,UAAW,EACb,EACA,KAAM,MACR,EACA,WACE,0EACJ,EACAC,EAAgB,CACd,MAAO,CACL,MAAO,CACL,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,aACb,CACF,CACF,EACA,YAAa,QACb,UAAW,EACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,QACN,OAAQ,CACV,EACA,CACE,KAAM,OACN,UAAW,cACb,CACF,CACF,EACA,YAAa,UACb,UAAW,EACb,EACA,SAAU,CACR,KAAM,OACN,YAAa,CACX,KAAM,YACN,MAAO,MACT,EACA,YAAa,QACb,UAAW,CACb,EACA,OAAQ,CACN,KAAM,OACN,YAAa,CACX,KAAM,OACN,SAAU,CACR,CACE,KAAM,KACR,EACA,CACE,KAAM,OACN,UAAW,YACb,CACF,CACF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",
6
+ "names": ["DeviceModelId", "Left", "HttpCalldataDescriptorDataSource", "config", "datasource", "httpMock", "transactionInfo", "enums", "fieldToken", "fieldTrustedName", "fieldNft", "fieldAmount", "fieldDatetime", "fieldUnit", "fieldDuration", "fieldEnum", "fieldCalldata", "certificateLoaderMock", "createFieldWithoutReference", "binary_path", "type_family", "type", "descriptor", "createCalldata", "calldataTransactionInfo", "calldataEnums", "fields", "endpoint", "result", "calldataDTO", "certificate", "newTransactionInfo", "field", "fieldCalldataMinimal"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as p}from"inversify";import{HttpCalldataDescriptorDataSource as e}from"../../calldata/data/HttpCalldataDescriptorDataSource";import{calldataTypes as o}from"../../calldata/di/calldataTypes";import{CalldataContextLoader as l}from"../../calldata/domain/CalldataContextLoader";import{configTypes as r}from"../../config/di/configTypes";import{pkiTypes as i}from"../../pki/di/pkiTypes";const s=()=>new p(({bind:t})=>{t(o.DappCalldataDescriptorDataSource).toDynamicValue(a=>new e(a.get(r.Config),a.get(i.PkiCertificateLoader),"dapps")),t(o.TokenCalldataDescriptorDataSource).toDynamicValue(a=>new e(a.get(r.Config),a.get(i.PkiCertificateLoader),"tokens")),t(o.CalldataContextLoader).to(l)});export{s as calldataModuleFactory};
1
+ import{ContainerModule as l}from"inversify";import{HttpCalldataDescriptorDataSource as e}from"../../calldata/data/HttpCalldataDescriptorDataSource";import{calldataTypes as o}from"../../calldata/di/calldataTypes";import{CalldataContextLoader as m}from"../../calldata/domain/CalldataContextLoader";import{configTypes as r}from"../../config/di/configTypes";import{networkTypes as i}from"../../network/di/networkTypes";import{pkiTypes as p}from"../../pki/di/pkiTypes";const D=()=>new l(({bind:t})=>{t(o.DappCalldataDescriptorDataSource).toDynamicValue(a=>new e(a.get(r.Config),a.get(p.PkiCertificateLoader),"dapps",a.get(i.NetworkClient))),t(o.TokenCalldataDescriptorDataSource).toDynamicValue(a=>new e(a.get(r.Config),a.get(p.PkiCertificateLoader),"tokens",a.get(i.NetworkClient))),t(o.CalldataContextLoader).to(m)});export{D as calldataModuleFactory};
2
2
  //# sourceMappingURL=calldataModuleFactory.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/calldata/di/calldataModuleFactory.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpCalldataDescriptorDataSource } from \"@/calldata/data/HttpCalldataDescriptorDataSource\";\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { CalldataContextLoader } from \"@/calldata/domain/CalldataContextLoader\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\n\nexport const calldataModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(calldataTypes.DappCalldataDescriptorDataSource).toDynamicValue(\n (context) =>\n new HttpCalldataDescriptorDataSource(\n context.get(configTypes.Config),\n context.get(pkiTypes.PkiCertificateLoader),\n \"dapps\",\n ),\n );\n bind(calldataTypes.TokenCalldataDescriptorDataSource).toDynamicValue(\n (context) =>\n new HttpCalldataDescriptorDataSource(\n context.get(configTypes.Config),\n context.get(pkiTypes.PkiCertificateLoader),\n \"tokens\",\n ),\n );\n bind(calldataTypes.CalldataContextLoader).to(CalldataContextLoader);\n });\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,oCAAAC,MAAwC,mDACjD,OAAS,iBAAAC,MAAqB,8BAC9B,OAAS,yBAAAC,MAA6B,0CACtC,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,YAAAC,MAAgB,oBAElB,MAAMC,EAAwB,IACnC,IAAIN,EAAgB,CAAC,CAAE,KAAAO,CAAK,IAAM,CAChCA,EAAKL,EAAc,gCAAgC,EAAE,eAClDM,GACC,IAAIP,EACFO,EAAQ,IAAIJ,EAAY,MAAM,EAC9BI,EAAQ,IAAIH,EAAS,oBAAoB,EACzC,OACF,CACJ,EACAE,EAAKL,EAAc,iCAAiC,EAAE,eACnDM,GACC,IAAIP,EACFO,EAAQ,IAAIJ,EAAY,MAAM,EAC9BI,EAAQ,IAAIH,EAAS,oBAAoB,EACzC,QACF,CACJ,EACAE,EAAKL,EAAc,qBAAqB,EAAE,GAAGC,CAAqB,CACpE,CAAC",
6
- "names": ["ContainerModule", "HttpCalldataDescriptorDataSource", "calldataTypes", "CalldataContextLoader", "configTypes", "pkiTypes", "calldataModuleFactory", "bind", "context"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpCalldataDescriptorDataSource } from \"@/calldata/data/HttpCalldataDescriptorDataSource\";\nimport { calldataTypes } from \"@/calldata/di/calldataTypes\";\nimport { CalldataContextLoader } from \"@/calldata/domain/CalldataContextLoader\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\n\nexport const calldataModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(calldataTypes.DappCalldataDescriptorDataSource).toDynamicValue(\n (context) =>\n new HttpCalldataDescriptorDataSource(\n context.get(configTypes.Config),\n context.get(pkiTypes.PkiCertificateLoader),\n \"dapps\",\n context.get(networkTypes.NetworkClient),\n ),\n );\n bind(calldataTypes.TokenCalldataDescriptorDataSource).toDynamicValue(\n (context) =>\n new HttpCalldataDescriptorDataSource(\n context.get(configTypes.Config),\n context.get(pkiTypes.PkiCertificateLoader),\n \"tokens\",\n context.get(networkTypes.NetworkClient),\n ),\n );\n bind(calldataTypes.CalldataContextLoader).to(CalldataContextLoader);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,oCAAAC,MAAwC,mDACjD,OAAS,iBAAAC,MAAqB,8BAC9B,OAAS,yBAAAC,MAA6B,0CACtC,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,gBAAAC,MAAoB,4BAC7B,OAAS,YAAAC,MAAgB,oBAElB,MAAMC,EAAwB,IACnC,IAAIP,EAAgB,CAAC,CAAE,KAAAQ,CAAK,IAAM,CAChCA,EAAKN,EAAc,gCAAgC,EAAE,eAClDO,GACC,IAAIR,EACFQ,EAAQ,IAAIL,EAAY,MAAM,EAC9BK,EAAQ,IAAIH,EAAS,oBAAoB,EACzC,QACAG,EAAQ,IAAIJ,EAAa,aAAa,CACxC,CACJ,EACAG,EAAKN,EAAc,iCAAiC,EAAE,eACnDO,GACC,IAAIR,EACFQ,EAAQ,IAAIL,EAAY,MAAM,EAC9BK,EAAQ,IAAIH,EAAS,oBAAoB,EACzC,SACAG,EAAQ,IAAIJ,EAAa,aAAa,CACxC,CACJ,EACAG,EAAKN,EAAc,qBAAqB,EAAE,GAAGC,CAAqB,CACpE,CAAC",
6
+ "names": ["ContainerModule", "HttpCalldataDescriptorDataSource", "calldataTypes", "CalldataContextLoader", "configTypes", "networkTypes", "pkiTypes", "calldataModuleFactory", "bind", "context"]
7
7
  }
package/lib/esm/src/di.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Container as t}from"inversify";import{accountOwnershipModuleFactory as e}from"./account-ownership/di/accountOwnershipModuleFactory";import{calldataModuleFactory as a}from"./calldata/di/calldataModuleFactory";import{configModuleFactory as m}from"./config/di/configModuleFactory";import{configTypes as i}from"./config/di/configTypes";import{dynamicNetworkModuleFactory as n}from"./dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as c}from"./external-plugin/di/externalPluginModuleFactory";import{gatedSigningModuleFactory as l}from"./gated-signing/di/gatedSigningModuleFactory";import{nftModuleFactory as u}from"./nft/di/nftModuleFactory";import{nanoPkiModuleFactory as d}from"./pki/di/pkiModuleFactory";import{proxyModuleFactory as p}from"./proxy/di/proxyModuleFactory";import{reporterModuleFactory as f}from"./reporter/di/reporterModuleFactory";import{safeModuleFactory as y}from"./safe/di/safeModuleFactory";import{solanaContextModuleFactory as M}from"./solana/di/SolanaContextModuleFactory";import{solanaLifiModuleFactory as F}from"./solanaLifi/di/lifiModuleFactory";import{solanaTokenModuleFactory as g}from"./solanaToken/di/tokenModuleFactory";import{tokenModuleFactory as s}from"./token/di/tokenModuleFactory";import{transactionCheckModuleFactory as C}from"./transaction-check/di/transactionCheckModuleFactory";import{trustedNameModuleFactory as x}from"./trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as k}from"./typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as S}from"./uniswap/di/uniswapModuleFactory";const K=({config:o})=>{const r=new t;return r.bind(i.ContextModuleLoggerFactory).toConstantValue(o.loggerFactory),r.loadSync(m(o),e(),c(),n(),u(),p(o.datasource),y(),l(),s(),a(),x(o.customTrustedNameDataSource),k(),d(),S(),C(),M(),g(),F(),f()),r};export{K as makeContainer};
1
+ import{Container as t}from"inversify";import{accountOwnershipModuleFactory as e}from"./account-ownership/di/accountOwnershipModuleFactory";import{calldataModuleFactory as a}from"./calldata/di/calldataModuleFactory";import{configModuleFactory as m}from"./config/di/configModuleFactory";import{configTypes as i}from"./config/di/configTypes";import{dynamicNetworkModuleFactory as n}from"./dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as c}from"./external-plugin/di/externalPluginModuleFactory";import{gatedSigningModuleFactory as l}from"./gated-signing/di/gatedSigningModuleFactory";import{networkModuleFactory as u}from"./network/di/networkModuleFactory";import{nftModuleFactory as d}from"./nft/di/nftModuleFactory";import{nanoPkiModuleFactory as p}from"./pki/di/pkiModuleFactory";import{proxyModuleFactory as y}from"./proxy/di/proxyModuleFactory";import{reporterModuleFactory as f}from"./reporter/di/reporterModuleFactory";import{safeModuleFactory as M}from"./safe/di/safeModuleFactory";import{solanaContextModuleFactory as F}from"./solana/di/SolanaContextModuleFactory";import{solanaLifiModuleFactory as s}from"./solanaLifi/di/lifiModuleFactory";import{solanaTokenModuleFactory as g}from"./solanaToken/di/tokenModuleFactory";import{tokenModuleFactory as C}from"./token/di/tokenModuleFactory";import{transactionCheckModuleFactory as k}from"./transaction-check/di/transactionCheckModuleFactory";import{trustedNameModuleFactory as x}from"./trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as S}from"./typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as L}from"./uniswap/di/uniswapModuleFactory";const R=({config:o})=>{const r=new t;return r.bind(i.ContextModuleLoggerFactory).toConstantValue(o.loggerFactory),r.loadSync(m(o),u(o),e(),c(),n(),d(),y(o.datasource),M(),l(),C(),a(),x(o.customTrustedNameDataSource),S(),p(),L(),k(),F(),g(),s(),f()),r};export{R as makeContainer};
2
2
  //# sourceMappingURL=di.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/di.ts"],
4
- "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { accountOwnershipModuleFactory } from \"@/account-ownership/di/accountOwnershipModuleFactory\";\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { gatedSigningModuleFactory } from \"@/gated-signing/di/gatedSigningModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { reporterModuleFactory } from \"@/reporter/di/reporterModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { solanaLifiModuleFactory } from \"@/solanaLifi/di/lifiModuleFactory\";\nimport { solanaTokenModuleFactory } from \"@/solanaToken/di/tokenModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionCheckModuleFactory } from \"@/transaction-check/di/transactionCheckModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleServiceConfig & ContextModuleLoaderConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n container.loadSync(\n configModuleFactory(config),\n accountOwnershipModuleFactory(),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config.datasource),\n safeModuleFactory(),\n gatedSigningModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(config.customTrustedNameDataSource),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n reporterModuleFactory(),\n );\n\n return container;\n};\n"],
5
- "mappings": "AACA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,iCAAAC,MAAqC,uDAC9C,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,uBAAAC,MAA2B,kCACpC,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,6BAAAC,MAAiC,+CAC1C,OAAS,oBAAAC,MAAwB,4BACjC,OAAS,wBAAAC,MAA4B,4BACrC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,8BAAAC,MAAkC,yCAC3C,OAAS,2BAAAC,MAA+B,oCACxC,OAAS,4BAAAC,MAAgC,sCACzC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,iCAAAC,MAAqC,uDAC9C,OAAS,4BAAAC,MAAgC,6CACzC,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,wBAAAC,MAA4B,oCAM9B,MAAMC,EAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAIvB,EAEtB,OAAAuB,EACG,KAECnB,EAAY,0BAA0B,EACvC,gBAAgBkB,EAAO,aAAa,EAEvCC,EAAU,SACRpB,EAAoBmB,CAAM,EAC1BrB,EAA8B,EAC9BK,EAA4B,EAC5BD,EAA4B,EAC5BG,EAAiB,EACjBE,EAAmBY,EAAO,UAAU,EACpCV,EAAkB,EAClBL,EAA0B,EAC1BS,EAAmB,EACnBd,EAAsB,EACtBgB,EAAyBI,EAAO,2BAA2B,EAC3DH,EAAuB,EACvBV,EAAqB,EACrBW,EAAqB,EACrBH,EAA8B,EAC9BJ,EAA2B,EAC3BE,EAAyB,EACzBD,EAAwB,EACxBH,EAAsB,CACxB,EAEOY,CACT",
6
- "names": ["Container", "accountOwnershipModuleFactory", "calldataModuleFactory", "configModuleFactory", "configTypes", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "gatedSigningModuleFactory", "nftModuleFactory", "nanoPkiModuleFactory", "proxyModuleFactory", "reporterModuleFactory", "safeModuleFactory", "solanaContextModuleFactory", "solanaLifiModuleFactory", "solanaTokenModuleFactory", "tokenModuleFactory", "transactionCheckModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "makeContainer", "config", "container"]
4
+ "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { accountOwnershipModuleFactory } from \"@/account-ownership/di/accountOwnershipModuleFactory\";\nimport { calldataModuleFactory } from \"@/calldata/di/calldataModuleFactory\";\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { dynamicNetworkModuleFactory } from \"@/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/external-plugin/di/externalPluginModuleFactory\";\nimport { gatedSigningModuleFactory } from \"@/gated-signing/di/gatedSigningModuleFactory\";\nimport { networkModuleFactory } from \"@/network/di/networkModuleFactory\";\nimport { nftModuleFactory } from \"@/nft/di/nftModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/pki/di/pkiModuleFactory\";\nimport { proxyModuleFactory } from \"@/proxy/di/proxyModuleFactory\";\nimport { reporterModuleFactory } from \"@/reporter/di/reporterModuleFactory\";\nimport { safeModuleFactory } from \"@/safe/di/safeModuleFactory\";\nimport { solanaContextModuleFactory } from \"@/solana/di/SolanaContextModuleFactory\";\nimport { solanaLifiModuleFactory } from \"@/solanaLifi/di/lifiModuleFactory\";\nimport { solanaTokenModuleFactory } from \"@/solanaToken/di/tokenModuleFactory\";\nimport { tokenModuleFactory } from \"@/token/di/tokenModuleFactory\";\nimport { transactionCheckModuleFactory } from \"@/transaction-check/di/transactionCheckModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/uniswap/di/uniswapModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleServiceConfig & ContextModuleLoaderConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n container.loadSync(\n configModuleFactory(config),\n networkModuleFactory(config),\n accountOwnershipModuleFactory(),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config.datasource),\n safeModuleFactory(),\n gatedSigningModuleFactory(),\n tokenModuleFactory(),\n calldataModuleFactory(),\n trustedNameModuleFactory(config.customTrustedNameDataSource),\n typedDataModuleFactory(),\n nanoPkiModuleFactory(),\n uniswapModuleFactory(),\n transactionCheckModuleFactory(),\n solanaContextModuleFactory(),\n solanaTokenModuleFactory(),\n solanaLifiModuleFactory(),\n reporterModuleFactory(),\n );\n\n return container;\n};\n"],
5
+ "mappings": "AACA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,iCAAAC,MAAqC,uDAC9C,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,uBAAAC,MAA2B,kCACpC,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,6BAAAC,MAAiC,+CAC1C,OAAS,wBAAAC,MAA4B,oCACrC,OAAS,oBAAAC,MAAwB,4BACjC,OAAS,wBAAAC,MAA4B,4BACrC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,yBAAAC,MAA6B,sCACtC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,8BAAAC,MAAkC,yCAC3C,OAAS,2BAAAC,MAA+B,oCACxC,OAAS,4BAAAC,MAAgC,sCACzC,OAAS,sBAAAC,MAA0B,gCACnC,OAAS,iCAAAC,MAAqC,uDAC9C,OAAS,4BAAAC,MAAgC,6CACzC,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,wBAAAC,MAA4B,oCAM9B,MAAMC,EAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAIxB,EAEtB,OAAAwB,EACG,KAECpB,EAAY,0BAA0B,EACvC,gBAAgBmB,EAAO,aAAa,EAEvCC,EAAU,SACRrB,EAAoBoB,CAAM,EAC1Bf,EAAqBe,CAAM,EAC3BtB,EAA8B,EAC9BK,EAA4B,EAC5BD,EAA4B,EAC5BI,EAAiB,EACjBE,EAAmBY,EAAO,UAAU,EACpCV,EAAkB,EAClBN,EAA0B,EAC1BU,EAAmB,EACnBf,EAAsB,EACtBiB,EAAyBI,EAAO,2BAA2B,EAC3DH,EAAuB,EACvBV,EAAqB,EACrBW,EAAqB,EACrBH,EAA8B,EAC9BJ,EAA2B,EAC3BE,EAAyB,EACzBD,EAAwB,EACxBH,EAAsB,CACxB,EAEOY,CACT",
6
+ "names": ["Container", "accountOwnershipModuleFactory", "calldataModuleFactory", "configModuleFactory", "configTypes", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "gatedSigningModuleFactory", "networkModuleFactory", "nftModuleFactory", "nanoPkiModuleFactory", "proxyModuleFactory", "reporterModuleFactory", "safeModuleFactory", "solanaContextModuleFactory", "solanaLifiModuleFactory", "solanaTokenModuleFactory", "tokenModuleFactory", "transactionCheckModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "makeContainer", "config", "container"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=(a,e,r,o)=>{for(var t=o>1?void 0:o?m(e,r):e,i=a.length-1,n;i>=0;i--)(n=a[i])&&(t=(o?n(e,r,t):n(t))||t);return o&&t&&d(e,r,t),t},u=(a,e)=>(r,o)=>e(r,o,a);import{DeviceModelId as s}from"@ledgerhq/device-management-kit";import g from"axios";import{inject as y,injectable as l}from"inversify";import{Left as f,Right as D}from"purify-ts";import{configTypes as w}from"../../config/di/configTypes";import{LEDGER_CLIENT_VERSION_HEADER as N}from"../../shared/constant/HttpHeaders";import k from"../../../package.json";const E={nanos:s.NANO_S,nanosp:s.NANO_SP,nanox:s.NANO_X,stax:s.STAX,flex:s.FLEX,apexp:s.APEX};let c=class{constructor(e){this.config=e}async getDynamicNetworkConfiguration(e){let r;try{r=(await g.get(`${this.config.cal.url}/networks?output=id,descriptors,icons&chain_id=${e}`,{headers:{[N]:`context-module/${k.version}`}})).data}catch(i){return f(i instanceof Error?i:new Error("Failed to fetch network configuration"))}const o=r?.[0];if(!o)return f(new Error(`Network configuration not found for chain ID: ${e}`));if(!this.isValidNetworkData(o))return f(new Error(`Invalid network configuration response for chain ID: ${e}`));const t=this.transformToNetworkConfiguration(o);return D(t)}isValidNetworkData(e){if(!e||typeof e!="object")return!1;const r=e;if(typeof r.id!="string"||!r.descriptors||typeof r.descriptors!="object")return!1;for(const o of Object.values(r.descriptors))if(!this.isValidDescriptor(o))return!1;return!(r.icons&&typeof r.icons!="object")}isValidDescriptor(e){if(!e||typeof e!="object")return!1;const r=e;if(typeof r.data!="string"||typeof r.descriptorType!="string"||typeof r.descriptorVersion!="string"||!r.signatures||typeof r.signatures!="object")return!1;const o=r.signatures;return!(typeof o.prod!="string"||typeof o.test!="string")}transformToNetworkConfiguration(e){const r=Object.entries(e.descriptors).reduce((o,[t,i])=>{const n=E[t.toLowerCase()];return n===void 0||(o[n]={descriptorType:i.descriptorType,descriptorVersion:i.descriptorVersion,data:i.data,signatures:i.signatures,icon:e.icons?.[t]}),o},{});return{id:e.id,descriptors:r}}};c=p([l(),u(0,y(w.Config))],c);export{c as HttpDynamicNetworkDataSource};
1
+ var m=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=(a,e,r,o)=>{for(var t=o>1?void 0:o?g(e,r):e,i=a.length-1,n;i>=0;i--)(n=a[i])&&(t=(o?n(e,r,t):n(t))||t);return o&&t&&m(e,r,t),t},f=(a,e)=>(r,o)=>e(r,o,a);import{DeviceModelId as s}from"@ledgerhq/device-management-kit";import{inject as d,injectable as y}from"inversify";import{Left as p,Right as l}from"purify-ts";import{configTypes as w}from"../../config/di/configTypes";import{networkTypes as D}from"../../network/di/networkTypes";const k={nanos:s.NANO_S,nanosp:s.NANO_SP,nanox:s.NANO_X,stax:s.STAX,flex:s.FLEX,apexp:s.APEX};let c=class{constructor(e,r){this.config=e;this.http=r}async getDynamicNetworkConfiguration(e){let r;try{r=await this.http.get(`${this.config.cal.url}/networks`,{params:{output:"id,descriptors,icons",chain_id:e}})}catch(i){return p(i instanceof Error?new Error(i.message):new Error("Failed to fetch network configuration"))}const o=r?.[0];if(!o)return p(new Error(`Network configuration not found for chain ID: ${e}`));if(!this.isValidNetworkData(o))return p(new Error(`Invalid network configuration response for chain ID: ${e}`));const t=this.transformToNetworkConfiguration(o);return l(t)}isValidNetworkData(e){if(!e||typeof e!="object")return!1;const r=e;if(typeof r.id!="string"||!r.descriptors||typeof r.descriptors!="object")return!1;for(const o of Object.values(r.descriptors))if(!this.isValidDescriptor(o))return!1;return!(r.icons&&typeof r.icons!="object")}isValidDescriptor(e){if(!e||typeof e!="object")return!1;const r=e;if(typeof r.data!="string"||typeof r.descriptorType!="string"||typeof r.descriptorVersion!="string"||!r.signatures||typeof r.signatures!="object")return!1;const o=r.signatures;return!(typeof o.prod!="string"||typeof o.test!="string")}transformToNetworkConfiguration(e){const r=Object.entries(e.descriptors).reduce((o,[t,i])=>{const n=k[t.toLowerCase()];return n===void 0||(o[n]={descriptorType:i.descriptorType,descriptorVersion:i.descriptorVersion,data:i.data,signatures:i.signatures,icon:e.icons?.[t]}),o},{});return{id:e.id,descriptors:r}}};c=u([y(),f(0,d(w.Config)),f(1,d(D.NetworkClient))],c);export{c as HttpDynamicNetworkDataSource};
2
2
  //# sourceMappingURL=HttpDynamicNetworkDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dynamic-network/data/HttpDynamicNetworkDataSource.ts"],
4
- "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n type DynamicNetworkConfiguration,\n type DynamicNetworkDescriptor,\n} from \"@/dynamic-network/model/DynamicNetworkConfiguration\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { type DynamicNetworkApiResponseDto } from \"./dto/DynamicNetworkApiResponseDto\";\nimport { type DynamicNetworkDataSource } from \"./DynamicNetworkDataSource\";\n\n/** Maps lowercase device model keys from the API to DeviceModelId */\nconst LOWERCASE_KEY_TO_DEVICE_MODEL_ID: Record<string, DeviceModelId> = {\n nanos: DeviceModelId.NANO_S,\n nanosp: DeviceModelId.NANO_SP,\n nanox: DeviceModelId.NANO_X,\n stax: DeviceModelId.STAX,\n flex: DeviceModelId.FLEX,\n apexp: DeviceModelId.APEX,\n};\n\n@injectable()\nexport class HttpDynamicNetworkDataSource implements DynamicNetworkDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n ) {}\n\n async getDynamicNetworkConfiguration(\n chainId: number,\n ): Promise<Either<Error, DynamicNetworkConfiguration>> {\n let response: DynamicNetworkApiResponseDto;\n\n try {\n const axiosResponse = await axios.get<DynamicNetworkApiResponseDto>(\n `${this.config.cal.url}/networks?output=id,descriptors,icons&chain_id=${chainId}`,\n {\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n response = axiosResponse.data;\n } catch (error) {\n return Left(\n error instanceof Error\n ? error\n : new Error(\"Failed to fetch network configuration\"),\n );\n }\n\n const networkData = response?.[0];\n if (!networkData) {\n return Left(\n new Error(`Network configuration not found for chain ID: ${chainId}`),\n );\n }\n\n // Validate response structure\n if (!this.isValidNetworkData(networkData)) {\n return Left(\n new Error(\n `Invalid network configuration response for chain ID: ${chainId}`,\n ),\n );\n }\n\n const configuration = this.transformToNetworkConfiguration(networkData);\n return Right(configuration);\n }\n\n private isValidNetworkData(\n data: unknown,\n ): data is DynamicNetworkApiResponseDto[0] {\n if (!data || typeof data !== \"object\") {\n return false;\n }\n\n const obj = data as Record<string, unknown>;\n\n // Check required fields\n if (typeof obj[\"id\"] !== \"string\") {\n return false;\n }\n\n // Check descriptors structure\n if (!obj[\"descriptors\"] || typeof obj[\"descriptors\"] !== \"object\") {\n return false;\n }\n\n // Validate each descriptor\n for (const descriptor of Object.values(obj[\"descriptors\"])) {\n if (!this.isValidDescriptor(descriptor)) {\n return false;\n }\n }\n\n // Icons are optional but if present, should be an object\n if (obj[\"icons\"] && typeof obj[\"icons\"] !== \"object\") {\n return false;\n }\n\n return true;\n }\n\n private isValidDescriptor(\n descriptor: unknown,\n ): descriptor is DynamicNetworkApiResponseDto[0][\"descriptors\"][string] {\n if (!descriptor || typeof descriptor !== \"object\") {\n return false;\n }\n\n const desc = descriptor as Record<string, unknown>;\n\n // Check required descriptor fields\n if (\n typeof desc[\"data\"] !== \"string\" ||\n typeof desc[\"descriptorType\"] !== \"string\" ||\n typeof desc[\"descriptorVersion\"] !== \"string\"\n ) {\n return false;\n }\n\n // Check signatures structure\n if (!desc[\"signatures\"] || typeof desc[\"signatures\"] !== \"object\") {\n return false;\n }\n\n const signatures = desc[\"signatures\"] as Record<string, unknown>;\n if (\n typeof signatures[\"prod\"] !== \"string\" ||\n typeof signatures[\"test\"] !== \"string\"\n ) {\n return false;\n }\n\n return true;\n }\n\n private transformToNetworkConfiguration(\n networkData: DynamicNetworkApiResponseDto[0],\n ): DynamicNetworkConfiguration {\n const descriptors = Object.entries(networkData.descriptors).reduce(\n (acc, [apiKey, descriptor]) => {\n const deviceModelId =\n LOWERCASE_KEY_TO_DEVICE_MODEL_ID[apiKey.toLowerCase()];\n if (deviceModelId === undefined) {\n return acc;\n }\n acc[deviceModelId] = {\n descriptorType: descriptor.descriptorType,\n descriptorVersion: descriptor.descriptorVersion,\n data: descriptor.data,\n signatures: descriptor.signatures,\n icon: networkData.icons?.[apiKey],\n };\n return acc;\n },\n {} as Record<DeviceModelId, DynamicNetworkDescriptor>,\n );\n\n return {\n id: networkData.id,\n descriptors,\n };\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAOC,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAM5B,OAAS,gCAAAC,MAAoC,gCAC7C,OAAOC,MAAa,qBAMpB,MAAMC,EAAkE,CACtE,MAAOC,EAAc,OACrB,OAAQA,EAAc,QACtB,MAAOA,EAAc,OACrB,KAAMA,EAAc,KACpB,KAAMA,EAAc,KACpB,MAAOA,EAAc,IACvB,EAGO,IAAMC,EAAN,KAAuE,CAC5E,YAEmBC,EACjB,CADiB,YAAAA,CAChB,CAEH,MAAM,+BACJC,EACqD,CACrD,IAAIC,EAEJ,GAAI,CASFA,GARsB,MAAMC,EAAM,IAChC,GAAG,KAAK,OAAO,IAAI,GAAG,kDAAkDF,CAAO,GAC/E,CACE,QAAS,CACP,CAACG,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,EACnE,CACF,CACF,GACyB,IAC3B,OAASC,EAAO,CACd,OAAOC,EACLD,aAAiB,MACbA,EACA,IAAI,MAAM,uCAAuC,CACvD,CACF,CAEA,MAAME,EAAcN,IAAW,CAAC,EAChC,GAAI,CAACM,EACH,OAAOD,EACL,IAAI,MAAM,iDAAiDN,CAAO,EAAE,CACtE,EAIF,GAAI,CAAC,KAAK,mBAAmBO,CAAW,EACtC,OAAOD,EACL,IAAI,MACF,wDAAwDN,CAAO,EACjE,CACF,EAGF,MAAMQ,EAAgB,KAAK,gCAAgCD,CAAW,EACtE,OAAOE,EAAMD,CAAa,CAC5B,CAEQ,mBACNE,EACyC,CACzC,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAGT,MAAMC,EAAMD,EAQZ,GALI,OAAOC,EAAI,IAAU,UAKrB,CAACA,EAAI,aAAkB,OAAOA,EAAI,aAAmB,SACvD,MAAO,GAIT,UAAWC,KAAc,OAAO,OAAOD,EAAI,WAAc,EACvD,GAAI,CAAC,KAAK,kBAAkBC,CAAU,EACpC,MAAO,GAKX,MAAI,EAAAD,EAAI,OAAY,OAAOA,EAAI,OAAa,SAK9C,CAEQ,kBACNC,EACsE,CACtE,GAAI,CAACA,GAAc,OAAOA,GAAe,SACvC,MAAO,GAGT,MAAMC,EAAOD,EAYb,GARE,OAAOC,EAAK,MAAY,UACxB,OAAOA,EAAK,gBAAsB,UAClC,OAAOA,EAAK,mBAAyB,UAMnC,CAACA,EAAK,YAAiB,OAAOA,EAAK,YAAkB,SACvD,MAAO,GAGT,MAAMC,EAAaD,EAAK,WACxB,MACE,SAAOC,EAAW,MAAY,UAC9B,OAAOA,EAAW,MAAY,SAMlC,CAEQ,gCACNP,EAC6B,CAC7B,MAAMQ,EAAc,OAAO,QAAQR,EAAY,WAAW,EAAE,OAC1D,CAACS,EAAK,CAACC,EAAQL,CAAU,IAAM,CAC7B,MAAMM,EACJtB,EAAiCqB,EAAO,YAAY,CAAC,EACvD,OAAIC,IAAkB,SAGtBF,EAAIE,CAAa,EAAI,CACnB,eAAgBN,EAAW,eAC3B,kBAAmBA,EAAW,kBAC9B,KAAMA,EAAW,KACjB,WAAYA,EAAW,WACvB,KAAML,EAAY,QAAQU,CAAM,CAClC,GACOD,CACT,EACA,CAAC,CACH,EAEA,MAAO,CACL,GAAIT,EAAY,GAChB,YAAAQ,CACF,CACF,CACF,EAhJajB,EAANqB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,IAFjBzB",
6
- "names": ["DeviceModelId", "axios", "inject", "injectable", "Left", "Right", "configTypes", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LOWERCASE_KEY_TO_DEVICE_MODEL_ID", "DeviceModelId", "HttpDynamicNetworkDataSource", "config", "chainId", "response", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "error", "Left", "networkData", "configuration", "Right", "data", "obj", "descriptor", "desc", "signatures", "descriptors", "acc", "apiKey", "deviceModelId", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes"]
4
+ "sourcesContent": ["import {\n DeviceModelId,\n DmkNetworkClient,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport {\n type DynamicNetworkConfiguration,\n type DynamicNetworkDescriptor,\n} from \"@/dynamic-network/model/DynamicNetworkConfiguration\";\nimport { networkTypes } from \"@/network/di/networkTypes\";\n\nimport { type DynamicNetworkApiResponseDto } from \"./dto/DynamicNetworkApiResponseDto\";\nimport { type DynamicNetworkDataSource } from \"./DynamicNetworkDataSource\";\n\n/** Maps lowercase device model keys from the API to DeviceModelId */\nconst LOWERCASE_KEY_TO_DEVICE_MODEL_ID: Record<string, DeviceModelId> = {\n nanos: DeviceModelId.NANO_S,\n nanosp: DeviceModelId.NANO_SP,\n nanox: DeviceModelId.NANO_X,\n stax: DeviceModelId.STAX,\n flex: DeviceModelId.FLEX,\n apexp: DeviceModelId.APEX,\n};\n\n@injectable()\nexport class HttpDynamicNetworkDataSource implements DynamicNetworkDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n async getDynamicNetworkConfiguration(\n chainId: number,\n ): Promise<Either<Error, DynamicNetworkConfiguration>> {\n let response: DynamicNetworkApiResponseDto;\n\n try {\n response = (await this.http.get(`${this.config.cal.url}/networks`, {\n params: {\n output: \"id,descriptors,icons\",\n chain_id: chainId,\n },\n })) as DynamicNetworkApiResponseDto;\n } catch (error) {\n return Left(\n error instanceof Error\n ? new Error(error.message)\n : new Error(\"Failed to fetch network configuration\"),\n );\n }\n\n const networkData = response?.[0];\n if (!networkData) {\n return Left(\n new Error(`Network configuration not found for chain ID: ${chainId}`),\n );\n }\n\n // Validate response structure\n if (!this.isValidNetworkData(networkData)) {\n return Left(\n new Error(\n `Invalid network configuration response for chain ID: ${chainId}`,\n ),\n );\n }\n\n const configuration = this.transformToNetworkConfiguration(networkData);\n return Right(configuration);\n }\n\n private isValidNetworkData(\n data: unknown,\n ): data is DynamicNetworkApiResponseDto[0] {\n if (!data || typeof data !== \"object\") {\n return false;\n }\n\n const obj = data as Record<string, unknown>;\n\n // Check required fields\n if (typeof obj[\"id\"] !== \"string\") {\n return false;\n }\n\n // Check descriptors structure\n if (!obj[\"descriptors\"] || typeof obj[\"descriptors\"] !== \"object\") {\n return false;\n }\n\n // Validate each descriptor\n for (const descriptor of Object.values(obj[\"descriptors\"])) {\n if (!this.isValidDescriptor(descriptor)) {\n return false;\n }\n }\n\n // Icons are optional but if present, should be an object\n if (obj[\"icons\"] && typeof obj[\"icons\"] !== \"object\") {\n return false;\n }\n\n return true;\n }\n\n private isValidDescriptor(\n descriptor: unknown,\n ): descriptor is DynamicNetworkApiResponseDto[0][\"descriptors\"][string] {\n if (!descriptor || typeof descriptor !== \"object\") {\n return false;\n }\n\n const desc = descriptor as Record<string, unknown>;\n\n // Check required descriptor fields\n if (\n typeof desc[\"data\"] !== \"string\" ||\n typeof desc[\"descriptorType\"] !== \"string\" ||\n typeof desc[\"descriptorVersion\"] !== \"string\"\n ) {\n return false;\n }\n\n // Check signatures structure\n if (!desc[\"signatures\"] || typeof desc[\"signatures\"] !== \"object\") {\n return false;\n }\n\n const signatures = desc[\"signatures\"] as Record<string, unknown>;\n if (\n typeof signatures[\"prod\"] !== \"string\" ||\n typeof signatures[\"test\"] !== \"string\"\n ) {\n return false;\n }\n\n return true;\n }\n\n private transformToNetworkConfiguration(\n networkData: DynamicNetworkApiResponseDto[0],\n ): DynamicNetworkConfiguration {\n const descriptors = Object.entries(networkData.descriptors).reduce(\n (acc, [apiKey, descriptor]) => {\n const deviceModelId =\n LOWERCASE_KEY_TO_DEVICE_MODEL_ID[apiKey.toLowerCase()];\n if (deviceModelId === undefined) {\n return acc;\n }\n acc[deviceModelId] = {\n descriptorType: descriptor.descriptorType,\n descriptorVersion: descriptor.descriptorVersion,\n data: descriptor.data,\n signatures: descriptor.signatures,\n icon: networkData.icons?.[apiKey],\n };\n return acc;\n },\n {} as Record<DeviceModelId, DynamicNetworkDescriptor>,\n );\n\n return {\n id: networkData.id,\n descriptors,\n };\n }\n}\n"],
5
+ "mappings": "iOAAA,OACE,iBAAAA,MAEK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAM5B,OAAS,gBAAAC,MAAoB,4BAM7B,MAAMC,EAAkE,CACtE,MAAOC,EAAc,OACrB,OAAQA,EAAc,QACtB,MAAOA,EAAc,OACrB,KAAMA,EAAc,KACpB,KAAMA,EAAc,KACpB,MAAOA,EAAc,IACvB,EAGO,IAAMC,EAAN,KAAuE,CAC5E,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAM,+BACJC,EACqD,CACrD,IAAIC,EAEJ,GAAI,CACFA,EAAY,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,YAAa,CACjE,OAAQ,CACN,OAAQ,uBACR,SAAUD,CACZ,CACF,CAAC,CACH,OAASE,EAAO,CACd,OAAOC,EACLD,aAAiB,MACb,IAAI,MAAMA,EAAM,OAAO,EACvB,IAAI,MAAM,uCAAuC,CACvD,CACF,CAEA,MAAME,EAAcH,IAAW,CAAC,EAChC,GAAI,CAACG,EACH,OAAOD,EACL,IAAI,MAAM,iDAAiDH,CAAO,EAAE,CACtE,EAIF,GAAI,CAAC,KAAK,mBAAmBI,CAAW,EACtC,OAAOD,EACL,IAAI,MACF,wDAAwDH,CAAO,EACjE,CACF,EAGF,MAAMK,EAAgB,KAAK,gCAAgCD,CAAW,EACtE,OAAOE,EAAMD,CAAa,CAC5B,CAEQ,mBACNE,EACyC,CACzC,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAGT,MAAMC,EAAMD,EAQZ,GALI,OAAOC,EAAI,IAAU,UAKrB,CAACA,EAAI,aAAkB,OAAOA,EAAI,aAAmB,SACvD,MAAO,GAIT,UAAWC,KAAc,OAAO,OAAOD,EAAI,WAAc,EACvD,GAAI,CAAC,KAAK,kBAAkBC,CAAU,EACpC,MAAO,GAKX,MAAI,EAAAD,EAAI,OAAY,OAAOA,EAAI,OAAa,SAK9C,CAEQ,kBACNC,EACsE,CACtE,GAAI,CAACA,GAAc,OAAOA,GAAe,SACvC,MAAO,GAGT,MAAMC,EAAOD,EAYb,GARE,OAAOC,EAAK,MAAY,UACxB,OAAOA,EAAK,gBAAsB,UAClC,OAAOA,EAAK,mBAAyB,UAMnC,CAACA,EAAK,YAAiB,OAAOA,EAAK,YAAkB,SACvD,MAAO,GAGT,MAAMC,EAAaD,EAAK,WACxB,MACE,SAAOC,EAAW,MAAY,UAC9B,OAAOA,EAAW,MAAY,SAMlC,CAEQ,gCACNP,EAC6B,CAC7B,MAAMQ,EAAc,OAAO,QAAQR,EAAY,WAAW,EAAE,OAC1D,CAACS,EAAK,CAACC,EAAQL,CAAU,IAAM,CAC7B,MAAMM,EACJpB,EAAiCmB,EAAO,YAAY,CAAC,EACvD,OAAIC,IAAkB,SAGtBF,EAAIE,CAAa,EAAI,CACnB,eAAgBN,EAAW,eAC3B,kBAAmBA,EAAW,kBAC9B,KAAMA,EAAW,KACjB,WAAYA,EAAW,WACvB,KAAML,EAAY,QAAQU,CAAM,CAClC,GACOD,CACT,EACA,CAAC,CACH,EAEA,MAAO,CACL,GAAIT,EAAY,GAChB,YAAAQ,CACF,CACF,CACF,EA/Iaf,EAANmB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBxB",
6
+ "names": ["DeviceModelId", "inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "LOWERCASE_KEY_TO_DEVICE_MODEL_ID", "DeviceModelId", "HttpDynamicNetworkDataSource", "config", "http", "chainId", "response", "error", "Left", "networkData", "configuration", "Right", "data", "obj", "descriptor", "desc", "signatures", "descriptors", "acc", "apiKey", "deviceModelId", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import a from"axios";import{Left as c,Right as u}from"purify-ts";import{beforeAll as g,beforeEach as p,describe as l,expect as o,it as i,vi as r}from"vitest";import{HttpDynamicNetworkDataSource as w}from"./HttpDynamicNetworkDataSource";r.mock("axios");l("HttpNetworkDataSource",()=>{let n;const f={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"prod",branch:"main"}},s={data:[{id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"}},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"}}}}]};g(()=>{n=new w(f)}),p(()=>{r.clearAllMocks()}),l("getNetworkConfiguration",()=>{i("should return network configuration successfully",async()=>{r.mocked(a.get).mockResolvedValue(s);const e=await n.getDynamicNetworkConfiguration(1);o(a.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=1",o.objectContaining({headers:o.any(Object)})),o(e).toEqual(u({id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"},icon:void 0},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"},icon:void 0}}}))}),i("should return error when network data is not found",async()=>{r.mocked(a.get).mockResolvedValue({data:[]});const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should return error when network data is undefined",async()=>{r.mocked(a.get).mockResolvedValue({data:void 0});const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should return error when axios throws an error",async()=>{r.mocked(a.get).mockRejectedValue(new Error("Network error"));const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Network error")))}),i("should return generic error when axios throws non-Error",async()=>{r.mocked(a.get).mockRejectedValue("String error");const e=await n.getDynamicNetworkConfiguration(1);o(e).toEqual(c(new Error("Failed to fetch network configuration")))}),i("should handle invalid data - missing id",async()=>{const e={data:[{descriptors:{}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - missing descriptors",async()=>{const e={data:[{id:"ethereum"}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - missing data field",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - missing signatures",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1"}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid signatures - missing prod",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"sig2"}}}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should include icons when available",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}},stax:{data:"0x0102",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig3",test:"sig4"}}},icons:{flex:"icon1",stax:"icon2"}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t.isRight()).toBe(!0);const d=t.unsafeCoerce();o(d.descriptors.flex.icon).toBe("icon1"),o(d.descriptors.stax.icon).toBe("icon2")}),i("should transform data correctly for Polygon chain ID",async()=>{r.mocked(a.get).mockResolvedValue(s);const e=await n.getDynamicNetworkConfiguration(137);o(a.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/networks?output=id,descriptors,icons&chain_id=137",o.objectContaining({headers:o.any(Object)})),o(e.isRight()).toBe(!0);const t=e.unsafeCoerce();o(Object.keys(t.descriptors)).toEqual(["flex","stax"])}),i("should handle invalid data - null data",async()=>{const e={data:[null]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Network configuration not found for chain ID: 1")))}),i("should handle invalid data - non-object data",async()=>{const e={data:["string_instead_of_object"]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - icons as string instead of object",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:"should_be_object_not_string"}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid data - icons as number instead of object (line 93)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:123}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - null descriptor (line 103)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:null}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))}),i("should handle invalid descriptor - non-object descriptor (line 103)",async()=>{const e={data:[{id:"ethereum",descriptors:{flex:"should_be_object_not_string"}}]};r.mocked(a.get).mockResolvedValue(e);const t=await n.getDynamicNetworkConfiguration(1);o(t).toEqual(c(new Error("Invalid network configuration response for chain ID: 1")))})})});
1
+ import{Left as i,Right as u}from"purify-ts";import{beforeEach as g,describe as l,expect as o,it as n,vi as f}from"vitest";import{HttpDynamicNetworkDataSource as p}from"./HttpDynamicNetworkDataSource";l("HttpNetworkDataSource",()=>{let r,a;const c={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"prod",branch:"main"}},s=[{id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"}},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"}}}}];g(()=>{f.clearAllMocks(),a={get:f.fn()},r=new p(c,a)}),l("getNetworkConfiguration",()=>{n("should return network configuration successfully",async()=>{a.get.mockResolvedValue(s);const e=await r.getDynamicNetworkConfiguration(1);o(a.get).toHaveBeenCalledWith(`${c.cal.url}/networks`,{params:{output:"id,descriptors,icons",chain_id:1}}),o(e).toEqual(u({id:"ethereum",descriptors:{flex:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100c116b5470c266c2947b92aa9eadbe3da03305efc6b8fee041e04e8484a9834af022041d5b82b359614ea8dd94a542dfd87b0ae6f3b4a075aad9a53a030064ab42cd0",test:"3045022100f78bac5c9c3f2ceeea26680aaea17be61fce84ae7ec983a8194e68275f4fe5900220231afbe39fcec63edfea2b4e787a72d79ce53d6a4c408f24b5a116905a9082d3"},icon:void 0},stax:{data:"0x010108020101510101230800000000000000895207506f6c79676f6e2403504f4c53204aa5034d2fd4c46647d382aa64d0a03d06b185512bb7942390318bda18d0423a",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"3045022100cf42c039c16fc95dc97c09f15cdd93bed0e63ee45cf5c38c2b30bb8a3bc17f8d022053a96c9e51695c3c1c1a31f5cbf84bd6febadc97f4bb02bdc67cf3e24ad0c32d",test:"304402207e1e1b8f99b45c95b0cf1e90f46cf07e6a90f82c49ccdb6e2e95ab0c1e2f5a370220784e1fac16bb01c5d096733e1cbf067d616e4de659fda2c388f8c3502e7f7f80"},icon:void 0}}}))}),n("should return error when network data is not found",async()=>{a.get.mockResolvedValue([]);const e=await r.getDynamicNetworkConfiguration(1);o(e).toEqual(i(new Error("Network configuration not found for chain ID: 1")))}),n("should return error when network data is undefined",async()=>{a.get.mockResolvedValue(null);const e=await r.getDynamicNetworkConfiguration(1);o(e).toEqual(i(new Error("Network configuration not found for chain ID: 1")))}),n("should return error when http.get throws an error",async()=>{a.get.mockRejectedValue(new Error("Network error"));const e=await r.getDynamicNetworkConfiguration(1);o(e).toEqual(i(new Error("Network error")))}),n("should return generic error when http.get throws non-Error",async()=>{a.get.mockRejectedValue("String error");const e=await r.getDynamicNetworkConfiguration(1);o(e).toEqual(i(new Error("Failed to fetch network configuration")))}),n("should handle invalid data - missing id",async()=>{const e=[{descriptors:{}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid data - missing descriptors",async()=>{const e=[{id:"ethereum"}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid descriptor - missing data field",async()=>{const e=[{id:"ethereum",descriptors:{flex:{descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid descriptor - missing signatures",async()=>{const e=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1"}}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid signatures - missing prod",async()=>{const e=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{test:"sig2"}}}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should include icons when available",async()=>{const e=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}},stax:{data:"0x0102",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig3",test:"sig4"}}},icons:{flex:"icon1",stax:"icon2"}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t.isRight()).toBe(!0);const d=t.unsafeCoerce();o(d.descriptors.flex.icon).toBe("icon1"),o(d.descriptors.stax.icon).toBe("icon2")}),n("should transform data correctly for Polygon chain ID",async()=>{a.get.mockResolvedValue(s);const e=await r.getDynamicNetworkConfiguration(137);o(a.get).toHaveBeenCalledWith(`${c.cal.url}/networks`,{params:{output:"id,descriptors,icons",chain_id:137}}),o(e.isRight()).toBe(!0);const t=e.unsafeCoerce();o(Object.keys(t.descriptors)).toEqual(["flex","stax"])}),n("should handle invalid data - null data",async()=>{const e=[null];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Network configuration not found for chain ID: 1")))}),n("should handle invalid data - non-object data",async()=>{const e=["string_instead_of_object"];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid data - icons as string instead of object",async()=>{const e=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:"should_be_object_not_string"}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid data - icons as number instead of object (line 93)",async()=>{const e=[{id:"ethereum",descriptors:{flex:{data:"0x0101",descriptorType:"network",descriptorVersion:"v1",signatures:{prod:"sig1",test:"sig2"}}},icons:123}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid descriptor - null descriptor (line 103)",async()=>{const e=[{id:"ethereum",descriptors:{flex:null}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))}),n("should handle invalid descriptor - non-object descriptor (line 103)",async()=>{const e=[{id:"ethereum",descriptors:{flex:"should_be_object_not_string"}}];a.get.mockResolvedValue(e);const t=await r.getDynamicNetworkConfiguration(1);o(t).toEqual(i(new Error("Invalid network configuration response for chain ID: 1")))})})});
2
2
  //# sourceMappingURL=HttpDynamicNetworkDataSource.test.js.map