@ledgerhq/context-module 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/lib/cjs/package.json +2 -2
  2. package/lib/cjs/src/DefaultContextModule.js +1 -1
  3. package/lib/cjs/src/DefaultContextModule.js.map +3 -3
  4. package/lib/cjs/src/di.js +1 -1
  5. package/lib/cjs/src/di.js.map +3 -3
  6. package/lib/cjs/src/index.js +1 -1
  7. package/lib/cjs/src/index.js.map +2 -2
  8. package/lib/cjs/src/modules/multichain/pki/model/KeyId.js +1 -1
  9. package/lib/cjs/src/modules/multichain/pki/model/KeyId.js.map +2 -2
  10. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
  11. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
  12. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
  13. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
  14. package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +2 -0
  15. package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
  16. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
  17. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
  18. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
  19. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
  20. package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
  21. package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
  22. package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
  23. package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
  24. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
  25. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
  26. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
  27. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
  28. package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
  29. package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
  30. package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
  31. package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
  32. package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
  33. package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
  34. package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
  35. package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
  36. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
  37. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
  38. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
  39. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
  40. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +2 -0
  41. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
  42. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
  43. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
  44. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
  45. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
  46. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
  47. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
  48. package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
  49. package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
  50. package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
  51. package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
  52. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
  53. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
  54. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
  55. package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
  56. package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js +1 -1
  57. package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
  58. package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js +1 -1
  59. package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js.map +1 -1
  60. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js +1 -1
  61. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +3 -3
  62. package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
  63. package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
  64. package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
  65. package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
  66. package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
  67. package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
  68. package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js +1 -1
  69. package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js.map +1 -1
  70. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
  71. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
  72. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
  73. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
  74. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
  75. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
  76. package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +2 -0
  77. package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
  78. package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
  79. package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
  80. package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
  81. package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
  82. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
  83. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
  84. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
  85. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
  86. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
  87. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
  88. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
  89. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
  90. package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js +2 -0
  91. package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
  92. package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
  93. package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
  94. package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
  95. package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
  96. package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
  97. package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
  98. package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
  99. package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
  100. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
  101. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
  102. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
  103. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
  104. package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +2 -0
  105. package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
  106. package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
  107. package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
  108. package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
  109. package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
  110. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
  111. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
  112. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
  113. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
  114. package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
  115. package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
  116. package/lib/cjs/src/shared/utils/HexStringUtils.js +1 -1
  117. package/lib/cjs/src/shared/utils/HexStringUtils.js.map +3 -3
  118. package/lib/cjs/src/shared/utils/HexStringUtils.test.js +1 -1
  119. package/lib/cjs/src/shared/utils/HexStringUtils.test.js.map +2 -2
  120. package/lib/cjs/src/shared/utils/certificateCache.js +2 -0
  121. package/lib/cjs/src/shared/utils/certificateCache.js.map +7 -0
  122. package/lib/cjs/src/shared/utils/certificateCache.test.js +2 -0
  123. package/lib/cjs/src/shared/utils/certificateCache.test.js.map +7 -0
  124. package/lib/cjs/src/shared/utils/certificateResult.js +2 -0
  125. package/lib/cjs/src/shared/utils/certificateResult.js.map +7 -0
  126. package/lib/cjs/src/shared/utils/certificateResult.test.js +2 -0
  127. package/lib/cjs/src/shared/utils/certificateResult.test.js.map +7 -0
  128. package/lib/cjs/src/shared/utils/challengeBoundLoader.js +2 -0
  129. package/lib/cjs/src/shared/utils/challengeBoundLoader.js.map +7 -0
  130. package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js +2 -0
  131. package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
  132. package/lib/cjs/src/shared/utils/deviceModelIdCodec.js +2 -0
  133. package/lib/cjs/src/shared/utils/deviceModelIdCodec.js.map +7 -0
  134. package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js +2 -0
  135. package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
  136. package/lib/cjs/src/shared/utils/signedDescriptorDto.js +2 -0
  137. package/lib/cjs/src/shared/utils/signedDescriptorDto.js.map +7 -0
  138. package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js +2 -0
  139. package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
  140. package/lib/cjs/src/shared/utils/uIntCodec.js +2 -0
  141. package/lib/cjs/src/shared/utils/uIntCodec.js.map +7 -0
  142. package/lib/cjs/src/shared/utils/uIntCodec.test.js +2 -0
  143. package/lib/cjs/src/shared/utils/uIntCodec.test.js.map +7 -0
  144. package/lib/esm/package.json +2 -2
  145. package/lib/esm/src/DefaultContextModule.js +1 -1
  146. package/lib/esm/src/DefaultContextModule.js.map +3 -3
  147. package/lib/esm/src/di.js +1 -1
  148. package/lib/esm/src/di.js.map +3 -3
  149. package/lib/esm/src/index.js +1 -1
  150. package/lib/esm/src/index.js.map +2 -2
  151. package/lib/esm/src/modules/multichain/pki/model/KeyId.js +1 -1
  152. package/lib/esm/src/modules/multichain/pki/model/KeyId.js.map +2 -2
  153. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
  154. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
  155. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
  156. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
  157. package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +1 -0
  158. package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
  159. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
  160. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
  161. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
  162. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
  163. package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
  164. package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
  165. package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
  166. package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
  167. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
  168. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
  169. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
  170. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
  171. package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
  172. package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
  173. package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
  174. package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
  175. package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
  176. package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
  177. package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
  178. package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
  179. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
  180. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
  181. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
  182. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
  183. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +1 -0
  184. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
  185. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
  186. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
  187. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
  188. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
  189. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
  190. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
  191. package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
  192. package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
  193. package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
  194. package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
  195. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
  196. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
  197. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
  198. package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
  199. package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js +1 -1
  200. package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
  201. package/lib/esm/src/modules/solana/model/SolanaPayloads.js +1 -0
  202. package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +4 -4
  203. package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
  204. package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
  205. package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
  206. package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
  207. package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
  208. package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
  209. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
  210. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
  211. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
  212. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
  213. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
  214. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
  215. package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +1 -0
  216. package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
  217. package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
  218. package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
  219. package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
  220. package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
  221. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
  222. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
  223. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
  224. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
  225. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
  226. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
  227. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
  228. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
  229. package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js +1 -0
  230. package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
  231. package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
  232. package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
  233. package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
  234. package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
  235. package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
  236. package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
  237. package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
  238. package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
  239. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
  240. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
  241. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
  242. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
  243. package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +1 -0
  244. package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
  245. package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
  246. package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
  247. package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
  248. package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
  249. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
  250. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
  251. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
  252. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
  253. package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
  254. package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
  255. package/lib/esm/src/shared/utils/HexStringUtils.js +1 -1
  256. package/lib/esm/src/shared/utils/HexStringUtils.js.map +3 -3
  257. package/lib/esm/src/shared/utils/HexStringUtils.test.js +1 -1
  258. package/lib/esm/src/shared/utils/HexStringUtils.test.js.map +2 -2
  259. package/lib/esm/src/shared/utils/certificateCache.js +2 -0
  260. package/lib/esm/src/shared/utils/certificateCache.js.map +7 -0
  261. package/lib/esm/src/shared/utils/certificateCache.test.js +2 -0
  262. package/lib/esm/src/shared/utils/certificateCache.test.js.map +7 -0
  263. package/lib/esm/src/shared/utils/certificateResult.js +2 -0
  264. package/lib/esm/src/shared/utils/certificateResult.js.map +7 -0
  265. package/lib/esm/src/shared/utils/certificateResult.test.js +2 -0
  266. package/lib/esm/src/shared/utils/certificateResult.test.js.map +7 -0
  267. package/lib/esm/src/shared/utils/challengeBoundLoader.js +2 -0
  268. package/lib/esm/src/shared/utils/challengeBoundLoader.js.map +7 -0
  269. package/lib/esm/src/shared/utils/challengeBoundLoader.test.js +2 -0
  270. package/lib/esm/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
  271. package/lib/esm/src/shared/utils/deviceModelIdCodec.js +2 -0
  272. package/lib/esm/src/shared/utils/deviceModelIdCodec.js.map +7 -0
  273. package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js +2 -0
  274. package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
  275. package/lib/esm/src/shared/utils/signedDescriptorDto.js +2 -0
  276. package/lib/esm/src/shared/utils/signedDescriptorDto.js.map +7 -0
  277. package/lib/esm/src/shared/utils/signedDescriptorDto.test.js +2 -0
  278. package/lib/esm/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
  279. package/lib/esm/src/shared/utils/uIntCodec.js +2 -0
  280. package/lib/esm/src/shared/utils/uIntCodec.js.map +7 -0
  281. package/lib/esm/src/shared/utils/uIntCodec.test.js +2 -0
  282. package/lib/esm/src/shared/utils/uIntCodec.test.js.map +7 -0
  283. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  284. package/lib/types/src/di.d.ts.map +1 -1
  285. package/lib/types/src/index.d.ts +16 -0
  286. package/lib/types/src/index.d.ts.map +1 -1
  287. package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts +1 -0
  288. package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts.map +1 -1
  289. package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts +1 -1
  290. package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts.map +1 -1
  291. package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts +17 -0
  292. package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts.map +1 -0
  293. package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts +11 -0
  294. package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map +1 -0
  295. package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts +2 -0
  296. package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts.map +1 -0
  297. package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts +3 -0
  298. package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts.map +1 -0
  299. package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts +5 -0
  300. package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts.map +1 -0
  301. package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts +23 -0
  302. package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map +1 -0
  303. package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts +2 -0
  304. package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts.map +1 -0
  305. package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts +3 -0
  306. package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts.map +1 -0
  307. package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts +4 -0
  308. package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts.map +1 -0
  309. package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts +45 -0
  310. package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts.map +1 -0
  311. package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts +2 -0
  312. package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts.map +1 -0
  313. package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts +11 -0
  314. package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map +1 -0
  315. package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts +2 -0
  316. package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts.map +1 -0
  317. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts +32 -0
  318. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts.map +1 -0
  319. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +135 -0
  320. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -0
  321. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts +23 -0
  322. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts.map +1 -0
  323. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts +2 -0
  324. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts.map +1 -0
  325. package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts +3 -0
  326. package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts.map +1 -0
  327. package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts +5 -0
  328. package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts.map +1 -0
  329. package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts +39 -0
  330. package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts.map +1 -0
  331. package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts +2 -0
  332. package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts.map +1 -0
  333. package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts +33 -2
  334. package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts.map +1 -1
  335. package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts +8 -1
  336. package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts.map +1 -1
  337. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +126 -0
  338. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
  339. package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts +6 -5
  340. package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts.map +1 -1
  341. package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts +2 -5
  342. package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts.map +1 -1
  343. package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts.map +1 -1
  344. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts +11 -0
  345. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts.map +1 -0
  346. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts +2 -0
  347. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts.map +1 -0
  348. package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts +15 -0
  349. package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts.map +1 -0
  350. package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts +3 -0
  351. package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts.map +1 -0
  352. package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts +5 -0
  353. package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts.map +1 -0
  354. package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts +26 -0
  355. package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts.map +1 -0
  356. package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts +2 -0
  357. package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts.map +1 -0
  358. package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts +11 -0
  359. package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts.map +1 -0
  360. package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts +2 -0
  361. package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts.map +1 -0
  362. package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts +24 -0
  363. package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts.map +1 -0
  364. package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts +3 -0
  365. package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts.map +1 -0
  366. package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts +5 -0
  367. package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts.map +1 -0
  368. package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts +26 -0
  369. package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts.map +1 -0
  370. package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts +2 -0
  371. package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts.map +1 -0
  372. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts +11 -0
  373. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -0
  374. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts +2 -0
  375. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts.map +1 -0
  376. package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts +18 -0
  377. package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -0
  378. package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts +3 -0
  379. package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -0
  380. package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts +5 -0
  381. package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts.map +1 -0
  382. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts +29 -0
  383. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -0
  384. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts +2 -0
  385. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts.map +1 -0
  386. package/lib/types/src/shared/model/ClearSignContext.d.ts +7 -1
  387. package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
  388. package/lib/types/src/shared/utils/HexStringUtils.d.ts +7 -0
  389. package/lib/types/src/shared/utils/HexStringUtils.d.ts.map +1 -1
  390. package/lib/types/src/shared/utils/certificateCache.d.ts +23 -0
  391. package/lib/types/src/shared/utils/certificateCache.d.ts.map +1 -0
  392. package/lib/types/src/shared/utils/certificateCache.test.d.ts +2 -0
  393. package/lib/types/src/shared/utils/certificateCache.test.d.ts.map +1 -0
  394. package/lib/types/src/shared/utils/certificateResult.d.ts +26 -0
  395. package/lib/types/src/shared/utils/certificateResult.d.ts.map +1 -0
  396. package/lib/types/src/shared/utils/certificateResult.test.d.ts +2 -0
  397. package/lib/types/src/shared/utils/certificateResult.test.d.ts.map +1 -0
  398. package/lib/types/src/shared/utils/challengeBoundLoader.d.ts +43 -0
  399. package/lib/types/src/shared/utils/challengeBoundLoader.d.ts.map +1 -0
  400. package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts +2 -0
  401. package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts.map +1 -0
  402. package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts +7 -0
  403. package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts.map +1 -0
  404. package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts +2 -0
  405. package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts.map +1 -0
  406. package/lib/types/src/shared/utils/signedDescriptorDto.d.ts +15 -0
  407. package/lib/types/src/shared/utils/signedDescriptorDto.d.ts.map +1 -0
  408. package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts +2 -0
  409. package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts.map +1 -0
  410. package/lib/types/src/shared/utils/uIntCodec.d.ts +20 -0
  411. package/lib/types/src/shared/utils/uIntCodec.d.ts.map +1 -0
  412. package/lib/types/src/shared/utils/uIntCodec.test.d.ts +2 -0
  413. package/lib/types/src/shared/utils/uIntCodec.test.d.ts.map +1 -0
  414. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  415. package/package.json +6 -6
package/lib/esm/src/di.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Container as n}from"inversify";import{configModuleFactory as i}from"./config/di/configModuleFactory";import{configTypes as c}from"./config/di/configTypes";import{accountOwnershipModuleFactory as u}from"./modules/concordium/account-ownership/di/accountOwnershipModuleFactory";import{calldataModuleFactory as d}from"./modules/ethereum/calldata/di/calldataModuleFactory";import{dynamicNetworkModuleFactory as l}from"./modules/ethereum/dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as p}from"./modules/ethereum/external-plugin/di/externalPluginModuleFactory";import{gatedSigningModuleFactory as y}from"./modules/ethereum/gated-signing/di/gatedSigningModuleFactory";import{nftModuleFactory as f}from"./modules/ethereum/nft/di/nftModuleFactory";import{proxyModuleFactory as M}from"./modules/ethereum/proxy/di/proxyModuleFactory";import{safeModuleFactory as s}from"./modules/ethereum/safe/di/safeModuleFactory";import{tokenModuleFactory as F}from"./modules/ethereum/token/di/tokenModuleFactory";import{trustedNameModuleFactory as C}from"./modules/ethereum/trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as g}from"./modules/ethereum/typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as k}from"./modules/ethereum/uniswap/di/uniswapModuleFactory";import{nanoPkiModuleFactory as e}from"./modules/multichain/pki/di/pkiModuleFactory";import{reporterModuleFactory as h}from"./modules/multichain/reporter/di/reporterModuleFactory";import{ethereumTransactionCheckModuleFactory as S}from"./modules/multichain/transaction-check/di/ethereumTransactionCheckModuleFactory";import{solanaTransactionCheckModuleFactory as x}from"./modules/multichain/transaction-check/di/solanaTransactionCheckModuleFactory";import{lifiModuleFactory as v}from"./modules/solana/lifi/di/lifiModuleFactory";import{ownerInfoModuleFactory as w}from"./modules/solana/owner-info/di/ownerInfoModuleFactory";import{tokenModuleFactory as b}from"./modules/solana/token/di/tokenModuleFactory";import{ContextModuleChainID as t}from"./shared/domain/ContextModuleChainID";import{networkModuleFactory as T}from"./shared/network/di/networkModuleFactory";const _=({config:o})=>{const r=new n;r.bind(c.ContextModuleLoggerFactory).toConstantValue(o.loggerFactory);const{chain:a}=o;switch(r.loadSync(i(o),T(o)),a){case t.Ethereum:r.loadSync(e(),h(),C(o.customTrustedNameDataSource),p(),l(),f(),M(o.datasource),s(),y(),F(),d(),g(),k(),S());break;case t.Solana:r.loadSync(e(),w(),b(),v(),x());break;case t.Concordium:r.loadSync(e(),u());break;default:{const m=a}}return r};export{_ as makeContainer};
1
+ import{Container as n}from"inversify";import{configModuleFactory as i}from"./config/di/configModuleFactory";import{configTypes as c}from"./config/di/configTypes";import{accountOwnershipModuleFactory as u}from"./modules/concordium/account-ownership/di/accountOwnershipModuleFactory";import{calldataModuleFactory as l}from"./modules/ethereum/calldata/di/calldataModuleFactory";import{dynamicNetworkModuleFactory as d}from"./modules/ethereum/dynamic-network/di/dynamicNetworkModuleFactory";import{externalPluginModuleFactory as p}from"./modules/ethereum/external-plugin/di/externalPluginModuleFactory";import{gatedSigningModuleFactory as y}from"./modules/ethereum/gated-signing/di/gatedSigningModuleFactory";import{nftModuleFactory as f}from"./modules/ethereum/nft/di/nftModuleFactory";import{proxyModuleFactory as M}from"./modules/ethereum/proxy/di/proxyModuleFactory";import{safeModuleFactory as s}from"./modules/ethereum/safe/di/safeModuleFactory";import{tokenModuleFactory as F}from"./modules/ethereum/token/di/tokenModuleFactory";import{trustedNameModuleFactory as C}from"./modules/ethereum/trusted-name/di/trustedNameModuleFactory";import{typedDataModuleFactory as g}from"./modules/ethereum/typed-data/di/typedDataModuleFactory";import{uniswapModuleFactory as k}from"./modules/ethereum/uniswap/di/uniswapModuleFactory";import{nanoPkiModuleFactory as t}from"./modules/multichain/pki/di/pkiModuleFactory";import{reporterModuleFactory as h}from"./modules/multichain/reporter/di/reporterModuleFactory";import{ethereumTransactionCheckModuleFactory as S}from"./modules/multichain/transaction-check/di/ethereumTransactionCheckModuleFactory";import{solanaTransactionCheckModuleFactory as x}from"./modules/multichain/transaction-check/di/solanaTransactionCheckModuleFactory";import{altResolutionModuleFactory as v}from"./modules/solana/alt-resolution/di/altResolutionModuleFactory";import{enumVariantModuleFactory as w}from"./modules/solana/enum-variant/di/enumVariantModuleFactory";import{instructionInfoModuleFactory as T}from"./modules/solana/instruction-info/di/instructionInfoModuleFactory";import{lifiModuleFactory as b}from"./modules/solana/lifi/di/lifiModuleFactory";import{ownerInfoModuleFactory as L}from"./modules/solana/owner-info/di/ownerInfoModuleFactory";import{tokenModuleFactory as I}from"./modules/solana/token/di/tokenModuleFactory";import{tokenAccountStateModuleFactory as N}from"./modules/solana/token-account-state/di/tokenAccountStateModuleFactory";import{tokenInfoModuleFactory as P}from"./modules/solana/token-info/di/tokenInfoModuleFactory";import{solanaTrustedNameModuleFactory as A}from"./modules/solana/trusted-name/di/trustedNameModuleFactory";import{ContextModuleChainID as e}from"./shared/domain/ContextModuleChainID";import{networkModuleFactory as D}from"./shared/network/di/networkModuleFactory";const lo=({config:o})=>{const r=new n;r.bind(c.ContextModuleLoggerFactory).toConstantValue(o.loggerFactory);const{chain:a}=o;switch(r.loadSync(i(o),D(o)),a){case e.Ethereum:r.loadSync(t(),h(),C(o.customTrustedNameDataSource),p(),d(),f(),M(o.datasource),s(),y(),F(),l(),g(),k(),S());break;case e.Solana:r.loadSync(t(),L(),I(),b(),x(),T(),w(),P(),N(),v(),A());break;case e.Concordium:r.loadSync(t(),u());break;default:{const m=a}}return r};export{lo as makeContainer};
2
2
  //# sourceMappingURL=di.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/di.ts"],
4
- "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { accountOwnershipModuleFactory } from \"@/modules/concordium/account-ownership/di/accountOwnershipModuleFactory\";\nimport { calldataModuleFactory } from \"@/modules/ethereum/calldata/di/calldataModuleFactory\";\nimport { dynamicNetworkModuleFactory } from \"@/modules/ethereum/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/modules/ethereum/external-plugin/di/externalPluginModuleFactory\";\nimport { gatedSigningModuleFactory } from \"@/modules/ethereum/gated-signing/di/gatedSigningModuleFactory\";\nimport { nftModuleFactory } from \"@/modules/ethereum/nft/di/nftModuleFactory\";\nimport { proxyModuleFactory } from \"@/modules/ethereum/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/modules/ethereum/safe/di/safeModuleFactory\";\nimport { tokenModuleFactory as ethereumTokenModuleFactory } from \"@/modules/ethereum/token/di/tokenModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/modules/ethereum/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/modules/ethereum/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/modules/ethereum/uniswap/di/uniswapModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/modules/multichain/pki/di/pkiModuleFactory\";\nimport { reporterModuleFactory } from \"@/modules/multichain/reporter/di/reporterModuleFactory\";\nimport { ethereumTransactionCheckModuleFactory } from \"@/modules/multichain/transaction-check/di/ethereumTransactionCheckModuleFactory\";\nimport { solanaTransactionCheckModuleFactory } from \"@/modules/multichain/transaction-check/di/solanaTransactionCheckModuleFactory\";\nimport { lifiModuleFactory } from \"@/modules/solana/lifi/di/lifiModuleFactory\";\nimport { ownerInfoModuleFactory } from \"@/modules/solana/owner-info/di/ownerInfoModuleFactory\";\nimport { tokenModuleFactory as solanaTokenModuleFactory } from \"@/modules/solana/token/di/tokenModuleFactory\";\nimport { ContextModuleChainID } from \"@/shared/domain/ContextModuleChainID\";\nimport { networkModuleFactory } from \"@/shared/network/di/networkModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleServiceConfig & ContextModuleLoaderConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n const { chain } = config;\n\n // infrastructure modules needed by all chains\n container.loadSync(configModuleFactory(config), networkModuleFactory(config));\n\n switch (chain) {\n case ContextModuleChainID.Ethereum:\n container.loadSync(\n nanoPkiModuleFactory(),\n reporterModuleFactory(),\n trustedNameModuleFactory(config.customTrustedNameDataSource),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config.datasource),\n safeModuleFactory(),\n gatedSigningModuleFactory(),\n ethereumTokenModuleFactory(),\n calldataModuleFactory(),\n typedDataModuleFactory(),\n uniswapModuleFactory(),\n ethereumTransactionCheckModuleFactory(),\n );\n break;\n case ContextModuleChainID.Solana:\n container.loadSync(\n nanoPkiModuleFactory(),\n ownerInfoModuleFactory(),\n solanaTokenModuleFactory(),\n lifiModuleFactory(),\n solanaTransactionCheckModuleFactory(),\n );\n break;\n case ContextModuleChainID.Concordium:\n container.loadSync(\n nanoPkiModuleFactory(),\n accountOwnershipModuleFactory(),\n );\n break;\n default: {\n // ensure exhaustive check at compile time when new chains are added\n const exhaustiveCheck: never = chain;\n void exhaustiveCheck;\n }\n }\n\n return container;\n};\n"],
5
- "mappings": "AACA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,uBAAAC,MAA2B,kCACpC,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,iCAAAC,MAAqC,0EAC9C,OAAS,yBAAAC,MAA6B,uDACtC,OAAS,+BAAAC,MAAmC,oEAC5C,OAAS,+BAAAC,MAAmC,oEAC5C,OAAS,6BAAAC,MAAiC,gEAC1C,OAAS,oBAAAC,MAAwB,6CACjC,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,qBAAAC,MAAyB,+CAClC,OAAS,sBAAsBC,MAAkC,iDACjE,OAAS,4BAAAC,MAAgC,8DACzC,OAAS,0BAAAC,MAA8B,0DACvC,OAAS,wBAAAC,MAA4B,qDACrC,OAAS,wBAAAC,MAA4B,+CACrC,OAAS,yBAAAC,MAA6B,yDACtC,OAAS,yCAAAC,MAA6C,kFACtD,OAAS,uCAAAC,MAA2C,gFACpD,OAAS,qBAAAC,MAAyB,6CAClC,OAAS,0BAAAC,MAA8B,wDACvC,OAAS,sBAAsBC,MAAgC,+CAC/D,OAAS,wBAAAC,MAA4B,uCACrC,OAAS,wBAAAC,MAA4B,2CAM9B,MAAMC,EAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAI1B,EAEtB0B,EACG,KAECxB,EAAY,0BAA0B,EACvC,gBAAgBuB,EAAO,aAAa,EAEvC,KAAM,CAAE,MAAAE,CAAM,EAAIF,EAKlB,OAFAC,EAAU,SAASzB,EAAoBwB,CAAM,EAAGF,EAAqBE,CAAM,CAAC,EAEpEE,EAAO,CACb,KAAKL,EAAqB,SACxBI,EAAU,SACRX,EAAqB,EACrBC,EAAsB,EACtBJ,EAAyBa,EAAO,2BAA2B,EAC3DnB,EAA4B,EAC5BD,EAA4B,EAC5BG,EAAiB,EACjBC,EAAmBgB,EAAO,UAAU,EACpCf,EAAkB,EAClBH,EAA0B,EAC1BI,EAA2B,EAC3BP,EAAsB,EACtBS,EAAuB,EACvBC,EAAqB,EACrBG,EAAsC,CACxC,EACA,MACF,KAAKK,EAAqB,OACxBI,EAAU,SACRX,EAAqB,EACrBK,EAAuB,EACvBC,EAAyB,EACzBF,EAAkB,EAClBD,EAAoC,CACtC,EACA,MACF,KAAKI,EAAqB,WACxBI,EAAU,SACRX,EAAqB,EACrBZ,EAA8B,CAChC,EACA,MACF,QAAS,CAEP,MAAMyB,EAAyBD,CAEjC,CACF,CAEA,OAAOD,CACT",
6
- "names": ["Container", "configModuleFactory", "configTypes", "accountOwnershipModuleFactory", "calldataModuleFactory", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "gatedSigningModuleFactory", "nftModuleFactory", "proxyModuleFactory", "safeModuleFactory", "ethereumTokenModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "nanoPkiModuleFactory", "reporterModuleFactory", "ethereumTransactionCheckModuleFactory", "solanaTransactionCheckModuleFactory", "lifiModuleFactory", "ownerInfoModuleFactory", "solanaTokenModuleFactory", "ContextModuleChainID", "networkModuleFactory", "makeContainer", "config", "container", "chain", "exhaustiveCheck"]
4
+ "sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { configModuleFactory } from \"@/config/di/configModuleFactory\";\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleLoaderConfig,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { accountOwnershipModuleFactory } from \"@/modules/concordium/account-ownership/di/accountOwnershipModuleFactory\";\nimport { calldataModuleFactory } from \"@/modules/ethereum/calldata/di/calldataModuleFactory\";\nimport { dynamicNetworkModuleFactory } from \"@/modules/ethereum/dynamic-network/di/dynamicNetworkModuleFactory\";\nimport { externalPluginModuleFactory } from \"@/modules/ethereum/external-plugin/di/externalPluginModuleFactory\";\nimport { gatedSigningModuleFactory } from \"@/modules/ethereum/gated-signing/di/gatedSigningModuleFactory\";\nimport { nftModuleFactory } from \"@/modules/ethereum/nft/di/nftModuleFactory\";\nimport { proxyModuleFactory } from \"@/modules/ethereum/proxy/di/proxyModuleFactory\";\nimport { safeModuleFactory } from \"@/modules/ethereum/safe/di/safeModuleFactory\";\nimport { tokenModuleFactory as ethereumTokenModuleFactory } from \"@/modules/ethereum/token/di/tokenModuleFactory\";\nimport { trustedNameModuleFactory } from \"@/modules/ethereum/trusted-name/di/trustedNameModuleFactory\";\nimport { typedDataModuleFactory } from \"@/modules/ethereum/typed-data/di/typedDataModuleFactory\";\nimport { uniswapModuleFactory } from \"@/modules/ethereum/uniswap/di/uniswapModuleFactory\";\nimport { nanoPkiModuleFactory } from \"@/modules/multichain/pki/di/pkiModuleFactory\";\nimport { reporterModuleFactory } from \"@/modules/multichain/reporter/di/reporterModuleFactory\";\nimport { ethereumTransactionCheckModuleFactory } from \"@/modules/multichain/transaction-check/di/ethereumTransactionCheckModuleFactory\";\nimport { solanaTransactionCheckModuleFactory } from \"@/modules/multichain/transaction-check/di/solanaTransactionCheckModuleFactory\";\nimport { altResolutionModuleFactory } from \"@/modules/solana/alt-resolution/di/altResolutionModuleFactory\";\nimport { enumVariantModuleFactory } from \"@/modules/solana/enum-variant/di/enumVariantModuleFactory\";\nimport { instructionInfoModuleFactory } from \"@/modules/solana/instruction-info/di/instructionInfoModuleFactory\";\nimport { lifiModuleFactory } from \"@/modules/solana/lifi/di/lifiModuleFactory\";\nimport { ownerInfoModuleFactory } from \"@/modules/solana/owner-info/di/ownerInfoModuleFactory\";\nimport { tokenModuleFactory as solanaTokenModuleFactory } from \"@/modules/solana/token/di/tokenModuleFactory\";\nimport { tokenAccountStateModuleFactory } from \"@/modules/solana/token-account-state/di/tokenAccountStateModuleFactory\";\nimport { tokenInfoModuleFactory } from \"@/modules/solana/token-info/di/tokenInfoModuleFactory\";\nimport { solanaTrustedNameModuleFactory } from \"@/modules/solana/trusted-name/di/trustedNameModuleFactory\";\nimport { ContextModuleChainID } from \"@/shared/domain/ContextModuleChainID\";\nimport { networkModuleFactory } from \"@/shared/network/di/networkModuleFactory\";\n\ntype MakeContainerArgs = {\n config: ContextModuleServiceConfig & ContextModuleLoaderConfig;\n};\n\nexport const makeContainer = ({ config }: MakeContainerArgs) => {\n const container = new Container();\n\n container\n .bind<\n (tag: string) => LoggerPublisherService\n >(configTypes.ContextModuleLoggerFactory)\n .toConstantValue(config.loggerFactory);\n\n const { chain } = config;\n\n // infrastructure modules needed by all chains\n container.loadSync(configModuleFactory(config), networkModuleFactory(config));\n\n switch (chain) {\n case ContextModuleChainID.Ethereum:\n container.loadSync(\n nanoPkiModuleFactory(),\n reporterModuleFactory(),\n trustedNameModuleFactory(config.customTrustedNameDataSource),\n externalPluginModuleFactory(),\n dynamicNetworkModuleFactory(),\n nftModuleFactory(),\n proxyModuleFactory(config.datasource),\n safeModuleFactory(),\n gatedSigningModuleFactory(),\n ethereumTokenModuleFactory(),\n calldataModuleFactory(),\n typedDataModuleFactory(),\n uniswapModuleFactory(),\n ethereumTransactionCheckModuleFactory(),\n );\n break;\n case ContextModuleChainID.Solana:\n container.loadSync(\n nanoPkiModuleFactory(),\n ownerInfoModuleFactory(),\n solanaTokenModuleFactory(),\n lifiModuleFactory(),\n solanaTransactionCheckModuleFactory(),\n instructionInfoModuleFactory(),\n enumVariantModuleFactory(),\n tokenInfoModuleFactory(),\n tokenAccountStateModuleFactory(),\n altResolutionModuleFactory(),\n solanaTrustedNameModuleFactory(),\n );\n break;\n case ContextModuleChainID.Concordium:\n container.loadSync(\n nanoPkiModuleFactory(),\n accountOwnershipModuleFactory(),\n );\n break;\n default: {\n // ensure exhaustive check at compile time when new chains are added\n const exhaustiveCheck: never = chain;\n void exhaustiveCheck;\n }\n }\n\n return container;\n};\n"],
5
+ "mappings": "AACA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,uBAAAC,MAA2B,kCACpC,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,iCAAAC,MAAqC,0EAC9C,OAAS,yBAAAC,MAA6B,uDACtC,OAAS,+BAAAC,MAAmC,oEAC5C,OAAS,+BAAAC,MAAmC,oEAC5C,OAAS,6BAAAC,MAAiC,gEAC1C,OAAS,oBAAAC,MAAwB,6CACjC,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,qBAAAC,MAAyB,+CAClC,OAAS,sBAAsBC,MAAkC,iDACjE,OAAS,4BAAAC,MAAgC,8DACzC,OAAS,0BAAAC,MAA8B,0DACvC,OAAS,wBAAAC,MAA4B,qDACrC,OAAS,wBAAAC,MAA4B,+CACrC,OAAS,yBAAAC,MAA6B,yDACtC,OAAS,yCAAAC,MAA6C,kFACtD,OAAS,uCAAAC,MAA2C,gFACpD,OAAS,8BAAAC,MAAkC,gEAC3C,OAAS,4BAAAC,MAAgC,4DACzC,OAAS,gCAAAC,MAAoC,oEAC7C,OAAS,qBAAAC,MAAyB,6CAClC,OAAS,0BAAAC,MAA8B,wDACvC,OAAS,sBAAsBC,MAAgC,+CAC/D,OAAS,kCAAAC,MAAsC,yEAC/C,OAAS,0BAAAC,MAA8B,wDACvC,OAAS,kCAAAC,MAAsC,4DAC/C,OAAS,wBAAAC,MAA4B,uCACrC,OAAS,wBAAAC,MAA4B,2CAM9B,MAAMC,GAAgB,CAAC,CAAE,OAAAC,CAAO,IAAyB,CAC9D,MAAMC,EAAY,IAAIhC,EAEtBgC,EACG,KAEC9B,EAAY,0BAA0B,EACvC,gBAAgB6B,EAAO,aAAa,EAEvC,KAAM,CAAE,MAAAE,CAAM,EAAIF,EAKlB,OAFAC,EAAU,SAAS/B,EAAoB8B,CAAM,EAAGF,EAAqBE,CAAM,CAAC,EAEpEE,EAAO,CACb,KAAKL,EAAqB,SACxBI,EAAU,SACRjB,EAAqB,EACrBC,EAAsB,EACtBJ,EAAyBmB,EAAO,2BAA2B,EAC3DzB,EAA4B,EAC5BD,EAA4B,EAC5BG,EAAiB,EACjBC,EAAmBsB,EAAO,UAAU,EACpCrB,EAAkB,EAClBH,EAA0B,EAC1BI,EAA2B,EAC3BP,EAAsB,EACtBS,EAAuB,EACvBC,EAAqB,EACrBG,EAAsC,CACxC,EACA,MACF,KAAKW,EAAqB,OACxBI,EAAU,SACRjB,EAAqB,EACrBQ,EAAuB,EACvBC,EAAyB,EACzBF,EAAkB,EAClBJ,EAAoC,EACpCG,EAA6B,EAC7BD,EAAyB,EACzBM,EAAuB,EACvBD,EAA+B,EAC/BN,EAA2B,EAC3BQ,EAA+B,CACjC,EACA,MACF,KAAKC,EAAqB,WACxBI,EAAU,SACRjB,EAAqB,EACrBZ,EAA8B,CAChC,EACA,MACF,QAAS,CAEP,MAAM+B,EAAyBD,CAEjC,CACF,CAEA,OAAOD,CACT",
6
+ "names": ["Container", "configModuleFactory", "configTypes", "accountOwnershipModuleFactory", "calldataModuleFactory", "dynamicNetworkModuleFactory", "externalPluginModuleFactory", "gatedSigningModuleFactory", "nftModuleFactory", "proxyModuleFactory", "safeModuleFactory", "ethereumTokenModuleFactory", "trustedNameModuleFactory", "typedDataModuleFactory", "uniswapModuleFactory", "nanoPkiModuleFactory", "reporterModuleFactory", "ethereumTransactionCheckModuleFactory", "solanaTransactionCheckModuleFactory", "altResolutionModuleFactory", "enumVariantModuleFactory", "instructionInfoModuleFactory", "lifiModuleFactory", "ownerInfoModuleFactory", "solanaTokenModuleFactory", "tokenAccountStateModuleFactory", "tokenInfoModuleFactory", "solanaTrustedNameModuleFactory", "ContextModuleChainID", "networkModuleFactory", "makeContainer", "config", "container", "chain", "exhaustiveCheck"]
7
7
  }
@@ -1,2 +1,2 @@
1
- export*from"./ContextModule";export*from"./ContextModuleBuilder";export*from"./DefaultContextModule";export*from"./modules/concordium/account-ownership/data/AccountOwnershipDataSource";export*from"./modules/concordium/account-ownership/data/AccountOwnershipError";export*from"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource";export*from"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader";export*from"./modules/ethereum/calldata/data/CalldataDescriptorDataSource";export*from"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource";export*from"./modules/ethereum/calldata/domain/CalldataContextLoader";export*from"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource";export*from"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource";export*from"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader";export*from"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration";export*from"./modules/ethereum/external-plugin/data/ExternalPluginDataSource";export*from"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource";export*from"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader";export*from"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource";export*from"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource";export*from"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader";export*from"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader";export*from"./modules/ethereum/model/EthereumClearSignContext";export*from"./modules/ethereum/model/TypedDataClearSignContext";export*from"./modules/ethereum/model/TypedDataContext";export*from"./modules/ethereum/nft/data/HttpNftDataSource";export*from"./modules/ethereum/nft/data/NftDataSource";export*from"./modules/ethereum/nft/domain/NftContextFieldLoader";export*from"./modules/ethereum/nft/domain/NftContextLoader";export*from"./modules/ethereum/proxy/data/HttpProxyDataSource";export*from"./modules/ethereum/proxy/data/HttpSafeProxyDataSource";export*from"./modules/ethereum/proxy/data/ProxyDataSource";export*from"./modules/ethereum/proxy/domain/ProxyContextFieldLoader";export*from"./modules/ethereum/token/data/HttpTokenDataSource";export*from"./modules/ethereum/token/data/TokenDataSource";export*from"./modules/ethereum/token/domain/TokenContextFieldLoader";export*from"./modules/ethereum/token/domain/TokenContextLoader";export*from"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource";export*from"./modules/ethereum/trusted-name/data/TrustedNameDataSource";export*from"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader";export*from"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader";export*from"./modules/ethereum/typed-data/data/HttpTypedDataDataSource";export*from"./modules/ethereum/typed-data/data/TypedDataDataSource";export*from"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader";export*from"./modules/ethereum/typed-data/domain/TypedDataContextLoader";export*from"./modules/ethereum/typed-data/utils/getSchemaHash";export*from"./modules/ethereum/uniswap/data/AbiDecoderDataSource";export*from"./modules/ethereum/uniswap/data/CommandDecoderDataSource";export*from"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource";export*from"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource";export*from"./modules/ethereum/uniswap/domain/UniswapContextLoader";export*from"./modules/multichain/pki/data/HttpPkiCertificateDataSource";export*from"./modules/multichain/pki/data/PkiCertificateDataSource";export*from"./modules/multichain/pki/domain/DefaultPkiCertificateLoader";export*from"./modules/multichain/pki/domain/PkiCertificateLoader";export*from"./modules/multichain/pki/model/KeyId";export*from"./modules/multichain/pki/model/KeyUsage";export*from"./modules/multichain/pki/model/PkiCertificate";export*from"./modules/multichain/pki/model/PkiCertificateInfo";export*from"./modules/multichain/reporter/data/BlindSigningReporterDatasource";export*from"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource";export*from"./modules/multichain/reporter/domain/BlindSigningReporter";export*from"./modules/multichain/reporter/domain/DefaultBlindSigningReporter";export*from"./modules/multichain/reporter/model/BlindSigningEvent";export*from"./modules/multichain/reporter/model/BlindSigningModelId";export*from"./modules/multichain/transaction-check/utils/constants";export*from"./modules/solana/model/SolanaClearSignContext";export*from"./modules/solana/model/SolanaContextTypes";export*from"./modules/solana/model/SolanaTransactionScanChainId";export*from"./modules/solana/owner-info/data/HttpOwnerInfoDataSource";export*from"./modules/solana/owner-info/data/OwnerInfoDataSource";export*from"./modules/solana/owner-info/domain/OwnerInfoContextLoader";export*from"./modules/solana/owner-info/domain/solanaContextTypes";export*from"./shared/domain/ContextFieldLoader";export*from"./shared/domain/ContextLoader";export*from"./shared/domain/ContextModuleChainID";export*from"./shared/model/ClearSignContext";export*from"./shared/model/GenericPath";export*from"./shared/model/TransactionSubset";
1
+ export*from"./ContextModule";export*from"./ContextModuleBuilder";export*from"./DefaultContextModule";export*from"./modules/concordium/account-ownership/data/AccountOwnershipDataSource";export*from"./modules/concordium/account-ownership/data/AccountOwnershipError";export*from"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource";export*from"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader";export*from"./modules/ethereum/calldata/data/CalldataDescriptorDataSource";export*from"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource";export*from"./modules/ethereum/calldata/domain/CalldataContextLoader";export*from"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource";export*from"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource";export*from"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader";export*from"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration";export*from"./modules/ethereum/external-plugin/data/ExternalPluginDataSource";export*from"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource";export*from"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader";export*from"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource";export*from"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource";export*from"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader";export*from"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader";export*from"./modules/ethereum/model/EthereumClearSignContext";export*from"./modules/ethereum/model/TypedDataClearSignContext";export*from"./modules/ethereum/model/TypedDataContext";export*from"./modules/ethereum/nft/data/HttpNftDataSource";export*from"./modules/ethereum/nft/data/NftDataSource";export*from"./modules/ethereum/nft/domain/NftContextFieldLoader";export*from"./modules/ethereum/nft/domain/NftContextLoader";export*from"./modules/ethereum/proxy/data/HttpProxyDataSource";export*from"./modules/ethereum/proxy/data/HttpSafeProxyDataSource";export*from"./modules/ethereum/proxy/data/ProxyDataSource";export*from"./modules/ethereum/proxy/domain/ProxyContextFieldLoader";export*from"./modules/ethereum/token/data/HttpTokenDataSource";export*from"./modules/ethereum/token/data/TokenDataSource";export*from"./modules/ethereum/token/domain/TokenContextFieldLoader";export*from"./modules/ethereum/token/domain/TokenContextLoader";export*from"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource";export*from"./modules/ethereum/trusted-name/data/TrustedNameDataSource";export*from"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader";export*from"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader";export*from"./modules/ethereum/typed-data/data/HttpTypedDataDataSource";export*from"./modules/ethereum/typed-data/data/TypedDataDataSource";export*from"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader";export*from"./modules/ethereum/typed-data/domain/TypedDataContextLoader";export*from"./modules/ethereum/typed-data/utils/getSchemaHash";export*from"./modules/ethereum/uniswap/data/AbiDecoderDataSource";export*from"./modules/ethereum/uniswap/data/CommandDecoderDataSource";export*from"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource";export*from"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource";export*from"./modules/ethereum/uniswap/domain/UniswapContextLoader";export*from"./modules/multichain/pki/data/HttpPkiCertificateDataSource";export*from"./modules/multichain/pki/data/PkiCertificateDataSource";export*from"./modules/multichain/pki/domain/DefaultPkiCertificateLoader";export*from"./modules/multichain/pki/domain/PkiCertificateLoader";export*from"./modules/multichain/pki/model/KeyId";export*from"./modules/multichain/pki/model/KeyUsage";export*from"./modules/multichain/pki/model/PkiCertificate";export*from"./modules/multichain/pki/model/PkiCertificateInfo";export*from"./modules/multichain/reporter/data/BlindSigningReporterDatasource";export*from"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource";export*from"./modules/multichain/reporter/domain/BlindSigningReporter";export*from"./modules/multichain/reporter/domain/DefaultBlindSigningReporter";export*from"./modules/multichain/reporter/model/BlindSigningEvent";export*from"./modules/multichain/reporter/model/BlindSigningModelId";export*from"./modules/multichain/transaction-check/utils/constants";export*from"./modules/solana/alt-resolution/data/AltResolutionDataSource";export*from"./modules/solana/alt-resolution/data/HttpAltResolutionDataSource";export*from"./modules/solana/alt-resolution/domain/AltResolutionContextLoader";export*from"./modules/solana/enum-variant/domain/EnumVariantContextLoader";export*from"./modules/solana/instruction-info/data/HttpInstructionInfoDataSource";export*from"./modules/solana/instruction-info/data/InstructionInfoDataSource";export*from"./modules/solana/instruction-info/domain/InstructionInfoContextLoader";export*from"./modules/solana/model/SolanaClearSignContext";export*from"./modules/solana/model/SolanaContextTypes";export*from"./modules/solana/model/SolanaTransactionScanChainId";export*from"./modules/solana/owner-info/data/HttpOwnerInfoDataSource";export*from"./modules/solana/owner-info/data/OwnerInfoDataSource";export*from"./modules/solana/owner-info/domain/OwnerInfoContextLoader";export*from"./modules/solana/owner-info/domain/solanaContextTypes";export*from"./modules/solana/token-account-state/data/HttpTokenAccountStateDataSource";export*from"./modules/solana/token-account-state/data/TokenAccountStateDataSource";export*from"./modules/solana/token-account-state/domain/TokenAccountStateContextLoader";export*from"./modules/solana/token-info/data/HttpTokenInfoDataSource";export*from"./modules/solana/token-info/data/TokenInfoDataSource";export*from"./modules/solana/token-info/domain/TokenInfoContextLoader";export*from"./modules/solana/trusted-name/data/HttpTrustedNameDataSource";export*from"./modules/solana/trusted-name/data/TrustedNameDataSource";export*from"./modules/solana/trusted-name/domain/TrustedNameContextLoader";export*from"./shared/domain/ContextFieldLoader";export*from"./shared/domain/ContextLoader";export*from"./shared/domain/ContextModuleChainID";export*from"./shared/model/ClearSignContext";export*from"./shared/model/GenericPath";export*from"./shared/model/TransactionSubset";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts"],
4
- "sourcesContent": ["export type {\n ContextModuleCalBranch,\n ContextModuleCalConfig,\n ContextModuleCalMode,\n ContextModuleConfig,\n ContextModuleDatasourceConfig,\n ContextModuleMetadataServiceConfig,\n ContextModuleReporterConfig,\n ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipError\";\nexport * from \"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader\";\nexport * from \"./modules/ethereum/calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/domain/CalldataContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./modules/ethereum/external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader\";\nexport * from \"./modules/ethereum/model/EthereumClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataContext\";\nexport * from \"./modules/ethereum/nft/data/HttpNftDataSource\";\nexport * from \"./modules/ethereum/nft/data/NftDataSource\";\nexport * from \"./modules/ethereum/nft/domain/NftContextFieldLoader\";\nexport * from \"./modules/ethereum/nft/domain/NftContextLoader\";\nexport * from \"./modules/ethereum/proxy/data/HttpProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/ProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./modules/ethereum/token/data/HttpTokenDataSource\";\nexport * from \"./modules/ethereum/token/data/TokenDataSource\";\nexport * from \"./modules/ethereum/token/domain/TokenContextFieldLoader\";\nexport * from \"./modules/ethereum/token/domain/TokenContextLoader\";\nexport * from \"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./modules/ethereum/typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/data/TypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/utils/getSchemaHash\";\nexport * from \"./modules/ethereum/uniswap/data/AbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/CommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/domain/UniswapContextLoader\";\nexport * from \"./modules/multichain/pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/data/PkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/domain/PkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/model/KeyId\";\nexport * from \"./modules/multichain/pki/model/KeyUsage\";\nexport * from \"./modules/multichain/pki/model/PkiCertificate\";\nexport * from \"./modules/multichain/pki/model/PkiCertificateInfo\";\nexport * from \"./modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/domain/DefaultBlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningEvent\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningModelId\";\nexport * from \"./modules/multichain/transaction-check/utils/constants\";\nexport * from \"./modules/solana/model/SolanaClearSignContext\";\nexport * from \"./modules/solana/model/SolanaContextTypes\";\nexport * from \"./modules/solana/model/SolanaTransactionScanChainId\";\nexport * from \"./modules/solana/owner-info/data/HttpOwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/data/OwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/domain/OwnerInfoContextLoader\";\nexport * from \"./modules/solana/owner-info/domain/solanaContextTypes\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/domain/ContextModuleChainID\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/TransactionSubset\";\n"],
5
- "mappings": "AAUA,WAAc,kBACd,WAAc,yBACd,WAAc,yBACd,WAAc,yEACd,WAAc,oEACd,WAAc,6EACd,WAAc,8EACd,WAAc,gEACd,WAAc,oEACd,WAAc,2DACd,WAAc,mEACd,WAAc,uEACd,WAAc,wEACd,WAAc,uEACd,WAAc,mEACd,WAAc,uEACd,WAAc,wEACd,WAAc,kEACd,WAAc,sEACd,WAAc,oEACd,WAAc,6EACd,WAAc,oDACd,WAAc,qDACd,WAAc,4CACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,iDACd,WAAc,oDACd,WAAc,wDACd,WAAc,gDACd,WAAc,0DACd,WAAc,oDACd,WAAc,gDACd,WAAc,0DACd,WAAc,qDACd,WAAc,iEACd,WAAc,6DACd,WAAc,uEACd,WAAc,kEACd,WAAc,6DACd,WAAc,yDACd,WAAc,qEACd,WAAc,8DACd,WAAc,oDACd,WAAc,uDACd,WAAc,2DACd,WAAc,kEACd,WAAc,6DACd,WAAc,yDACd,WAAc,6DACd,WAAc,yDACd,WAAc,8DACd,WAAc,uDACd,WAAc,uCACd,WAAc,0CACd,WAAc,gDACd,WAAc,oDACd,WAAc,oEACd,WAAc,wEACd,WAAc,4DACd,WAAc,mEACd,WAAc,wDACd,WAAc,0DACd,WAAc,yDACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,2DACd,WAAc,uDACd,WAAc,4DACd,WAAc,wDACd,WAAc,qCACd,WAAc,gCACd,WAAc,uCACd,WAAc,kCACd,WAAc,6BACd,WAAc",
4
+ "sourcesContent": ["export type {\n ContextModuleCalBranch,\n ContextModuleCalConfig,\n ContextModuleCalMode,\n ContextModuleConfig,\n ContextModuleDatasourceConfig,\n ContextModuleMetadataServiceConfig,\n ContextModuleReporterConfig,\n ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nexport * from \"./ContextModule\";\nexport * from \"./ContextModuleBuilder\";\nexport * from \"./DefaultContextModule\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/data/AccountOwnershipError\";\nexport * from \"./modules/concordium/account-ownership/data/HttpAccountOwnershipDataSource\";\nexport * from \"./modules/concordium/account-ownership/domain/AccountOwnershipContextLoader\";\nexport * from \"./modules/ethereum/calldata/data/CalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource\";\nexport * from \"./modules/ethereum/calldata/domain/CalldataContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/data/DynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource\";\nexport * from \"./modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader\";\nexport * from \"./modules/ethereum/dynamic-network/model/DynamicNetworkConfiguration\";\nexport * from \"./modules/ethereum/external-plugin/data/ExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/data/HttpExternalPluginDataSource\";\nexport * from \"./modules/ethereum/external-plugin/domain/ExternalPluginContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/data/GatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningContextLoader\";\nexport * from \"./modules/ethereum/gated-signing/domain/GatedSigningTypedDataContextLoader\";\nexport * from \"./modules/ethereum/model/EthereumClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataClearSignContext\";\nexport * from \"./modules/ethereum/model/TypedDataContext\";\nexport * from \"./modules/ethereum/nft/data/HttpNftDataSource\";\nexport * from \"./modules/ethereum/nft/data/NftDataSource\";\nexport * from \"./modules/ethereum/nft/domain/NftContextFieldLoader\";\nexport * from \"./modules/ethereum/nft/domain/NftContextLoader\";\nexport * from \"./modules/ethereum/proxy/data/HttpProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/HttpSafeProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/data/ProxyDataSource\";\nexport * from \"./modules/ethereum/proxy/domain/ProxyContextFieldLoader\";\nexport * from \"./modules/ethereum/token/data/HttpTokenDataSource\";\nexport * from \"./modules/ethereum/token/data/TokenDataSource\";\nexport * from \"./modules/ethereum/token/domain/TokenContextFieldLoader\";\nexport * from \"./modules/ethereum/token/domain/TokenContextLoader\";\nexport * from \"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextFieldLoader\";\nexport * from \"./modules/ethereum/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./modules/ethereum/typed-data/data/HttpTypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/data/TypedDataDataSource\";\nexport * from \"./modules/ethereum/typed-data/domain/DefaultTypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nexport * from \"./modules/ethereum/typed-data/utils/getSchemaHash\";\nexport * from \"./modules/ethereum/uniswap/data/AbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/CommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/DefaultCommandDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/data/EthersAbiDecoderDataSource\";\nexport * from \"./modules/ethereum/uniswap/domain/UniswapContextLoader\";\nexport * from \"./modules/multichain/pki/data/HttpPkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/data/PkiCertificateDataSource\";\nexport * from \"./modules/multichain/pki/domain/DefaultPkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/domain/PkiCertificateLoader\";\nexport * from \"./modules/multichain/pki/model/KeyId\";\nexport * from \"./modules/multichain/pki/model/KeyUsage\";\nexport * from \"./modules/multichain/pki/model/PkiCertificate\";\nexport * from \"./modules/multichain/pki/model/PkiCertificateInfo\";\nexport * from \"./modules/multichain/reporter/data/BlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/data/HttpBlindSigningReporterDatasource\";\nexport * from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/domain/DefaultBlindSigningReporter\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningEvent\";\nexport * from \"./modules/multichain/reporter/model/BlindSigningModelId\";\nexport * from \"./modules/multichain/transaction-check/utils/constants\";\nexport * from \"./modules/solana/alt-resolution/data/AltResolutionDataSource\";\nexport * from \"./modules/solana/alt-resolution/data/HttpAltResolutionDataSource\";\nexport * from \"./modules/solana/alt-resolution/domain/AltResolutionContextLoader\";\nexport * from \"./modules/solana/enum-variant/domain/EnumVariantContextLoader\";\nexport * from \"./modules/solana/instruction-info/data/HttpInstructionInfoDataSource\";\nexport * from \"./modules/solana/instruction-info/data/InstructionInfoDataSource\";\nexport * from \"./modules/solana/instruction-info/domain/InstructionInfoContextLoader\";\nexport * from \"./modules/solana/model/SolanaClearSignContext\";\nexport * from \"./modules/solana/model/SolanaContextTypes\";\nexport * from \"./modules/solana/model/SolanaTransactionScanChainId\";\nexport * from \"./modules/solana/owner-info/data/HttpOwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/data/OwnerInfoDataSource\";\nexport * from \"./modules/solana/owner-info/domain/OwnerInfoContextLoader\";\nexport * from \"./modules/solana/owner-info/domain/solanaContextTypes\";\nexport * from \"./modules/solana/token-account-state/data/HttpTokenAccountStateDataSource\";\nexport * from \"./modules/solana/token-account-state/data/TokenAccountStateDataSource\";\nexport * from \"./modules/solana/token-account-state/domain/TokenAccountStateContextLoader\";\nexport * from \"./modules/solana/token-info/data/HttpTokenInfoDataSource\";\nexport * from \"./modules/solana/token-info/data/TokenInfoDataSource\";\nexport * from \"./modules/solana/token-info/domain/TokenInfoContextLoader\";\nexport * from \"./modules/solana/trusted-name/data/HttpTrustedNameDataSource\";\nexport * from \"./modules/solana/trusted-name/data/TrustedNameDataSource\";\nexport * from \"./modules/solana/trusted-name/domain/TrustedNameContextLoader\";\nexport * from \"./shared/domain/ContextFieldLoader\";\nexport * from \"./shared/domain/ContextLoader\";\nexport * from \"./shared/domain/ContextModuleChainID\";\nexport * from \"./shared/model/ClearSignContext\";\nexport * from \"./shared/model/GenericPath\";\nexport * from \"./shared/model/TransactionSubset\";\n"],
5
+ "mappings": "AAUA,WAAc,kBACd,WAAc,yBACd,WAAc,yBACd,WAAc,yEACd,WAAc,oEACd,WAAc,6EACd,WAAc,8EACd,WAAc,gEACd,WAAc,oEACd,WAAc,2DACd,WAAc,mEACd,WAAc,uEACd,WAAc,wEACd,WAAc,uEACd,WAAc,mEACd,WAAc,uEACd,WAAc,wEACd,WAAc,kEACd,WAAc,sEACd,WAAc,oEACd,WAAc,6EACd,WAAc,oDACd,WAAc,qDACd,WAAc,4CACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,iDACd,WAAc,oDACd,WAAc,wDACd,WAAc,gDACd,WAAc,0DACd,WAAc,oDACd,WAAc,gDACd,WAAc,0DACd,WAAc,qDACd,WAAc,iEACd,WAAc,6DACd,WAAc,uEACd,WAAc,kEACd,WAAc,6DACd,WAAc,yDACd,WAAc,qEACd,WAAc,8DACd,WAAc,oDACd,WAAc,uDACd,WAAc,2DACd,WAAc,kEACd,WAAc,6DACd,WAAc,yDACd,WAAc,6DACd,WAAc,yDACd,WAAc,8DACd,WAAc,uDACd,WAAc,uCACd,WAAc,0CACd,WAAc,gDACd,WAAc,oDACd,WAAc,oEACd,WAAc,wEACd,WAAc,4DACd,WAAc,mEACd,WAAc,wDACd,WAAc,0DACd,WAAc,yDACd,WAAc,+DACd,WAAc,mEACd,WAAc,oEACd,WAAc,gEACd,WAAc,uEACd,WAAc,mEACd,WAAc,wEACd,WAAc,gDACd,WAAc,4CACd,WAAc,sDACd,WAAc,2DACd,WAAc,uDACd,WAAc,4DACd,WAAc,wDACd,WAAc,4EACd,WAAc,wEACd,WAAc,6EACd,WAAc,2DACd,WAAc,uDACd,WAAc,4DACd,WAAc,+DACd,WAAc,2DACd,WAAc,gEACd,WAAc,qCACd,WAAc,gCACd,WAAc,uCACd,WAAc,kCACd,WAAc,6BACd,WAAc",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var e=(a=>(a.Test="test",a.PersoV2="persov2",a.LedgerRootV3="ledger_root_v3",a.PluginSelectorKey="plugin_selector_key",a.NftMetadataKey="nft_metadata_key",a.PartnerMetadataKey="partner_metadata_key",a.Erc20MetadataKey="erc20_metadata_key",a.DomainMetadataKey="domain_metadata_key",a.CalCalldataKey="cal_calldata_key",a.CalTrustedNameKey="cal_trusted_name_key",a.CalNetwork="cal_network",a.CalGatedSigning="cal_gated_signing",a.SwapTemplateKey="swap_template_key",a))(e||{});export{e as KeyId};
1
+ var e=(a=>(a.Test="test",a.PersoV2="persov2",a.LedgerRootV3="ledger_root_v3",a.PluginSelectorKey="plugin_selector_key",a.NftMetadataKey="nft_metadata_key",a.TokenMetadataKey="token_metadata_key",a.PartnerMetadataKey="partner_metadata_key",a.Erc20MetadataKey="erc20_metadata_key",a.DomainMetadataKey="domain_metadata_key",a.CalCalldataKey="cal_calldata_key",a.CalTrustedNameKey="cal_trusted_name_key",a.CalNetwork="cal_network",a.CalGatedSigning="cal_gated_signing",a.SwapTemplateKey="swap_template_key",a))(e||{});export{e as KeyId};
2
2
  //# sourceMappingURL=KeyId.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/pki/model/KeyId.ts"],
4
- "sourcesContent": ["export enum KeyId {\n Test = \"test\",\n PersoV2 = \"persov2\",\n LedgerRootV3 = \"ledger_root_v3\",\n PluginSelectorKey = \"plugin_selector_key\",\n NftMetadataKey = \"nft_metadata_key\",\n PartnerMetadataKey = \"partner_metadata_key\",\n Erc20MetadataKey = \"erc20_metadata_key\",\n DomainMetadataKey = \"domain_metadata_key\",\n CalCalldataKey = \"cal_calldata_key\",\n CalTrustedNameKey = \"cal_trusted_name_key\",\n CalNetwork = \"cal_network\",\n CalGatedSigning = \"cal_gated_signing\",\n SwapTemplateKey = \"swap_template_key\",\n}\n"],
5
- "mappings": "AAAO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,aAAe,iBACfA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,mBAAqB,uBACrBA,EAAA,iBAAmB,qBACnBA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,kBAAoB,uBACpBA,EAAA,WAAa,cACbA,EAAA,gBAAkB,oBAClBA,EAAA,gBAAkB,oBAbRA,OAAA",
4
+ "sourcesContent": ["export enum KeyId {\n Test = \"test\",\n PersoV2 = \"persov2\",\n LedgerRootV3 = \"ledger_root_v3\",\n PluginSelectorKey = \"plugin_selector_key\",\n NftMetadataKey = \"nft_metadata_key\",\n TokenMetadataKey = \"token_metadata_key\",\n PartnerMetadataKey = \"partner_metadata_key\",\n Erc20MetadataKey = \"erc20_metadata_key\",\n DomainMetadataKey = \"domain_metadata_key\",\n CalCalldataKey = \"cal_calldata_key\",\n CalTrustedNameKey = \"cal_trusted_name_key\",\n CalNetwork = \"cal_network\",\n CalGatedSigning = \"cal_gated_signing\",\n SwapTemplateKey = \"swap_template_key\",\n}\n"],
5
+ "mappings": "AAAO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,aAAe,iBACfA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,iBAAmB,qBACnBA,EAAA,mBAAqB,uBACrBA,EAAA,iBAAmB,qBACnBA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,kBAAoB,uBACpBA,EAAA,WAAa,cACbA,EAAA,gBAAkB,oBAClBA,EAAA,gBAAkB,oBAdRA,OAAA",
6
6
  "names": ["KeyId"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var y=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var g=(i,t,r,e)=>{for(var n=e>1?void 0:e?T(t,r):t,o=i.length-1,c;o>=0;o--)(c=i[o])&&(n=(e?c(t,r,n):c(n))||n);return e&&n&&y(t,r,n),n},d=(i,t)=>(r,e)=>t(r,e,i);import{DeviceModelId as l}from"@ledgerhq/device-management-kit";import{inject as p,injectable as A}from"inversify";import{Codec as m,exactly as u,number as k,oneOf as x,string as E}from"purify-ts";import{configTypes as R}from"../../../../config/di/configTypes";import{pkiTypes as N}from"../../../../modules/multichain/pki/di/pkiTypes";import{KeyUsage as I}from"../../../../modules/multichain/pki/model/KeyUsage";import{transactionCheckTypes as O}from"../../../../modules/multichain/transaction-check/di/transactionCheckTypes";import{TransactionCheckPaths as L}from"../../../../modules/multichain/transaction-check/utils/constants";import{ClearSignContextType as h}from"../../../../shared/model/ClearSignContext";import{DefaultBs58Encoder as _}from"../../../../shared/utils/bs58Encoder";import{uint8ArrayCodec as w}from"../../../../shared/utils/uint8ArrayCodec";const b=[h.SOLANA_TRANSACTION_CHECK],v=64,f=64,M=128,P=128,U=127,D=7,B=m.interface({deviceModelId:x([u(l.NANO_X),u(l.NANO_SP),u(l.STAX),u(l.FLEX)]),transactionCheck:m.interface({from:E,transactionBytes:w,chain:k})});let C=class{constructor(t,r,e,n=_){this.transactionCheckDataSource=t;this.certificateLoader=r;this.bs58Encoder=n;this.logger=e("SolanaTransactionCheckLoader")}logger;canHandle(t,r){return b.every(e=>r.includes(e))?B.decode(t).caseOf({Left:()=>!1,Right:({transactionCheck:{from:e,transactionBytes:n}})=>e.length>0&&n.length>0}):!1}async load(t){const{from:r,transactionBytes:e,chain:n}=t.transactionCheck;let o;try{o=this.bs58Encoder.encode(this.wrapMessageAsTransaction(e))}catch(a){const s=[{type:h.ERROR,error:a instanceof Error?a:new Error(String(a))}];return this.logger.debug("load result",{data:{result:s}}),s}const S=[await(await this.transactionCheckDataSource.check({path:L.SOLANA_TRANSACTION,body:{tx:{from:r,raw:o},chain:n}})).caseOf({Left:a=>Promise.resolve({type:h.ERROR,error:a}),Right:async a=>{const s=await this.certificateLoader.loadCertificate({keyId:a.publicKeyId,keyUsage:I.TxSimulationSigner,targetDevice:t.deviceModelId});return{type:h.SOLANA_TRANSACTION_CHECK,payload:{descriptor:a.descriptor},certificate:s}}})];return this.logger.debug("load result",{data:{result:S}}),S}wrapMessageAsTransaction(t){const r=this.readNumRequiredSignatures(t),e=this.encodeShortVec(r),n=r*v,o=new Uint8Array(e.length+n+t.length);return o.set(e,0),o.set(t,e.length+n),o}readNumRequiredSignatures(t){const r=t[0];if(r===void 0)throw new Error("[ContextModule] SolanaTransactionCheckLoader: empty transaction bytes");const n=(r&M)!==0?1:0,o=t[n];if(o===void 0)throw new Error("[ContextModule] SolanaTransactionCheckLoader: malformed message header");if(o>f)throw new Error(`[ContextModule] SolanaTransactionCheckLoader: numRequiredSignatures (${o}) exceeds SOLANA_MAX_SIGNATURES (${f})`);return o}encodeShortVec(t){const r=[];let e=t;for(;;){const n=e&U;if(e>>>=D,e===0){r.push(n);break}r.push(n|P)}return Uint8Array.from(r)}};C=g([A(),d(0,p(O.TransactionCheckDataSource)),d(1,p(N.PkiCertificateLoader)),d(2,p(R.ContextModuleLoggerFactory))],C);export{C as SolanaTransactionCheckLoader};
1
+ var g=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var h=(i,t,r,e)=>{for(var n=e>1?void 0:e?f(t,r):t,o=i.length-1,c;o>=0;o--)(c=i[o])&&(n=(e?c(t,r,n):c(n))||n);return e&&n&&g(t,r,n),n},d=(i,t)=>(r,e)=>t(r,e,i);import{inject as C,injectable as y}from"inversify";import{Codec as S,number as T,string as A}from"purify-ts";import{configTypes as k}from"../../../../config/di/configTypes";import{pkiTypes as x}from"../../../../modules/multichain/pki/di/pkiTypes";import{KeyUsage as E}from"../../../../modules/multichain/pki/model/KeyUsage";import{transactionCheckTypes as R}from"../../../../modules/multichain/transaction-check/di/transactionCheckTypes";import{TransactionCheckPaths as I}from"../../../../modules/multichain/transaction-check/utils/constants";import{ClearSignContextType as u}from"../../../../shared/model/ClearSignContext";import{DefaultBs58Encoder as L}from"../../../../shared/utils/bs58Encoder";import{deviceModelIdCodec as N}from"../../../../shared/utils/deviceModelIdCodec";import{uint8ArrayCodec as O}from"../../../../shared/utils/uint8ArrayCodec";const _=[u.SOLANA_TRANSACTION_CHECK],v=64,m=64,w=128,b=128,M=127,P=7,U=S.interface({deviceModelId:N,transactionCheck:S.interface({from:A,transactionBytes:O,chain:T})});let l=class{constructor(t,r,e,n=L){this.transactionCheckDataSource=t;this.certificateLoader=r;this.bs58Encoder=n;this.logger=e("SolanaTransactionCheckLoader")}logger;canHandle(t,r){return _.every(e=>r.includes(e))?U.decode(t).caseOf({Left:()=>!1,Right:({transactionCheck:{from:e,transactionBytes:n}})=>e.length>0&&n.length>0}):!1}async load(t){const{from:r,transactionBytes:e,chain:n}=t.transactionCheck;let o;try{o=this.bs58Encoder.encode(this.wrapMessageAsTransaction(e))}catch(a){const s=[{type:u.ERROR,error:a instanceof Error?a:new Error(String(a))}];return this.logger.debug("load result",{data:{result:s}}),s}const p=[await(await this.transactionCheckDataSource.check({path:I.SOLANA_TRANSACTION,body:{tx:{from:r,raw:o},chain:n}})).caseOf({Left:a=>Promise.resolve({type:u.ERROR,error:a}),Right:async a=>{const s=await this.certificateLoader.loadCertificate({keyId:a.publicKeyId,keyUsage:E.TxSimulationSigner,targetDevice:t.deviceModelId});return{type:u.SOLANA_TRANSACTION_CHECK,payload:{descriptor:a.descriptor},certificate:s}}})];return this.logger.debug("load result",{data:{result:p}}),p}wrapMessageAsTransaction(t){const r=this.readNumRequiredSignatures(t),e=this.encodeShortVec(r),n=r*v,o=new Uint8Array(e.length+n+t.length);return o.set(e,0),o.set(t,e.length+n),o}readNumRequiredSignatures(t){const r=t[0];if(r===void 0)throw new Error("[ContextModule] SolanaTransactionCheckLoader: empty transaction bytes");const n=(r&w)!==0?1:0,o=t[n];if(o===void 0)throw new Error("[ContextModule] SolanaTransactionCheckLoader: malformed message header");if(o>m)throw new Error(`[ContextModule] SolanaTransactionCheckLoader: numRequiredSignatures (${o}) exceeds SOLANA_MAX_SIGNATURES (${m})`);return o}encodeShortVec(t){const r=[];let e=t;for(;;){const n=e&M;if(e>>>=P,e===0){r.push(n);break}r.push(n|b)}return Uint8Array.from(r)}};l=h([y(),d(0,C(R.TransactionCheckDataSource)),d(1,C(x.PkiCertificateLoader)),d(2,C(k.ContextModuleLoggerFactory))],l);export{l as SolanaTransactionCheckLoader};
2
2
  //# sourceMappingURL=SolanaTransactionCheckLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.ts"],
4
- "sourcesContent": ["import {\n DeviceModelId,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Codec, exactly, number, oneOf, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/modules/multichain/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/modules/multichain/pki/model/KeyUsage\";\nimport { type TransactionCheckDataSource } from \"@/modules/multichain/transaction-check/data/TransactionCheckDataSource\";\nimport { transactionCheckTypes } from \"@/modules/multichain/transaction-check/di/transactionCheckTypes\";\nimport { type TransactionCheckLoader } from \"@/modules/multichain/transaction-check/loaders/TransactionCheckLoader\";\nimport { TransactionCheckPaths } from \"@/modules/multichain/transaction-check/utils/constants\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport {\n type Bs58Encoder,\n DefaultBs58Encoder,\n} from \"@/shared/utils/bs58Encoder\";\nimport { uint8ArrayCodec } from \"@/shared/utils/uint8ArrayCodec\";\n\nexport type SolanaTransactionCheckRequest = {\n from: string;\n transactionBytes: Uint8Array;\n chain: number;\n};\n\nexport type SolanaTransactionCheckContextInput = {\n deviceModelId: DeviceModelId;\n transactionCheck: SolanaTransactionCheckRequest;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n];\n\nconst SOLANA_SIGNATURE_LENGTH = 64;\nconst SOLANA_MAX_SIGNATURES = 64;\nconst VERSIONED_MESSAGE_PREFIX_MASK = 0x80;\nconst SHORTVEC_CONTINUATION_BIT = 0x80;\nconst SHORTVEC_DATA_MASK = 0x7f;\nconst SHORTVEC_DATA_BITS = 7;\n\nconst solanaTransactionCheckInputCodec = Codec.interface({\n deviceModelId: oneOf([\n exactly(DeviceModelId.NANO_X),\n exactly(DeviceModelId.NANO_SP),\n exactly(DeviceModelId.STAX),\n exactly(DeviceModelId.FLEX),\n ]),\n transactionCheck: Codec.interface({\n from: string,\n transactionBytes: uint8ArrayCodec,\n chain: number,\n }),\n});\n\n@injectable()\nexport class SolanaTransactionCheckLoader\n implements TransactionCheckLoader<SolanaTransactionCheckContextInput>\n{\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(transactionCheckTypes.TransactionCheckDataSource)\n private readonly transactionCheckDataSource: TransactionCheckDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n private readonly bs58Encoder: Bs58Encoder = DefaultBs58Encoder,\n ) {\n this.logger = loggerFactory(\"SolanaTransactionCheckLoader\");\n }\n\n canHandle(\n input: unknown,\n expectedType: ClearSignContextType[],\n ): input is SolanaTransactionCheckContextInput {\n if (!SUPPORTED_TYPES.every((type) => expectedType.includes(type)))\n return false;\n return solanaTransactionCheckInputCodec.decode(input).caseOf({\n Left: () => false,\n Right: ({ transactionCheck: { from, transactionBytes } }) =>\n from.length > 0 && transactionBytes.length > 0,\n });\n }\n\n async load(\n ctx: SolanaTransactionCheckContextInput,\n ): Promise<ClearSignContext[]> {\n const { from, transactionBytes, chain } = ctx.transactionCheck;\n\n let rawTx: string;\n try {\n rawTx = this.bs58Encoder.encode(\n this.wrapMessageAsTransaction(transactionBytes),\n );\n } catch (error) {\n const result: ClearSignContext[] = [\n {\n type: ClearSignContextType.ERROR,\n error: error instanceof Error ? error : new Error(String(error)),\n },\n ];\n this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n\n const txCheck = await this.transactionCheckDataSource.check({\n path: TransactionCheckPaths.SOLANA_TRANSACTION,\n body: { tx: { from, raw: rawTx }, chain },\n });\n\n const context = await txCheck.caseOf<Promise<ClearSignContext>>({\n Left: (error) =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error,\n }),\n Right: async (data) => {\n const certificate = await this.certificateLoader.loadCertificate({\n keyId: data.publicKeyId,\n keyUsage: KeyUsage.TxSimulationSigner,\n targetDevice: ctx.deviceModelId,\n });\n\n return {\n type: ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n payload: { descriptor: data.descriptor },\n certificate,\n };\n },\n });\n\n const result = [context];\n this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n\n /**\n * Wrap a serialized Solana Message into a serialized Transaction expected\n * by the web3checks endpoint, by prepending a compact-u16 signature count\n * and the matching number of zero-filled signature placeholders.\n *\n * Supports legacy and versioned messages: versioned messages start with a\n * version prefix byte (high bit set), shifting `numRequiredSignatures` by\n * one position.\n */\n private wrapMessageAsTransaction(message: Uint8Array): Uint8Array {\n const numRequiredSignatures = this.readNumRequiredSignatures(message);\n const sigCount = this.encodeShortVec(numRequiredSignatures);\n const placeholdersLength = numRequiredSignatures * SOLANA_SIGNATURE_LENGTH;\n\n const wrapped = new Uint8Array(\n sigCount.length + placeholdersLength + message.length,\n );\n wrapped.set(sigCount, 0);\n wrapped.set(message, sigCount.length + placeholdersLength);\n return wrapped;\n }\n\n private readNumRequiredSignatures(message: Uint8Array): number {\n const firstByte = message[0];\n if (firstByte === undefined) {\n throw new Error(\n \"[ContextModule] SolanaTransactionCheckLoader: empty transaction bytes\",\n );\n }\n const isVersioned = (firstByte & VERSIONED_MESSAGE_PREFIX_MASK) !== 0;\n const headerOffset = isVersioned ? 1 : 0;\n const numRequiredSignatures = message[headerOffset];\n if (numRequiredSignatures === undefined) {\n throw new Error(\n \"[ContextModule] SolanaTransactionCheckLoader: malformed message header\",\n );\n }\n if (numRequiredSignatures > SOLANA_MAX_SIGNATURES) {\n throw new Error(\n `[ContextModule] SolanaTransactionCheckLoader: numRequiredSignatures (${numRequiredSignatures}) exceeds SOLANA_MAX_SIGNATURES (${SOLANA_MAX_SIGNATURES})`,\n );\n }\n return numRequiredSignatures;\n }\n\n private encodeShortVec(value: number): Uint8Array {\n const bytes: number[] = [];\n let remaining = value;\n while (true) {\n const lowBits = remaining & SHORTVEC_DATA_MASK;\n remaining >>>= SHORTVEC_DATA_BITS;\n if (remaining === 0) {\n bytes.push(lowBits);\n break;\n }\n bytes.push(lowBits | SHORTVEC_CONTINUATION_BIT);\n }\n return Uint8Array.from(bytes);\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["DeviceModelId", "inject", "injectable", "Codec", "exactly", "number", "oneOf", "string", "configTypes", "pkiTypes", "KeyUsage", "transactionCheckTypes", "TransactionCheckPaths", "ClearSignContextType", "DefaultBs58Encoder", "uint8ArrayCodec", "SUPPORTED_TYPES", "ClearSignContextType", "SOLANA_SIGNATURE_LENGTH", "SOLANA_MAX_SIGNATURES", "VERSIONED_MESSAGE_PREFIX_MASK", "SHORTVEC_CONTINUATION_BIT", "SHORTVEC_DATA_MASK", "SHORTVEC_DATA_BITS", "solanaTransactionCheckInputCodec", "Codec", "oneOf", "exactly", "DeviceModelId", "string", "uint8ArrayCodec", "number", "SolanaTransactionCheckLoader", "transactionCheckDataSource", "certificateLoader", "loggerFactory", "bs58Encoder", "DefaultBs58Encoder", "input", "expectedType", "type", "from", "transactionBytes", "ctx", "chain", "rawTx", "error", "result", "TransactionCheckPaths", "data", "certificate", "KeyUsage", "message", "numRequiredSignatures", "sigCount", "placeholdersLength", "wrapped", "firstByte", "headerOffset", "value", "bytes", "remaining", "lowBits", "__decorateClass", "injectable", "__decorateParam", "inject", "transactionCheckTypes", "pkiTypes", "configTypes"]
4
+ "sourcesContent": ["import {\n type DeviceModelId,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Codec, number, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/modules/multichain/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/modules/multichain/pki/model/KeyUsage\";\nimport { type TransactionCheckDataSource } from \"@/modules/multichain/transaction-check/data/TransactionCheckDataSource\";\nimport { transactionCheckTypes } from \"@/modules/multichain/transaction-check/di/transactionCheckTypes\";\nimport { type TransactionCheckLoader } from \"@/modules/multichain/transaction-check/loaders/TransactionCheckLoader\";\nimport { TransactionCheckPaths } from \"@/modules/multichain/transaction-check/utils/constants\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport {\n type Bs58Encoder,\n DefaultBs58Encoder,\n} from \"@/shared/utils/bs58Encoder\";\nimport { deviceModelIdCodec } from \"@/shared/utils/deviceModelIdCodec\";\nimport { uint8ArrayCodec } from \"@/shared/utils/uint8ArrayCodec\";\n\nexport type SolanaTransactionCheckRequest = {\n from: string;\n transactionBytes: Uint8Array;\n chain: number;\n};\n\nexport type SolanaTransactionCheckContextInput = {\n deviceModelId: DeviceModelId;\n transactionCheck: SolanaTransactionCheckRequest;\n};\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n];\n\nconst SOLANA_SIGNATURE_LENGTH = 64;\nconst SOLANA_MAX_SIGNATURES = 64;\nconst VERSIONED_MESSAGE_PREFIX_MASK = 0x80;\nconst SHORTVEC_CONTINUATION_BIT = 0x80;\nconst SHORTVEC_DATA_MASK = 0x7f;\nconst SHORTVEC_DATA_BITS = 7;\n\nconst solanaTransactionCheckInputCodec = Codec.interface({\n deviceModelId: deviceModelIdCodec,\n transactionCheck: Codec.interface({\n from: string,\n transactionBytes: uint8ArrayCodec,\n chain: number,\n }),\n});\n\n@injectable()\nexport class SolanaTransactionCheckLoader\n implements TransactionCheckLoader<SolanaTransactionCheckContextInput>\n{\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(transactionCheckTypes.TransactionCheckDataSource)\n private readonly transactionCheckDataSource: TransactionCheckDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n private readonly bs58Encoder: Bs58Encoder = DefaultBs58Encoder,\n ) {\n this.logger = loggerFactory(\"SolanaTransactionCheckLoader\");\n }\n\n canHandle(\n input: unknown,\n expectedType: ClearSignContextType[],\n ): input is SolanaTransactionCheckContextInput {\n if (!SUPPORTED_TYPES.every((type) => expectedType.includes(type)))\n return false;\n return solanaTransactionCheckInputCodec.decode(input).caseOf({\n Left: () => false,\n Right: ({ transactionCheck: { from, transactionBytes } }) =>\n from.length > 0 && transactionBytes.length > 0,\n });\n }\n\n async load(\n ctx: SolanaTransactionCheckContextInput,\n ): Promise<ClearSignContext[]> {\n const { from, transactionBytes, chain } = ctx.transactionCheck;\n\n let rawTx: string;\n try {\n rawTx = this.bs58Encoder.encode(\n this.wrapMessageAsTransaction(transactionBytes),\n );\n } catch (error) {\n const result: ClearSignContext[] = [\n {\n type: ClearSignContextType.ERROR,\n error: error instanceof Error ? error : new Error(String(error)),\n },\n ];\n this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n\n const txCheck = await this.transactionCheckDataSource.check({\n path: TransactionCheckPaths.SOLANA_TRANSACTION,\n body: { tx: { from, raw: rawTx }, chain },\n });\n\n const context = await txCheck.caseOf<Promise<ClearSignContext>>({\n Left: (error) =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error,\n }),\n Right: async (data) => {\n const certificate = await this.certificateLoader.loadCertificate({\n keyId: data.publicKeyId,\n keyUsage: KeyUsage.TxSimulationSigner,\n targetDevice: ctx.deviceModelId,\n });\n\n return {\n type: ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n payload: { descriptor: data.descriptor },\n certificate,\n };\n },\n });\n\n const result = [context];\n this.logger.debug(\"load result\", { data: { result } });\n return result;\n }\n\n /**\n * Wrap a serialized Solana Message into a serialized Transaction expected\n * by the web3checks endpoint, by prepending a compact-u16 signature count\n * and the matching number of zero-filled signature placeholders.\n *\n * Supports legacy and versioned messages: versioned messages start with a\n * version prefix byte (high bit set), shifting `numRequiredSignatures` by\n * one position.\n */\n private wrapMessageAsTransaction(message: Uint8Array): Uint8Array {\n const numRequiredSignatures = this.readNumRequiredSignatures(message);\n const sigCount = this.encodeShortVec(numRequiredSignatures);\n const placeholdersLength = numRequiredSignatures * SOLANA_SIGNATURE_LENGTH;\n\n const wrapped = new Uint8Array(\n sigCount.length + placeholdersLength + message.length,\n );\n wrapped.set(sigCount, 0);\n wrapped.set(message, sigCount.length + placeholdersLength);\n return wrapped;\n }\n\n private readNumRequiredSignatures(message: Uint8Array): number {\n const firstByte = message[0];\n if (firstByte === undefined) {\n throw new Error(\n \"[ContextModule] SolanaTransactionCheckLoader: empty transaction bytes\",\n );\n }\n const isVersioned = (firstByte & VERSIONED_MESSAGE_PREFIX_MASK) !== 0;\n const headerOffset = isVersioned ? 1 : 0;\n const numRequiredSignatures = message[headerOffset];\n if (numRequiredSignatures === undefined) {\n throw new Error(\n \"[ContextModule] SolanaTransactionCheckLoader: malformed message header\",\n );\n }\n if (numRequiredSignatures > SOLANA_MAX_SIGNATURES) {\n throw new Error(\n `[ContextModule] SolanaTransactionCheckLoader: numRequiredSignatures (${numRequiredSignatures}) exceeds SOLANA_MAX_SIGNATURES (${SOLANA_MAX_SIGNATURES})`,\n );\n }\n return numRequiredSignatures;\n }\n\n private encodeShortVec(value: number): Uint8Array {\n const bytes: number[] = [];\n let remaining = value;\n while (true) {\n const lowBits = remaining & SHORTVEC_DATA_MASK;\n remaining >>>= SHORTVEC_DATA_BITS;\n if (remaining === 0) {\n bytes.push(lowBits);\n break;\n }\n bytes.push(lowBits | SHORTVEC_CONTINUATION_BIT);\n }\n return Uint8Array.from(bytes);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["inject", "injectable", "Codec", "number", "string", "configTypes", "pkiTypes", "KeyUsage", "transactionCheckTypes", "TransactionCheckPaths", "ClearSignContextType", "DefaultBs58Encoder", "deviceModelIdCodec", "uint8ArrayCodec", "SUPPORTED_TYPES", "ClearSignContextType", "SOLANA_SIGNATURE_LENGTH", "SOLANA_MAX_SIGNATURES", "VERSIONED_MESSAGE_PREFIX_MASK", "SHORTVEC_CONTINUATION_BIT", "SHORTVEC_DATA_MASK", "SHORTVEC_DATA_BITS", "solanaTransactionCheckInputCodec", "Codec", "deviceModelIdCodec", "string", "uint8ArrayCodec", "number", "SolanaTransactionCheckLoader", "transactionCheckDataSource", "certificateLoader", "loggerFactory", "bs58Encoder", "DefaultBs58Encoder", "input", "expectedType", "type", "from", "transactionBytes", "ctx", "chain", "rawTx", "error", "result", "TransactionCheckPaths", "data", "certificate", "KeyUsage", "message", "numRequiredSignatures", "sigCount", "placeholdersLength", "wrapped", "firstByte", "headerOffset", "value", "bytes", "remaining", "lowBits", "__decorateClass", "injectable", "__decorateParam", "inject", "transactionCheckTypes", "pkiTypes", "configTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceModelId as o}from"@ledgerhq/device-management-kit";import d from"bs58";import{Left as p,Right as l}from"purify-ts";import{TransactionCheckPaths as A}from"../../../../modules/multichain/transaction-check/utils/constants";import{ClearSignContextType as r}from"../../../../shared/model/ClearSignContext";import{SolanaTransactionCheckLoader as f}from"./SolanaTransactionCheckLoader";const n=64,y={debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]},h=()=>y,s={loadCertificate:vi.fn()};let c,t;beforeEach(()=>{vi.resetAllMocks(),c={check:vi.fn()},t=new f(c,s,h)});describe("SolanaTransactionCheckLoader",()=>{describe("canHandle",()=>{const e={deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,222]),chain:1}};it("returns true for a valid Solana transaction-check input",()=>{expect(t.canHandle(e,[r.SOLANA_TRANSACTION_CHECK])).toBe(!0)}),it("returns false when expected types do not include SOLANA_TRANSACTION_CHECK",()=>{expect(t.canHandle(e,[r.SOLANA_TOKEN])).toBe(!1)}),it("returns false when transactionBytes is not a Uint8Array",()=>{expect(t.canHandle({...e,transactionCheck:{...e.transactionCheck,transactionBytes:"0xdead"}},[r.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false when transactionBytes is empty",()=>{expect(t.canHandle({...e,transactionCheck:{...e.transactionCheck,transactionBytes:new Uint8Array}},[r.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false when from is empty",()=>{expect(t.canHandle({...e,transactionCheck:{...e.transactionCheck,from:""}},[r.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false for unsupported device models (NANO_S)",()=>{expect(t.canHandle({...e,deviceModelId:o.NANO_S},[r.SOLANA_TRANSACTION_CHECK])).toBe(!1)})}),describe("load \u2014 wire format",()=>{beforeEach(()=>{c.check.mockResolvedValue(l({publicKeyId:"pk",descriptor:"aabb"})),s.loadCertificate.mockResolvedValue({payload:new Uint8Array([204]),keyUsageNumber:14})}),it("wraps a legacy Message into a serialized Transaction (sig count + zero-filled signatures + message) and bs58-encodes it",async()=>{const e=new Uint8Array([2,0,3,170,187,204]);await t.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:1}});const a=c.check.mock.calls[0][0],i=d.decode(a.body.tx.raw);expect(a.path).toBe(A.SOLANA_TRANSACTION),expect(a.body.tx.from).toBe("signer"),expect(a.body.chain).toBe(1),expect(i.length).toBe(1+2*n+e.length),expect(i[0]).toBe(2),expect(Array.from(i.slice(1,1+2*n))).toEqual(new Array(2*n).fill(0)),expect(Array.from(i.slice(1+2*n))).toEqual(Array.from(e))}),it("wraps a versioned (v0) Message by skipping the version prefix when reading numRequiredSignatures",async()=>{const e=new Uint8Array([128,1,0,3,222,173]);await t.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:1}});const a=d.decode(c.check.mock.calls[0][0].body.tx.raw);expect(a.length).toBe(1+n+e.length),expect(a[0]).toBe(1),expect(Array.from(a.slice(1,1+n))).toEqual(new Array(n).fill(0)),expect(Array.from(a.slice(1+n))).toEqual(Array.from(e))})}),describe("load \u2014 result mapping",()=>{it("returns a SOLANA_TRANSACTION_CHECK context with descriptor and certificate on success",async()=>{c.check.mockResolvedValue(l({publicKeyId:"pk-1",descriptor:"deadbeef"}));const e={payload:new Uint8Array([153]),keyUsageNumber:14};s.loadCertificate.mockResolvedValue(e);const[a]=await t.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,170]),chain:1}});expect(a).toEqual({type:r.SOLANA_TRANSACTION_CHECK,payload:{descriptor:"deadbeef"},certificate:e})}),it("returns an ERROR context when the data source returns Left",async()=>{const e=new Error("network fail");c.check.mockResolvedValue(p(e));const[a]=await t.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,170]),chain:1}});expect(a).toEqual({type:r.ERROR,error:e}),expect(s.loadCertificate).not.toHaveBeenCalled()}),it("returns an ERROR context (and does not call the data source) when numRequiredSignatures exceeds the max",async()=>{const e=new Uint8Array([65,0,3,170]),[a]=await t.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:1}});expect(a).toMatchObject({type:r.ERROR,error:expect.any(Error)}),expect(a.error.message).toContain("numRequiredSignatures (65)"),expect(c.check).not.toHaveBeenCalled()})})});
1
+ import{DeviceModelId as o}from"@ledgerhq/device-management-kit";import d from"bs58";import{Left as A,Right as l}from"purify-ts";import{TransactionCheckPaths as p}from"../../../../modules/multichain/transaction-check/utils/constants";import{SolanaTransactionScanChainId as i}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{ClearSignContextType as n}from"../../../../shared/model/ClearSignContext";import{SolanaTransactionCheckLoader as f}from"./SolanaTransactionCheckLoader";const N={debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]},y=()=>N,s={loadCertificate:vi.fn()};let r,a;beforeEach(()=>{vi.resetAllMocks(),r={check:vi.fn()},a=new f(r,s,y)});describe("SolanaTransactionCheckLoader",()=>{describe("canHandle",()=>{const e={deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,222]),chain:1}};it("returns true for a valid Solana transaction-check input",()=>{expect(a.canHandle(e,[n.SOLANA_TRANSACTION_CHECK])).toBe(!0)}),it("returns false when expected types do not include SOLANA_TRANSACTION_CHECK",()=>{expect(a.canHandle(e,[n.SOLANA_TOKEN])).toBe(!1)}),it("returns false when transactionBytes is not a Uint8Array",()=>{expect(a.canHandle({...e,transactionCheck:{...e.transactionCheck,transactionBytes:"0xdead"}},[n.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false when transactionBytes is empty",()=>{expect(a.canHandle({...e,transactionCheck:{...e.transactionCheck,transactionBytes:new Uint8Array}},[n.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false when from is empty",()=>{expect(a.canHandle({...e,transactionCheck:{...e.transactionCheck,from:""}},[n.SOLANA_TRANSACTION_CHECK])).toBe(!1)}),it("returns false for unsupported device models (NANO_S)",()=>{expect(a.canHandle({...e,deviceModelId:o.NANO_S},[n.SOLANA_TRANSACTION_CHECK])).toBe(!1)})}),describe("load \u2014 wire format",()=>{beforeEach(()=>{r.check.mockResolvedValue(l({publicKeyId:"pk",descriptor:"aabb"})),s.loadCertificate.mockResolvedValue({payload:new Uint8Array([204]),keyUsageNumber:14})}),it("wraps a legacy message with zero-filled signature placeholders before bs58-encoding",async()=>{const e=new Uint8Array([2,0,3,170,187,204]),t=new Uint8Array(1+2*64+e.length);t[0]=2,t.set(e,1+2*64),await a.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:i.MAINNET}});const c=r.check.mock.calls[0][0];expect(c.path).toBe(p.SOLANA_TRANSACTION),expect(c.body.tx.from).toBe("signer"),expect(c.body.chain).toBe(i.MAINNET),expect(Array.from(d.decode(c.body.tx.raw))).toEqual(Array.from(t)),expect(c.body.tx.raw).toBe(d.encode(t))}),it("wraps a versioned (v0) message with signature placeholders",async()=>{const e=new Uint8Array([128,1,0,3,222,173]),t=new Uint8Array(1+1*64+e.length);t[0]=1,t.set(e,1+1*64),await a.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:i.MAINNET}});const c=r.check.mock.calls[0][0].body.tx.raw;expect(Array.from(d.decode(c))).toEqual(Array.from(t))})}),describe("load \u2014 result mapping",()=>{it("returns a SOLANA_TRANSACTION_CHECK context with descriptor and certificate on success",async()=>{r.check.mockResolvedValue(l({publicKeyId:"pk-1",descriptor:"deadbeef"}));const e={payload:new Uint8Array([153]),keyUsageNumber:14};s.loadCertificate.mockResolvedValue(e);const[t]=await a.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,170]),chain:i.MAINNET}});expect(t).toEqual({type:n.SOLANA_TRANSACTION_CHECK,payload:{descriptor:"deadbeef"},certificate:e})}),it("returns an ERROR context when the data source returns Left",async()=>{const e=new Error("network fail");r.check.mockResolvedValue(A(e));const[t]=await a.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:new Uint8Array([1,0,3,170]),chain:i.MAINNET}});expect(t).toEqual({type:n.ERROR,error:e}),expect(s.loadCertificate).not.toHaveBeenCalled()}),it("returns an ERROR context when numRequiredSignatures exceeds the 64-signature limit",async()=>{const e=new Uint8Array([65,0,3,170]),[t]=await a.load({deviceModelId:o.NANO_X,transactionCheck:{from:"signer",transactionBytes:e,chain:i.MAINNET}});expect(t).toMatchObject({type:n.ERROR,error:expect.objectContaining({message:expect.stringContaining("exceeds SOLANA_MAX_SIGNATURES")})}),expect(r.check).not.toHaveBeenCalled()})})});
2
2
  //# sourceMappingURL=SolanaTransactionCheckLoader.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport bs58 from \"bs58\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type TransactionCheckDataSource } from \"@/modules/multichain/transaction-check/data/TransactionCheckDataSource\";\nimport { TransactionCheckPaths } from \"@/modules/multichain/transaction-check/utils/constants\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\nimport { SolanaTransactionCheckLoader } from \"./SolanaTransactionCheckLoader\";\n\nconst SIG_LENGTH = 64;\n\nconst loggerMock = {\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n};\nconst loggerFactory = () => loggerMock;\n\nconst certificateLoaderMock: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n};\n\nlet dataSourceMock: { check: ReturnType<typeof vi.fn> };\nlet loader: SolanaTransactionCheckLoader;\n\nbeforeEach(() => {\n vi.resetAllMocks();\n dataSourceMock = { check: vi.fn() };\n loader = new SolanaTransactionCheckLoader(\n dataSourceMock as unknown as TransactionCheckDataSource,\n certificateLoaderMock,\n loggerFactory,\n );\n});\n\ndescribe(\"SolanaTransactionCheckLoader\", () => {\n describe(\"canHandle\", () => {\n const validInput = {\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xde]),\n chain: 1,\n },\n };\n\n it(\"returns true for a valid Solana transaction-check input\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n ]),\n ).toBe(true);\n });\n\n it(\"returns false when expected types do not include SOLANA_TRANSACTION_CHECK\", () => {\n expect(\n loader.canHandle(validInput, [ClearSignContextType.SOLANA_TOKEN]),\n ).toBe(false);\n });\n\n it(\"returns false when transactionBytes is not a Uint8Array\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: {\n ...validInput.transactionCheck,\n transactionBytes: \"0xdead\" as unknown as Uint8Array,\n },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false when transactionBytes is empty\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: {\n ...validInput.transactionCheck,\n transactionBytes: new Uint8Array(),\n },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false when from is empty\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: { ...validInput.transactionCheck, from: \"\" },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false for unsupported device models (NANO_S)\", () => {\n expect(\n loader.canHandle(\n { ...validInput, deviceModelId: DeviceModelId.NANO_S },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n });\n\n describe(\"load \u2014 wire format\", () => {\n beforeEach(() => {\n dataSourceMock.check.mockResolvedValue(\n Right({ publicKeyId: \"pk\", descriptor: \"aabb\" }),\n );\n (certificateLoaderMock.loadCertificate as any).mockResolvedValue({\n payload: new Uint8Array([0xcc]),\n keyUsageNumber: 14,\n });\n });\n\n it(\"wraps a legacy Message into a serialized Transaction (sig count + zero-filled signatures + message) and bs58-encodes it\", async () => {\n // Legacy message: numRequiredSignatures=2, then arbitrary bytes\n const message = new Uint8Array([2, 0, 3, 0xaa, 0xbb, 0xcc]);\n\n await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: 1,\n },\n });\n\n const sent = dataSourceMock.check.mock.calls[0]![0];\n const wrapped = bs58.decode(sent.body.tx.raw);\n\n expect(sent.path).toBe(TransactionCheckPaths.SOLANA_TRANSACTION);\n expect(sent.body.tx.from).toBe(\"signer\");\n expect(sent.body.chain).toBe(1);\n expect(wrapped.length).toBe(1 + 2 * SIG_LENGTH + message.length);\n expect(wrapped[0]).toBe(2);\n expect(Array.from(wrapped.slice(1, 1 + 2 * SIG_LENGTH))).toEqual(\n new Array(2 * SIG_LENGTH).fill(0),\n );\n expect(Array.from(wrapped.slice(1 + 2 * SIG_LENGTH))).toEqual(\n Array.from(message),\n );\n });\n\n it(\"wraps a versioned (v0) Message by skipping the version prefix when reading numRequiredSignatures\", async () => {\n // V0 message: [0x80 version prefix, numRequiredSignatures=1, ...]\n const message = new Uint8Array([0x80, 1, 0, 3, 0xde, 0xad]);\n\n await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: 1,\n },\n });\n\n const wrapped = bs58.decode(\n dataSourceMock.check.mock.calls[0]![0].body.tx.raw,\n );\n\n expect(wrapped.length).toBe(1 + SIG_LENGTH + message.length);\n expect(wrapped[0]).toBe(1);\n expect(Array.from(wrapped.slice(1, 1 + SIG_LENGTH))).toEqual(\n new Array(SIG_LENGTH).fill(0),\n );\n expect(Array.from(wrapped.slice(1 + SIG_LENGTH))).toEqual(\n Array.from(message),\n );\n });\n });\n\n describe(\"load \u2014 result mapping\", () => {\n it(\"returns a SOLANA_TRANSACTION_CHECK context with descriptor and certificate on success\", async () => {\n dataSourceMock.check.mockResolvedValue(\n Right({ publicKeyId: \"pk-1\", descriptor: \"deadbeef\" }),\n );\n const cert = { payload: new Uint8Array([0x99]), keyUsageNumber: 14 };\n (certificateLoaderMock.loadCertificate as any).mockResolvedValue(cert);\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xaa]),\n chain: 1,\n },\n });\n\n expect(ctx).toEqual({\n type: ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n payload: { descriptor: \"deadbeef\" },\n certificate: cert,\n });\n });\n\n it(\"returns an ERROR context when the data source returns Left\", async () => {\n const error = new Error(\"network fail\");\n dataSourceMock.check.mockResolvedValue(Left(error));\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xaa]),\n chain: 1,\n },\n });\n\n expect(ctx).toEqual({ type: ClearSignContextType.ERROR, error });\n expect(certificateLoaderMock.loadCertificate).not.toHaveBeenCalled();\n });\n\n it(\"returns an ERROR context (and does not call the data source) when numRequiredSignatures exceeds the max\", async () => {\n // numRequiredSignatures = 65, one above SOLANA_MAX_SIGNATURES (64)\n const message = new Uint8Array([65, 0, 3, 0xaa]);\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: 1,\n },\n });\n\n expect(ctx).toMatchObject({\n type: ClearSignContextType.ERROR,\n error: expect.any(Error),\n });\n expect((ctx as { error: Error }).error.message).toContain(\n \"numRequiredSignatures (65)\",\n );\n expect(dataSourceMock.check).not.toHaveBeenCalled();\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["DeviceModelId", "bs58", "Left", "Right", "TransactionCheckPaths", "ClearSignContextType", "SolanaTransactionCheckLoader", "SIG_LENGTH", "loggerMock", "loggerFactory", "certificateLoaderMock", "dataSourceMock", "loader", "validInput", "message", "sent", "wrapped", "cert", "ctx", "error"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport bs58 from \"bs58\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type TransactionCheckDataSource } from \"@/modules/multichain/transaction-check/data/TransactionCheckDataSource\";\nimport { TransactionCheckPaths } from \"@/modules/multichain/transaction-check/utils/constants\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\nimport { SolanaTransactionCheckLoader } from \"./SolanaTransactionCheckLoader\";\n\nconst loggerMock = {\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n};\nconst loggerFactory = () => loggerMock;\n\nconst certificateLoaderMock: PkiCertificateLoader = {\n loadCertificate: vi.fn(),\n};\n\nlet dataSourceMock: { check: ReturnType<typeof vi.fn> };\nlet loader: SolanaTransactionCheckLoader;\n\nbeforeEach(() => {\n vi.resetAllMocks();\n dataSourceMock = { check: vi.fn() };\n loader = new SolanaTransactionCheckLoader(\n dataSourceMock as unknown as TransactionCheckDataSource,\n certificateLoaderMock,\n loggerFactory,\n );\n});\n\ndescribe(\"SolanaTransactionCheckLoader\", () => {\n describe(\"canHandle\", () => {\n const validInput = {\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xde]),\n chain: 1,\n },\n };\n\n it(\"returns true for a valid Solana transaction-check input\", () => {\n expect(\n loader.canHandle(validInput, [\n ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n ]),\n ).toBe(true);\n });\n\n it(\"returns false when expected types do not include SOLANA_TRANSACTION_CHECK\", () => {\n expect(\n loader.canHandle(validInput, [ClearSignContextType.SOLANA_TOKEN]),\n ).toBe(false);\n });\n\n it(\"returns false when transactionBytes is not a Uint8Array\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: {\n ...validInput.transactionCheck,\n transactionBytes: \"0xdead\" as unknown as Uint8Array,\n },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false when transactionBytes is empty\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: {\n ...validInput.transactionCheck,\n transactionBytes: new Uint8Array(),\n },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false when from is empty\", () => {\n expect(\n loader.canHandle(\n {\n ...validInput,\n transactionCheck: { ...validInput.transactionCheck, from: \"\" },\n },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n\n it(\"returns false for unsupported device models (NANO_S)\", () => {\n expect(\n loader.canHandle(\n { ...validInput, deviceModelId: DeviceModelId.NANO_S },\n [ClearSignContextType.SOLANA_TRANSACTION_CHECK],\n ),\n ).toBe(false);\n });\n });\n\n describe(\"load \u2014 wire format\", () => {\n beforeEach(() => {\n dataSourceMock.check.mockResolvedValue(\n Right({ publicKeyId: \"pk\", descriptor: \"aabb\" }),\n );\n (certificateLoaderMock.loadCertificate as any).mockResolvedValue({\n payload: new Uint8Array([0xcc]),\n keyUsageNumber: 14,\n });\n });\n\n it(\"wraps a legacy message with zero-filled signature placeholders before bs58-encoding\", async () => {\n // message[0] = 2 \u2192 numRequiredSignatures = 2 (legacy, high bit clear)\n const message = new Uint8Array([2, 0, 3, 0xaa, 0xbb, 0xcc]);\n // expected: compact-u16(2) + 2*64 zero bytes + message\n const expected = new Uint8Array(1 + 2 * 64 + message.length);\n expected[0] = 2; // compact-u16 encoding of 2\n expected.set(message, 1 + 2 * 64);\n\n await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: SolanaTransactionScanChainId.MAINNET,\n },\n });\n\n const sent = dataSourceMock.check.mock.calls[0]![0];\n\n expect(sent.path).toBe(TransactionCheckPaths.SOLANA_TRANSACTION);\n expect(sent.body.tx.from).toBe(\"signer\");\n expect(sent.body.chain).toBe(SolanaTransactionScanChainId.MAINNET);\n expect(Array.from(bs58.decode(sent.body.tx.raw))).toEqual(\n Array.from(expected),\n );\n expect(sent.body.tx.raw).toBe(bs58.encode(expected));\n });\n\n it(\"wraps a versioned (v0) message with signature placeholders\", async () => {\n // message[0] = 0x80 \u2192 versioned prefix; message[1] = 1 \u2192 numRequiredSignatures = 1\n const message = new Uint8Array([0x80, 1, 0, 3, 0xde, 0xad]);\n // expected: compact-u16(1) + 1*64 zero bytes + message\n const expected = new Uint8Array(1 + 1 * 64 + message.length);\n expected[0] = 1; // compact-u16 encoding of 1\n expected.set(message, 1 + 1 * 64);\n\n await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: SolanaTransactionScanChainId.MAINNET,\n },\n });\n\n const raw = dataSourceMock.check.mock.calls[0]![0].body.tx.raw;\n\n expect(Array.from(bs58.decode(raw))).toEqual(Array.from(expected));\n });\n });\n\n describe(\"load \u2014 result mapping\", () => {\n it(\"returns a SOLANA_TRANSACTION_CHECK context with descriptor and certificate on success\", async () => {\n dataSourceMock.check.mockResolvedValue(\n Right({ publicKeyId: \"pk-1\", descriptor: \"deadbeef\" }),\n );\n const cert = { payload: new Uint8Array([0x99]), keyUsageNumber: 14 };\n (certificateLoaderMock.loadCertificate as any).mockResolvedValue(cert);\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xaa]),\n chain: SolanaTransactionScanChainId.MAINNET,\n },\n });\n\n expect(ctx).toEqual({\n type: ClearSignContextType.SOLANA_TRANSACTION_CHECK,\n payload: { descriptor: \"deadbeef\" },\n certificate: cert,\n });\n });\n\n it(\"returns an ERROR context when the data source returns Left\", async () => {\n const error = new Error(\"network fail\");\n dataSourceMock.check.mockResolvedValue(Left(error));\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: new Uint8Array([1, 0, 3, 0xaa]),\n chain: SolanaTransactionScanChainId.MAINNET,\n },\n });\n\n expect(ctx).toEqual({ type: ClearSignContextType.ERROR, error });\n expect(certificateLoaderMock.loadCertificate).not.toHaveBeenCalled();\n });\n\n it(\"returns an ERROR context when numRequiredSignatures exceeds the 64-signature limit\", async () => {\n // message[0] = 65 \u2192 numRequiredSignatures = 65 (legacy, high bit clear), which exceeds SOLANA_MAX_SIGNATURES\n const message = new Uint8Array([65, 0, 3, 0xaa]);\n\n const [ctx] = await loader.load({\n deviceModelId: DeviceModelId.NANO_X,\n transactionCheck: {\n from: \"signer\",\n transactionBytes: message,\n chain: SolanaTransactionScanChainId.MAINNET,\n },\n });\n\n expect(ctx).toMatchObject({\n type: ClearSignContextType.ERROR,\n error: expect.objectContaining({\n message: expect.stringContaining(\"exceeds SOLANA_MAX_SIGNATURES\"),\n }),\n });\n expect(dataSourceMock.check).not.toHaveBeenCalled();\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "bs58", "Left", "Right", "TransactionCheckPaths", "SolanaTransactionScanChainId", "ClearSignContextType", "SolanaTransactionCheckLoader", "loggerMock", "loggerFactory", "certificateLoaderMock", "dataSourceMock", "loader", "validInput", "message", "expected", "sent", "raw", "cert", "ctx", "error"]
7
7
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=AltResolutionDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ var f=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var c=(n,o,e,i)=>{for(var r=i>1?void 0:i?d(o,e):o,s=n.length-1,t;s>=0;s--)(t=n[s])&&(r=(i?t(o,e,r):t(r))||r);return i&&r&&f(o,e,r),r},u=(n,o)=>(e,i)=>o(e,i,n);import{inject as m,injectable as R}from"inversify";import{Left as a,Right as y}from"purify-ts";import{configTypes as D}from"../../../../config/di/configTypes";import{networkTypes as h}from"../../../../shared/network/di/networkTypes";import{HexStringUtils as C}from"../../../../shared/utils/HexStringUtils";import{signedDescriptorDtoCodec as k}from"../../../../shared/utils/signedDescriptorDto";import{u8Codec as $}from"../../../../shared/utils/uIntCodec";let p=class{constructor(o,e){this.config=o;this.http=e}async getAltResolution({altAddress:o,entryIndex:e,challenge:i}){const r=$.decode(e);if(r.isLeft())return a(new Error(`[ContextModule] HttpAltResolutionDataSource: invalid entryIndex (got ${e}): ${r.leftOrDefault("")}`));let s;try{s=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/solana/alt-resolution/${o}/${e}`,{params:{challenge:i}})}catch(t){const l=t instanceof Error?t.message:String(t);return a(new Error(`[ContextModule] HttpAltResolutionDataSource: Failed to fetch ALT resolution: ${l}`))}return k.decode(s).caseOf({Left:t=>a(new Error(`[ContextModule] HttpAltResolutionDataSource: malformed response for (${o}, ${e}): ${t}`)),Right:t=>{let l;try{l=C.hexToBytes(t.signedDescriptor)}catch(g){return a(new Error(`[ContextModule] HttpAltResolutionDataSource: invalid hex in signedDescriptor for (${o}, ${e}): ${g.message}`))}return y({altAddress:o,entryIndex:e,descriptor:l,keyId:t.keyId,keyUsage:t.keyUsage})}})}};p=c([R(),u(0,m(D.Config)),u(1,m(h.NetworkClient))],p);export{p as HttpAltResolutionDataSource};
2
+ //# sourceMappingURL=HttpAltResolutionDataSource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.ts"],
4
+ "sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\nimport { signedDescriptorDtoCodec } from \"@/shared/utils/signedDescriptorDto\";\nimport { u8Codec } from \"@/shared/utils/uIntCodec\";\n\nimport {\n type AltResolutionDataSource,\n type AltResolutionResult,\n type GetAltResolutionParams,\n} from \"./AltResolutionDataSource\";\n\ntype AltResolutionResponseDto = {\n descriptorType?: string;\n descriptorVersion?: string;\n alt_address?: string;\n entry_index?: number;\n resolved_address?: string;\n signedDescriptor: string;\n keyId: string;\n keyUsage: string;\n};\n\n@injectable()\nexport class HttpAltResolutionDataSource implements AltResolutionDataSource {\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getAltResolution({\n altAddress,\n entryIndex,\n challenge,\n }: GetAltResolutionParams): Promise<Either<Error, AltResolutionResult>> {\n const entryIndexResult = u8Codec.decode(entryIndex);\n if (entryIndexResult.isLeft()) {\n return Left(\n new Error(\n `[ContextModule] HttpAltResolutionDataSource: invalid entryIndex (got ${entryIndex}): ${entryIndexResult.leftOrDefault(\"\")}`,\n ),\n );\n }\n\n let dto: AltResolutionResponseDto;\n try {\n dto = (await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/solana/alt-resolution/${altAddress}/${entryIndex}`,\n { params: { challenge } },\n )) as AltResolutionResponseDto;\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return Left(\n new Error(\n `[ContextModule] HttpAltResolutionDataSource: Failed to fetch ALT resolution: ${reason}`,\n ),\n );\n }\n\n return signedDescriptorDtoCodec\n .decode(dto)\n .caseOf<Either<Error, AltResolutionResult>>({\n Left: (error) =>\n Left(\n new Error(\n `[ContextModule] HttpAltResolutionDataSource: malformed response for (${altAddress}, ${entryIndex}): ${error}`,\n ),\n ),\n Right: (validated) => {\n let descriptor: Uint8Array;\n try {\n descriptor = HexStringUtils.hexToBytes(validated.signedDescriptor);\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpAltResolutionDataSource: invalid hex in signedDescriptor for (${altAddress}, ${entryIndex}): ${(error as Error).message}`,\n ),\n );\n }\n\n return Right({\n altAddress,\n entryIndex,\n descriptor,\n keyId: validated.keyId,\n keyUsage: validated.keyUsage,\n });\n },\n });\n }\n}\n"],
5
+ "mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,mCAC7B,OAAS,kBAAAC,MAAsB,gCAC/B,OAAS,4BAAAC,MAAgC,qCACzC,OAAS,WAAAC,MAAe,2BAoBjB,IAAMC,EAAN,KAAqE,CAC1E,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,iBAAiB,CAC5B,WAAAC,EACA,WAAAC,EACA,UAAAC,CACF,EAAwE,CACtE,MAAMC,EAAmBC,EAAQ,OAAOH,CAAU,EAClD,GAAIE,EAAiB,OAAO,EAC1B,OAAOE,EACL,IAAI,MACF,wEAAwEJ,CAAU,MAAME,EAAiB,cAAc,EAAE,CAAC,EAC5H,CACF,EAGF,IAAIG,EACJ,GAAI,CACFA,EAAO,MAAM,KAAK,KAAK,IACrB,GAAG,KAAK,OAAO,sBAAsB,GAAG,6BAA6BN,CAAU,IAAIC,CAAU,GAC7F,CAAE,OAAQ,CAAE,UAAAC,CAAU,CAAE,CAC1B,CACF,OAASK,EAAO,CACd,MAAMC,EAASD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACpE,OAAOF,EACL,IAAI,MACF,gFAAgFG,CAAM,EACxF,CACF,CACF,CAEA,OAAOC,EACJ,OAAOH,CAAG,EACV,OAA2C,CAC1C,KAAOC,GACLF,EACE,IAAI,MACF,wEAAwEL,CAAU,KAAKC,CAAU,MAAMM,CAAK,EAC9G,CACF,EACF,MAAQG,GAAc,CACpB,IAAIC,EACJ,GAAI,CACFA,EAAaC,EAAe,WAAWF,EAAU,gBAAgB,CACnE,OAASH,EAAO,CACd,OAAOF,EACL,IAAI,MACF,qFAAqFL,CAAU,KAAKC,CAAU,MAAOM,EAAgB,OAAO,EAC9I,CACF,CACF,CAEA,OAAOM,EAAM,CACX,WAAAb,EACA,WAAAC,EACA,WAAAU,EACA,MAAOD,EAAU,MACjB,SAAUA,EAAU,QACtB,CAAC,CACH,CACF,CAAC,CACL,CACF,EApEab,EAANiB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IAJzBtB",
6
+ "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HexStringUtils", "signedDescriptorDtoCodec", "u8Codec", "HttpAltResolutionDataSource", "config", "http", "altAddress", "entryIndex", "challenge", "entryIndexResult", "u8Codec", "Left", "dto", "error", "reason", "signedDescriptorDtoCodec", "validated", "descriptor", "HexStringUtils", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{Left as l,Right as i}from"purify-ts";import{HttpAltResolutionDataSource as c}from"./HttpAltResolutionDataSource";describe("HttpAltResolutionDataSource",()=>{let n,o;const e="AltAddress1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",r="cafebabe",s={metadataServiceDomain:{url:"https://nft.api.ledger.com"}};beforeEach(()=>{vi.clearAllMocks(),o={get:vi.fn()},n=new c(s,o)}),it("calls the metadata endpoint with the right path and challenge",async()=>{o.get.mockResolvedValue({signedDescriptor:"01020304",keyId:"alt_key",keyUsage:"coin_meta"}),await n.getAltResolution({altAddress:e,entryIndex:3,challenge:r}),expect(o.get).toHaveBeenCalledWith(`https://nft.api.ledger.com/v2/solana/alt-resolution/${e}/3`,{params:{challenge:r}})}),it("decodes signedDescriptor hex into Uint8Array",async()=>{o.get.mockResolvedValue({signedDescriptor:"abcd",keyId:"k",keyUsage:"u"});const t=await n.getAltResolution({altAddress:e,entryIndex:3,challenge:r});expect(t).toEqual(i({altAddress:e,entryIndex:3,descriptor:new Uint8Array([171,205]),keyId:"k",keyUsage:"u"}))}),it.each([-1,256,1.5,Number.NaN])("rejects entryIndex out of u8 range: %s",async t=>{const a=await n.getAltResolution({altAddress:e,entryIndex:t,challenge:r});expect(a.isLeft()).toBe(!0),expect(a.extract().message).toMatch(/entryIndex/)}),it("returns Left on malformed response",async()=>{o.get.mockResolvedValue({keyId:"k"});const t=await n.getAltResolution({altAddress:e,entryIndex:3,challenge:r});expect(t.isLeft()).toBe(!0),expect(t.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpAltResolutionDataSource: malformed response for \(${e}, ${3}\):`))}),it("returns Left when HTTP client throws",async()=>{o.get.mockRejectedValue(new Error("net"));const t=await n.getAltResolution({altAddress:e,entryIndex:3,challenge:r});expect(t).toEqual(l(new Error("[ContextModule] HttpAltResolutionDataSource: Failed to fetch ALT resolution: net")))})});
2
+ //# sourceMappingURL=HttpAltResolutionDataSource.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.ts"],
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { type AltResolutionDataSource } from \"./AltResolutionDataSource\";\nimport { HttpAltResolutionDataSource } from \"./HttpAltResolutionDataSource\";\n\ndescribe(\"HttpAltResolutionDataSource\", () => {\n let datasource: AltResolutionDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const altAddress = \"AltAddress1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\";\n const entryIndex = 3;\n const challenge = \"cafebabe\";\n const config: ContextModuleServiceConfig = {\n metadataServiceDomain: { url: \"https://nft.api.ledger.com\" },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpAltResolutionDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls the metadata endpoint with the right path and challenge\", async () => {\n httpMock.get.mockResolvedValue({\n signedDescriptor: \"01020304\",\n keyId: \"alt_key\",\n keyUsage: \"coin_meta\",\n });\n\n await datasource.getAltResolution({ altAddress, entryIndex, challenge });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n `https://nft.api.ledger.com/v2/solana/alt-resolution/${altAddress}/${entryIndex}`,\n { params: { challenge } },\n );\n });\n\n it(\"decodes signedDescriptor hex into Uint8Array\", async () => {\n httpMock.get.mockResolvedValue({\n signedDescriptor: \"abcd\",\n keyId: \"k\",\n keyUsage: \"u\",\n });\n\n const result = await datasource.getAltResolution({\n altAddress,\n entryIndex,\n challenge,\n });\n\n expect(result).toEqual(\n Right({\n altAddress,\n entryIndex,\n descriptor: new Uint8Array([0xab, 0xcd]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n );\n });\n\n it.each([-1, 256, 1.5, Number.NaN])(\n \"rejects entryIndex out of u8 range: %s\",\n async (badIndex) => {\n const result = await datasource.getAltResolution({\n altAddress,\n entryIndex: badIndex,\n challenge,\n });\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(/entryIndex/);\n },\n );\n\n it(\"returns Left on malformed response\", async () => {\n httpMock.get.mockResolvedValue({ keyId: \"k\" } as any);\n\n const result = await datasource.getAltResolution({\n altAddress,\n entryIndex,\n challenge,\n });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpAltResolutionDataSource: malformed response for \\(${altAddress}, ${entryIndex}\\):`,\n ),\n );\n });\n\n it(\"returns Left when HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"net\"));\n\n const result = await datasource.getAltResolution({\n altAddress,\n entryIndex,\n challenge,\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpAltResolutionDataSource: Failed to fetch ALT resolution: net\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AAEA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAK5B,OAAS,+BAAAC,MAAmC,gCAE5C,SAAS,8BAA+B,IAAM,CAC5C,IAAIC,EACAC,EACJ,MAAMC,EAAa,8CAEbC,EAAY,WACZC,EAAqC,CACzC,sBAAuB,CAAE,IAAK,4BAA6B,CAC7D,EAEA,WAAW,IAAM,CACf,GAAG,cAAc,EACjBH,EAAW,CAAE,IAAK,GAAG,GAAG,CAAE,EAC1BD,EAAa,IAAID,EACfK,EACAH,CACF,CACF,CAAC,EAED,GAAG,gEAAiE,SAAY,CAC9EA,EAAS,IAAI,kBAAkB,CAC7B,iBAAkB,WAClB,MAAO,UACP,SAAU,WACZ,CAAC,EAED,MAAMD,EAAW,iBAAiB,CAAE,WAAAE,EAAY,aAAY,UAAAC,CAAU,CAAC,EAEvE,OAAOF,EAAS,GAAG,EAAE,qBACnB,uDAAuDC,CAAU,KACjE,CAAE,OAAQ,CAAE,UAAAC,CAAU,CAAE,CAC1B,CACF,CAAC,EAED,GAAG,+CAAgD,SAAY,CAC7DF,EAAS,IAAI,kBAAkB,CAC7B,iBAAkB,OAClB,MAAO,IACP,SAAU,GACZ,CAAC,EAED,MAAMI,EAAS,MAAML,EAAW,iBAAiB,CAC/C,WAAAE,EACA,aACA,UAAAC,CACF,CAAC,EAED,OAAOE,CAAM,EAAE,QACbP,EAAM,CACJ,WAAAI,EACA,aACA,WAAY,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACvC,MAAO,IACP,SAAU,GACZ,CAAC,CACH,CACF,CAAC,EAED,GAAG,KAAK,CAAC,GAAI,IAAK,IAAK,OAAO,GAAG,CAAC,EAChC,yCACA,MAAOI,GAAa,CAClB,MAAMD,EAAS,MAAML,EAAW,iBAAiB,CAC/C,WAAAE,EACA,WAAYI,EACZ,UAAAH,CACF,CAAC,EACD,OAAOE,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjC,OAAQA,EAAO,QAAQ,EAAY,OAAO,EAAE,QAAQ,YAAY,CAClE,CACF,EAEA,GAAG,qCAAsC,SAAY,CACnDJ,EAAS,IAAI,kBAAkB,CAAE,MAAO,GAAI,CAAQ,EAEpD,MAAMI,EAAS,MAAML,EAAW,iBAAiB,CAC/C,WAAAE,EACA,aACA,UAAAC,CACF,CAAC,EAED,OAAOE,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjC,OAAQA,EAAO,QAAQ,EAAY,OAAO,EAAE,QAC1C,IAAI,OACF,OAAO,8EAA8EH,CAAU,KAAK,CAAU,KAChH,CACF,CACF,CAAC,EAED,GAAG,uCAAwC,SAAY,CACrDD,EAAS,IAAI,kBAAkB,IAAI,MAAM,KAAK,CAAC,EAE/C,MAAMI,EAAS,MAAML,EAAW,iBAAiB,CAC/C,WAAAE,EACA,aACA,UAAAC,CACF,CAAC,EAED,OAAOE,CAAM,EAAE,QACbR,EACE,IAAI,MACF,kFACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["Left", "Right", "HttpAltResolutionDataSource", "datasource", "httpMock", "altAddress", "challenge", "config", "result", "badIndex"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as e}from"inversify";import{HttpAltResolutionDataSource as r}from"../../../../modules/solana/alt-resolution/data/HttpAltResolutionDataSource";import{altResolutionTypes as t}from"../../../../modules/solana/alt-resolution/di/altResolutionTypes";import{AltResolutionContextLoader as l}from"../../../../modules/solana/alt-resolution/domain/AltResolutionContextLoader";const m=()=>new e(({bind:o})=>{o(t.AltResolutionDataSource).to(r),o(t.AltResolutionContextLoader).to(l)});export{m as altResolutionModuleFactory};
2
+ //# sourceMappingURL=altResolutionModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/solana/alt-resolution/di/altResolutionModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpAltResolutionDataSource } from \"@/modules/solana/alt-resolution/data/HttpAltResolutionDataSource\";\nimport { altResolutionTypes } from \"@/modules/solana/alt-resolution/di/altResolutionTypes\";\nimport { AltResolutionContextLoader } from \"@/modules/solana/alt-resolution/domain/AltResolutionContextLoader\";\n\nexport const altResolutionModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(altResolutionTypes.AltResolutionDataSource).to(\n HttpAltResolutionDataSource,\n );\n bind(altResolutionTypes.AltResolutionContextLoader).to(\n AltResolutionContextLoader,\n );\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,+BAAAC,MAAmC,mEAC5C,OAAS,sBAAAC,MAA0B,wDACnC,OAAS,8BAAAC,MAAkC,oEAEpC,MAAMC,EAA6B,IACxC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKH,EAAmB,uBAAuB,EAAE,GAC/CD,CACF,EACAI,EAAKH,EAAmB,0BAA0B,EAAE,GAClDC,CACF,CACF,CAAC",
6
+ "names": ["ContainerModule", "HttpAltResolutionDataSource", "altResolutionTypes", "AltResolutionContextLoader", "altResolutionModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const o={AltResolutionDataSource:Symbol.for("AltResolutionDataSource"),AltResolutionContextLoader:Symbol.for("AltResolutionContextLoader")};export{o as altResolutionTypes};
2
+ //# sourceMappingURL=altResolutionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/solana/alt-resolution/di/altResolutionTypes.ts"],
4
+ "sourcesContent": ["export const altResolutionTypes = {\n AltResolutionDataSource: Symbol.for(\"AltResolutionDataSource\"),\n AltResolutionContextLoader: Symbol.for(\"AltResolutionContextLoader\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAqB,CAChC,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,2BAA4B,OAAO,IAAI,4BAA4B,CACrE",
6
+ "names": ["altResolutionTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var m=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var c=(l,o,e,t)=>{for(var r=t>1?void 0:t?y(o,e):o,a=l.length-1,s;a>=0;a--)(s=l[a])&&(r=(t?s(o,e,r):s(r))||r);return t&&r&&m(o,e,r),r},n=(l,o)=>(e,t)=>o(e,t,l);import{inject as d,injectable as f}from"inversify";import{array as S,Codec as u,string as p}from"purify-ts";import{configTypes as C}from"../../../../config/di/configTypes";import{pkiTypes as A}from"../../../../modules/multichain/pki/di/pkiTypes";import{altResolutionTypes as R}from"../../../../modules/solana/alt-resolution/di/altResolutionTypes";import{ClearSignContextType as g}from"../../../../shared/model/ClearSignContext";import{loadChallengeBoundContexts as x}from"../../../../shared/utils/challengeBoundLoader";import{deviceModelIdCodec as I}from"../../../../shared/utils/deviceModelIdCodec";import{u8Codec as L}from"../../../../shared/utils/uIntCodec";const h=[g.SOLANA_ALT_RESOLUTION],v=u.interface({altAddress:p,entryIndex:L,challenge:p}),T=u.interface({deviceModelId:I,requests:S(v)});let i=class{constructor(o,e,t){this.dataSource=o;this.certificateLoader=e;this.logger=t("AltResolutionContextLoader")}logger;canHandle(o,e){return h.every(t=>e.includes(t))?T.decode(o).caseOf({Left:()=>!1,Right:({requests:t})=>t.length>0&&t.every(r=>r.altAddress.length>0&&r.challenge.length>0)}):!1}async load(o){return x({requests:o.requests,deviceModelId:o.deviceModelId,certificateLoader:this.certificateLoader,logger:this.logger,label:"ALT_RESOLUTION",fetch:e=>this.dataSource.getAltResolution(e),toContext:(e,t)=>{const r={descriptor:e.descriptor};return{type:g.SOLANA_ALT_RESOLUTION,payload:r,certificate:t}},describe:e=>({altAddress:e.altAddress,entryIndex:e.entryIndex})})}};i=c([f(),n(0,d(R.AltResolutionDataSource)),n(1,d(A.PkiCertificateLoader)),n(2,d(C.ContextModuleLoggerFactory))],i);export{i as AltResolutionContextLoader};
2
+ //# sourceMappingURL=AltResolutionContextLoader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.ts"],
4
+ "sourcesContent": ["import {\n type DeviceModelId,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { array, Codec, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/modules/multichain/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type AltResolutionDataSource } from \"@/modules/solana/alt-resolution/data/AltResolutionDataSource\";\nimport { altResolutionTypes } from \"@/modules/solana/alt-resolution/di/altResolutionTypes\";\nimport { type SolanaAltResolutionPayload } from \"@/modules/solana/model/SolanaPayloads\";\nimport { type ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { loadChallengeBoundContexts } from \"@/shared/utils/challengeBoundLoader\";\nimport { deviceModelIdCodec } from \"@/shared/utils/deviceModelIdCodec\";\nimport { u8Codec } from \"@/shared/utils/uIntCodec\";\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.SOLANA_ALT_RESOLUTION,\n];\n\nexport type SolanaAltResolutionRequest = {\n altAddress: string;\n entryIndex: number;\n challenge: string;\n};\n\nexport type SolanaAltResolutionContextInput = {\n deviceModelId: DeviceModelId;\n requests: SolanaAltResolutionRequest[];\n};\n\nconst altResolutionRequestCodec = Codec.interface({\n altAddress: string,\n entryIndex: u8Codec,\n challenge: string,\n});\n\nconst solanaAltResolutionInputCodec = Codec.interface({\n deviceModelId: deviceModelIdCodec,\n requests: array(altResolutionRequestCodec),\n});\n\n@injectable()\nexport class AltResolutionContextLoader\n implements ContextLoader<SolanaAltResolutionContextInput>\n{\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(altResolutionTypes.AltResolutionDataSource)\n private readonly dataSource: AltResolutionDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"AltResolutionContextLoader\");\n }\n\n public canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is SolanaAltResolutionContextInput {\n if (!SUPPORTED_TYPES.every((t) => expectedTypes.includes(t))) return false;\n return solanaAltResolutionInputCodec.decode(input).caseOf({\n Left: () => false,\n Right: ({ requests }) =>\n requests.length > 0 &&\n requests.every(\n (r) => r.altAddress.length > 0 && r.challenge.length > 0,\n ),\n });\n }\n\n public async load(\n input: SolanaAltResolutionContextInput,\n ): Promise<ClearSignContext[]> {\n return loadChallengeBoundContexts({\n requests: input.requests,\n deviceModelId: input.deviceModelId,\n certificateLoader: this.certificateLoader,\n logger: this.logger,\n label: \"ALT_RESOLUTION\",\n fetch: (request) => this.dataSource.getAltResolution(request),\n toContext: (value, certificate) => {\n const payload: SolanaAltResolutionPayload = {\n descriptor: value.descriptor,\n };\n return {\n type: ClearSignContextType.SOLANA_ALT_RESOLUTION,\n payload,\n certificate,\n };\n },\n describe: (request) => ({\n altAddress: request.altAddress,\n entryIndex: request.entryIndex,\n }),\n });\n }\n}\n"],
5
+ "mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,EAAO,SAAAC,EAAO,UAAAC,MAAc,YAErC,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,YAAAC,MAAgB,uCAGzB,OAAS,sBAAAC,MAA0B,wDAGnC,OAEE,wBAAAC,MACK,kCACP,OAAS,8BAAAC,MAAkC,sCAC3C,OAAS,sBAAAC,MAA0B,oCACnC,OAAS,WAAAC,MAAe,2BAExB,MAAMC,EAA0C,CAC9CC,EAAqB,qBACvB,EAaMC,EAA4BC,EAAM,UAAU,CAChD,WAAYC,EACZ,WAAYC,EACZ,UAAWD,CACb,CAAC,EAEKE,EAAgCH,EAAM,UAAU,CACpD,cAAeI,EACf,SAAUC,EAAMN,CAAyB,CAC3C,CAAC,EAGM,IAAMO,EAAN,KAEP,CAGE,YAEmBC,EAEAC,EAEjBC,EACA,CALiB,gBAAAF,EAEA,uBAAAC,EAIjB,KAAK,OAASC,EAAc,4BAA4B,CAC1D,CAXiB,OAaV,UACLC,EACAC,EAC0C,CAC1C,OAAKd,EAAgB,MAAO,GAAMc,EAAc,SAAS,CAAC,CAAC,EACpDR,EAA8B,OAAOO,CAAK,EAAE,OAAO,CACxD,KAAM,IAAM,GACZ,MAAO,CAAC,CAAE,SAAAE,CAAS,IACjBA,EAAS,OAAS,GAClBA,EAAS,MACN,GAAM,EAAE,WAAW,OAAS,GAAK,EAAE,UAAU,OAAS,CACzD,CACJ,CAAC,EARoE,EASvE,CAEA,MAAa,KACXF,EAC6B,CAC7B,OAAOG,EAA2B,CAChC,SAAUH,EAAM,SAChB,cAAeA,EAAM,cACrB,kBAAmB,KAAK,kBACxB,OAAQ,KAAK,OACb,MAAO,iBACP,MAAQI,GAAY,KAAK,WAAW,iBAAiBA,CAAO,EAC5D,UAAW,CAACC,EAAOC,IAAgB,CACjC,MAAMC,EAAsC,CAC1C,WAAYF,EAAM,UACpB,EACA,MAAO,CACL,KAAMjB,EAAqB,sBAC3B,QAAAmB,EACA,YAAAD,CACF,CACF,EACA,SAAWF,IAAa,CACtB,WAAYA,EAAQ,WACpB,WAAYA,EAAQ,UACtB,EACF,CAAC,CACH,CACF,EAzDaR,EAANY,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAmB,uBAAuB,GAEjDF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,GAEpCH,EAAA,EAAAC,EAAOG,EAAY,0BAA0B,IAVrClB",
6
+ "names": ["inject", "injectable", "array", "Codec", "string", "configTypes", "pkiTypes", "altResolutionTypes", "ClearSignContextType", "loadChallengeBoundContexts", "deviceModelIdCodec", "u8Codec", "SUPPORTED_TYPES", "ClearSignContextType", "altResolutionRequestCodec", "Codec", "string", "u8Codec", "solanaAltResolutionInputCodec", "deviceModelIdCodec", "array", "AltResolutionContextLoader", "dataSource", "certificateLoader", "loggerFactory", "input", "expectedTypes", "requests", "loadChallengeBoundContexts", "request", "value", "certificate", "payload", "__decorateClass", "injectable", "__decorateParam", "inject", "altResolutionTypes", "pkiTypes", "configTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as o}from"@ledgerhq/device-management-kit";import{Left as y,Right as l}from"purify-ts";import{ClearSignContextType as r}from"../../../../shared/model/ClearSignContext";import{AltResolutionContextLoader as p}from"./AltResolutionContextLoader";const u=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]}),A={keyUsageNumber:8,payload:new Uint8Array([1])},a="AltA1111111111111111111111111111111111111111",d="AltB2222222222222222222222222222222222222222";describe("AltResolutionContextLoader",()=>{let s,c;beforeEach(()=>{vi.restoreAllMocks(),s={getAltResolution:vi.fn()},c={loadCertificate:vi.fn().mockResolvedValue(A)}});const n=()=>new p(s,c,u);describe("canHandle",()=>{it("returns true when SOLANA_ALT_RESOLUTION is requested with valid requests",()=>{expect(n().canHandle({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:0,challenge:"c"}]},[r.SOLANA_ALT_RESOLUTION])).toBe(!0)}),it("returns false when SOLANA_ALT_RESOLUTION is not requested",()=>{expect(n().canHandle({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:0,challenge:"c"}]},[r.SOLANA_TOKEN])).toBe(!1)}),it("rejects out-of-range entryIndex",()=>{const e=n(),t=[r.SOLANA_ALT_RESOLUTION];expect(e.canHandle({requests:[{altAddress:a,entryIndex:-1,challenge:"c"}]},t)).toBe(!1),expect(e.canHandle({requests:[{altAddress:a,entryIndex:256,challenge:"c"}]},t)).toBe(!1),expect(e.canHandle({requests:[{altAddress:a,entryIndex:1.5,challenge:"c"}]},t)).toBe(!1)})}),describe("load",()=>{it("emits one SOLANA_ALT_RESOLUTION per request",async()=>{vi.spyOn(s,"getAltResolution").mockImplementation(async({altAddress:t,entryIndex:i})=>l({altAddress:t,entryIndex:i,descriptor:new Uint8Array([i]),keyId:"alt_key",keyUsage:"coin_meta"}));const e=await n().load({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:1,challenge:"c1"},{altAddress:d,entryIndex:7,challenge:"c2"}]});expect(e).toHaveLength(2),expect(e[0]).toMatchObject({type:r.SOLANA_ALT_RESOLUTION,payload:{descriptor:new Uint8Array([1])},certificate:A}),expect(e[1]).toMatchObject({type:r.SOLANA_ALT_RESOLUTION,payload:{descriptor:new Uint8Array([7])}})}),it("dedups certificate loads across requests sharing the same (keyId, keyUsage)",async()=>{vi.spyOn(s,"getAltResolution").mockImplementation(async({altAddress:e,entryIndex:t})=>l({altAddress:e,entryIndex:t,descriptor:new Uint8Array([t]),keyId:"alt_key",keyUsage:"coin_meta"})),await n().load({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:0,challenge:"c1"},{altAddress:a,entryIndex:1,challenge:"c2"},{altAddress:d,entryIndex:2,challenge:"c3"}]}),expect(c.loadCertificate).toHaveBeenCalledTimes(1)}),it("issues distinct cert loads when (keyId, keyUsage) differ",async()=>{vi.spyOn(s,"getAltResolution").mockImplementation(async({altAddress:e,entryIndex:t})=>l({altAddress:e,entryIndex:t,descriptor:new Uint8Array([t]),keyId:e===a?"alt_key_a":"alt_key_b",keyUsage:"coin_meta"})),await n().load({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:0,challenge:"c1"},{altAddress:d,entryIndex:1,challenge:"c2"}]}),expect(c.loadCertificate).toHaveBeenCalledTimes(2)}),it("emits an ERROR per failing request and keeps the others",async()=>{vi.spyOn(s,"getAltResolution").mockImplementation(async({altAddress:t})=>t===a?l({altAddress:t,entryIndex:0,descriptor:new Uint8Array([170]),keyId:"k",keyUsage:"u"}):y(new Error("upstream-500")));const e=await n().load({deviceModelId:o.NANO_X,requests:[{altAddress:a,entryIndex:0,challenge:"c1"},{altAddress:d,entryIndex:1,challenge:"c2"}]});expect(e[0]?.type).toBe(r.SOLANA_ALT_RESOLUTION),expect(e[1]?.type).toBe(r.ERROR)})})});
2
+ //# sourceMappingURL=AltResolutionContextLoader.test.js.map