@ledgerhq/context-module 0.0.0-signer-eth-20250122093657 → 0.0.0-test-recursive-stack-20251002122259

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 (832) hide show
  1. package/README.md +17 -5
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/cjs/package.json +16 -16
  4. package/lib/cjs/src/ContextModule.js +1 -1
  5. package/lib/cjs/src/ContextModule.js.map +1 -1
  6. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  7. package/lib/cjs/src/ContextModuleBuilder.js.map +3 -3
  8. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  9. package/lib/cjs/src/ContextModuleBuilder.test.js.map +3 -3
  10. package/lib/cjs/src/DefaultContextModule.js +1 -1
  11. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  12. package/lib/cjs/src/DefaultContextModule.test.js +1 -1
  13. package/lib/cjs/src/DefaultContextModule.test.js.map +3 -3
  14. package/lib/cjs/src/calldata/data/CalldataDescriptorDataSource.js +2 -0
  15. package/lib/cjs/src/calldata/data/CalldataDescriptorDataSource.js.map +7 -0
  16. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js +2 -0
  17. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +7 -0
  18. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +2 -0
  19. package/lib/cjs/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +7 -0
  20. package/lib/cjs/src/calldata/data/dto/CalldataDto.js +2 -0
  21. package/lib/cjs/src/calldata/data/dto/CalldataDto.js.map +7 -0
  22. package/lib/cjs/src/calldata/di/calldataModuleFactory.js +2 -0
  23. package/lib/cjs/src/calldata/di/calldataModuleFactory.js.map +7 -0
  24. package/lib/cjs/src/calldata/di/calldataTypes.js +2 -0
  25. package/lib/cjs/src/calldata/di/calldataTypes.js.map +7 -0
  26. package/lib/cjs/src/calldata/domain/CalldataContextLoader.js +2 -0
  27. package/lib/cjs/src/calldata/domain/CalldataContextLoader.js.map +7 -0
  28. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js +2 -0
  29. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js.map +7 -0
  30. package/lib/cjs/src/config/di/configModuleFactory.js +1 -1
  31. package/lib/cjs/src/config/di/configModuleFactory.js.map +3 -3
  32. package/lib/cjs/src/config/di/configTypes.js +1 -1
  33. package/lib/cjs/src/config/di/configTypes.js.map +2 -2
  34. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js +2 -0
  35. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js.map +7 -0
  36. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  37. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  38. package/lib/cjs/src/di.js +1 -1
  39. package/lib/cjs/src/di.js.map +3 -3
  40. package/lib/cjs/src/dynamic-network/data/DynamicNetworkDataSource.js +2 -0
  41. package/lib/cjs/src/dynamic-network/data/DynamicNetworkDataSource.js.map +7 -0
  42. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +2 -0
  43. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +7 -0
  44. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +2 -0
  45. package/lib/cjs/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +7 -0
  46. package/lib/cjs/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js +2 -0
  47. package/lib/cjs/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js.map +7 -0
  48. package/lib/cjs/src/dynamic-network/di/dynamicNetworkModuleFactory.js +2 -0
  49. package/lib/cjs/src/dynamic-network/di/dynamicNetworkModuleFactory.js.map +7 -0
  50. package/lib/cjs/src/dynamic-network/di/dynamicNetworkTypes.js +2 -0
  51. package/lib/cjs/src/dynamic-network/di/dynamicNetworkTypes.js.map +7 -0
  52. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +2 -0
  53. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +7 -0
  54. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +2 -0
  55. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +7 -0
  56. package/lib/cjs/src/dynamic-network/model/DynamicNetworkConfiguration.js +2 -0
  57. package/lib/cjs/src/dynamic-network/model/DynamicNetworkConfiguration.js.map +7 -0
  58. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  59. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  60. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  61. package/lib/cjs/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  62. package/lib/cjs/src/external-plugin/di/externalPluginModuleFactory.js +1 -1
  63. package/lib/cjs/src/external-plugin/di/externalPluginModuleFactory.js.map +3 -3
  64. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  65. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  66. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  67. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  68. package/lib/cjs/src/index.js +1 -1
  69. package/lib/cjs/src/index.js.map +2 -2
  70. package/lib/cjs/src/nft/data/HttpNftDataSource.js +1 -1
  71. package/lib/cjs/src/nft/data/HttpNftDataSource.js.map +3 -3
  72. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js +1 -1
  73. package/lib/cjs/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  74. package/lib/cjs/src/nft/di/nftModuleFactory.js +1 -1
  75. package/lib/cjs/src/nft/di/nftModuleFactory.js.map +3 -3
  76. package/lib/cjs/src/nft/di/nftTypes.js +1 -1
  77. package/lib/cjs/src/nft/di/nftTypes.js.map +2 -2
  78. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js +2 -0
  79. package/lib/cjs/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  80. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  81. package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  82. package/lib/cjs/src/nft/domain/NftContextLoader.js +1 -1
  83. package/lib/cjs/src/nft/domain/NftContextLoader.js.map +3 -3
  84. package/lib/cjs/src/nft/domain/NftContextLoader.test.js +1 -1
  85. package/lib/cjs/src/nft/domain/NftContextLoader.test.js.map +3 -3
  86. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js +2 -0
  87. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.js.map +7 -0
  88. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js +2 -0
  89. package/lib/cjs/src/pki/data/HttpPkiCertificateDataSource.test.js.map +7 -0
  90. package/lib/cjs/src/pki/data/PkiCertificateDataSource.js +2 -0
  91. package/lib/cjs/src/pki/data/PkiCertificateDataSource.js.map +7 -0
  92. package/lib/cjs/src/pki/data/pkiDataSourceTypes.js +2 -0
  93. package/lib/cjs/src/pki/data/pkiDataSourceTypes.js.map +7 -0
  94. package/lib/cjs/src/pki/di/pkiModuleFactory.js +2 -0
  95. package/lib/cjs/src/pki/di/pkiModuleFactory.js.map +7 -0
  96. package/lib/cjs/src/pki/di/pkiTypes.js +2 -0
  97. package/lib/cjs/src/pki/di/pkiTypes.js.map +7 -0
  98. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.js +2 -0
  99. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.js.map +7 -0
  100. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.test.js +2 -0
  101. package/lib/cjs/src/pki/domain/DefaultPkiCertificateLoader.test.js.map +7 -0
  102. package/lib/cjs/src/pki/domain/PkiCertificateLoader.js +2 -0
  103. package/lib/cjs/src/pki/domain/PkiCertificateLoader.js.map +7 -0
  104. package/lib/cjs/src/pki/model/KeyId.js +2 -0
  105. package/lib/cjs/src/pki/model/KeyId.js.map +7 -0
  106. package/lib/cjs/src/pki/model/KeyUsage.js +2 -0
  107. package/lib/cjs/src/pki/model/KeyUsage.js.map +7 -0
  108. package/lib/cjs/src/pki/model/PkiCertificate.js +2 -0
  109. package/lib/cjs/src/pki/model/PkiCertificate.js.map +7 -0
  110. package/lib/cjs/src/pki/model/PkiCertificateInfo.js +2 -0
  111. package/lib/cjs/src/pki/model/PkiCertificateInfo.js.map +7 -0
  112. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js +2 -0
  113. package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  114. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  115. package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  116. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  117. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  118. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  119. package/lib/cjs/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  120. package/lib/cjs/src/proxy/data/ProxyDataSource.js +2 -0
  121. package/lib/cjs/src/proxy/data/ProxyDataSource.js.map +7 -0
  122. package/lib/cjs/src/proxy/data/dto/ProxyDelegateCallDto.js +2 -0
  123. package/lib/cjs/src/proxy/data/dto/ProxyDelegateCallDto.js.map +7 -0
  124. package/lib/cjs/src/proxy/data/dto/ProxyImplementationAddressDto.js +2 -0
  125. package/lib/cjs/src/proxy/data/dto/ProxyImplementationAddressDto.js.map +7 -0
  126. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +2 -0
  127. package/lib/cjs/src/proxy/data/dto/SafeProxyImplementationAddressDto.js.map +7 -0
  128. package/lib/cjs/src/proxy/di/proxyModuleFactory.js +2 -0
  129. package/lib/cjs/src/proxy/di/proxyModuleFactory.js.map +7 -0
  130. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js +2 -0
  131. package/lib/cjs/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  132. package/lib/cjs/src/proxy/di/proxyTypes.js +2 -0
  133. package/lib/cjs/src/proxy/di/proxyTypes.js.map +7 -0
  134. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  135. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  136. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  137. package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  138. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js +2 -0
  139. package/lib/cjs/src/proxy/model/ProxyDelegateCall.js.map +7 -0
  140. package/lib/cjs/src/shared/constant/HttpHeaders.js +2 -0
  141. package/lib/cjs/src/shared/constant/HttpHeaders.js.map +7 -0
  142. package/lib/cjs/src/shared/domain/ContextFieldLoader.js +2 -0
  143. package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +7 -0
  144. package/lib/cjs/src/shared/domain/ContextLoader.js +1 -1
  145. package/lib/cjs/src/shared/domain/ContextLoader.js.map +1 -1
  146. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  147. package/lib/cjs/src/shared/model/ClearSignContext.js.map +3 -3
  148. package/lib/cjs/src/shared/model/SignatureTags.js +2 -0
  149. package/lib/cjs/src/shared/model/SignatureTags.js.map +7 -0
  150. package/lib/cjs/src/shared/model/SolanaTransactionContext.js +2 -0
  151. package/lib/cjs/src/shared/model/SolanaTransactionContext.js.map +7 -0
  152. package/lib/cjs/src/shared/model/TransactionSubset.js +1 -1
  153. package/lib/cjs/src/shared/model/TransactionSubset.js.map +1 -1
  154. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js +1 -1
  155. package/lib/cjs/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  156. package/lib/cjs/src/shared/model/TypedDataContext.js +1 -1
  157. package/lib/cjs/src/shared/model/TypedDataContext.js.map +1 -1
  158. package/lib/cjs/src/shared/utils/HexStringUtils.js +1 -1
  159. package/lib/cjs/src/shared/utils/HexStringUtils.js.map +3 -3
  160. package/lib/cjs/src/shared/utils/HexStringUtils.test.js +2 -0
  161. package/lib/cjs/src/shared/utils/HexStringUtils.test.js.map +7 -0
  162. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +2 -0
  163. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +7 -0
  164. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +2 -0
  165. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +7 -0
  166. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js +2 -0
  167. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +7 -0
  168. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +2 -0
  169. package/lib/cjs/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +7 -0
  170. package/lib/cjs/src/solana/data/SolanaDataSource.js +2 -0
  171. package/lib/cjs/src/solana/data/SolanaDataSource.js.map +7 -0
  172. package/lib/cjs/src/solana/di/SolanaContextModuleFactory.js +2 -0
  173. package/lib/cjs/src/solana/di/SolanaContextModuleFactory.js.map +7 -0
  174. package/lib/cjs/src/solana/di/solanaContextTypes.js +2 -0
  175. package/lib/cjs/src/solana/di/solanaContextTypes.js.map +7 -0
  176. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +2 -0
  177. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +7 -0
  178. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +2 -0
  179. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +7 -0
  180. package/lib/cjs/src/solana/domain/SolanaContextLoader.js +2 -0
  181. package/lib/cjs/src/solana/domain/SolanaContextLoader.js.map +7 -0
  182. package/lib/cjs/src/solana/domain/solanaContextTypes.js +2 -0
  183. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +7 -0
  184. package/lib/cjs/src/token/data/HttpTokenDataSource.js +1 -1
  185. package/lib/cjs/src/token/data/HttpTokenDataSource.js.map +3 -3
  186. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js +1 -1
  187. package/lib/cjs/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  188. package/lib/cjs/src/token/di/tokenModuleFactory.js +1 -1
  189. package/lib/cjs/src/token/di/tokenModuleFactory.js.map +3 -3
  190. package/lib/cjs/src/token/di/tokenTypes.js +1 -1
  191. package/lib/cjs/src/token/di/tokenTypes.js.map +2 -2
  192. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js +2 -0
  193. package/lib/cjs/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  194. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  195. package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  196. package/lib/cjs/src/token/domain/TokenContextLoader.js +1 -1
  197. package/lib/cjs/src/token/domain/TokenContextLoader.js.map +3 -3
  198. package/lib/cjs/src/token/domain/TokenContextLoader.test.js +1 -1
  199. package/lib/cjs/src/token/domain/TokenContextLoader.test.js.map +3 -3
  200. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  201. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  202. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  203. package/lib/cjs/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  204. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js +1 -1
  205. package/lib/cjs/src/trusted-name/data/TrustedNameDataSource.js.map +1 -1
  206. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js +1 -1
  207. package/lib/cjs/src/trusted-name/data/TrustedNameDto.js.map +1 -1
  208. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  209. package/lib/cjs/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  210. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js +1 -1
  211. package/lib/cjs/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  212. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  213. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  214. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  215. package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  216. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  217. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  218. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  219. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  220. package/lib/cjs/src/typed-data/data/FiltersDto.js +1 -1
  221. package/lib/cjs/src/typed-data/data/FiltersDto.js.map +1 -1
  222. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  223. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  224. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  225. package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  226. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js +1 -1
  227. package/lib/cjs/src/typed-data/data/TypedDataDataSource.js.map +1 -1
  228. package/lib/cjs/src/typed-data/di/typedDataModuleFactory.js +1 -1
  229. package/lib/cjs/src/typed-data/di/typedDataModuleFactory.js.map +3 -3
  230. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  231. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  232. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  233. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  234. package/lib/cjs/src/uniswap/constants/plugin.js +2 -0
  235. package/lib/cjs/src/uniswap/constants/plugin.js.map +7 -0
  236. package/lib/cjs/src/uniswap/constants/uniswap.js +2 -0
  237. package/lib/cjs/src/uniswap/constants/uniswap.js.map +7 -0
  238. package/lib/cjs/src/uniswap/constants/weth.js +2 -0
  239. package/lib/cjs/src/uniswap/constants/weth.js.map +7 -0
  240. package/lib/cjs/src/uniswap/data/AbiDecoderDataSource.js +2 -0
  241. package/lib/cjs/src/uniswap/data/AbiDecoderDataSource.js.map +7 -0
  242. package/lib/cjs/src/uniswap/data/CommandDecoderDataSource.js +2 -0
  243. package/lib/cjs/src/uniswap/data/CommandDecoderDataSource.js.map +7 -0
  244. package/lib/cjs/src/uniswap/data/DefaultCommandDecoderDataSource.js +2 -0
  245. package/lib/cjs/src/uniswap/data/DefaultCommandDecoderDataSource.js.map +7 -0
  246. package/lib/cjs/src/uniswap/data/DefaultCommandDecoderDataSource.test.js +2 -0
  247. package/lib/cjs/src/uniswap/data/DefaultCommandDecoderDataSource.test.js.map +7 -0
  248. package/lib/cjs/src/uniswap/data/EthersAbiDecoderDataSource.js +2 -0
  249. package/lib/cjs/src/uniswap/data/EthersAbiDecoderDataSource.js.map +7 -0
  250. package/lib/cjs/src/uniswap/data/EthersAbiDecoderDataSource.test.js +2 -0
  251. package/lib/cjs/src/uniswap/data/EthersAbiDecoderDataSource.test.js.map +7 -0
  252. package/lib/cjs/src/uniswap/di/uniswapModuleFactory.js +2 -0
  253. package/lib/cjs/src/uniswap/di/uniswapModuleFactory.js.map +7 -0
  254. package/lib/cjs/src/uniswap/di/uniswapTypes.js +2 -0
  255. package/lib/cjs/src/uniswap/di/uniswapTypes.js.map +7 -0
  256. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js +2 -0
  257. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.js.map +7 -0
  258. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js +2 -0
  259. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js.map +7 -0
  260. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js +2 -0
  261. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.js.map +7 -0
  262. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js +2 -0
  263. package/lib/cjs/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +7 -0
  264. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js +2 -0
  265. package/lib/cjs/src/web3-check/data/Web3CheckDataSource.js.map +7 -0
  266. package/lib/cjs/src/web3-check/data/Web3CheckDto.js +2 -0
  267. package/lib/cjs/src/web3-check/data/Web3CheckDto.js.map +7 -0
  268. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js +2 -0
  269. package/lib/cjs/src/web3-check/di/web3CheckModuleFactory.js.map +7 -0
  270. package/lib/cjs/src/web3-check/di/web3CheckTypes.js +2 -0
  271. package/lib/cjs/src/web3-check/di/web3CheckTypes.js.map +7 -0
  272. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js +2 -0
  273. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +7 -0
  274. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +2 -0
  275. package/lib/cjs/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +7 -0
  276. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js +2 -0
  277. package/lib/cjs/src/web3-check/domain/Web3CheckContextLoader.js.map +7 -0
  278. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js +2 -0
  279. package/lib/cjs/src/web3-check/domain/web3CheckTypes.js.map +7 -0
  280. package/lib/esm/package.json +16 -16
  281. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  282. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  283. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  284. package/lib/esm/src/ContextModuleBuilder.test.js.map +3 -3
  285. package/lib/esm/src/DefaultContextModule.js +1 -1
  286. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  287. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  288. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  289. package/lib/esm/src/calldata/data/CalldataDescriptorDataSource.js +1 -0
  290. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js +2 -0
  291. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.js.map +7 -0
  292. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js +2 -0
  293. package/lib/esm/src/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +7 -0
  294. package/lib/esm/src/calldata/di/calldataModuleFactory.js +2 -0
  295. package/lib/esm/src/calldata/di/calldataModuleFactory.js.map +7 -0
  296. package/lib/esm/src/calldata/di/calldataTypes.js +2 -0
  297. package/lib/esm/src/calldata/di/calldataTypes.js.map +7 -0
  298. package/lib/esm/src/calldata/domain/CalldataContextLoader.js +2 -0
  299. package/lib/esm/src/calldata/domain/CalldataContextLoader.js.map +7 -0
  300. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js +2 -0
  301. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js.map +7 -0
  302. package/lib/esm/src/config/di/configModuleFactory.js +1 -1
  303. package/lib/esm/src/config/di/configModuleFactory.js.map +3 -3
  304. package/lib/esm/src/config/di/configTypes.js +1 -1
  305. package/lib/esm/src/config/di/configTypes.js.map +2 -2
  306. package/lib/esm/src/config/model/ContextModuleBuildArgs.js +1 -0
  307. package/lib/esm/src/di.js +1 -1
  308. package/lib/esm/src/di.js.map +3 -3
  309. package/lib/esm/src/dynamic-network/data/DynamicNetworkDataSource.js +1 -0
  310. package/lib/esm/src/dynamic-network/data/DynamicNetworkDataSource.js.map +7 -0
  311. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js +2 -0
  312. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.js.map +7 -0
  313. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +2 -0
  314. package/lib/esm/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +7 -0
  315. package/lib/esm/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js +1 -0
  316. package/lib/esm/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.js.map +7 -0
  317. package/lib/esm/src/dynamic-network/di/dynamicNetworkModuleFactory.js +2 -0
  318. package/lib/esm/src/dynamic-network/di/dynamicNetworkModuleFactory.js.map +7 -0
  319. package/lib/esm/src/dynamic-network/di/dynamicNetworkTypes.js +2 -0
  320. package/lib/esm/src/dynamic-network/di/dynamicNetworkTypes.js.map +7 -0
  321. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +2 -0
  322. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +7 -0
  323. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +2 -0
  324. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +7 -0
  325. package/lib/esm/src/dynamic-network/model/DynamicNetworkConfiguration.js +1 -0
  326. package/lib/esm/src/dynamic-network/model/DynamicNetworkConfiguration.js.map +7 -0
  327. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js +1 -1
  328. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.js.map +3 -3
  329. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
  330. package/lib/esm/src/external-plugin/data/HttpExternalPluginDataSource.test.js.map +3 -3
  331. package/lib/esm/src/external-plugin/di/externalPluginModuleFactory.js +1 -1
  332. package/lib/esm/src/external-plugin/di/externalPluginModuleFactory.js.map +3 -3
  333. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js +1 -1
  334. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.js.map +3 -3
  335. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  336. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  337. package/lib/esm/src/index.js +1 -1
  338. package/lib/esm/src/index.js.map +2 -2
  339. package/lib/esm/src/nft/data/HttpNftDataSource.js +1 -1
  340. package/lib/esm/src/nft/data/HttpNftDataSource.js.map +3 -3
  341. package/lib/esm/src/nft/data/HttpNftDataSource.test.js +1 -1
  342. package/lib/esm/src/nft/data/HttpNftDataSource.test.js.map +3 -3
  343. package/lib/esm/src/nft/di/nftModuleFactory.js +1 -1
  344. package/lib/esm/src/nft/di/nftModuleFactory.js.map +3 -3
  345. package/lib/esm/src/nft/di/nftTypes.js +1 -1
  346. package/lib/esm/src/nft/di/nftTypes.js.map +2 -2
  347. package/lib/esm/src/nft/domain/NftContextFieldLoader.js +2 -0
  348. package/lib/esm/src/nft/domain/NftContextFieldLoader.js.map +7 -0
  349. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js +2 -0
  350. package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
  351. package/lib/esm/src/nft/domain/NftContextLoader.js +1 -1
  352. package/lib/esm/src/nft/domain/NftContextLoader.js.map +3 -3
  353. package/lib/esm/src/nft/domain/NftContextLoader.test.js +1 -1
  354. package/lib/esm/src/nft/domain/NftContextLoader.test.js.map +3 -3
  355. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js +2 -0
  356. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.js.map +7 -0
  357. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js +2 -0
  358. package/lib/esm/src/pki/data/HttpPkiCertificateDataSource.test.js.map +7 -0
  359. package/lib/esm/src/pki/data/PkiCertificateDataSource.js +1 -0
  360. package/lib/esm/src/pki/data/PkiCertificateDataSource.js.map +7 -0
  361. package/lib/esm/src/pki/data/pkiDataSourceTypes.js +1 -0
  362. package/lib/esm/src/pki/data/pkiDataSourceTypes.js.map +7 -0
  363. package/lib/esm/src/pki/di/pkiModuleFactory.js +2 -0
  364. package/lib/esm/src/pki/di/pkiModuleFactory.js.map +7 -0
  365. package/lib/esm/src/pki/di/pkiTypes.js +2 -0
  366. package/lib/esm/src/pki/di/pkiTypes.js.map +7 -0
  367. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.js +2 -0
  368. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.js.map +7 -0
  369. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.test.js +2 -0
  370. package/lib/esm/src/pki/domain/DefaultPkiCertificateLoader.test.js.map +7 -0
  371. package/lib/esm/src/pki/domain/PkiCertificateLoader.js +1 -0
  372. package/lib/esm/src/pki/domain/PkiCertificateLoader.js.map +7 -0
  373. package/lib/esm/src/pki/model/KeyId.js +2 -0
  374. package/lib/esm/src/pki/model/KeyId.js.map +7 -0
  375. package/lib/esm/src/pki/model/KeyUsage.js +2 -0
  376. package/lib/esm/src/pki/model/KeyUsage.js.map +7 -0
  377. package/lib/esm/src/pki/model/PkiCertificate.js +1 -0
  378. package/lib/esm/src/pki/model/PkiCertificate.js.map +7 -0
  379. package/lib/esm/src/pki/model/PkiCertificateInfo.js +1 -0
  380. package/lib/esm/src/pki/model/PkiCertificateInfo.js.map +7 -0
  381. package/lib/esm/src/proxy/data/HttpProxyDataSource.js +2 -0
  382. package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +7 -0
  383. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js +2 -0
  384. package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
  385. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js +2 -0
  386. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.js.map +7 -0
  387. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js +2 -0
  388. package/lib/esm/src/proxy/data/HttpSafeProxyDataSource.test.js.map +7 -0
  389. package/lib/esm/src/proxy/data/ProxyDataSource.js +1 -0
  390. package/lib/esm/src/proxy/data/ProxyDataSource.js.map +7 -0
  391. package/lib/esm/src/proxy/data/dto/ProxyDelegateCallDto.js +1 -0
  392. package/lib/esm/src/proxy/data/dto/ProxyDelegateCallDto.js.map +7 -0
  393. package/lib/esm/src/proxy/data/dto/ProxyImplementationAddressDto.js +1 -0
  394. package/lib/esm/src/proxy/data/dto/ProxyImplementationAddressDto.js.map +7 -0
  395. package/lib/esm/src/proxy/data/dto/SafeProxyImplementationAddressDto.js +1 -0
  396. package/lib/esm/src/proxy/data/dto/SafeProxyImplementationAddressDto.js.map +7 -0
  397. package/lib/esm/src/proxy/di/proxyModuleFactory.js +2 -0
  398. package/lib/esm/src/proxy/di/proxyModuleFactory.js.map +7 -0
  399. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js +2 -0
  400. package/lib/esm/src/proxy/di/proxyModuleFactory.test.js.map +7 -0
  401. package/lib/esm/src/proxy/di/proxyTypes.js +2 -0
  402. package/lib/esm/src/proxy/di/proxyTypes.js.map +7 -0
  403. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
  404. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
  405. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
  406. package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
  407. package/lib/esm/src/proxy/model/ProxyDelegateCall.js +1 -0
  408. package/lib/esm/src/proxy/model/ProxyDelegateCall.js.map +7 -0
  409. package/lib/esm/src/shared/constant/HttpHeaders.js +2 -0
  410. package/lib/esm/src/shared/constant/HttpHeaders.js.map +7 -0
  411. package/lib/esm/src/shared/domain/ContextFieldLoader.js +1 -0
  412. package/lib/esm/src/shared/domain/ContextFieldLoader.js.map +7 -0
  413. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  414. package/lib/esm/src/shared/model/ClearSignContext.js.map +3 -3
  415. package/lib/esm/src/shared/model/SignatureTags.js +2 -0
  416. package/lib/esm/src/shared/model/SignatureTags.js.map +7 -0
  417. package/lib/esm/src/shared/model/SolanaTransactionContext.js +1 -0
  418. package/lib/esm/src/shared/model/SolanaTransactionContext.js.map +7 -0
  419. package/lib/esm/src/shared/model/TypedDataClearSignContext.js +1 -1
  420. package/lib/esm/src/shared/model/TypedDataClearSignContext.js.map +3 -3
  421. package/lib/esm/src/shared/utils/HexStringUtils.js +1 -1
  422. package/lib/esm/src/shared/utils/HexStringUtils.js.map +3 -3
  423. package/lib/esm/src/shared/utils/HexStringUtils.test.js +2 -0
  424. package/lib/esm/src/shared/utils/HexStringUtils.test.js.map +7 -0
  425. package/lib/esm/src/shared/utils/KeyUsageMapper.js +2 -0
  426. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +7 -0
  427. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +2 -0
  428. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +7 -0
  429. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js +2 -0
  430. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.js.map +7 -0
  431. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js +2 -0
  432. package/lib/esm/src/solana/data/HttpSolanaOwnerInfoDataSource.test.js.map +7 -0
  433. package/lib/esm/src/solana/data/SolanaDataSource.js +1 -0
  434. package/lib/esm/src/solana/data/SolanaDataSource.js.map +7 -0
  435. package/lib/esm/src/solana/di/SolanaContextModuleFactory.js +2 -0
  436. package/lib/esm/src/solana/di/SolanaContextModuleFactory.js.map +7 -0
  437. package/lib/esm/src/solana/di/solanaContextTypes.js +2 -0
  438. package/lib/esm/src/solana/di/solanaContextTypes.js.map +7 -0
  439. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +2 -0
  440. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +7 -0
  441. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +2 -0
  442. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +7 -0
  443. package/lib/esm/src/solana/domain/SolanaContextLoader.js +1 -0
  444. package/lib/esm/src/solana/domain/SolanaContextLoader.js.map +7 -0
  445. package/lib/esm/src/solana/domain/solanaContextTypes.js +1 -0
  446. package/lib/esm/src/solana/domain/solanaContextTypes.js.map +7 -0
  447. package/lib/esm/src/token/data/HttpTokenDataSource.js +1 -1
  448. package/lib/esm/src/token/data/HttpTokenDataSource.js.map +3 -3
  449. package/lib/esm/src/token/data/HttpTokenDataSource.test.js +1 -1
  450. package/lib/esm/src/token/data/HttpTokenDataSource.test.js.map +3 -3
  451. package/lib/esm/src/token/di/tokenModuleFactory.js +1 -1
  452. package/lib/esm/src/token/di/tokenModuleFactory.js.map +3 -3
  453. package/lib/esm/src/token/di/tokenTypes.js +1 -1
  454. package/lib/esm/src/token/di/tokenTypes.js.map +2 -2
  455. package/lib/esm/src/token/domain/TokenContextFieldLoader.js +2 -0
  456. package/lib/esm/src/token/domain/TokenContextFieldLoader.js.map +7 -0
  457. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js +2 -0
  458. package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
  459. package/lib/esm/src/token/domain/TokenContextLoader.js +1 -1
  460. package/lib/esm/src/token/domain/TokenContextLoader.js.map +3 -3
  461. package/lib/esm/src/token/domain/TokenContextLoader.test.js +1 -1
  462. package/lib/esm/src/token/domain/TokenContextLoader.test.js.map +3 -3
  463. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  464. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  465. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  466. package/lib/esm/src/trusted-name/data/HttpTrustedNameDataSource.test.js.map +3 -3
  467. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js +1 -1
  468. package/lib/esm/src/trusted-name/di/trustedNameModuleFactory.js.map +3 -3
  469. package/lib/esm/src/trusted-name/di/trustedNameTypes.js +1 -1
  470. package/lib/esm/src/trusted-name/di/trustedNameTypes.js.map +2 -2
  471. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js +2 -0
  472. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +7 -0
  473. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
  474. package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
  475. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  476. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.js.map +3 -3
  477. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  478. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  479. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
  480. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
  481. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
  482. package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
  483. package/lib/esm/src/typed-data/di/typedDataModuleFactory.js +1 -1
  484. package/lib/esm/src/typed-data/di/typedDataModuleFactory.js.map +3 -3
  485. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
  486. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
  487. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  488. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  489. package/lib/esm/src/uniswap/constants/plugin.js +2 -0
  490. package/lib/esm/src/uniswap/constants/plugin.js.map +7 -0
  491. package/lib/esm/src/uniswap/constants/uniswap.js +2 -0
  492. package/lib/esm/src/uniswap/constants/uniswap.js.map +7 -0
  493. package/lib/esm/src/uniswap/constants/weth.js +2 -0
  494. package/lib/esm/src/uniswap/constants/weth.js.map +7 -0
  495. package/lib/esm/src/uniswap/data/AbiDecoderDataSource.js +1 -0
  496. package/lib/esm/src/uniswap/data/AbiDecoderDataSource.js.map +7 -0
  497. package/lib/esm/src/uniswap/data/CommandDecoderDataSource.js +1 -0
  498. package/lib/esm/src/uniswap/data/CommandDecoderDataSource.js.map +7 -0
  499. package/lib/esm/src/uniswap/data/DefaultCommandDecoderDataSource.js +2 -0
  500. package/lib/esm/src/uniswap/data/DefaultCommandDecoderDataSource.js.map +7 -0
  501. package/lib/esm/src/uniswap/data/DefaultCommandDecoderDataSource.test.js +2 -0
  502. package/lib/esm/src/uniswap/data/DefaultCommandDecoderDataSource.test.js.map +7 -0
  503. package/lib/esm/src/uniswap/data/EthersAbiDecoderDataSource.js +2 -0
  504. package/lib/esm/src/uniswap/data/EthersAbiDecoderDataSource.js.map +7 -0
  505. package/lib/esm/src/uniswap/data/EthersAbiDecoderDataSource.test.js +2 -0
  506. package/lib/esm/src/uniswap/data/EthersAbiDecoderDataSource.test.js.map +7 -0
  507. package/lib/esm/src/uniswap/di/uniswapModuleFactory.js +2 -0
  508. package/lib/esm/src/uniswap/di/uniswapModuleFactory.js.map +7 -0
  509. package/lib/esm/src/uniswap/di/uniswapTypes.js +2 -0
  510. package/lib/esm/src/uniswap/di/uniswapTypes.js.map +7 -0
  511. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js +2 -0
  512. package/lib/esm/src/uniswap/domain/UniswapContextLoader.js.map +7 -0
  513. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js +2 -0
  514. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js.map +7 -0
  515. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js +2 -0
  516. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.js.map +7 -0
  517. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js +2 -0
  518. package/lib/esm/src/web3-check/data/HttpWeb3CheckDataSource.test.js.map +7 -0
  519. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js +1 -0
  520. package/lib/esm/src/web3-check/data/Web3CheckDataSource.js.map +7 -0
  521. package/lib/esm/src/web3-check/data/Web3CheckDto.js +1 -0
  522. package/lib/esm/src/web3-check/data/Web3CheckDto.js.map +7 -0
  523. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js +2 -0
  524. package/lib/esm/src/web3-check/di/web3CheckModuleFactory.js.map +7 -0
  525. package/lib/esm/src/web3-check/di/web3CheckTypes.js +2 -0
  526. package/lib/esm/src/web3-check/di/web3CheckTypes.js.map +7 -0
  527. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js +2 -0
  528. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.js.map +7 -0
  529. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js +2 -0
  530. package/lib/esm/src/web3-check/domain/DefaultWeb3CheckLoader.test.js.map +7 -0
  531. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js +1 -0
  532. package/lib/esm/src/web3-check/domain/Web3CheckContextLoader.js.map +7 -0
  533. package/lib/esm/src/web3-check/domain/web3CheckTypes.js +1 -0
  534. package/lib/esm/src/web3-check/domain/web3CheckTypes.js.map +7 -0
  535. package/lib/types/src/ContextModule.d.ts +8 -4
  536. package/lib/types/src/ContextModule.d.ts.map +1 -1
  537. package/lib/types/src/ContextModuleBuilder.d.ts +43 -3
  538. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  539. package/lib/types/src/DefaultContextModule.d.ts +14 -4
  540. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  541. package/lib/types/src/calldata/data/CalldataDescriptorDataSource.d.ts +13 -0
  542. package/lib/types/src/calldata/data/CalldataDescriptorDataSource.d.ts.map +1 -0
  543. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts +24 -0
  544. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.d.ts.map +1 -0
  545. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts +2 -0
  546. package/lib/types/src/calldata/data/HttpCalldataDescriptorDataSource.test.d.ts.map +1 -0
  547. package/lib/types/src/{transaction/data → calldata/data/dto}/CalldataDto.d.ts +10 -1
  548. package/lib/types/src/calldata/data/dto/CalldataDto.d.ts.map +1 -0
  549. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts +3 -0
  550. package/lib/types/src/calldata/di/calldataModuleFactory.d.ts.map +1 -0
  551. package/lib/types/src/calldata/di/calldataTypes.d.ts +6 -0
  552. package/lib/types/src/calldata/di/calldataTypes.d.ts.map +1 -0
  553. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts +23 -0
  554. package/lib/types/src/calldata/domain/CalldataContextLoader.d.ts.map +1 -0
  555. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts +2 -0
  556. package/lib/types/src/calldata/domain/CalldataContextLoader.test.d.ts.map +1 -0
  557. package/lib/types/src/config/di/configModuleFactory.d.ts.map +1 -1
  558. package/lib/types/src/config/di/configTypes.d.ts +1 -0
  559. package/lib/types/src/config/di/configTypes.d.ts.map +1 -1
  560. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts +4 -0
  561. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts.map +1 -0
  562. package/lib/types/src/config/model/ContextModuleConfig.d.ts +20 -0
  563. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  564. package/lib/types/src/di.d.ts.map +1 -1
  565. package/lib/types/src/dynamic-network/data/DynamicNetworkDataSource.d.ts +6 -0
  566. package/lib/types/src/dynamic-network/data/DynamicNetworkDataSource.d.ts.map +1 -0
  567. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts +13 -0
  568. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.d.ts.map +1 -0
  569. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.d.ts +2 -0
  570. package/lib/types/src/dynamic-network/data/HttpDynamicNetworkDataSource.test.d.ts.map +1 -0
  571. package/lib/types/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.d.ts +14 -0
  572. package/lib/types/src/dynamic-network/data/dto/DynamicNetworkApiResponseDto.d.ts.map +1 -0
  573. package/lib/types/src/dynamic-network/di/dynamicNetworkModuleFactory.d.ts +3 -0
  574. package/lib/types/src/dynamic-network/di/dynamicNetworkModuleFactory.d.ts.map +1 -0
  575. package/lib/types/src/dynamic-network/di/dynamicNetworkTypes.d.ts +5 -0
  576. package/lib/types/src/dynamic-network/di/dynamicNetworkTypes.d.ts.map +1 -0
  577. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +19 -0
  578. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -0
  579. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.test.d.ts +2 -0
  580. package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.test.d.ts.map +1 -0
  581. package/lib/types/src/dynamic-network/model/DynamicNetworkConfiguration.d.ts +16 -0
  582. package/lib/types/src/dynamic-network/model/DynamicNetworkConfiguration.d.ts.map +1 -0
  583. package/lib/types/src/external-plugin/data/HttpExternalPluginDataSource.d.ts.map +1 -1
  584. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts +11 -4
  585. package/lib/types/src/external-plugin/domain/ExternalPluginContextLoader.d.ts.map +1 -1
  586. package/lib/types/src/index.d.ts +49 -1
  587. package/lib/types/src/index.d.ts.map +1 -1
  588. package/lib/types/src/nft/data/HttpNftDataSource.d.ts +3 -0
  589. package/lib/types/src/nft/data/HttpNftDataSource.d.ts.map +1 -1
  590. package/lib/types/src/nft/di/nftModuleFactory.d.ts.map +1 -1
  591. package/lib/types/src/nft/di/nftTypes.d.ts +1 -0
  592. package/lib/types/src/nft/di/nftTypes.d.ts.map +1 -1
  593. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts +15 -0
  594. package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts.map +1 -0
  595. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts +2 -0
  596. package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts.map +1 -0
  597. package/lib/types/src/nft/domain/NftContextLoader.d.ts +10 -5
  598. package/lib/types/src/nft/domain/NftContextLoader.d.ts.map +1 -1
  599. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts +12 -0
  600. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.d.ts.map +1 -0
  601. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.test.d.ts +2 -0
  602. package/lib/types/src/pki/data/HttpPkiCertificateDataSource.test.d.ts.map +1 -0
  603. package/lib/types/src/pki/data/PkiCertificateDataSource.d.ts +7 -0
  604. package/lib/types/src/pki/data/PkiCertificateDataSource.d.ts.map +1 -0
  605. package/lib/types/src/pki/data/pkiDataSourceTypes.d.ts +23 -0
  606. package/lib/types/src/pki/data/pkiDataSourceTypes.d.ts.map +1 -0
  607. package/lib/types/src/pki/di/pkiModuleFactory.d.ts +3 -0
  608. package/lib/types/src/pki/di/pkiModuleFactory.d.ts.map +1 -0
  609. package/lib/types/src/pki/di/pkiTypes.d.ts +5 -0
  610. package/lib/types/src/pki/di/pkiTypes.d.ts.map +1 -0
  611. package/lib/types/src/pki/domain/DefaultPkiCertificateLoader.d.ts +10 -0
  612. package/lib/types/src/pki/domain/DefaultPkiCertificateLoader.d.ts.map +1 -0
  613. package/lib/types/src/pki/domain/DefaultPkiCertificateLoader.test.d.ts +2 -0
  614. package/lib/types/src/pki/domain/DefaultPkiCertificateLoader.test.d.ts.map +1 -0
  615. package/lib/types/src/pki/domain/PkiCertificateLoader.d.ts +6 -0
  616. package/lib/types/src/pki/domain/PkiCertificateLoader.d.ts.map +1 -0
  617. package/lib/types/src/pki/model/KeyId.d.ts +14 -0
  618. package/lib/types/src/pki/model/KeyId.d.ts.map +1 -0
  619. package/lib/types/src/pki/model/KeyUsage.d.ts +15 -0
  620. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -0
  621. package/lib/types/src/pki/model/PkiCertificate.d.ts +5 -0
  622. package/lib/types/src/pki/model/PkiCertificate.d.ts.map +1 -0
  623. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts +6 -0
  624. package/lib/types/src/pki/model/PkiCertificateInfo.d.ts.map +1 -0
  625. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts +13 -0
  626. package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -0
  627. package/lib/types/src/proxy/data/HttpProxyDataSource.test.d.ts +2 -0
  628. package/lib/types/src/proxy/data/HttpProxyDataSource.test.d.ts.map +1 -0
  629. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts +13 -0
  630. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.d.ts.map +1 -0
  631. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts +2 -0
  632. package/lib/types/src/proxy/data/HttpSafeProxyDataSource.test.d.ts.map +1 -0
  633. package/lib/types/src/proxy/data/ProxyDataSource.d.ts +17 -0
  634. package/lib/types/src/proxy/data/ProxyDataSource.d.ts.map +1 -0
  635. package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts +5 -0
  636. package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts.map +1 -0
  637. package/lib/types/src/proxy/data/dto/ProxyImplementationAddressDto.d.ts +6 -0
  638. package/lib/types/src/proxy/data/dto/ProxyImplementationAddressDto.d.ts.map +1 -0
  639. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts +10 -0
  640. package/lib/types/src/proxy/data/dto/SafeProxyImplementationAddressDto.d.ts.map +1 -0
  641. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts +4 -0
  642. package/lib/types/src/proxy/di/proxyModuleFactory.d.ts.map +1 -0
  643. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts +2 -0
  644. package/lib/types/src/proxy/di/proxyModuleFactory.test.d.ts.map +1 -0
  645. package/lib/types/src/proxy/di/proxyTypes.d.ts +5 -0
  646. package/lib/types/src/proxy/di/proxyTypes.d.ts.map +1 -0
  647. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts +21 -0
  648. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts.map +1 -0
  649. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts +2 -0
  650. package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts.map +1 -0
  651. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts +7 -0
  652. package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts.map +1 -0
  653. package/lib/types/src/shared/constant/HttpHeaders.d.ts +3 -0
  654. package/lib/types/src/shared/constant/HttpHeaders.d.ts.map +1 -0
  655. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +15 -0
  656. package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -0
  657. package/lib/types/src/shared/domain/ContextLoader.d.ts +13 -5
  658. package/lib/types/src/shared/domain/ContextLoader.d.ts.map +1 -1
  659. package/lib/types/src/shared/model/ClearSignContext.d.ts +33 -8
  660. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  661. package/lib/types/src/shared/model/SignatureTags.d.ts +3 -0
  662. package/lib/types/src/shared/model/SignatureTags.d.ts.map +1 -0
  663. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts +11 -0
  664. package/lib/types/src/shared/model/SolanaTransactionContext.d.ts.map +1 -0
  665. package/lib/types/src/shared/model/TransactionSubset.d.ts +4 -1
  666. package/lib/types/src/shared/model/TransactionSubset.d.ts.map +1 -1
  667. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts +48 -4
  668. package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts.map +1 -1
  669. package/lib/types/src/shared/model/TypedDataContext.d.ts +3 -0
  670. package/lib/types/src/shared/model/TypedDataContext.d.ts.map +1 -1
  671. package/lib/types/src/shared/utils/HexStringUtils.d.ts +1 -0
  672. package/lib/types/src/shared/utils/HexStringUtils.d.ts.map +1 -1
  673. package/lib/types/src/shared/utils/HexStringUtils.test.d.ts +2 -0
  674. package/lib/types/src/shared/utils/HexStringUtils.test.d.ts.map +1 -0
  675. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts +5 -0
  676. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -0
  677. package/lib/types/src/shared/utils/KeyUsageMapper.test.d.ts +2 -0
  678. package/lib/types/src/shared/utils/KeyUsageMapper.test.d.ts.map +1 -0
  679. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts +13 -0
  680. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.d.ts.map +1 -0
  681. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.test.d.ts +2 -0
  682. package/lib/types/src/solana/data/HttpSolanaOwnerInfoDataSource.test.d.ts.map +1 -0
  683. package/lib/types/src/solana/data/SolanaDataSource.d.ts +12 -0
  684. package/lib/types/src/solana/data/SolanaDataSource.d.ts.map +1 -0
  685. package/lib/types/src/solana/di/SolanaContextModuleFactory.d.ts +3 -0
  686. package/lib/types/src/solana/di/SolanaContextModuleFactory.d.ts.map +1 -0
  687. package/lib/types/src/solana/di/solanaContextTypes.d.ts +5 -0
  688. package/lib/types/src/solana/di/solanaContextTypes.d.ts.map +1 -0
  689. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +11 -0
  690. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -0
  691. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.test.d.ts +2 -0
  692. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.test.d.ts.map +1 -0
  693. package/lib/types/src/solana/domain/SolanaContextLoader.d.ts +5 -0
  694. package/lib/types/src/solana/domain/SolanaContextLoader.d.ts.map +1 -0
  695. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +27 -0
  696. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -0
  697. package/lib/types/src/token/data/HttpTokenDataSource.d.ts.map +1 -1
  698. package/lib/types/src/token/di/tokenModuleFactory.d.ts.map +1 -1
  699. package/lib/types/src/token/di/tokenTypes.d.ts +1 -0
  700. package/lib/types/src/token/di/tokenTypes.d.ts.map +1 -1
  701. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts +14 -0
  702. package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts.map +1 -0
  703. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts +2 -0
  704. package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts.map +1 -0
  705. package/lib/types/src/token/domain/TokenContextLoader.d.ts +10 -5
  706. package/lib/types/src/token/domain/TokenContextLoader.d.ts.map +1 -1
  707. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts +7 -3
  708. package/lib/types/src/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  709. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts +9 -2
  710. package/lib/types/src/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -1
  711. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts +4 -5
  712. package/lib/types/src/trusted-name/data/TrustedNameDto.d.ts.map +1 -1
  713. package/lib/types/src/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -1
  714. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts +1 -0
  715. package/lib/types/src/trusted-name/di/trustedNameTypes.d.ts.map +1 -1
  716. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts +22 -0
  717. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts.map +1 -0
  718. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts +2 -0
  719. package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts.map +1 -0
  720. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts +14 -6
  721. package/lib/types/src/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -1
  722. package/lib/types/src/typed-data/data/FiltersDto.d.ts +48 -2
  723. package/lib/types/src/typed-data/data/FiltersDto.d.ts.map +1 -1
  724. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +5 -0
  725. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
  726. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts +1 -0
  727. package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
  728. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts +2 -1
  729. package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts.map +1 -1
  730. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts +12 -1
  731. package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts.map +1 -1
  732. package/lib/types/src/uniswap/constants/plugin.d.ts +3 -0
  733. package/lib/types/src/uniswap/constants/plugin.d.ts.map +1 -0
  734. package/lib/types/src/uniswap/constants/uniswap.d.ts +21 -0
  735. package/lib/types/src/uniswap/constants/uniswap.d.ts.map +1 -0
  736. package/lib/types/src/uniswap/constants/weth.d.ts +20 -0
  737. package/lib/types/src/uniswap/constants/weth.d.ts.map +1 -0
  738. package/lib/types/src/uniswap/data/AbiDecoderDataSource.d.ts +5 -0
  739. package/lib/types/src/uniswap/data/AbiDecoderDataSource.d.ts.map +1 -0
  740. package/lib/types/src/uniswap/data/CommandDecoderDataSource.d.ts +6 -0
  741. package/lib/types/src/uniswap/data/CommandDecoderDataSource.d.ts.map +1 -0
  742. package/lib/types/src/uniswap/data/DefaultCommandDecoderDataSource.d.ts +14 -0
  743. package/lib/types/src/uniswap/data/DefaultCommandDecoderDataSource.d.ts.map +1 -0
  744. package/lib/types/src/uniswap/data/DefaultCommandDecoderDataSource.test.d.ts +2 -0
  745. package/lib/types/src/uniswap/data/DefaultCommandDecoderDataSource.test.d.ts.map +1 -0
  746. package/lib/types/src/uniswap/data/EthersAbiDecoderDataSource.d.ts +5 -0
  747. package/lib/types/src/uniswap/data/EthersAbiDecoderDataSource.d.ts.map +1 -0
  748. package/lib/types/src/uniswap/data/EthersAbiDecoderDataSource.test.d.ts +2 -0
  749. package/lib/types/src/uniswap/data/EthersAbiDecoderDataSource.test.d.ts.map +1 -0
  750. package/lib/types/src/uniswap/di/uniswapModuleFactory.d.ts +3 -0
  751. package/lib/types/src/uniswap/di/uniswapModuleFactory.d.ts.map +1 -0
  752. package/lib/types/src/uniswap/di/uniswapTypes.d.ts +6 -0
  753. package/lib/types/src/uniswap/di/uniswapTypes.d.ts.map +1 -0
  754. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts +112 -0
  755. package/lib/types/src/uniswap/domain/UniswapContextLoader.d.ts.map +1 -0
  756. package/lib/types/src/uniswap/domain/UniswapContextLoader.test.d.ts +2 -0
  757. package/lib/types/src/uniswap/domain/UniswapContextLoader.test.d.ts.map +1 -0
  758. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts +14 -0
  759. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.d.ts.map +1 -0
  760. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts +2 -0
  761. package/lib/types/src/web3-check/data/HttpWeb3CheckDataSource.test.d.ts.map +1 -0
  762. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts +6 -0
  763. package/lib/types/src/web3-check/data/Web3CheckDataSource.d.ts.map +1 -0
  764. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts +20 -0
  765. package/lib/types/src/web3-check/data/Web3CheckDto.d.ts.map +1 -0
  766. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts +3 -0
  767. package/lib/types/src/web3-check/di/web3CheckModuleFactory.d.ts.map +1 -0
  768. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts +5 -0
  769. package/lib/types/src/web3-check/di/web3CheckTypes.d.ts.map +1 -0
  770. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts +10 -0
  771. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.d.ts.map +1 -0
  772. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts +2 -0
  773. package/lib/types/src/web3-check/domain/DefaultWeb3CheckLoader.test.d.ts.map +1 -0
  774. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts +6 -0
  775. package/lib/types/src/web3-check/domain/Web3CheckContextLoader.d.ts.map +1 -0
  776. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts +35 -0
  777. package/lib/types/src/web3-check/domain/web3CheckTypes.d.ts.map +1 -0
  778. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  779. package/package.json +18 -18
  780. package/lib/cjs/src/shared/model/TransactionContext.js +0 -2
  781. package/lib/cjs/src/shared/model/TransactionContext.js.map +0 -7
  782. package/lib/cjs/src/transaction/data/CalldataDto.js +0 -2
  783. package/lib/cjs/src/transaction/data/CalldataDto.js.map +0 -7
  784. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js +0 -2
  785. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  786. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  787. package/lib/cjs/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  788. package/lib/cjs/src/transaction/data/TransactionDataSource.js +0 -2
  789. package/lib/cjs/src/transaction/data/TransactionDataSource.js.map +0 -7
  790. package/lib/cjs/src/transaction/di/transactionModuleFactory.js +0 -2
  791. package/lib/cjs/src/transaction/di/transactionModuleFactory.js.map +0 -7
  792. package/lib/cjs/src/transaction/di/transactionTypes.js +0 -2
  793. package/lib/cjs/src/transaction/di/transactionTypes.js.map +0 -7
  794. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js +0 -2
  795. package/lib/cjs/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  796. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  797. package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  798. package/lib/esm/src/shared/model/TransactionContext.js +0 -1
  799. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js +0 -2
  800. package/lib/esm/src/transaction/data/HttpTransactionDataSource.js.map +0 -7
  801. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js +0 -2
  802. package/lib/esm/src/transaction/data/HttpTransactionDataSource.test.js.map +0 -7
  803. package/lib/esm/src/transaction/data/TransactionDataSource.js +0 -1
  804. package/lib/esm/src/transaction/di/transactionModuleFactory.js +0 -2
  805. package/lib/esm/src/transaction/di/transactionModuleFactory.js.map +0 -7
  806. package/lib/esm/src/transaction/di/transactionTypes.js +0 -2
  807. package/lib/esm/src/transaction/di/transactionTypes.js.map +0 -7
  808. package/lib/esm/src/transaction/domain/TransactionContextLoader.js +0 -2
  809. package/lib/esm/src/transaction/domain/TransactionContextLoader.js.map +0 -7
  810. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js +0 -2
  811. package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js.map +0 -7
  812. package/lib/types/src/shared/model/TransactionContext.d.ts +0 -19
  813. package/lib/types/src/shared/model/TransactionContext.d.ts.map +0 -1
  814. package/lib/types/src/transaction/data/CalldataDto.d.ts.map +0 -1
  815. package/lib/types/src/transaction/data/HttpTransactionDataSource.d.ts +0 -22
  816. package/lib/types/src/transaction/data/HttpTransactionDataSource.d.ts.map +0 -1
  817. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts +0 -2
  818. package/lib/types/src/transaction/data/HttpTransactionDataSource.test.d.ts.map +0 -1
  819. package/lib/types/src/transaction/data/TransactionDataSource.d.ts +0 -12
  820. package/lib/types/src/transaction/data/TransactionDataSource.d.ts.map +0 -1
  821. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts +0 -3
  822. package/lib/types/src/transaction/di/transactionModuleFactory.d.ts.map +0 -1
  823. package/lib/types/src/transaction/di/transactionTypes.d.ts +0 -5
  824. package/lib/types/src/transaction/di/transactionTypes.d.ts.map +0 -1
  825. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts +0 -10
  826. package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts.map +0 -1
  827. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts +0 -2
  828. package/lib/types/src/transaction/domain/TransactionContextLoader.test.d.ts.map +0 -1
  829. /package/lib/esm/src/{shared/model/TransactionContext.js.map → calldata/data/CalldataDescriptorDataSource.js.map} +0 -0
  830. /package/lib/esm/src/{transaction/data → calldata/data/dto}/CalldataDto.js +0 -0
  831. /package/lib/esm/src/{transaction/data → calldata/data/dto}/CalldataDto.js.map +0 -0
  832. /package/lib/esm/src/{transaction/data/TransactionDataSource.js.map → config/model/ContextModuleBuildArgs.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/data/DefaultCommandDecoderDataSource.test.ts"],
4
+ "sourcesContent": ["import { type HexaString } from \"@ledgerhq/device-management-kit\";\n\nimport {\n UNISWAP_COMMANDS,\n UniswapSupportedCommand,\n} from \"@/uniswap/constants/uniswap\";\nimport {\n WETH_ADDRESS_BY_CHAIN_ID,\n WETHSupportedChainIds,\n} from \"@/uniswap/constants/weth\";\n\nimport { type AbiDecoderDataSource } from \"./AbiDecoderDataSource\";\nimport { DefaultCommandDecoderDataSource } from \"./DefaultCommandDecoderDataSource\";\nimport { EthersAbiDecoderDataSource } from \"./EthersAbiDecoderDataSource\";\n\ndescribe(\"DefaultCommandDecoderDataSource\", () => {\n const apiDecoderMock: AbiDecoderDataSource = {\n decode: vi.fn(),\n };\n let dataSource: DefaultCommandDecoderDataSource;\n\n describe(\"decode with mocked apiDecoder\", () => {\n beforeEach(() => {\n dataSource = new DefaultCommandDecoderDataSource(apiDecoderMock);\n });\n\n describe.each([\n [UniswapSupportedCommand.V2_SWAP_EXACT_IN],\n [UniswapSupportedCommand.V2_SWAP_EXACT_OUT],\n ])(\"%s\", (command) => {\n it(\"should return the correct command data\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n [\"0x0102030405060708090a0b0c0d0e0f1011121314\"],\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([\"0x0102030405060708090a0b0c0d0e0f1011121314\"]);\n });\n\n it(\"should return the correct command data with multiple addresses\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n [\n \"0x0102030405060708090a0b0c0d0e0f1011121314\",\n \"0x0102030405060708090a0b0c0d0e0f1011121315\",\n ],\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([\n \"0x0102030405060708090a0b0c0d0e0f1011121314\",\n \"0x0102030405060708090a0b0c0d0e0f1011121315\",\n ]);\n });\n\n it(\"should return an empty array if an address is not valid\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n [\"0x0102030405060708090a0b0c0d0e0f1011121314\", \"invalid\"],\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the addresses are not an array\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n \"invalid\",\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the addresses are not an array of hexa strings\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n [\"invalid\"],\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n describe.each([\n [UniswapSupportedCommand.V3_SWAP_EXACT_IN],\n [UniswapSupportedCommand.V3_SWAP_EXACT_OUT],\n ])(\"%s\", (command) => {\n it(\"should return the correct command data\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n const addresses = [\n \"0102030405060708090a0b0c0d0e0f1011121314\",\n \"0102030405060708090a0b0c0d0e0f1011121315\",\n ];\n const path = addresses.reduce(\n (acc, address) =>\n acc.length === 0 ? `0x${address}` : `${acc}999999${address}`,\n \"\",\n );\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n path,\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([\n \"0x0102030405060708090a0b0c0d0e0f1011121314\",\n \"0x0102030405060708090a0b0c0d0e0f1011121315\",\n ]);\n });\n\n it(\"should return the correct command data with multiple addresses\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n const addresses = [\n \"0102030405060708090a0b0c0d0e0f1011121314\",\n \"0102030405060708090a0b0c0d0e0f1011121315\",\n \"0102030405060708090a0b0c0d0e0f1011121316\",\n \"0102030405060708090a0b0c0d0e0f1011121317\",\n ];\n const path = addresses.reduce(\n (acc, address) =>\n acc.length === 0 ? `0x${address}` : `${acc}999999${address}`,\n \"\",\n );\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n path,\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([\n \"0x0102030405060708090a0b0c0d0e0f1011121314\",\n \"0x0102030405060708090a0b0c0d0e0f1011121315\",\n \"0x0102030405060708090a0b0c0d0e0f1011121316\",\n \"0x0102030405060708090a0b0c0d0e0f1011121317\",\n ]);\n });\n\n it(\"should return an empty array if the path is not valid\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n \"invalid\",\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the path is not a string\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n 123,\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the path is not a hexa string\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n \"invalid\",\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the path is too short\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n\n const addresses = [\n \"0102030405060708090a0b0c0d0e0f1011121314\",\n \"0102030405060708090a0b0c0d0e0f101112131\", // 1 char missing\n ];\n const path = addresses.reduce(\n (acc, address) =>\n acc.length === 0 ? `0x${address}` : `${acc}999999${address}`,\n \"\",\n );\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x\",\n \"0x\",\n \"0x\",\n path,\n false,\n ]);\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n\n describe.each([\n UniswapSupportedCommand.WRAP_ETH,\n UniswapSupportedCommand.UNWRAP_ETH,\n ])(\"%s\", (command) => {\n it.each([\n WETHSupportedChainIds.ARBITRUM_GOERLI,\n WETHSupportedChainIds.ARBITRUM_ONE,\n WETHSupportedChainIds.AVALANCHE_C_CHAIN,\n WETHSupportedChainIds.BASE,\n WETHSupportedChainIds.BASE_GOERLI,\n WETHSupportedChainIds.BLAST,\n WETHSupportedChainIds.BSC,\n WETHSupportedChainIds.ETHEREUM_GOERLI,\n WETHSupportedChainIds.ETHEREUM_MAINNET,\n WETHSupportedChainIds.ETHEREUM_SEPOLIA,\n WETHSupportedChainIds.OPTIMISM,\n WETHSupportedChainIds.OPTIMISM_GOERLI,\n WETHSupportedChainIds.POLYGON,\n WETHSupportedChainIds.POLYGON_MUMBAI,\n ])(\"should return the correct command data for chainId %s\", (chainId) => {\n // GIVEN\n const input: HexaString = \"0x\";\n\n // WHEN\n const result = dataSource.decode(command, input, chainId);\n\n // THEN\n expect(result).toEqual([\n WETH_ADDRESS_BY_CHAIN_ID[chainId].toLowerCase(),\n ]);\n });\n\n it(\"should return an empty array if the chainId is not supported\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n\n // WHEN\n const result = dataSource.decode(\n UniswapSupportedCommand.WRAP_ETH,\n input,\n 123,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n\n describe(\"SWEEP\", () => {\n it(\"should return the correct command data\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x0102030405060708090a0b0c0d0e0f1011121314\",\n \"0x\",\n \"0x\",\n \"0x\",\n ]);\n\n // WHEN\n const result = dataSource.decode(\n UniswapSupportedCommand.SWEEP,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0x0102030405060708090a0b0c0d0e0f1011121314\"]);\n });\n\n it(\"should return an empty array if the address is not valid\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n \"invalid\",\n \"0x\",\n \"0x\",\n \"0x\",\n ]);\n\n // WHEN\n const result = dataSource.decode(\n UniswapSupportedCommand.SWEEP,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the address is not a hexa string\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n vi.spyOn(apiDecoderMock, \"decode\").mockReturnValueOnce([\n 123,\n \"0x\",\n \"0x\",\n \"0x\",\n ]);\n\n // WHEN\n const result = dataSource.decode(\n UniswapSupportedCommand.SWEEP,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n\n describe.each([\n UniswapSupportedCommand.PERMIT2_PERMIT,\n UniswapSupportedCommand.PERMIT2_TRANSFER_FROM,\n UniswapSupportedCommand.PERMIT2_PERMIT_BATCH,\n UniswapSupportedCommand.PERMIT2_TRANSFER_FROM_BATCH,\n UniswapSupportedCommand.PAY_PORTION,\n \"invalid\" as UniswapSupportedCommand,\n ])(\"%s\", (command) => {\n it(\"should return an empty array\", () => {\n // GIVEN\n const input: HexaString = \"0x\";\n\n // WHEN\n const result = dataSource.decode(command, input, 1);\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n });\n\n describe(\"decode with real apiDecoder\", () => {\n beforeEach(() => {\n const abiDecoder = new EthersAbiDecoderDataSource();\n dataSource = new DefaultCommandDecoderDataSource(abiDecoder);\n });\n\n describe(\"V3_SWAP_EXACT_IN -> PAY_PORTION -> UNWRAP_ETH\", () => {\n // https://etherscan.io/tx/0xc9821c32c1782d9ab6baf6f9ca4b2565bce11aaf5146a2d303215bda026f5e48\n const commands: HexaString[] = [\"0x00\", \"0x06\", \"0x0c\"];\n const inputs: HexaString[] = [\n \"0x00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000a18f07d736b90be5500000000000000000000000000000000000000000000000000000000b0b8122abd8412900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bb9f599ce614feb2e1bbe58f180f370d05b39344e002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000\",\n \"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000017cc6042605381c158d2adab487434bde79aa61c000000000000000000000000000000000000000000000000000000000000005b\",\n \"0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000b0b8122abd84129\",\n ];\n\n it(\"V3_SWAP_EXACT_IN\", () => {\n // GIVEN\n const command = commands[0]!;\n const input = inputs[0]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\n \"0xb9f599ce614feb2e1bbe58f180f370d05b39344e\", // ERC20\n \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\", // WETH\n ]);\n });\n\n it(\"PAY_PORTION\", () => {\n // GIVEN\n const command = commands[1]!;\n const input = inputs[1]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"UNWRAP_ETH\", () => {\n // GIVEN\n const command = commands[2]!;\n const input = inputs[2]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"]); // WETH\n });\n });\n\n describe(\"WRAP_ETH -> V3_SWAP_EXACT_OUT -> TRANSFERT -> SWEEP -> UNWRAP_ETH\", () => {\n // https://etherscan.io/tx/0xa628c8b3da2ad984aed0354d8ca4b4c3c42941491dc4e0d6a5f423fd65e6c90a\n const commands: HexaString[] = [\"0x0b\", \"0x01\", \"0x05\", \"0x04\", \"0x0c\"];\n const inputs: HexaString[] = [\n \"0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000078e6708e70aed0f\",\n \"0x00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000059a16770000000000000000000000000000000000000000000000000078e6708e70aed0f00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000\",\n \"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c470000000000000000000000000000000000000000000000000000000000393870\",\n \"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000059682f00\",\n \"0x0000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000000000000\",\n ];\n\n it(\"WRAP_ETH\", () => {\n // GIVEN\n const command = commands[0]!;\n const input = inputs[0]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"]); // WETH\n });\n\n it(\"V3_SWAP_EXACT_OUT\", () => {\n // GIVEN\n const command = commands[1]!;\n const input = inputs[1]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\n \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\", // USDC\n \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\", // WETH\n ]);\n });\n\n it(\"TRANSFERT\", () => {\n // GIVEN\n const command = commands[2]!;\n const input = inputs[2]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"SWEEP\", () => {\n // GIVEN\n const command = commands[3]!;\n const input = inputs[3]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"]); // USDC\n });\n\n it(\"UNWRAP_ETH\", () => {\n // GIVEN\n const command = commands[4]!;\n const input = inputs[4]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"]); // WETH\n });\n });\n\n describe(\"V2_SWAP_EXACT_IN -> PAY_PORTION -> UNWRAP_ETH\", () => {\n // https://etherscan.io/tx/0x78bc5732213e09d9ead8cabc269b7c426b0301dfe543c37d0a920e25eaa9447f\n const commands: HexaString[] = [\"0x08\", \"0x06\", \"0x0c\"];\n const inputs: HexaString[] = [\n \"0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000003ebb8addda849d38caed0000000000000000000000000000000000000000000000000f238e04a7ccbf5100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000003b991130eae3cca364406d718da22fa1c3e7c256000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n \"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c0000000000000000000000000000000000000000000000000000000000000019\",\n \"0x00000000000000000000000002573c689ddedddd450e6c947f5bb67de70e80b50000000000000000000000000000000000000000000000000f19dda9c38a50c1\",\n ];\n\n it(\"V2_SWAP_EXACT_IN\", () => {\n // GIVEN\n const command = commands[0]!;\n const input = inputs[0]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\n \"0x3b991130eae3cca364406d718da22fa1c3e7c256\", // ERC20\n \"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\", // WETH\n ]);\n });\n\n it(\"PAY_PORTION\", () => {\n // GIVEN\n const command = commands[1]!;\n const input = inputs[1]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"UNWRAP_ETH\", () => {\n // GIVEN\n const command = commands[2]!;\n const input = inputs[2]!;\n\n // WHEN\n const result = dataSource.decode(\n UNISWAP_COMMANDS[command] as UniswapSupportedCommand,\n input,\n 1,\n );\n\n // THEN\n expect(result).toEqual([\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\"]); // WETH\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["UNISWAP_COMMANDS", "UniswapSupportedCommand", "WETH_ADDRESS_BY_CHAIN_ID", "WETHSupportedChainIds", "DefaultCommandDecoderDataSource", "EthersAbiDecoderDataSource", "apiDecoderMock", "dataSource", "command", "input", "result", "path", "acc", "address", "chainId", "abiDecoder", "commands", "inputs"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=(i,o,t,e)=>{for(var r=e>1?void 0:e?f(o,t):o,m=i.length-1,d;m>=0;m--)(d=i[m])&&(r=(e?d(o,t,r):d(r))||r);return e&&r&&c(o,t,r),r};import{AbiCoder as l}from"ethers";import{injectable as u}from"inversify";let n=class{decode(o,t){try{return l.defaultAbiCoder().decode(o,t)}catch{return[]}}};n=p([u()],n);export{n as EthersAbiDecoderDataSource};
2
+ //# sourceMappingURL=EthersAbiDecoderDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/data/EthersAbiDecoderDataSource.ts"],
4
+ "sourcesContent": ["import { AbiCoder } from \"ethers\";\nimport { injectable } from \"inversify\";\n\nimport { type AbiDecoderDataSource } from \"./AbiDecoderDataSource\";\n\n@injectable()\nexport class EthersAbiDecoderDataSource implements AbiDecoderDataSource {\n decode(types: string[], data: string): unknown[] {\n try {\n return AbiCoder.defaultAbiCoder().decode(types, data);\n } catch (_) {\n return [];\n }\n }\n}\n"],
5
+ "mappings": "wMAAA,OAAS,YAAAA,MAAgB,SACzB,OAAS,cAAAC,MAAkB,YAKpB,IAAMC,EAAN,KAAiE,CACtE,OAAOC,EAAiBC,EAAyB,CAC/C,GAAI,CACF,OAAOC,EAAS,gBAAgB,EAAE,OAAOF,EAAOC,CAAI,CACtD,MAAY,CACV,MAAO,CAAC,CACV,CACF,CACF,EARaF,EAANI,EAAA,CADNC,EAAW,GACCL",
6
+ "names": ["AbiCoder", "injectable", "EthersAbiDecoderDataSource", "types", "data", "AbiCoder", "__decorateClass", "injectable"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{EthersAbiDecoderDataSource as d}from"./EthersAbiDecoderDataSource";describe("EthersAbiDecoderDataSource",()=>{let t;beforeEach(()=>{t=new d}),it("should correctly decode valid ABI data",()=>{const c=["uint256","address"],e=t.decode(c,"0x000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c47");expect(e[0]).toEqual(10n),expect(e[1]).toEqual("0x27213E28D7fDA5c57Fe9e5dD923818DBCcf71c47")}),it("should return an empty array on decode failure",()=>{const c=["uint256"],e=t.decode(c,"0x1234");expect(e).toEqual([])})});
2
+ //# sourceMappingURL=EthersAbiDecoderDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/data/EthersAbiDecoderDataSource.test.ts"],
4
+ "sourcesContent": ["import { EthersAbiDecoderDataSource } from \"./EthersAbiDecoderDataSource\";\n\ndescribe(\"EthersAbiDecoderDataSource\", () => {\n let decoder: EthersAbiDecoderDataSource;\n\n beforeEach(() => {\n decoder = new EthersAbiDecoderDataSource();\n });\n\n it(\"should correctly decode valid ABI data\", () => {\n const types = [\"uint256\", \"address\"];\n const data =\n \"0x\" +\n \"000000000000000000000000000000000000000000000000000000000000000a\" + // 10 as uint256\n \"00000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c47\"; // Address\n\n const result = decoder.decode(types, data);\n expect(result[0]).toEqual(10n);\n expect(result[1]).toEqual(\"0x27213E28D7fDA5c57Fe9e5dD923818DBCcf71c47\");\n });\n\n it(\"should return an empty array on decode failure\", () => {\n const types = [\"uint256\"];\n const invalidData = \"0x1234\"; // Invalid encoded data\n\n const result = decoder.decode(types, invalidData);\n expect(result).toEqual([]);\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,8BAAAA,MAAkC,+BAE3C,SAAS,6BAA8B,IAAM,CAC3C,IAAIC,EAEJ,WAAW,IAAM,CACfA,EAAU,IAAID,CAChB,CAAC,EAED,GAAG,yCAA0C,IAAM,CACjD,MAAME,EAAQ,CAAC,UAAW,SAAS,EAM7BC,EAASF,EAAQ,OAAOC,EAJ5B,oIAIuC,EACzC,OAAOC,EAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,EAC7B,OAAOA,EAAO,CAAC,CAAC,EAAE,QAAQ,4CAA4C,CACxE,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,MAAMD,EAAQ,CAAC,SAAS,EAGlBC,EAASF,EAAQ,OAAOC,EAFV,QAE4B,EAChD,OAAOC,CAAM,EAAE,QAAQ,CAAC,CAAC,CAC3B,CAAC,CACH,CAAC",
6
+ "names": ["EthersAbiDecoderDataSource", "decoder", "types", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as r}from"inversify";import{DefaultCommandDecoderDataSource as t}from"../../uniswap/data/DefaultCommandDecoderDataSource";import{EthersAbiDecoderDataSource as a}from"../../uniswap/data/EthersAbiDecoderDataSource";import{UniswapContextLoader as m}from"../../uniswap/domain/UniswapContextLoader";import{uniswapTypes as e}from"./uniswapTypes";const D=()=>new r(({bind:o})=>{o(e.AbiDecoderDataSource).to(a),o(e.CommandDecoderDataSource).to(t),o(e.UniswapContextLoader).to(m)});export{D as uniswapModuleFactory};
2
+ //# sourceMappingURL=uniswapModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/di/uniswapModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { DefaultCommandDecoderDataSource } from \"@/uniswap/data/DefaultCommandDecoderDataSource\";\nimport { EthersAbiDecoderDataSource } from \"@/uniswap/data/EthersAbiDecoderDataSource\";\nimport { UniswapContextLoader } from \"@/uniswap/domain/UniswapContextLoader\";\n\nimport { uniswapTypes } from \"./uniswapTypes\";\n\nexport const uniswapModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(uniswapTypes.AbiDecoderDataSource).to(EthersAbiDecoderDataSource);\n bind(uniswapTypes.CommandDecoderDataSource).to(\n DefaultCommandDecoderDataSource,\n );\n bind(uniswapTypes.UniswapContextLoader).to(UniswapContextLoader);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,mCAAAC,MAAuC,iDAChD,OAAS,8BAAAC,MAAkC,4CAC3C,OAAS,wBAAAC,MAA4B,wCAErC,OAAS,gBAAAC,MAAoB,iBAEtB,MAAMC,EAAuB,IAClC,IAAIL,EAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAKF,EAAa,oBAAoB,EAAE,GAAGF,CAA0B,EACrEI,EAAKF,EAAa,wBAAwB,EAAE,GAC1CH,CACF,EACAK,EAAKF,EAAa,oBAAoB,EAAE,GAAGD,CAAoB,CACjE,CAAC",
6
+ "names": ["ContainerModule", "DefaultCommandDecoderDataSource", "EthersAbiDecoderDataSource", "UniswapContextLoader", "uniswapTypes", "uniswapModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const o={AbiDecoderDataSource:Symbol.for("AbiDecoderDataSource"),CommandDecoderDataSource:Symbol.for("CommandDecoderDataSource"),UniswapContextLoader:Symbol.for("UniswapContextLoader")};export{o as uniswapTypes};
2
+ //# sourceMappingURL=uniswapTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/di/uniswapTypes.ts"],
4
+ "sourcesContent": ["export const uniswapTypes = {\n AbiDecoderDataSource: Symbol.for(\"AbiDecoderDataSource\"),\n CommandDecoderDataSource: Symbol.for(\"CommandDecoderDataSource\"),\n UniswapContextLoader: Symbol.for(\"UniswapContextLoader\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAe,CAC1B,qBAAsB,OAAO,IAAI,sBAAsB,EACvD,yBAA0B,OAAO,IAAI,0BAA0B,EAC/D,qBAAsB,OAAO,IAAI,sBAAsB,CACzD",
6
+ "names": ["uniswapTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var P=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var g=(d,e,t,a)=>{for(var n=a>1?void 0:a?I(e,t):e,r=d.length-1,o;r>=0;r--)(o=d[r])&&(n=(a?o(e,t,n):o(n))||n);return a&&n&&P(e,t,n),n},S=(d,e)=>(t,a)=>e(t,a,d);import{bufferToHexaString as E,ByteArrayBuilder as N,hexaStringToBuffer as u,isHexaString as c}from"@ledgerhq/device-management-kit";import{Interface as w}from"ethers";import{inject as C,injectable as H}from"inversify";import{Maybe as x,Nothing as b}from"purify-ts";import{ClearSignContextType as m}from"../../shared/model/ClearSignContext";import{tokenTypes as k}from"../../token/di/tokenTypes";import{UNISWAP_PLUGIN_NAME as y,UNISWAP_PLUGIN_SIGNATURE as R}from"../../uniswap/constants/plugin";import{UNISWAP_COMMANDS as v,UNISWAP_EXECUTE_ABI as B,UNISWAP_EXECUTE_SELECTOR as D,UNISWAP_SWAP_COMMANDS as O,UNISWAP_UNIVERSAL_ROUTER_ADDRESS as T}from"../../uniswap/constants/uniswap";import{uniswapTypes as L}from"../../uniswap/di/uniswapTypes";const M=[m.EXTERNAL_PLUGIN,m.TOKEN];let p=class{constructor(e,t){this.commandDecoderDataSource=e;this.tokenDataSource=t}canHandle(e,t){return typeof e=="object"&&e!==null&&"to"in e&&"data"in e&&"selector"in e&&"chainId"in e&&typeof e.chainId=="number"&&c(e.data)&&e.data!=="0x"&&c(e.selector)&&e.selector===D&&c(e.to)&&e.to===T&&M.every(a=>t.includes(a))}async load(e){const{data:t,chainId:a}=e,n=this._buildUniswapPluginCommandData(),r=await this._extractClearSignContexts(t,a);return r.length>0?[n,...r]:[]}_buildUniswapPluginCommandData(){const e=new N().add8BitUIntToData(y.length).addAsciiStringToData(y).addBufferToData(u(T)).addBufferToData(u(D)).addBufferToData(u(R)).build();return{type:m.EXTERNAL_PLUGIN,payload:E(e,!1)}}async _extractClearSignContexts(e,t){try{const n=new w(B).parseTransaction({data:e}),r=n?.args[0],o=n?.args[1];if(!c(r)||!this._isHexaStringArray(o))return[];const l=this._extractCommands(r).orDefault([]);if(r.length===0||o.length!==l.length)return[];const f=l.reduce((i,s,U)=>{const h=o[U],A=this.commandDecoderDataSource.decode(s,h,t);return i.push([s,A]),i},[]);if(!this._isChainingSwapSupported(f))return[];const _=[...new Set(f.flatMap(([,i])=>i))];return(await Promise.all(_.map(i=>this.tokenDataSource.getTokenInfosPayload({address:i,chainId:t})))).map(i=>i.caseOf({Left:s=>({type:m.ERROR,error:s}),Right:s=>({type:m.TOKEN,payload:s})}))}catch{return[]}}_extractCommands(e){return x.fromNullable(e.slice(2).match(/../g)).map(t=>t.map(a=>`0x${a}`)).map(t=>t.map(a=>v[a])).chain(t=>t.every(a=>a!==void 0)?x.of(t):b)}_isChainingSwapSupported(e){let t,a;for(const[n,r]of e){if(!O.includes(n))continue;const o=n.slice(0,2);if(t&&(t!==r[0]||a!==o))return!1;t=r[r.length-1],a=o}return!0}_isHexaStringArray(e){return Array.isArray(e)&&e.every(t=>typeof t=="string"&&c(t))}};p=g([H(),S(0,C(L.CommandDecoderDataSource)),S(1,C(k.TokenDataSource))],p);export{p as UniswapContextLoader};
2
+ //# sourceMappingURL=UniswapContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/domain/UniswapContextLoader.ts"],
4
+ "sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n HexaString,\n hexaStringToBuffer,\n isHexaString,\n} from \"@ledgerhq/device-management-kit\";\nimport { Interface } from \"ethers\";\nimport { inject, injectable } from \"inversify\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { tokenTypes } from \"@/token/di/tokenTypes\";\nimport {\n UNISWAP_PLUGIN_NAME,\n UNISWAP_PLUGIN_SIGNATURE,\n} from \"@/uniswap/constants/plugin\";\nimport {\n UNISWAP_COMMANDS,\n UNISWAP_EXECUTE_ABI,\n UNISWAP_EXECUTE_SELECTOR,\n UNISWAP_SWAP_COMMANDS,\n UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n UniswapSupportedCommand,\n} from \"@/uniswap/constants/uniswap\";\nimport { type CommandDecoderDataSource } from \"@/uniswap/data/CommandDecoderDataSource\";\nimport { uniswapTypes } from \"@/uniswap/di/uniswapTypes\";\n\nexport type UniswapContextInput = {\n to: HexaString;\n data: HexaString;\n selector: HexaString;\n chainId: number;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.EXTERNAL_PLUGIN,\n ClearSignContextType.TOKEN,\n];\n\n@injectable()\nexport class UniswapContextLoader\n implements ContextLoader<UniswapContextInput>\n{\n constructor(\n @inject(uniswapTypes.CommandDecoderDataSource)\n private commandDecoderDataSource: CommandDecoderDataSource,\n @inject(tokenTypes.TokenDataSource)\n private tokenDataSource: TokenDataSource,\n ) {}\n\n canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is UniswapContextInput {\n return (\n typeof input === \"object\" &&\n input !== null &&\n \"to\" in input &&\n \"data\" in input &&\n \"selector\" in input &&\n \"chainId\" in input &&\n typeof input.chainId === \"number\" &&\n isHexaString(input.data) &&\n input.data !== \"0x\" &&\n isHexaString(input.selector) &&\n input.selector === UNISWAP_EXECUTE_SELECTOR &&\n isHexaString(input.to) &&\n input.to === UNISWAP_UNIVERSAL_ROUTER_ADDRESS &&\n SUPPORTED_TYPES.every((type) => expectedTypes.includes(type))\n );\n }\n\n async load(input: UniswapContextInput): Promise<ClearSignContext[]> {\n const { data, chainId } = input;\n\n const externalPluginContext = this._buildUniswapPluginCommandData();\n const tokenContexts = await this._extractClearSignContexts(data, chainId);\n\n if (tokenContexts.length > 0)\n return [externalPluginContext, ...tokenContexts];\n\n return [];\n }\n\n /**\n * Constructs the external plugin context for Uniswap external plugin command.\n *\n * @private\n * @returns {ClearSignContext} - The generated external plugin context.\n */\n private _buildUniswapPluginCommandData(): ClearSignContext {\n const buffer = new ByteArrayBuilder()\n .add8BitUIntToData(UNISWAP_PLUGIN_NAME.length)\n .addAsciiStringToData(UNISWAP_PLUGIN_NAME)\n .addBufferToData(hexaStringToBuffer(UNISWAP_UNIVERSAL_ROUTER_ADDRESS)!)\n .addBufferToData(hexaStringToBuffer(UNISWAP_EXECUTE_SELECTOR)!)\n .addBufferToData(hexaStringToBuffer(UNISWAP_PLUGIN_SIGNATURE)!)\n .build();\n\n return {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: bufferToHexaString(buffer, false),\n };\n }\n\n /**\n * Extracts and decodes the clear sign contexts from a Uniswap calldata transaction.\n *\n * This function:\n * - Parses the calldata using the Uniswap `execute` function signature.\n * - Extracts and validates the `commands` and `inputs`.\n * - Decodes the commands and ensures they match the number of inputs.\n * - Extracts addresses used in the transaction and verifies if chaining swaps are supported.\n * - Fetches token information for unique addresses.\n * - Returns an array of `ClearSignContext` objects representing either token data or errors.\n *\n * @private\n * @param {HexaString} calldata - The raw calldata of the Uniswap transaction.\n * @param {number} chainId - The blockchain chain ID where the transaction is being executed.\n * @returns {Promise<ClearSignContext[]>} - A promise resolving to an array of clear sign contexts.\n */\n private async _extractClearSignContexts(\n calldata: HexaString,\n chainId: number,\n ): Promise<ClearSignContext[]> {\n try {\n const iface = new Interface(UNISWAP_EXECUTE_ABI);\n\n const tx = iface.parseTransaction({ data: calldata });\n const commands: unknown = tx?.args[0];\n const inputs: unknown = tx?.args[1];\n\n if (!isHexaString(commands) || !this._isHexaStringArray(inputs)) {\n return [];\n }\n\n const decodedCommands = this._extractCommands(commands).orDefault([]);\n if (commands.length === 0 || inputs.length !== decodedCommands.length) {\n // Invalid commands or inputs\n return [];\n }\n\n const addressesByCommand = decodedCommands.reduce(\n (acc, command, index) => {\n const input = inputs[index]!;\n const decoded: HexaString[] = this.commandDecoderDataSource.decode(\n command,\n input,\n chainId,\n );\n\n acc.push([command, decoded]);\n\n return acc;\n },\n [] as [UniswapSupportedCommand, HexaString[]][],\n );\n\n if (!this._isChainingSwapSupported(addressesByCommand)) {\n return [];\n }\n\n const uniqueAddresses = [\n ...new Set(addressesByCommand.flatMap(([, addresses]) => addresses)),\n ];\n\n const tokensPayload = await Promise.all(\n uniqueAddresses.map((address) =>\n this.tokenDataSource.getTokenInfosPayload({ address, chainId }),\n ),\n );\n\n return tokensPayload.map((either) =>\n either.caseOf<ClearSignContext>({\n Left: (error) => ({ type: ClearSignContextType.ERROR, error }),\n Right: (payload) => ({ type: ClearSignContextType.TOKEN, payload }),\n }),\n );\n } catch (_) {\n return [];\n }\n }\n\n /**\n * Extracts Uniswap-supported commands from a hexadecimal string.\n * Each command is represented by one byte (2 hex characters), and this function:\n * - Maps each command to a known Uniswap command.\n * - Returns `Nothing` if any extracted command is unsupported.\n *\n * @private\n * @param {HexaString} hex - A hexadecimal string representing commands.\n * @returns {Maybe<UniswapSupportedCommand[]>} - A `Maybe` containing an array of recognized commands, or `Nothing` if any command is unsupported.\n *\n * @example\n * // Valid command extraction\n * _extractCommands('0x0008');\n * // Returns: Just(['0x00', '0x08'])\n *\n * @example\n * // Contains an unsupported command (0x05 is not supported)\n * _extractCommands('0x0005');\n * // Returns: Nothing\n *\n * @example\n * // Empty or invalid input\n * _extractCommands('0x');\n * // Returns: Nothing\n */\n private _extractCommands(hex: HexaString): Maybe<UniswapSupportedCommand[]> {\n return Maybe.fromNullable(hex.slice(2).match(/../g))\n .map((bytes) => bytes.map((b) => `0x${b}` as HexaString))\n .map((hexBytes) => hexBytes.map((b) => UNISWAP_COMMANDS[b]))\n .chain((commands) =>\n commands.every((command) => command !== undefined)\n ? Maybe.of(commands as UniswapSupportedCommand[])\n : Nothing,\n );\n }\n\n /**\n * Checks if the provided swap commands can be chained together.\n * A valid chain requires that:\n * - The output asset of the previous swap matches the input asset of the next swap.\n * - The pool version remains consistent across swaps.\n *\n * @private\n * @param {Array<[UniswapSupportedCommand, HexaString[]]>} data - An array of tuples containing a swap command and associated addresses.\n * @returns {boolean} - Returns `true` if the swap commands form a valid chain, otherwise `false`.\n *\n * @example\n * // Valid chaining: same output/input asset and pool version\n * _isChainingSwapSupported([\n * ['0x08', ['0xABC', '0xDEF']],\n * ['0x08', ['0xDEF', '0x123']]\n * ]);\n * // Returns: true\n *\n * @example\n * // Invalid chaining: different pool versions\n * _isChainingSwapSupported([\n * ['0x08', ['0xABC', '0xDEF']],\n * ['0x01', ['0xDEF', '0x123']]\n * ]);\n * // Returns: false\n *\n * @example\n * // Invalid chaining: output does not match next input\n * _isChainingSwapSupported([\n * ['0x01A1', ['0xABC', '0xDEF']],\n * ['0x01B2', ['0xXYZ', '0x123']]\n * ]);\n * // Returns: false\n */\n private _isChainingSwapSupported(\n data: [UniswapSupportedCommand, HexaString[]][],\n ): boolean {\n let lastAsset: HexaString | undefined = undefined;\n let lastPoolVersion: string | undefined = undefined;\n\n for (const [command, addresses] of data) {\n if (!UNISWAP_SWAP_COMMANDS.includes(command)) continue; // Ignore non-swap commands\n\n const poolVersion = command.slice(0, 2);\n\n if (\n lastAsset &&\n (lastAsset !== addresses[0] || lastPoolVersion !== poolVersion)\n ) {\n // Invalid chaining, return empty array\n return false;\n }\n\n // update last asset and pool version\n lastAsset = addresses[addresses.length - 1];\n lastPoolVersion = poolVersion;\n }\n\n return true;\n }\n\n /**\n * Checks if a given value is an array of hexadecimal strings.\n *\n * @private\n * @param {unknown} array - The value to check.\n * @returns {array is HexaString[]} - `true` if the value is an array of hexadecimal strings, otherwise `false`.\n */\n private _isHexaStringArray(array: unknown): array is HexaString[] {\n return (\n Array.isArray(array) &&\n array.every((item) => typeof item === \"string\" && isHexaString(item))\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "isHexaString", "Interface", "inject", "injectable", "Maybe", "Nothing", "ClearSignContextType", "tokenTypes", "UNISWAP_PLUGIN_NAME", "UNISWAP_PLUGIN_SIGNATURE", "UNISWAP_COMMANDS", "UNISWAP_EXECUTE_ABI", "UNISWAP_EXECUTE_SELECTOR", "UNISWAP_SWAP_COMMANDS", "UNISWAP_UNIVERSAL_ROUTER_ADDRESS", "uniswapTypes", "SUPPORTED_TYPES", "ClearSignContextType", "UniswapContextLoader", "commandDecoderDataSource", "tokenDataSource", "input", "expectedTypes", "isHexaString", "UNISWAP_EXECUTE_SELECTOR", "UNISWAP_UNIVERSAL_ROUTER_ADDRESS", "type", "data", "chainId", "externalPluginContext", "tokenContexts", "buffer", "ByteArrayBuilder", "UNISWAP_PLUGIN_NAME", "hexaStringToBuffer", "UNISWAP_PLUGIN_SIGNATURE", "bufferToHexaString", "calldata", "tx", "Interface", "UNISWAP_EXECUTE_ABI", "commands", "inputs", "decodedCommands", "addressesByCommand", "acc", "command", "index", "decoded", "uniqueAddresses", "addresses", "address", "either", "error", "payload", "hex", "Maybe", "bytes", "b", "hexBytes", "UNISWAP_COMMANDS", "Nothing", "lastAsset", "lastPoolVersion", "UNISWAP_SWAP_COMMANDS", "poolVersion", "array", "item", "__decorateClass", "injectable", "__decorateParam", "inject", "uniswapTypes", "tokenTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{Interface as p}from"ethers";import{Left as y,Right as f}from"purify-ts";import{ClearSignContextType as r}from"../../shared/model/ClearSignContext";import{UNISWAP_EXECUTE_SELECTOR as c,UNISWAP_UNIVERSAL_ROUTER_ADDRESS as d,UniswapSupportedCommand as i}from"../../uniswap/constants/uniswap";import{DefaultCommandDecoderDataSource as u}from"../../uniswap/data/DefaultCommandDecoderDataSource";import{EthersAbiDecoderDataSource as b}from"../../uniswap/data/EthersAbiDecoderDataSource";import{UniswapContextLoader as x}from"./UniswapContextLoader";describe("UniswapContextLoader",()=>{const o={decode:vi.fn()},a={getTokenInfosPayload:vi.fn()};let n;describe("canHandle function",()=>{beforeEach(()=>{n=new x(new u(new b),a)});const e={data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b",selector:c,chainId:1,to:d};it("should return true for valid input",()=>{expect(n.canHandle(e,[r.TOKEN,r.EXTERNAL_PLUGIN])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(n.canHandle(e,[r.NFT])).toBe(!1),expect(n.canHandle(e,[r.TOKEN])).toBe(!1),expect(n.canHandle(e,[r.EXTERNAL_PLUGIN])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"],[{...e,data:void 0},"missing data"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"],[{...e,data:"invalid-hex"},"invalid data hex"],[{...e,data:"0x"},"empty data hex"],[{...e,selector:"invalid-hex"},"invalid selector hex"],[{...e,selector:"0x"},"empty selector hex"],[{...e,selector:"not-hex-at-all"},"non-hex selector"],[{...e,selector:0},"different selector"],[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"],[{...e,to:void 0},"missing to"],[{...e,to:"invalid-hex"},"invalid to hex"],[{...e,to:"0x"},"empty to hex"],[{...e,to:"0x0000000000000000000000000000000000000000"},"different to uniswap router address"]])("should return false for %s",(t,s)=>{expect(n.canHandle(t,[r.TOKEN])).toBe(!1)})}),describe("load",()=>{describe("with tokenDataSourceMock",()=>{beforeEach(()=>{vi.spyOn(a,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve(f(`payload-${e}`))),n=new x(new u(new b),a)}),it("should return an empty array if the selector is not UNISWAP_EXECUTE_SELECTOR",async()=>{const e={to:d,selector:"0x00000000",data:"0x00000000",chainId:1},t=await n.load(e);expect(t).toEqual([])}),it("should return the external plugin context and the decoded contexts",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b000000000000000000000000000000000000000000000000000000000000000300060c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000a18f07d736b90be5500000000000000000000000000000000000000000000000000000000b0b8122abd8412900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bb9f599ce614feb2e1bbe58f180f370d05b39344e002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000017cc6042605381c158d2adab487434bde79aa61c000000000000000000000000000000000000000000000000000000000000005b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000b0b8122abd84129c001a053efc49d03b694742500f49aa09df2360bd7e297fa730c745e0d4320b42fc33fa01ca1c85a46c561f624830fffbae2441ba0f2d54eb5b0f17e0e3561d10db0b7ee",selector:c,to:d},t=await n.load(e);expect(t).toEqual([{type:r.EXTERNAL_PLUGIN,payload:"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935"},{type:"token",payload:"payload-0xb9f599ce614feb2e1bbe58f180f370d05b39344e"},{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}])}),it("should return the external plugin context and the decoded contexts with a permit",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000030a010c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000016000000000000000000000000055747be9f9f5beb232ad59fe7af013b81d95fd5e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066c32b0d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b00000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000410d756f55acf289e9754faf91bba0a704b5c7c0aa4b1dfd551115ccbe4c7f290234e1a14265e1da0bc872a23627d997fe37a689c290d519f7b8c9bdde1b79108e1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000030ba49cbff5a00000000000000000000000000000000000000000000000089677c957272141800000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200271055747be9f9f5beb232ad59fe7af013b81d95fd5e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000030ba49cbff5a000c001a0e406d9c91c8b46d959fcd31a28518a77bb248ebb316c5fab7b98335cce922f2aa0462cb970c32a8dbfe71c57b888c43b9ed04fce41d169dbfcc745445587adb771",selector:c,to:d},t=await n.load(e);expect(t).toEqual([{type:r.EXTERNAL_PLUGIN,payload:"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935"},{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"},{type:"token",payload:"payload-0x55747be9f9f5beb232ad59fe7af013b81d95fd5e"}])}),it("should return an empty array if the transaction is not supported",async()=>{const e={};vi.spyOn(o,"decode").mockReturnValue([]);const t=await n.load(e);expect(t).toEqual([])}),it("should return an empty array if a command is not supported",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4bef600000000000000000000000000000000000000000000000000000000000000050b0105040c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000078e6708e70aed0f000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000059a16770000000000000000000000000000000000000000000000000078e6708e70aed0f00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c4700000000000000000000000000000000000000000000000000000000003938700000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000059682f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006f939b43d65be049b7533907db08e80ba6969f4500000000000000000000000000000000000000000000000000000000000000000cc080a07c86dd5813ec1f3725c402f8bea6105546d1093c59676023b971f1d83f61bd4ea02a353bf3028cabcbe68c5dc8906752bafe55afc86b6344edb3ffd8a3650332e8",selector:c,to:d},t=await n.load(e);expect(t).toEqual([])})}),describe("with mocked ethers parseTransaction",()=>{beforeEach(()=>{vi.resetAllMocks(),n=new x(o,a)}),it("should return an array with contexts if 2 chain swaps are supported",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x04","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(a,"getTokenInfosPayload").mockImplementation(({address:l})=>Promise.resolve(f(`payload-${l}`)));const s=await n.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,i.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,i.V2_SWAP_EXACT_OUT,"0x0002",66),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x04",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x02",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x03",chainId:66}),expect(s).toEqual([{type:r.EXTERNAL_PLUGIN,payload:"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935"},{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x04"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an array with contexts if 1 chain swap with a non swap command",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x0b0004",["0x0001","0x0002","0x0003"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01"]).mockReturnValueOnce(["0x02","0x03"]).mockReturnValueOnce(["0x04"]),vi.spyOn(a,"getTokenInfosPayload").mockImplementation(({address:l})=>Promise.resolve(f(`payload-${l}`)));const s=await n.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,i.WRAP_ETH,"0x0001",66),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x04",chainId:66}),expect(s).toEqual([{type:r.EXTERNAL_PLUGIN,payload:"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935"},{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"},{type:"token",payload:"payload-0x04"}])}),it("should return an array with contexts if one token is not found",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(a,"getTokenInfosPayload").mockResolvedValueOnce(y("error")).mockImplementation(({address:l})=>Promise.resolve(f(`payload-${l}`)));const s=await n.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,i.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,i.V2_SWAP_EXACT_OUT,"0x0002",66),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(a.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(s).toEqual([{type:r.EXTERNAL_PLUGIN,payload:"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935"},{type:"error",error:"error"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an empty array if the if 2 chain swaps are not supported",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]),vi.spyOn(o,"decode").mockReturnValueOnce(["0x03","0x04"]);const s=await n.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,i.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,i.V2_SWAP_EXACT_OUT,"0x0002",66),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(s).toEqual([])}),it("should return an empty array if no command are returned from parseTransaction",async()=>{const e={to:d,data:c,selector:c,chainId:1};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:[""]});const t=await n.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(t).toEqual([])}),it("should return an empty array if no inputs are returned from parseTransaction",async()=>{const e={to:d,data:c,selector:c,chainId:1};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x08",[]]}),vi.spyOn(o,"decode").mockReturnValue([]);const t=await n.load(e);expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(t).toEqual([])}),it("should return an empty array if parseTransaction throws an error",async()=>{const e={to:d,data:c,selector:c,chainId:1};vi.spyOn(p.prototype,"parseTransaction").mockImplementation(()=>{throw new Error});const t=await n.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(t).toEqual([])}),it("should return an empty array if the swap is with multiple pool versions",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x080900",["0x00","0x01","0x02"]]}),vi.spyOn(o,"decode").mockReturnValue(["0x01","0x02"]);const s=await n.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,i.V2_SWAP_EXACT_IN,"0x00",66),expect(o.decode).toHaveBeenNthCalledWith(2,i.V2_SWAP_EXACT_OUT,"0x01",66),expect(o.decode).toHaveBeenNthCalledWith(3,i.V3_SWAP_EXACT_IN,"0x02",66),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(s).toEqual([])}),it("should return an empty array if the selector is not supported",async()=>{const e={to:d,data:"0x00000000",chainId:66,selector:c},t=await n.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(t).toEqual([])}),it("should return an empty array if the length of the commands and inputs are different",async()=>{const e={to:d,data:c,chainId:66,selector:c};vi.spyOn(p.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001"]]});const s=await n.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(a.getTokenInfosPayload).not.toHaveBeenCalled(),expect(s).toEqual([])})})})});
2
+ //# sourceMappingURL=UniswapContextLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/uniswap/domain/UniswapContextLoader.test.ts"],
4
+ "sourcesContent": ["import { Interface, type TransactionDescription } from \"ethers\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { type HttpTokenDataSource } from \"@/token/data/HttpTokenDataSource\";\nimport {\n UNISWAP_EXECUTE_SELECTOR,\n UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n UniswapSupportedCommand,\n} from \"@/uniswap/constants/uniswap\";\nimport { type CommandDecoderDataSource } from \"@/uniswap/data/CommandDecoderDataSource\";\nimport { DefaultCommandDecoderDataSource } from \"@/uniswap/data/DefaultCommandDecoderDataSource\";\nimport { EthersAbiDecoderDataSource } from \"@/uniswap/data/EthersAbiDecoderDataSource\";\n\nimport {\n type UniswapContextInput,\n UniswapContextLoader,\n} from \"./UniswapContextLoader\";\n\ndescribe(\"UniswapContextLoader\", () => {\n const commandDecoderMock: CommandDecoderDataSource = {\n decode: vi.fn(),\n };\n const tokenDataSourceMock = {\n getTokenInfosPayload: vi.fn(),\n };\n let loader: UniswapContextLoader;\n\n describe(\"canHandle function\", () => {\n beforeEach(() => {\n loader = new UniswapContextLoader(\n new DefaultCommandDecoderDataSource(new EthersAbiDecoderDataSource()),\n tokenDataSourceMock as unknown as HttpTokenDataSource,\n );\n });\n\n const validInput: UniswapContextInput = {\n data: \"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b\",\n selector: UNISWAP_EXECUTE_SELECTOR,\n chainId: 1,\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n };\n\n it(\"should return true for valid input\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.TOKEN,\n ClearSignContextType.EXTERNAL_PLUGIN,\n ]),\n ).toBe(true);\n });\n\n it(\"should return false for invalid expected type\", () => {\n expect(loader.canHandle(validInput, [ClearSignContextType.NFT])).toBe(\n false,\n );\n expect(loader.canHandle(validInput, [ClearSignContextType.TOKEN])).toBe(\n false,\n );\n expect(\n loader.canHandle(validInput, [ClearSignContextType.EXTERNAL_PLUGIN]),\n ).toBe(false);\n });\n\n it.each([\n [null, \"null input\"],\n [undefined, \"undefined input\"],\n [{}, \"empty object\"],\n [\"string\", \"string input\"],\n [123, \"number input\"],\n [{ ...validInput, data: undefined }, \"missing data\"],\n [{ ...validInput, selector: undefined }, \"missing selector\"],\n [{ ...validInput, chainId: undefined }, \"missing chainId\"],\n [{ ...validInput, data: \"invalid-hex\" }, \"invalid data hex\"],\n [{ ...validInput, data: \"0x\" }, \"empty data hex\"],\n [{ ...validInput, selector: \"invalid-hex\" }, \"invalid selector hex\"],\n [{ ...validInput, selector: \"0x\" }, \"empty selector hex\"],\n [{ ...validInput, selector: \"not-hex-at-all\" }, \"non-hex selector\"],\n [{ ...validInput, selector: 0x00000000 }, \"different selector\"],\n [{ ...validInput, chainId: \"1\" }, \"string chainId\"],\n [{ ...validInput, chainId: null }, \"null chainId\"],\n [{ ...validInput, to: undefined }, \"missing to\"],\n [{ ...validInput, to: \"invalid-hex\" }, \"invalid to hex\"],\n [{ ...validInput, to: \"0x\" }, \"empty to hex\"],\n [\n { ...validInput, to: \"0x0000000000000000000000000000000000000000\" },\n \"different to uniswap router address\",\n ],\n ])(\"should return false for %s\", (input, _description) => {\n expect(loader.canHandle(input, [ClearSignContextType.TOKEN])).toBe(false);\n });\n });\n\n describe(\"load\", () => {\n describe(\"with tokenDataSourceMock\", () => {\n beforeEach(() => {\n vi.spyOn(\n tokenDataSourceMock,\n \"getTokenInfosPayload\",\n ).mockImplementation(({ address }) =>\n Promise.resolve(Right(`payload-${address}`)),\n );\n loader = new UniswapContextLoader(\n new DefaultCommandDecoderDataSource(new EthersAbiDecoderDataSource()),\n tokenDataSourceMock as unknown as HttpTokenDataSource,\n );\n });\n\n it(\"should return an empty array if the selector is not UNISWAP_EXECUTE_SELECTOR\", async () => {\n // GIVEN\n const input: UniswapContextInput = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n selector: \"0x00000000\" as const,\n data: \"0x00000000\" as const,\n chainId: 1,\n };\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return the external plugin context and the decoded contexts\", async () => {\n // GIVEN\n // https://etherscan.io/getRawTx?tx=0xc9821c32c1782d9ab6baf6f9ca4b2565bce11aaf5146a2d303215bda026f5e48\n const input: UniswapContextInput = {\n chainId: 1,\n data: \"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b000000000000000000000000000000000000000000000000000000000000000300060c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000a18f07d736b90be5500000000000000000000000000000000000000000000000000000000b0b8122abd8412900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bb9f599ce614feb2e1bbe58f180f370d05b39344e002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000017cc6042605381c158d2adab487434bde79aa61c000000000000000000000000000000000000000000000000000000000000005b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000b0b8122abd84129c001a053efc49d03b694742500f49aa09df2360bd7e297fa730c745e0d4320b42fc33fa01ca1c85a46c561f624830fffbae2441ba0f2d54eb5b0f17e0e3561d10db0b7ee\",\n selector: UNISWAP_EXECUTE_SELECTOR,\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n };\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload:\n \"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935\",\n },\n {\n type: \"token\",\n payload: \"payload-0xb9f599ce614feb2e1bbe58f180f370d05b39344e\",\n }, // ERC20\n {\n type: \"token\",\n payload: \"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n }, // WETH\n ]);\n });\n\n it(\"should return the external plugin context and the decoded contexts with a permit\", async () => {\n // GIVEN\n // https://etherscan.io/getRawTx?tx=0xc4df7ccc0527541d0e80856a8f38deedc48c84825e9355469ba02d873502ce2f\n // PERMIT2_PERMIT, V3_SWAP_EXACT_OUT, UNWRAP_ETH\n const input = {\n chainId: 1,\n data: \"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000030a010c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000016000000000000000000000000055747be9f9f5beb232ad59fe7af013b81d95fd5e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066c32b0d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b00000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000410d756f55acf289e9754faf91bba0a704b5c7c0aa4b1dfd551115ccbe4c7f290234e1a14265e1da0bc872a23627d997fe37a689c290d519f7b8c9bdde1b79108e1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000030ba49cbff5a00000000000000000000000000000000000000000000000089677c957272141800000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200271055747be9f9f5beb232ad59fe7af013b81d95fd5e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000030ba49cbff5a000c001a0e406d9c91c8b46d959fcd31a28518a77bb248ebb316c5fab7b98335cce922f2aa0462cb970c32a8dbfe71c57b888c43b9ed04fce41d169dbfcc745445587adb771\",\n selector: UNISWAP_EXECUTE_SELECTOR,\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n } as UniswapContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload:\n \"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935\",\n },\n {\n type: \"token\",\n payload: \"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\n }, // WETH\n {\n type: \"token\",\n payload: \"payload-0x55747be9f9f5beb232ad59fe7af013b81d95fd5e\",\n }, // ERC20\n ]);\n });\n\n it(\"should return an empty array if the transaction is not supported\", async () => {\n // GIVEN\n const input = {} as UniswapContextInput;\n vi.spyOn(commandDecoderMock, \"decode\").mockReturnValue([]);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if a command is not supported\", async () => {\n // GIVEN\n // https://etherscan.io/getRawTx?tx=0xa628c8b3da2ad984aed0354d8ca4b4c3c42941491dc4e0d6a5f423fd65e6c90a\n // The command 0x05 (TRANSFER) is not supported\n const input: UniswapContextInput = {\n chainId: 1,\n data: \"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4bef600000000000000000000000000000000000000000000000000000000000000050b0105040c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000078e6708e70aed0f000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000059a16770000000000000000000000000000000000000000000000000078e6708e70aed0f00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c4700000000000000000000000000000000000000000000000000000000003938700000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000059682f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006f939b43d65be049b7533907db08e80ba6969f4500000000000000000000000000000000000000000000000000000000000000000cc080a07c86dd5813ec1f3725c402f8bea6105546d1093c59676023b971f1d83f61bd4ea02a353bf3028cabcbe68c5dc8906752bafe55afc86b6344edb3ffd8a3650332e8\",\n selector: UNISWAP_EXECUTE_SELECTOR,\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n };\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(result).toEqual([]);\n });\n });\n\n describe(\"with mocked ethers parseTransaction\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n loader = new UniswapContextLoader(\n commandDecoderMock,\n tokenDataSourceMock as unknown as HttpTokenDataSource,\n );\n });\n\n it(\"should return an array with contexts if 2 chain swaps are supported\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n const commands = `0x0809`; // V2_SWAP_EXACT_IN, V2_SWAP_EXACT_OUT\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x0001\", \"0x0002\"]],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\")\n .mockReturnValueOnce([\"0x01\", \"0x04\", \"0x02\"])\n .mockReturnValueOnce([\"0x02\", \"0x03\"]);\n\n vi.spyOn(\n tokenDataSourceMock,\n \"getTokenInfosPayload\",\n ).mockImplementation(({ address }) =>\n Promise.resolve(Right(`payload-${address}`)),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 1,\n UniswapSupportedCommand.V2_SWAP_EXACT_IN,\n \"0x0001\",\n 0x42,\n );\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 2,\n UniswapSupportedCommand.V2_SWAP_EXACT_OUT,\n \"0x0002\",\n 0x42,\n );\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(1, { address: \"0x01\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(2, { address: \"0x04\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(3, { address: \"0x02\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(4, { address: \"0x03\", chainId: 0x42 });\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload:\n \"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935\",\n },\n {\n type: \"token\",\n payload: \"payload-0x01\",\n },\n {\n type: \"token\",\n payload: \"payload-0x04\",\n },\n {\n type: \"token\",\n payload: \"payload-0x02\",\n },\n {\n type: \"token\",\n payload: \"payload-0x03\",\n },\n ]);\n });\n\n it(\"should return an array with contexts if 1 chain swap with a non swap command\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n const commands = `0x0b0004`; // WRAP_ETH, V3_SWAP_EXACT_IN, SWEEP\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x0001\", \"0x0002\", \"0x0003\"]],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\")\n .mockReturnValueOnce([\"0x01\"])\n .mockReturnValueOnce([\"0x02\", \"0x03\"])\n .mockReturnValueOnce([\"0x04\"]);\n vi.spyOn(\n tokenDataSourceMock,\n \"getTokenInfosPayload\",\n ).mockImplementation(({ address }) =>\n Promise.resolve(Right(`payload-${address}`)),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 1,\n UniswapSupportedCommand.WRAP_ETH,\n \"0x0001\",\n 0x42,\n );\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(1, { address: \"0x01\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(2, { address: \"0x02\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(3, { address: \"0x03\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(4, { address: \"0x04\", chainId: 0x42 });\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload:\n \"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935\",\n },\n {\n type: \"token\",\n payload: \"payload-0x01\",\n },\n {\n type: \"token\",\n payload: \"payload-0x02\",\n },\n {\n type: \"token\",\n payload: \"payload-0x03\",\n },\n {\n type: \"token\",\n payload: \"payload-0x04\",\n },\n ]);\n });\n\n it(\"should return an array with contexts if one token is not found\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n const commands = `0x0809`; // V2_SWAP_EXACT_IN, V2_SWAP_EXACT_OUT\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x0001\", \"0x0002\"]],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\")\n .mockReturnValueOnce([\"0x01\", \"0x02\"])\n .mockReturnValueOnce([\"0x02\", \"0x03\"]);\n vi.spyOn(tokenDataSourceMock, \"getTokenInfosPayload\")\n .mockResolvedValueOnce(Left(\"error\"))\n .mockImplementation(({ address }) =>\n Promise.resolve(Right(`payload-${address}`)),\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 1,\n UniswapSupportedCommand.V2_SWAP_EXACT_IN,\n \"0x0001\",\n 0x42,\n );\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 2,\n UniswapSupportedCommand.V2_SWAP_EXACT_OUT,\n \"0x0002\",\n 0x42,\n );\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(1, { address: \"0x01\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(2, { address: \"0x02\", chainId: 0x42 });\n expect(\n tokenDataSourceMock.getTokenInfosPayload,\n ).toHaveBeenNthCalledWith(3, { address: \"0x03\", chainId: 0x42 });\n expect(result).toEqual([\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload:\n \"07556e69737761703fc91a3afd70395cd496c647d5a6cc9d4b2b7fad3593564c3044022014391e8f355867a57fe88f6a5a4dbcb8bf8f888a9db3ff3449caf72d120396bd02200c13d9c3f79400fe0aa0434ac54d59b79503c9964a4abc3e8cd22763e0242935\",\n },\n {\n type: \"error\",\n error: \"error\",\n },\n {\n type: \"token\",\n payload: \"payload-0x02\",\n },\n {\n type: \"token\",\n payload: \"payload-0x03\",\n },\n ]);\n });\n\n it(\"should return an empty array if the if 2 chain swaps are not supported\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n const commands = `0x0809`; // V2_SWAP_EXACT_IN, V2_SWAP_EXACT_OUT\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x0001\", \"0x0002\"]],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x01\",\n \"0x02\",\n ]);\n vi.spyOn(commandDecoderMock, \"decode\").mockReturnValueOnce([\n \"0x03\", // should be 0x02\n \"0x04\",\n ]);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 1,\n UniswapSupportedCommand.V2_SWAP_EXACT_IN,\n \"0x0001\",\n 0x42,\n );\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 2,\n UniswapSupportedCommand.V2_SWAP_EXACT_OUT,\n \"0x0002\",\n 0x42,\n );\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if no command are returned from parseTransaction\", async () => {\n // GIVEN\n const input: UniswapContextInput = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n selector: UNISWAP_EXECUTE_SELECTOR,\n chainId: 1,\n };\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [\"\"],\n } as TransactionDescription);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).not.toHaveBeenCalled();\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if no inputs are returned from parseTransaction\", async () => {\n // GIVEN\n const input: UniswapContextInput = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n selector: UNISWAP_EXECUTE_SELECTOR,\n chainId: 1,\n };\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [\"0x08\", []],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\").mockReturnValue([]);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if parseTransaction throws an error\", async () => {\n // GIVEN\n const input: UniswapContextInput = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n selector: UNISWAP_EXECUTE_SELECTOR,\n chainId: 1,\n };\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockImplementation(\n () => {\n throw new Error();\n },\n );\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).not.toHaveBeenCalled();\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the swap is with multiple pool versions\", async () => {\n // GIVEN\n const input: UniswapContextInput = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n };\n const commands = `0x080900`; // V2_SWAP_EXACT_IN, V2_SWAP_EXACT_OUT, V3_SWAP_EXACT_IN\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x00\", \"0x01\", \"0x02\"]],\n } as TransactionDescription);\n vi.spyOn(commandDecoderMock, \"decode\").mockReturnValue([\n \"0x01\",\n \"0x02\",\n ]);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 1,\n UniswapSupportedCommand.V2_SWAP_EXACT_IN,\n \"0x00\",\n 0x42,\n );\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 2,\n UniswapSupportedCommand.V2_SWAP_EXACT_OUT,\n \"0x01\",\n 0x42,\n );\n expect(commandDecoderMock.decode).toHaveBeenNthCalledWith(\n 3,\n UniswapSupportedCommand.V3_SWAP_EXACT_IN,\n \"0x02\",\n 0x42,\n );\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the selector is not supported\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: \"0x00000000\",\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).not.toHaveBeenCalled();\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n\n it(\"should return an empty array if the length of the commands and inputs are different\", async () => {\n // GIVEN\n const input = {\n to: UNISWAP_UNIVERSAL_ROUTER_ADDRESS,\n data: UNISWAP_EXECUTE_SELECTOR,\n chainId: 0x42,\n selector: UNISWAP_EXECUTE_SELECTOR,\n } as UniswapContextInput;\n const commands = `0x0809`; // V2_SWAP_EXACT_IN, V2_SWAP_EXACT_OUT\n vi.spyOn(Interface.prototype, \"parseTransaction\").mockReturnValue({\n args: [commands, [\"0x0001\"]],\n } as TransactionDescription);\n\n // WHEN\n const result = await loader.load(input);\n\n // THEN\n expect(commandDecoderMock.decode).not.toHaveBeenCalled();\n expect(tokenDataSourceMock.getTokenInfosPayload).not.toHaveBeenCalled();\n expect(result).toEqual([]);\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Interface", "Left", "Right", "ClearSignContextType", "UNISWAP_EXECUTE_SELECTOR", "UNISWAP_UNIVERSAL_ROUTER_ADDRESS", "UniswapSupportedCommand", "DefaultCommandDecoderDataSource", "EthersAbiDecoderDataSource", "UniswapContextLoader", "commandDecoderMock", "tokenDataSourceMock", "loader", "validInput", "input", "_description", "address", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var m=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var p=(n,e,i,r)=>{for(var t=r>1?void 0:r?l(e,i):e,o=n.length-1,c;o>=0;o--)(c=n[o])&&(t=(r?c(e,i,t):c(t))||t);return r&&t&&m(e,i,t),t},s=(n,e)=>(i,r)=>e(i,r,n);import u from"axios";import{inject as h,injectable as b}from"inversify";import{Left as C,Right as y}from"purify-ts";import{configTypes as g}from"../../config/di/configTypes";import{pkiTypes as D}from"../../pki/di/pkiTypes";import{KeyUsage as W}from"../../pki/model/KeyUsage";import{LEDGER_CLIENT_VERSION_HEADER as _,LEDGER_ORIGIN_TOKEN_HEADER as E}from"../../shared/constant/HttpHeaders";import x from"../../../package.json";let a=class{constructor(e,i){this.config=e;this._certificateLoader=i;if(!this.config.originToken)throw new Error("Origin token is required")}async getWeb3Checks(e){const{from:i,deviceModelId:r}=e;let t,o,c;this.isTypedDataContext(e)?(o={msg:{from:i,data:e.data}},c=`${this.config.web3checks.url}/ethereum/scan/eip-712`):(o={tx:{from:i,raw:e.rawTx},chain:e.chainId},c=`${this.config.web3checks.url}/ethereum/scan/tx`);try{t=(await u.request({method:"POST",url:c,data:o,headers:{[_]:`context-module/${x.version}`,[E]:this.config.originToken}})).data}catch{return C(new Error("[ContextModule] HttpWeb3CheckDataSource: Failed to fetch web3 checks informations"))}if(!this.isWeb3CheckDto(t))return C(new Error("[ContextModule] HttpWeb3CheckDataSource: Cannot exploit Web3 checks data received"));const f=await this._certificateLoader.loadCertificate({keyId:t.public_key_id,keyUsage:W.TxSimulationSigner,targetDevice:r}),d={publicKeyId:t.public_key_id,descriptor:t.descriptor,certificate:f};return y(d)}isTypedDataContext(e){return"data"in e}isWeb3CheckDto(e){return e!=null&&typeof e=="object"&&"public_key_id"in e&&e.public_key_id!=null&&typeof e.public_key_id=="string"&&"descriptor"in e&&e.descriptor!=null&&typeof e.descriptor=="string"}};a=p([b(),s(0,h(g.Config)),s(1,h(D.PkiCertificateLoader))],a);export{a as HttpWeb3CheckDataSource};
2
+ //# sourceMappingURL=HttpWeb3CheckDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/data/HttpWeb3CheckDataSource.ts"],
4
+ "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport type { ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n type Web3CheckContext,\n type Web3Checks,\n type Web3CheckTypedDataContext,\n} from \"@/web3-check/domain/web3CheckTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { Web3CheckDataSource } from \"./Web3CheckDataSource\";\nimport { GetWeb3ChecksRequestDto, Web3CheckDto } from \"./Web3CheckDto\";\n\n@injectable()\nexport class HttpWeb3CheckDataSource implements Web3CheckDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {\n if (!this.config.originToken) {\n throw new Error(\"Origin token is required\");\n }\n }\n\n async getWeb3Checks(\n context: Web3CheckContext,\n ): Promise<Either<Error, Web3Checks>> {\n const { from, deviceModelId } = context;\n let web3CheckDto: Web3CheckDto;\n let requestDto: GetWeb3ChecksRequestDto;\n let url: string;\n if (this.isTypedDataContext(context)) {\n requestDto = {\n msg: {\n from,\n data: context.data,\n },\n };\n url = `${this.config.web3checks.url}/ethereum/scan/eip-712`;\n } else {\n requestDto = {\n tx: {\n from,\n raw: context.rawTx,\n },\n chain: context.chainId,\n };\n url = `${this.config.web3checks.url}/ethereum/scan/tx`;\n }\n\n try {\n const response = await axios.request<Web3CheckDto>({\n method: \"POST\",\n url,\n data: requestDto,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n web3CheckDto = response.data;\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpWeb3CheckDataSource: Failed to fetch web3 checks informations\",\n ),\n );\n }\n\n if (!this.isWeb3CheckDto(web3CheckDto)) {\n return Left(\n new Error(\n \"[ContextModule] HttpWeb3CheckDataSource: Cannot exploit Web3 checks data received\",\n ),\n );\n }\n\n const certificate = await this._certificateLoader.loadCertificate({\n keyId: web3CheckDto.public_key_id,\n keyUsage: KeyUsage.TxSimulationSigner,\n targetDevice: deviceModelId,\n });\n\n const result: Web3Checks = {\n publicKeyId: web3CheckDto.public_key_id,\n descriptor: web3CheckDto.descriptor,\n certificate,\n };\n\n return Right(result);\n }\n\n private isTypedDataContext(\n context: Web3CheckContext,\n ): context is Web3CheckTypedDataContext {\n return \"data\" in context;\n }\n\n private isWeb3CheckDto(dto: unknown): dto is Web3CheckDto {\n return (\n dto != null &&\n typeof dto == \"object\" &&\n \"public_key_id\" in dto &&\n dto.public_key_id != null &&\n typeof dto.public_key_id == \"string\" &&\n \"descriptor\" in dto &&\n dto.descriptor != null &&\n typeof dto.descriptor == \"string\"\n );\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAOA,MAAW,QAClB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,YAAAC,MAAgB,oBAEzB,OAAS,YAAAC,MAAgB,uBACzB,OACE,gCAAAC,EACA,8BAAAC,MACK,gCAMP,OAAOC,MAAa,qBAMb,IAAMC,EAAN,KAA6D,CAClE,YAC+CC,EAE5BC,EACjB,CAH6C,YAAAD,EAE5B,wBAAAC,EAEjB,GAAI,CAAC,KAAK,OAAO,YACf,MAAM,IAAI,MAAM,0BAA0B,CAE9C,CAEA,MAAM,cACJC,EACoC,CACpC,KAAM,CAAE,KAAAC,EAAM,cAAAC,CAAc,EAAIF,EAChC,IAAIG,EACAC,EACAC,EACA,KAAK,mBAAmBL,CAAO,GACjCI,EAAa,CACX,IAAK,CACH,KAAAH,EACA,KAAMD,EAAQ,IAChB,CACF,EACAK,EAAM,GAAG,KAAK,OAAO,WAAW,GAAG,2BAEnCD,EAAa,CACX,GAAI,CACF,KAAAH,EACA,IAAKD,EAAQ,KACf,EACA,MAAOA,EAAQ,OACjB,EACAK,EAAM,GAAG,KAAK,OAAO,WAAW,GAAG,qBAGrC,GAAI,CAUFF,GATiB,MAAMG,EAAM,QAAsB,CACjD,OAAQ,OACR,IAAAD,EACA,KAAMD,EACN,QAAS,CACP,CAACG,CAA4B,EAAG,kBAAkBC,EAAQ,OAAO,GACjE,CAACC,CAA0B,EAAG,KAAK,OAAO,WAC5C,CACF,CAAC,GACuB,IAC1B,MAAiB,CACf,OAAOC,EACL,IAAI,MACF,mFACF,CACF,CACF,CAEA,GAAI,CAAC,KAAK,eAAeP,CAAY,EACnC,OAAOO,EACL,IAAI,MACF,mFACF,CACF,EAGF,MAAMC,EAAc,MAAM,KAAK,mBAAmB,gBAAgB,CAChE,MAAOR,EAAa,cACpB,SAAUS,EAAS,mBACnB,aAAcV,CAChB,CAAC,EAEKW,EAAqB,CACzB,YAAaV,EAAa,cAC1B,WAAYA,EAAa,WACzB,YAAAQ,CACF,EAEA,OAAOG,EAAMD,CAAM,CACrB,CAEQ,mBACNb,EACsC,CACtC,MAAO,SAAUA,CACnB,CAEQ,eAAee,EAAmC,CACxD,OACEA,GAAO,MACP,OAAOA,GAAO,UACd,kBAAmBA,GACnBA,EAAI,eAAiB,MACrB,OAAOA,EAAI,eAAiB,UAC5B,eAAgBA,GAChBA,EAAI,YAAc,MAClB,OAAOA,EAAI,YAAc,QAE7B,CACF,EAjGalB,EAANmB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GACzBF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,IAH5BxB",
6
+ "names": ["axios", "inject", "injectable", "Left", "Right", "configTypes", "pkiTypes", "KeyUsage", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "PACKAGE", "HttpWeb3CheckDataSource", "config", "_certificateLoader", "context", "from", "deviceModelId", "web3CheckDto", "requestDto", "url", "axios", "LEDGER_CLIENT_VERSION_HEADER", "PACKAGE", "LEDGER_ORIGIN_TOKEN_HEADER", "Left", "certificate", "KeyUsage", "result", "Right", "dto", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "pkiTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as n}from"@ledgerhq/device-management-kit";import c from"axios";import{Left as u,Right as d}from"purify-ts";import{LEDGER_CLIENT_VERSION_HEADER as p,LEDGER_ORIGIN_TOKEN_HEADER as l}from"../../shared/constant/HttpHeaders";import{HttpWeb3CheckDataSource as i}from"../../web3-check/data/HttpWeb3CheckDataSource";import k from"../../../package.json";vi.mock("axios");describe("HttpWeb3CheckDataSource",()=>{const r={web3checks:{url:"web3checksUrl"},originToken:"originToken"},e={loadCertificate:vi.fn()};beforeEach(()=>{vi.resetAllMocks()}),describe("getWeb3Checks",()=>{it("should return an object if the request is successful",async()=>{const t={deviceModelId:n.FLEX,from:"from",rawTx:"rawTx",chainId:1},o={public_key_id:"partner",descriptor:"descriptor"};vi.spyOn(c,"request").mockResolvedValueOnce({data:o}),vi.spyOn(e,"loadCertificate").mockResolvedValueOnce(void 0);const a=await new i(r,e).getWeb3Checks(t);expect(a).toEqual(d({publicKeyId:"partner",descriptor:"descriptor"}))}),it("should return an object if the typed data request is successful",async()=>{const t={deviceModelId:n.FLEX,from:"from",data:"typed data"},o={public_key_id:"partner",descriptor:"descriptor"};vi.spyOn(c,"request").mockResolvedValueOnce({data:o}),vi.spyOn(e,"loadCertificate").mockResolvedValueOnce(void 0);const a=await new i(r,e).getWeb3Checks(t);expect(a).toEqual(d({publicKeyId:"partner",descriptor:"descriptor"}))}),it("should return an object with a certificate if the request is successful",async()=>{const t={deviceModelId:n.FLEX,from:"from",rawTx:"rawTx",chainId:1},o={public_key_id:"partner",descriptor:"descriptor"};vi.spyOn(c,"request").mockResolvedValueOnce({data:o}),vi.spyOn(e,"loadCertificate").mockResolvedValueOnce({keyUsageNumber:11,payload:new Uint8Array([1])});const a=await new i(r,e).getWeb3Checks(t);expect(a).toEqual(d({publicKeyId:"partner",descriptor:"descriptor",certificate:{keyUsageNumber:11,payload:new Uint8Array([1])}}))}),it("should return an error if the request fails",async()=>{const t={deviceModelId:n.FLEX,from:"from",rawTx:"rawTx",chainId:1};vi.spyOn(c,"request").mockRejectedValue(new Error("error"));const s=await new i(r,e).getWeb3Checks(t);expect(s).toEqual(u(new Error("[ContextModule] HttpWeb3CheckDataSource: Failed to fetch web3 checks informations")))}),it("should return an error if the response is invalid",async()=>{const t={deviceModelId:n.FLEX,from:"from",rawTx:"rawTx",chainId:1},o={};vi.spyOn(c,"request").mockResolvedValue({data:o}),vi.spyOn(e,"loadCertificate").mockResolvedValue(void 0);const a=await new i(r,e).getWeb3Checks(t);expect(a).toEqual(u(new Error("[ContextModule] HttpWeb3CheckDataSource: Cannot exploit Web3 checks data received")))}),it("should throw an error if origin token is not provided",()=>{expect(()=>new i({...r,originToken:void 0},e)).toThrow("Origin token is required")}),it("should call axios with the correct headers",async()=>{const t={deviceModelId:n.FLEX,from:"from",rawTx:"rawTx",chainId:1};vi.spyOn(c,"request").mockResolvedValueOnce({data:{}}),await new i(r,e).getWeb3Checks(t),expect(c.request).toHaveBeenCalledWith(expect.objectContaining({headers:{[p]:`context-module/${k.version}`,[l]:r.originToken}}))})})});
2
+ //# sourceMappingURL=HttpWeb3CheckDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/data/HttpWeb3CheckDataSource.test.ts"],
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport { HttpWeb3CheckDataSource } from \"@/web3-check/data/HttpWeb3CheckDataSource\";\nimport { type Web3CheckDto } from \"@/web3-check/data/Web3CheckDto\";\nimport type { Web3CheckTypedData } from \"@/web3-check/domain/web3CheckTypes\";\nimport { type Web3CheckContext } from \"@/web3-check/domain/web3CheckTypes\";\nimport PACKAGE from \"@root/package.json\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpWeb3CheckDataSource\", () => {\n const config = {\n web3checks: {\n url: \"web3checksUrl\",\n },\n originToken: \"originToken\",\n } as ContextModuleConfig;\n const certificateLoaderMock = {\n loadCertificate: vi.fn(),\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"getWeb3Checks\", () => {\n it(\"should return an object if the request is successful\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n };\n const dto: Web3CheckDto = {\n public_key_id: \"partner\",\n descriptor: \"descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: dto });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n undefined,\n );\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n const result = await dataSource.getWeb3Checks(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"partner\",\n descriptor: \"descriptor\",\n }),\n );\n });\n\n it(\"should return an object if the typed data request is successful\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n data: \"typed data\" as unknown as Web3CheckTypedData,\n };\n const dto: Web3CheckDto = {\n public_key_id: \"partner\",\n descriptor: \"descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: dto });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce(\n undefined,\n );\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n const result = await dataSource.getWeb3Checks(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"partner\",\n descriptor: \"descriptor\",\n }),\n );\n });\n\n it(\"should return an object with a certificate if the request is successful\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n };\n const dto: Web3CheckDto = {\n public_key_id: \"partner\",\n descriptor: \"descriptor\",\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: dto });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValueOnce({\n keyUsageNumber: 11,\n payload: new Uint8Array([0x01]),\n });\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n const result = await dataSource.getWeb3Checks(params);\n\n // THEN\n expect(result).toEqual(\n Right({\n publicKeyId: \"partner\",\n descriptor: \"descriptor\",\n certificate: { keyUsageNumber: 11, payload: new Uint8Array([0x01]) },\n }),\n );\n });\n\n it(\"should return an error if the request fails\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"error\"));\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n const result = await dataSource.getWeb3Checks(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpWeb3CheckDataSource: Failed to fetch web3 checks informations\",\n ),\n ),\n );\n });\n\n it(\"should return an error if the response is invalid\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n };\n const dto = {};\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: dto });\n vi.spyOn(certificateLoaderMock, \"loadCertificate\").mockResolvedValue(\n undefined,\n );\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n const result = await dataSource.getWeb3Checks(params);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpWeb3CheckDataSource: Cannot exploit Web3 checks data received\",\n ),\n ),\n );\n });\n\n it(\"should throw an error if origin token is not provided\", () => {\n expect(\n () =>\n new HttpWeb3CheckDataSource(\n { ...config, originToken: undefined },\n certificateLoaderMock as unknown as PkiCertificateLoader,\n ),\n ).toThrow(\"Origin token is required\");\n });\n\n it(\"should call axios with the correct headers\", async () => {\n // GIVEN\n const params: Web3CheckContext = {\n deviceModelId: DeviceModelId.FLEX,\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n };\n vi.spyOn(axios, \"request\").mockResolvedValueOnce({ data: {} });\n\n // WHEN\n const dataSource = new HttpWeb3CheckDataSource(\n config,\n certificateLoaderMock as unknown as PkiCertificateLoader,\n );\n await dataSource.getWeb3Checks(params);\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});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "axios", "Left", "Right", "LEDGER_CLIENT_VERSION_HEADER", "LEDGER_ORIGIN_TOKEN_HEADER", "HttpWeb3CheckDataSource", "PACKAGE", "config", "certificateLoaderMock", "params", "dto", "result"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Web3CheckDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Web3CheckDto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as t}from"inversify";import{HttpWeb3CheckDataSource as r}from"../../web3-check/data/HttpWeb3CheckDataSource";import{DefaultWeb3CheckContextLoader as c}from"../../web3-check/domain/DefaultWeb3CheckLoader";import{web3CheckTypes as o}from"./web3CheckTypes";const h=()=>new t(({bind:e})=>{e(o.Web3CheckDataSource).to(r),e(o.Web3CheckContextLoader).to(c)});export{h as web3CheckModuleFactory};
2
+ //# sourceMappingURL=web3CheckModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/di/web3CheckModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpWeb3CheckDataSource } from \"@/web3-check/data/HttpWeb3CheckDataSource\";\nimport { DefaultWeb3CheckContextLoader } from \"@/web3-check/domain/DefaultWeb3CheckLoader\";\n\nimport { web3CheckTypes } from \"./web3CheckTypes\";\n\nexport const web3CheckModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(web3CheckTypes.Web3CheckDataSource).to(HttpWeb3CheckDataSource);\n bind(web3CheckTypes.Web3CheckContextLoader).to(\n DefaultWeb3CheckContextLoader,\n );\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,2BAAAC,MAA+B,4CACxC,OAAS,iCAAAC,MAAqC,6CAE9C,OAAS,kBAAAC,MAAsB,mBAExB,MAAMC,EAAyB,IACpC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKF,EAAe,mBAAmB,EAAE,GAAGF,CAAuB,EACnEI,EAAKF,EAAe,sBAAsB,EAAE,GAC1CD,CACF,CACF,CAAC",
6
+ "names": ["ContainerModule", "HttpWeb3CheckDataSource", "DefaultWeb3CheckContextLoader", "web3CheckTypes", "web3CheckModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const e={Web3CheckDataSource:Symbol.for("Web3CheckDataSource"),Web3CheckContextLoader:Symbol.for("Web3CheckContextLoader")};export{e as web3CheckTypes};
2
+ //# sourceMappingURL=web3CheckTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/di/web3CheckTypes.ts"],
4
+ "sourcesContent": ["export const web3CheckTypes = {\n Web3CheckDataSource: Symbol.for(\"Web3CheckDataSource\"),\n Web3CheckContextLoader: Symbol.for(\"Web3CheckContextLoader\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAiB,CAC5B,oBAAqB,OAAO,IAAI,qBAAqB,EACrD,uBAAwB,OAAO,IAAI,wBAAwB,CAC7D",
6
+ "names": ["web3CheckTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var p=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var h=(o,e,c,t)=>{for(var r=t>1?void 0:t?b(e,c):e,i=o.length-1,m;i>=0;i--)(m=o[i])&&(r=(t?m(e,c,r):m(r))||r);return t&&r&&p(e,c,r),r},s=(o,e)=>(c,t)=>e(c,t,o);import{inject as C,injectable as k}from"inversify";import{web3CheckTypes as W}from"../../web3-check/di/web3CheckTypes";let a=class{_dataSource;constructor(e){this._dataSource=e}async load(e){return await this._dataSource.getWeb3Checks(e)}};a=h([k(),s(0,C(W.Web3CheckDataSource))],a);export{a as DefaultWeb3CheckContextLoader};
2
+ //# sourceMappingURL=DefaultWeb3CheckLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/domain/DefaultWeb3CheckLoader.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either } from \"purify-ts\";\n\nimport { type Web3CheckDataSource } from \"@/web3-check/data/Web3CheckDataSource\";\nimport { web3CheckTypes } from \"@/web3-check/di/web3CheckTypes\";\n\nimport { Web3CheckContextLoader } from \"./Web3CheckContextLoader\";\nimport { Web3CheckContext, Web3Checks } from \"./web3CheckTypes\";\n\n@injectable()\nexport class DefaultWeb3CheckContextLoader implements Web3CheckContextLoader {\n private _dataSource: Web3CheckDataSource;\n\n constructor(\n @inject(web3CheckTypes.Web3CheckDataSource)\n dataSource: Web3CheckDataSource,\n ) {\n this._dataSource = dataSource;\n }\n\n async load(\n web3CheckContext: Web3CheckContext,\n ): Promise<Either<Error, Web3Checks>> {\n return await this._dataSource.getWeb3Checks(web3CheckContext);\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,kBAAAC,MAAsB,iCAMxB,IAAMC,EAAN,KAAsE,CACnE,YAER,YAEEC,EACA,CACA,KAAK,YAAcA,CACrB,CAEA,MAAM,KACJC,EACoC,CACpC,OAAO,MAAM,KAAK,YAAY,cAAcA,CAAgB,CAC9D,CACF,EAfaF,EAANG,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAe,mBAAmB,IAJjCP",
6
+ "names": ["inject", "injectable", "web3CheckTypes", "DefaultWeb3CheckContextLoader", "dataSource", "web3CheckContext", "__decorateClass", "injectable", "__decorateParam", "inject", "web3CheckTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DefaultWeb3CheckContextLoader as a}from"../../web3-check/domain/DefaultWeb3CheckLoader";describe("DefaultWeb3CheckLoader",()=>{describe("load",()=>{it("should call the dataSource with the correct params",async()=>{const e={getWeb3Checks:vi.fn()},t={from:"from",rawTx:"rawTx",chainId:1};await new a(e).load(t),expect(e.getWeb3Checks).toHaveBeenCalledWith({from:"from",rawTx:"rawTx",chainId:1})})})});
2
+ //# sourceMappingURL=DefaultWeb3CheckLoader.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/web3-check/domain/DefaultWeb3CheckLoader.test.ts"],
4
+ "sourcesContent": ["import { DefaultWeb3CheckContextLoader } from \"@/web3-check/domain/DefaultWeb3CheckLoader\";\nimport { type Web3CheckContext } from \"@/web3-check/domain/web3CheckTypes\";\n\ndescribe(\"DefaultWeb3CheckLoader\", () => {\n describe(\"load\", () => {\n it(\"should call the dataSource with the correct params\", async () => {\n // GIVEN\n const dataSource = {\n getWeb3Checks: vi.fn(),\n };\n const web3CheckContext = {\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n } as unknown as Web3CheckContext;\n\n // WHEN\n const loader = new DefaultWeb3CheckContextLoader(dataSource);\n await loader.load(web3CheckContext);\n\n // THEN\n expect(dataSource.getWeb3Checks).toHaveBeenCalledWith({\n from: \"from\",\n rawTx: \"rawTx\",\n chainId: 1,\n });\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,iCAAAA,MAAqC,6CAG9C,SAAS,yBAA0B,IAAM,CACvC,SAAS,OAAQ,IAAM,CACrB,GAAG,qDAAsD,SAAY,CAEnE,MAAMC,EAAa,CACjB,cAAe,GAAG,GAAG,CACvB,EACMC,EAAmB,CACvB,KAAM,OACN,MAAO,QACP,QAAS,CACX,EAIA,MADe,IAAIF,EAA8BC,CAAU,EAC9C,KAAKC,CAAgB,EAGlC,OAAOD,EAAW,aAAa,EAAE,qBAAqB,CACpD,KAAM,OACN,MAAO,QACP,QAAS,CACX,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["DefaultWeb3CheckContextLoader", "dataSource", "web3CheckContext"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Web3CheckContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=web3CheckTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,10 +1,14 @@
1
- import { type ClearSignContext } from "./shared/model/ClearSignContext";
2
- import { type TransactionContext, type TransactionFieldContext } from "./shared/model/TransactionContext";
1
+ import { type ClearSignContext, type ClearSignContextType } from "./shared/model/ClearSignContext";
2
+ import { type SolanaTransactionContext } from "./shared/model/SolanaTransactionContext";
3
3
  import { type TypedDataClearSignContext } from "./shared/model/TypedDataClearSignContext";
4
4
  import { type TypedDataContext } from "./shared/model/TypedDataContext";
5
+ import { type SolanaTransactionContextResult } from "./solana/domain/solanaContextTypes";
6
+ import { type Web3CheckContext } from "./web3-check/domain/web3CheckTypes";
5
7
  export interface ContextModule {
6
- getContext(field: TransactionFieldContext): Promise<ClearSignContext>;
7
- getContexts(transaction: TransactionContext): Promise<ClearSignContext[]>;
8
+ getContexts<TInput>(input: TInput, expectedTypes?: ClearSignContextType[]): Promise<ClearSignContext[]>;
9
+ getFieldContext<TInput>(field: TInput, expectedType: ClearSignContextType): Promise<ClearSignContext>;
8
10
  getTypedDataFilters(typedData: TypedDataContext): Promise<TypedDataClearSignContext>;
11
+ getWeb3Checks(transactionContext: Web3CheckContext): Promise<ClearSignContext | null>;
12
+ getSolanaContext(transactionContext: SolanaTransactionContext): Promise<SolanaTransactionContextResult>;
9
13
  }
10
14
  //# sourceMappingURL=ContextModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextModule.d.ts","sourceRoot":"","sources":["../../../src/ContextModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtE,WAAW,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1E,mBAAmB,CACjB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"ContextModule.d.ts","sourceRoot":"","sources":["../../../src/ContextModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,oBAAoB,EAAE,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,mBAAmB,CACjB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtC,aAAa,CACX,kBAAkB,EAAE,gBAAgB,GACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACpC,gBAAgB,CACd,kBAAkB,EAAE,wBAAwB,GAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC5C"}