@ledgerhq/device-signer-kit-solana 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +5 -1
  2. package/lib/cjs/api/SignerSolana.js.map +1 -1
  3. package/lib/cjs/api/SignerSolanaBuilder.js +1 -1
  4. package/lib/cjs/api/SignerSolanaBuilder.js.map +3 -3
  5. package/lib/cjs/api/SolanaTools.js +2 -0
  6. package/lib/cjs/api/SolanaTools.js.map +7 -0
  7. package/lib/cjs/api/SolanaToolsBuilder.js +2 -0
  8. package/lib/cjs/api/SolanaToolsBuilder.js.map +7 -0
  9. package/lib/cjs/api/app-binder/GenerateTransactionDeviceActionTypes.js +2 -0
  10. package/lib/cjs/api/app-binder/GenerateTransactionDeviceActionTypes.js.map +7 -0
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  12. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  13. package/lib/cjs/api/index.js +1 -1
  14. package/lib/cjs/api/index.js.map +3 -3
  15. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  16. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  17. package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
  18. package/lib/cjs/internal/DefaultSignerSolana.js.map +3 -3
  19. package/lib/cjs/internal/DefaultSignerSolana.test.js +1 -1
  20. package/lib/cjs/internal/DefaultSignerSolana.test.js.map +3 -3
  21. package/lib/cjs/internal/DefaultSolanaTools.js +2 -0
  22. package/lib/cjs/internal/DefaultSolanaTools.js.map +7 -0
  23. package/lib/cjs/internal/DefaultSolanaTools.test.js +2 -0
  24. package/lib/cjs/internal/DefaultSolanaTools.test.js.map +7 -0
  25. package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
  26. package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
  27. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
  28. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  29. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +2 -0
  30. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +7 -0
  31. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +2 -0
  32. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +7 -0
  33. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +2 -2
  34. package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.js +2 -0
  35. package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.js.map +7 -0
  36. package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js +2 -0
  37. package/lib/cjs/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js.map +7 -0
  38. package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.js +2 -0
  39. package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.js.map +7 -0
  40. package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js +2 -0
  41. package/lib/cjs/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js.map +7 -0
  42. package/lib/cjs/internal/app-binder/device-action/GenerateTransactionDeviceAction.js +2 -0
  43. package/lib/cjs/internal/app-binder/device-action/GenerateTransactionDeviceAction.js.map +7 -0
  44. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  45. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  48. package/lib/cjs/internal/app-binder/services/ApplicationChecker.js +2 -0
  49. package/lib/cjs/internal/app-binder/services/ApplicationChecker.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/services/ApplicationChecker.test.js +2 -0
  51. package/lib/cjs/internal/app-binder/services/ApplicationChecker.test.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.js +2 -0
  53. package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.js.map +7 -0
  54. package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.test.js +2 -0
  55. package/lib/cjs/internal/app-binder/services/GenerateSolanaTransaction.test.js.map +7 -0
  56. package/lib/cjs/internal/app-binder/services/TransactionInspector.js +4 -0
  57. package/lib/cjs/internal/app-binder/services/TransactionInspector.js.map +7 -0
  58. package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js +2 -0
  59. package/lib/cjs/internal/app-binder/services/TransactionInspector.test.js.map +7 -0
  60. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +2 -0
  61. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +7 -0
  62. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +2 -0
  63. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +7 -0
  64. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +2 -0
  65. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +7 -0
  66. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +2 -0
  67. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +7 -0
  68. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
  69. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
  72. package/lib/cjs/internal/di.js +1 -1
  73. package/lib/cjs/internal/di.js.map +3 -3
  74. package/lib/cjs/internal/externalTypes.js +1 -1
  75. package/lib/cjs/internal/externalTypes.js.map +2 -2
  76. package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
  77. package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
  78. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
  79. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  80. package/lib/cjs/internal/use-cases/di/useCasesTypes.js +1 -1
  81. package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +2 -2
  82. package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js +2 -0
  83. package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js.map +7 -0
  84. package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js +2 -0
  85. package/lib/cjs/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js.map +7 -0
  86. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  87. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  88. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  89. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +3 -3
  90. package/lib/cjs/package.json +9 -3
  91. package/lib/esm/api/SignerSolanaBuilder.js +1 -1
  92. package/lib/esm/api/SignerSolanaBuilder.js.map +3 -3
  93. package/lib/esm/api/SolanaTools.js +1 -0
  94. package/lib/esm/api/SolanaTools.js.map +7 -0
  95. package/lib/esm/api/SolanaToolsBuilder.js +2 -0
  96. package/lib/esm/api/SolanaToolsBuilder.js.map +7 -0
  97. package/lib/esm/api/app-binder/GenerateTransactionDeviceActionTypes.js +1 -0
  98. package/lib/esm/api/app-binder/GenerateTransactionDeviceActionTypes.js.map +7 -0
  99. package/lib/esm/api/index.js +1 -1
  100. package/lib/esm/api/index.js.map +3 -3
  101. package/lib/esm/internal/DefaultSignerSolana.js +1 -1
  102. package/lib/esm/internal/DefaultSignerSolana.js.map +3 -3
  103. package/lib/esm/internal/DefaultSignerSolana.test.js +1 -1
  104. package/lib/esm/internal/DefaultSignerSolana.test.js.map +3 -3
  105. package/lib/esm/internal/DefaultSolanaTools.js +2 -0
  106. package/lib/esm/internal/DefaultSolanaTools.js.map +7 -0
  107. package/lib/esm/internal/DefaultSolanaTools.test.js +2 -0
  108. package/lib/esm/internal/DefaultSolanaTools.test.js.map +7 -0
  109. package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
  110. package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
  111. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
  112. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  113. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +2 -0
  114. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +7 -0
  115. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +2 -0
  116. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +7 -0
  117. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +2 -2
  118. package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.js +2 -0
  119. package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.js.map +7 -0
  120. package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js +2 -0
  121. package/lib/esm/internal/app-binder/command/ProvideTLVDescriptorCommand.test.js.map +7 -0
  122. package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.js +2 -0
  123. package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.js.map +7 -0
  124. package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js +2 -0
  125. package/lib/esm/internal/app-binder/command/ProvideTrustedNamePKICommand.test.js.map +7 -0
  126. package/lib/esm/internal/app-binder/device-action/GenerateTransactionDeviceAction.js +2 -0
  127. package/lib/esm/internal/app-binder/device-action/GenerateTransactionDeviceAction.js.map +7 -0
  128. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  129. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  130. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  131. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  132. package/lib/esm/internal/app-binder/services/ApplicationChecker.js +2 -0
  133. package/lib/esm/internal/app-binder/services/ApplicationChecker.js.map +7 -0
  134. package/lib/esm/internal/app-binder/services/ApplicationChecker.test.js +2 -0
  135. package/lib/esm/internal/app-binder/services/ApplicationChecker.test.js.map +7 -0
  136. package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.js +2 -0
  137. package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.js.map +7 -0
  138. package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.test.js +2 -0
  139. package/lib/esm/internal/app-binder/services/GenerateSolanaTransaction.test.js.map +7 -0
  140. package/lib/esm/internal/app-binder/services/TransactionInspector.js +4 -0
  141. package/lib/esm/internal/app-binder/services/TransactionInspector.js.map +7 -0
  142. package/lib/esm/internal/app-binder/services/TransactionInspector.test.js +2 -0
  143. package/lib/esm/internal/app-binder/services/TransactionInspector.test.js.map +7 -0
  144. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +2 -0
  145. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +7 -0
  146. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +2 -0
  147. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +7 -0
  148. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +2 -0
  149. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +7 -0
  150. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +2 -0
  151. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +7 -0
  152. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
  153. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  154. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  155. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
  156. package/lib/esm/internal/di.js +1 -1
  157. package/lib/esm/internal/di.js.map +3 -3
  158. package/lib/esm/internal/externalTypes.js +1 -1
  159. package/lib/esm/internal/externalTypes.js.map +2 -2
  160. package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
  161. package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
  162. package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
  163. package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  164. package/lib/esm/internal/use-cases/di/useCasesTypes.js +1 -1
  165. package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +2 -2
  166. package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js +2 -0
  167. package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.js.map +7 -0
  168. package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js +2 -0
  169. package/lib/esm/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.js.map +7 -0
  170. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +1 -1
  171. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +2 -2
  172. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +1 -1
  173. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +3 -3
  174. package/lib/esm/package.json +9 -3
  175. package/lib/types/api/SignerSolana.d.ts.map +1 -1
  176. package/lib/types/api/SignerSolanaBuilder.d.ts +12 -1
  177. package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -1
  178. package/lib/types/api/SolanaTools.d.ts +11 -0
  179. package/lib/types/api/SolanaTools.d.ts.map +1 -0
  180. package/lib/types/api/SolanaToolsBuilder.d.ts +39 -0
  181. package/lib/types/api/SolanaToolsBuilder.d.ts.map +1 -0
  182. package/lib/types/api/app-binder/GenerateTransactionDeviceActionTypes.d.ts +24 -0
  183. package/lib/types/api/app-binder/GenerateTransactionDeviceActionTypes.d.ts.map +1 -0
  184. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +9 -1
  185. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  186. package/lib/types/api/index.d.ts +3 -0
  187. package/lib/types/api/index.d.ts.map +1 -1
  188. package/lib/types/api/model/TransactionOptions.d.ts +5 -1
  189. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  190. package/lib/types/internal/DefaultSignerSolana.d.ts +4 -3
  191. package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
  192. package/lib/types/internal/DefaultSolanaTools.d.ts +20 -0
  193. package/lib/types/internal/DefaultSolanaTools.d.ts.map +1 -0
  194. package/lib/types/internal/DefaultSolanaTools.test.d.ts +2 -0
  195. package/lib/types/internal/DefaultSolanaTools.test.d.ts.map +1 -0
  196. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +8 -1
  197. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
  198. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +11 -0
  199. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -0
  200. package/lib/types/internal/app-binder/command/GetChallengeCommand.test.d.ts +2 -0
  201. package/lib/types/internal/app-binder/command/GetChallengeCommand.test.d.ts.map +1 -0
  202. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +2 -3
  203. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -1
  204. package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.d.ts +13 -0
  205. package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.d.ts.map +1 -0
  206. package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.test.d.ts +2 -0
  207. package/lib/types/internal/app-binder/command/ProvideTLVDescriptorCommand.test.d.ts.map +1 -0
  208. package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.d.ts +13 -0
  209. package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.d.ts.map +1 -0
  210. package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.test.d.ts +2 -0
  211. package/lib/types/internal/app-binder/command/ProvideTrustedNamePKICommand.test.d.ts.map +1 -0
  212. package/lib/types/internal/app-binder/device-action/GenerateTransactionDeviceAction.d.ts +23 -0
  213. package/lib/types/internal/app-binder/device-action/GenerateTransactionDeviceAction.d.ts.map +1 -0
  214. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +15 -1
  215. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
  216. package/lib/types/internal/app-binder/services/ApplicationChecker.d.ts +13 -0
  217. package/lib/types/internal/app-binder/services/ApplicationChecker.d.ts.map +1 -0
  218. package/lib/types/internal/app-binder/services/ApplicationChecker.test.d.ts +2 -0
  219. package/lib/types/internal/app-binder/services/ApplicationChecker.test.d.ts.map +1 -0
  220. package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.d.ts +14 -0
  221. package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.d.ts.map +1 -0
  222. package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.test.d.ts +2 -0
  223. package/lib/types/internal/app-binder/services/GenerateSolanaTransaction.test.d.ts.map +1 -0
  224. package/lib/types/internal/app-binder/services/TransactionInspector.d.ts +21 -0
  225. package/lib/types/internal/app-binder/services/TransactionInspector.d.ts.map +1 -0
  226. package/lib/types/internal/app-binder/services/TransactionInspector.test.d.ts +2 -0
  227. package/lib/types/internal/app-binder/services/TransactionInspector.test.d.ts.map +1 -0
  228. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +24 -0
  229. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -0
  230. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +2 -0
  231. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +1 -0
  232. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +15 -0
  233. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -0
  234. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +2 -0
  235. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +1 -0
  236. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +7 -0
  237. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
  238. package/lib/types/internal/di.d.ts +3 -1
  239. package/lib/types/internal/di.d.ts.map +1 -1
  240. package/lib/types/internal/externalTypes.d.ts +1 -0
  241. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  242. package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
  243. package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +1 -0
  244. package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -1
  245. package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.d.ts +10 -0
  246. package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.d.ts.map +1 -0
  247. package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.d.ts +2 -0
  248. package/lib/types/internal/use-cases/generateTransaction/GenerateTransactionUseCase.test.d.ts.map +1 -0
  249. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts +3 -2
  250. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts.map +1 -1
  251. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  252. package/package.json +14 -8
@@ -1,2 +1,2 @@
1
- "use strict";var e=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var l=(r,p)=>{for(var i in p)e(r,i,{get:p[i],enumerable:!0})},u=(r,p,i,t)=>{if(p&&typeof p=="object"||typeof p=="function")for(let n of d(p))!B.call(r,n)&&n!==i&&e(r,n,{get:()=>p[n],enumerable:!(t=s(p,n))||t.enumerable});return r};var O=r=>u(e({},"__esModule",{value:!0}),r),f=(r,p,i,t)=>{for(var n=t>1?void 0:t?s(p,i):p,m=r.length-1,c;m>=0;m--)(c=r[m])&&(n=(t?c(p,i,n):c(n))||n);return t&&n&&e(p,i,n),n},A=(r,p)=>(i,t)=>p(i,t,r);var y={};l(y,{SignTransactionUseCase:()=>o});module.exports=O(y);var a=require("inversify"),T=require("../../app-binder/di/appBinderTypes");let o=class{constructor(p){this.appBinder=p}execute(p,i,t){return this.appBinder.signTransaction({derivationPath:p,transaction:i,skipOpenApp:t?.skipOpenApp??!1})}};o=f([(0,a.injectable)(),A(0,(0,a.inject)(T.appBinderTypes.AppBinder))],o);0&&(module.exports={SignTransactionUseCase});
1
+ "use strict";var t=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var u=(r,p)=>{for(var i in p)t(r,i,{get:p[i],enumerable:!0})},T=(r,p,i,e)=>{if(p&&typeof p=="object"||typeof p=="function")for(let n of l(p))!B.call(r,n)&&n!==i&&t(r,n,{get:()=>p[n],enumerable:!(e=A(p,n))||e.enumerable});return r};var k=r=>T(t({},"__esModule",{value:!0}),r),s=(r,p,i,e)=>{for(var n=e>1?void 0:e?A(p,i):p,m=r.length-1,c;m>=0;m--)(c=r[m])&&(n=(e?c(p,i,n):c(n))||n);return e&&n&&t(p,i,n),n},d=(r,p)=>(i,e)=>p(i,e,r);var y={};u(y,{SignTransactionUseCase:()=>o});module.exports=k(y);var a=require("inversify"),f=require("../../app-binder/di/appBinderTypes");let o=class{constructor(p){this.appBinder=p}execute(p,i,e){return this.appBinder.signTransaction({derivationPath:p,transaction:i,skipOpenApp:e?.skipOpenApp??!1})}};o=s([(0,a.injectable)(),d(0,(0,a.inject)(f.appBinderTypes.AppBinder))],o);0&&(module.exports={SignTransactionUseCase});
2
2
  //# sourceMappingURL=SignTransactionUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/transaction/SignTransactionUseCase.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class SignTransactionUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(\n derivationPath: string,\n transaction: Transaction,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this.appBinder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAKnCC,EAA+B,kDAIxB,IAAMC,EAAN,KAA6B,CAClC,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,QACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,UAAU,gBAAgB,CACpC,eAAAF,EACA,YAAAC,EACA,YAAaC,GAAS,aAAe,EACvC,CAAC,CACH,CACF,EAhBaJ,EAANK,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBN",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class SignTransactionUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder) private appBinder: SolanaAppBinder,\n ) {}\n\n execute(\n derivationPath: string,\n transaction: Transaction,\n options?: {\n skipOpenApp?: boolean;\n },\n ): SignTransactionDAReturnType {\n return this.appBinder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAA+B,kDAIxB,IAAMC,EAAN,KAA6B,CAClC,YAC4CC,EAC1C,CAD0C,eAAAA,CACzC,CAEH,QACEC,EACAC,EACAC,EAG6B,CAC7B,OAAO,KAAK,UAAU,gBAAgB,CACpC,eAAAF,EACA,YAAAC,EACA,YAAaC,GAAS,aAAe,EACvC,CAAC,CACH,CACF,EAlBaJ,EAANK,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBN",
6
6
  "names": ["SignTransactionUseCase_exports", "__export", "SignTransactionUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "SignTransactionUseCase", "appBinder", "derivationPath", "transaction", "options", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=require("./SignTransactionUseCase");describe("GetAppConfigurationUseCase",()=>{const e=vi.fn(),t={signTransaction:e};let n;beforeEach(()=>{vi.clearAllMocks(),n=new a.SignTransactionUseCase(t)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(new Uint8Array([66]));const i=n.execute("44'/501'/0'/0'",new Uint8Array([1,2,3,4]));expect(e).toHaveBeenCalledWith({derivationPath:"44'/501'/0'/0'",transaction:new Uint8Array([1,2,3,4]),skipOpenApp:!1}),expect(i).toEqual(new Uint8Array([66]))})});
1
+ "use strict";var s=require("./SignTransactionUseCase");describe("GetAppConfigurationUseCase",()=>{const e=vi.fn(),i={signTransaction:e};let t;beforeEach(()=>{vi.clearAllMocks(),t=new s.SignTransactionUseCase(i)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(new Uint8Array([66]));const n=t.execute("44'/501'/0'/0'",new Uint8Array([1,2,3,4]));expect(e).toHaveBeenCalledWith({derivationPath:"44'/501'/0'/0'",transaction:new Uint8Array([1,2,3,4]),skipOpenApp:!1,options:void 0}),expect(n).toEqual(new Uint8Array([66]))}),it("should forward skipOpenApp and TransactionOptions to appBinder.signTransaction",()=>{const n="44'/501'/1'/2'",a=new Uint8Array([170,187]),o={skipOpenApp:!0,tokenAddress:"someToken",createATA:{address:"someAddress",mintAddress:"mint"}};t.execute(n,a,o),expect(e).toHaveBeenCalledWith({derivationPath:n,transaction:a,skipOpenApp:!0})})});
2
2
  //# sourceMappingURL=SignTransactionUseCase.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/transaction/SignTransactionUseCase.test.ts"],
4
- "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { SignTransactionUseCase } from \"./SignTransactionUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const signTransactionMock = vi.fn();\n const appBinderMock = {\n signTransaction: signTransactionMock,\n } as unknown as SolanaAppBinder;\n let useCase: SignTransactionUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new SignTransactionUseCase(appBinderMock);\n });\n\n it(\"should return the config from the appBinder's getAppConfiguration method\", () => {\n // GIVEN\n signTransactionMock.mockReturnValue(new Uint8Array([0x042]));\n\n // WHEN\n const result = useCase.execute(\n \"44'/501'/0'/0'\",\n new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n );\n\n // THEN\n expect(signTransactionMock).toHaveBeenCalledWith({\n derivationPath: \"44'/501'/0'/0'\",\n transaction: new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n skipOpenApp: false,\n });\n expect(result).toEqual(new Uint8Array([0x042]));\n });\n});\n"],
5
- "mappings": "aAEA,IAAAA,EAAuC,oCAEvC,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAsB,GAAG,GAAG,EAC5BC,EAAgB,CACpB,gBAAiBD,CACnB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,yBAAuBD,CAAa,CACpD,CAAC,EAED,GAAG,2EAA4E,IAAM,CAEnFD,EAAoB,gBAAgB,IAAI,WAAW,CAAC,EAAK,CAAC,CAAC,EAG3D,MAAMG,EAASD,EAAQ,QACrB,iBACA,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,CACzC,EAGA,OAAOF,CAAmB,EAAE,qBAAqB,CAC/C,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACpD,YAAa,EACf,CAAC,EACD,OAAOG,CAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,EAAK,CAAC,CAAC,CAChD,CAAC,CACH,CAAC",
6
- "names": ["import_SignTransactionUseCase", "signTransactionMock", "appBinderMock", "useCase", "result"]
4
+ "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { SignTransactionUseCase } from \"./SignTransactionUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const signTransactionMock = vi.fn();\n const appBinderMock = {\n signTransaction: signTransactionMock,\n } as unknown as SolanaAppBinder;\n let useCase: SignTransactionUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new SignTransactionUseCase(appBinderMock);\n });\n\n it(\"should return the config from the appBinder's getAppConfiguration method\", () => {\n // GIVEN\n signTransactionMock.mockReturnValue(new Uint8Array([0x042]));\n\n // WHEN\n const result = useCase.execute(\n \"44'/501'/0'/0'\",\n new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n );\n\n // THEN\n expect(signTransactionMock).toHaveBeenCalledWith({\n derivationPath: \"44'/501'/0'/0'\",\n transaction: new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n skipOpenApp: false,\n options: undefined,\n });\n expect(result).toEqual(new Uint8Array([0x042]));\n });\n\n it(\"should forward skipOpenApp and TransactionOptions to appBinder.signTransaction\", () => {\n // GIVEN\n const derivationPath = \"44'/501'/1'/2'\";\n const tx = new Uint8Array([0xaa, 0xbb]);\n const opts = {\n skipOpenApp: true,\n tokenAddress: \"someToken\",\n createATA: { address: \"someAddress\", mintAddress: \"mint\" },\n };\n\n // WHEN\n useCase.execute(derivationPath, tx, opts);\n\n // THEN\n expect(signTransactionMock).toHaveBeenCalledWith({\n derivationPath,\n transaction: tx,\n skipOpenApp: true,\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAuC,oCAEvC,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAsB,GAAG,GAAG,EAC5BC,EAAgB,CACpB,gBAAiBD,CACnB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,yBAAuBD,CAAa,CACpD,CAAC,EAED,GAAG,2EAA4E,IAAM,CAEnFD,EAAoB,gBAAgB,IAAI,WAAW,CAAC,EAAK,CAAC,CAAC,EAG3D,MAAMG,EAASD,EAAQ,QACrB,iBACA,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,CACzC,EAGA,OAAOF,CAAmB,EAAE,qBAAqB,CAC/C,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EACpD,YAAa,GACb,QAAS,MACX,CAAC,EACD,OAAOG,CAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,EAAK,CAAC,CAAC,CAChD,CAAC,EAED,GAAG,iFAAkF,IAAM,CAEzF,MAAMC,EAAiB,iBACjBC,EAAK,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EAChCC,EAAO,CACX,YAAa,GACb,aAAc,YACd,UAAW,CAAE,QAAS,cAAe,YAAa,MAAO,CAC3D,EAGAJ,EAAQ,QAAQE,EAAgBC,EAAIC,CAAI,EAGxC,OAAON,CAAmB,EAAE,qBAAqB,CAC/C,eAAAI,EACA,YAAaC,EACb,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_SignTransactionUseCase", "signTransactionMock", "appBinderMock", "useCase", "result", "derivationPath", "tx", "opts"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/device-signer-kit-solana",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
@@ -35,20 +35,26 @@
35
35
  "test:coverage": "vitest run --coverage"
36
36
  },
37
37
  "dependencies": {
38
- "@ledgerhq/signer-utils": "^1.0.5",
38
+ "@ledgerhq/context-module": "workspace:*",
39
+ "@ledgerhq/signer-utils": "workspace:*",
40
+ "@solana/spl-token": "catalog:",
41
+ "@solana/web3.js": "catalog:",
39
42
  "bs58": "catalog:",
43
+ "buffer": "catalog:",
40
44
  "inversify": "catalog:",
41
45
  "purify-ts": "catalog:",
42
46
  "reflect-metadata": "catalog:",
47
+ "semver": "catalog:",
43
48
  "xstate": "catalog:"
44
49
  },
45
50
  "devDependencies": {
46
51
  "@ledgerhq/device-management-kit": "workspace:*",
47
- "@ledgerhq/ldmk-tool": "workspace:*",
48
52
  "@ledgerhq/eslint-config-dsdk": "workspace:*",
53
+ "@ledgerhq/ldmk-tool": "workspace:*",
49
54
  "@ledgerhq/prettier-config-dsdk": "workspace:*",
50
55
  "@ledgerhq/tsconfig-dsdk": "workspace:*",
51
56
  "@ledgerhq/vitest-config-dmk": "workspace:*",
57
+ "@types/semver": "catalog:",
52
58
  "rxjs": "catalog:",
53
59
  "ts-node": "catalog:"
54
60
  },
@@ -1,2 +1,2 @@
1
- import{DefaultSignerSolana as s}from"../internal/DefaultSignerSolana";class r{_dmk;_sessionId;constructor({dmk:e,sessionId:i}){this._dmk=e,this._sessionId=i}build(){return new s({dmk:this._dmk,sessionId:this._sessionId})}}export{r as SignerSolanaBuilder};
1
+ import{ContextModuleBuilder as o}from"@ledgerhq/context-module";import{DefaultSignerSolana as n}from"../internal/DefaultSignerSolana";class u{_dmk;_sessionId;_customContextModule;_originToken;constructor({dmk:e,sessionId:t,originToken:i}){this._dmk=e,this._sessionId=t,this._originToken=i}withContextModule(e){return this._customContextModule=e,this}build(){return new n({dmk:this._dmk,sessionId:this._sessionId,contextModule:this._customContextModule??new o({originToken:this._originToken}).build()})}}export{u as SignerSolanaBuilder};
2
2
  //# sourceMappingURL=SignerSolanaBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/SignerSolanaBuilder.ts"],
4
- "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n\n constructor({ dmk, sessionId }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n });\n }\n}\n"],
5
- "mappings": "AAKA,OAAS,uBAAAA,MAA2B,gCAgB7B,MAAMC,CAAoB,CACvB,KACA,WAER,YAAY,CAAE,IAAAC,EAAK,UAAAC,CAAU,EAAuC,CAClE,KAAK,KAAOD,EACZ,KAAK,WAAaC,CACpB,CAOO,OAAQ,CACb,OAAO,IAAIH,EAAoB,CAC7B,IAAK,KAAK,KACV,UAAW,KAAK,UAClB,CAAC,CACH,CACF",
6
- "names": ["DefaultSignerSolana", "SignerSolanaBuilder", "dmk", "sessionId"]
4
+ "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({ originToken: this._originToken }).build(),\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,wBAAAA,MACK,2BAMP,OAAS,uBAAAC,MAA2B,gCAiB7B,MAAMC,CAAoB,CACvB,KACA,WACA,qBACA,aAER,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,YAAAC,CACF,EAAuC,CACrC,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,CACtB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,OAAO,IAAIL,EAAoB,CAC7B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,cACE,KAAK,sBACL,IAAID,EAAqB,CAAE,YAAa,KAAK,YAAa,CAAC,EAAE,MAAM,CACvE,CAAC,CACH,CACF",
6
+ "names": ["ContextModuleBuilder", "DefaultSignerSolana", "SignerSolanaBuilder", "dmk", "sessionId", "originToken", "contextModule"]
7
7
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SolanaTools.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContextModuleBuilder as i}from"@ledgerhq/context-module";import{DefaultSolanaTools as n}from"../internal/DefaultSolanaTools";class u{_dmk;_sessionId;_customContextModule;_originToken;constructor({dmk:e,sessionId:o,originToken:t}){this._dmk=e,this._sessionId=o,this._originToken=t}withContextModule(e){return this._customContextModule=e,this}build(){return new n({dmk:this._dmk,sessionId:this._sessionId,contextModule:this._customContextModule??new i({originToken:this._originToken}).build()})}}export{u as SolanaToolsBuilder};
2
+ //# sourceMappingURL=SolanaToolsBuilder.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/api/SolanaToolsBuilder.ts"],
4
+ "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSolanaTools } from \"@internal/DefaultSolanaTools\";\n\ntype SolanaToolsBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n};\n\n/**\n * Builder for the `SolanaTools` class.\n *\n * @example\n * ```\n * const solanaTools = new SolanaToolsBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SolanaToolsBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n }: SolanaToolsBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana tools instance\n *\n * @returns the solana tools instance\n */\n public build() {\n return new DefaultSolanaTools({\n dmk: this._dmk,\n sessionId: this._sessionId,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({ originToken: this._originToken }).build(),\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,wBAAAA,MACK,2BAMP,OAAS,sBAAAC,MAA0B,+BAiB5B,MAAMC,CAAmB,CACtB,KACA,WACA,qBACA,aAER,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,YAAAC,CACF,EAAsC,CACpC,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,CACtB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,OAAO,IAAIL,EAAmB,CAC5B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,cACE,KAAK,sBACL,IAAID,EAAqB,CAAE,YAAa,KAAK,YAAa,CAAC,EAAE,MAAM,CACvE,CAAC,CACH,CACF",
6
+ "names": ["ContextModuleBuilder", "DefaultSolanaTools", "SolanaToolsBuilder", "dmk", "sessionId", "originToken", "contextModule"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=GenerateTransactionDeviceActionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,2 +1,2 @@
1
- import{SignerSolanaBuilder as r}from"./SignerSolanaBuilder";export{r as SignerSolanaBuilder};
1
+ import{SignerSolanaBuilder as t}from"./SignerSolanaBuilder";import{SolanaToolsBuilder as a}from"./SolanaToolsBuilder";export{t as SignerSolanaBuilder,a as SolanaToolsBuilder};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/index.ts"],
4
- "sourcesContent": ["export type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport type {\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAOutput,\n SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport type { Signature } from \"@api/model/Signature\";\nexport type { Transaction } from \"@api/model/Transaction\";\nexport type { TransactionOptions } from \"@api/model/TransactionOptions\";\nexport type { SignerSolana } from \"@api/SignerSolana\";\nexport { SignerSolanaBuilder } from \"@api/SignerSolanaBuilder\";\n"],
5
- "mappings": "AA0BA,OAAS,uBAAAA,MAA2B",
6
- "names": ["SignerSolanaBuilder"]
4
+ "sourcesContent": ["export type {\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue,\n GenerateTransactionDAOutput,\n GenerateTransactionDAReturnType,\n} from \"@api/app-binder/GenerateTransactionDeviceActionTypes\";\nexport type {\n GetAddressDAError,\n GetAddressDAIntermediateValue,\n GetAddressDAOutput,\n GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport type {\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue,\n GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport type {\n SignMessageDAError,\n SignMessageDAIntermediateValue,\n SignMessageDAOutput,\n} from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport type {\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAOutput,\n SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport type { Signature } from \"@api/model/Signature\";\nexport type { Transaction } from \"@api/model/Transaction\";\nexport type { TransactionOptions } from \"@api/model/TransactionOptions\";\nexport type { SignerSolana } from \"@api/SignerSolana\";\nexport { SignerSolanaBuilder } from \"@api/SignerSolanaBuilder\";\nexport type { SolanaTools } from \"@api/SolanaTools\";\nexport { SolanaToolsBuilder } from \"@api/SolanaToolsBuilder\";\n"],
5
+ "mappings": "AAgCA,OAAS,uBAAAA,MAA2B,2BAEpC,OAAS,sBAAAC,MAA0B",
6
+ "names": ["SignerSolanaBuilder", "SolanaToolsBuilder"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useCasesTypes as n}from"./use-cases/di/useCasesTypes";import{makeContainer as s}from"./di";class p{_container;constructor({dmk:e,sessionId:t}){this._container=s({dmk:e,sessionId:t})}signTransaction(e,t,r){return this._container.get(n.SignTransactionUseCase).execute(e,t,r)}signMessage(e,t,r){return this._container.get(n.SignMessageUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(n.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(n.GetAppConfigurationUseCase).execute()}}export{p as DefaultSignerSolana};
1
+ import{useCasesTypes as n}from"./use-cases/di/useCasesTypes";import{makeContainer as s}from"./di";class p{_container;constructor({dmk:e,sessionId:t,contextModule:r}){this._container=s({dmk:e,sessionId:t,contextModule:r})}signTransaction(e,t){return this._container.get(n.SignTransactionUseCase).execute(e,t)}signMessage(e,t,r){return this._container.get(n.SignMessageUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(n.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(n.GetAppConfigurationUseCase).execute()}}export{p as DefaultSignerSolana};
2
2
  //# sourceMappingURL=DefaultSignerSolana.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/DefaultSignerSolana.ts"],
4
- "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signMessage(\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(useCasesTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
5
- "mappings": "AAkBA,OAAS,iBAAAA,MAAqB,+BAG9B,OAAS,iBAAAC,MAAqB,OAOvB,MAAMC,CAA4C,CAC/C,WAER,YAAY,CAAE,IAAAC,EAAK,UAAAC,CAAU,EAAuC,CAClE,KAAK,WAAaH,EAAc,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,CACpD,CAEA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4BP,EAAc,sBAAsB,EAChE,QAAQK,EAAgBC,EAAaC,CAAO,CACjD,CAEA,YACEF,EACAG,EACAD,EACyB,CACzB,OAAO,KAAK,WACT,IAAwBP,EAAc,kBAAkB,EACxD,QAAQK,EAAgBG,EAASD,CAAO,CAC7C,CAEA,WACEF,EACAE,EACwB,CACxB,OAAO,KAAK,WACT,IAAuBP,EAAc,iBAAiB,EACtD,QAAQK,EAAgBE,CAAO,CACpC,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgCP,EAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
6
- "names": ["useCasesTypes", "makeContainer", "DefaultSignerSolana", "dmk", "sessionId", "derivationPath", "transaction", "options", "message"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId, contextModule });\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction);\n }\n\n signMessage(\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(useCasesTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
5
+ "mappings": "AAkBA,OAAS,iBAAAA,MAAqB,+BAG9B,OAAS,iBAAAC,MAAqB,OAQvB,MAAMC,CAA4C,CAC/C,WAER,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,cAAAC,CACF,EAAuC,CACrC,KAAK,WAAaJ,EAAc,CAAE,IAAAE,EAAK,UAAAC,EAAW,cAAAC,CAAc,CAAC,CACnE,CAEA,gBACEC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4BP,EAAc,sBAAsB,EAChE,QAAQM,EAAgBC,CAAW,CACxC,CAEA,YACED,EACAE,EACAC,EACyB,CACzB,OAAO,KAAK,WACT,IAAwBT,EAAc,kBAAkB,EACxD,QAAQM,EAAgBE,EAASC,CAAO,CAC7C,CAEA,WACEH,EACAG,EACwB,CACxB,OAAO,KAAK,WACT,IAAuBT,EAAc,iBAAiB,EACtD,QAAQM,EAAgBG,CAAO,CACpC,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgCT,EAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
6
+ "names": ["useCasesTypes", "makeContainer", "DefaultSignerSolana", "dmk", "sessionId", "contextModule", "derivationPath", "transaction", "message", "options"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DefaultSignerSolana as i}from"./DefaultSignerSolana";describe("DefaultSignerSolana",()=>{it("should be defined",()=>{const e=new i({dmk:{},sessionId:{}});expect(e).toBeDefined()}),it("should call getAddress",()=>{const e={executeDeviceAction:vi.fn()},n={};new i({dmk:e,sessionId:n}).getAddress("derivationPath",{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signTransaction",()=>{const e={executeDeviceAction:vi.fn()},n={};new i({dmk:e,sessionId:n}).signTransaction("derivationPath",new Uint8Array,{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signMessage",()=>{const e={executeDeviceAction:vi.fn()},n={};new i({dmk:e,sessionId:n}).signMessage("44'/501'/0'/0'","Hello world"),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call getAppConfiguration",()=>{const e={executeDeviceAction:vi.fn()},n={};new i({dmk:e,sessionId:n}).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalled()})});
1
+ import{vi as s}from"vitest";import{DefaultSignerSolana as o}from"./DefaultSignerSolana";describe("DefaultSignerSolana",()=>{const t={};it("should be defined",()=>{const e=new o({dmk:{},sessionId:{},contextModule:t});expect(e).toBeDefined()}),it("should call getAddress",()=>{const e={executeDeviceAction:s.fn()},n={};new o({dmk:e,sessionId:n,contextModule:t}).getAddress("derivationPath",{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signTransaction",()=>{const e={executeDeviceAction:s.fn()},n={};new o({dmk:e,sessionId:n,contextModule:t}).signTransaction("derivationPath",new Uint8Array),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signMessage",()=>{const e={executeDeviceAction:s.fn()},n={};new o({dmk:e,sessionId:n,contextModule:t}).signMessage("44'/501'/0'/0'","Hello world"),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call getAppConfiguration",()=>{const e={executeDeviceAction:s.fn()},n={};new o({dmk:e,sessionId:n,contextModule:t}).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalled()})});
2
2
  //# sourceMappingURL=DefaultSignerSolana.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/DefaultSignerSolana.test.ts"],
4
- "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"./DefaultSignerSolana\";\n\ndescribe(\"DefaultSignerSolana\", () => {\n it(\"should be defined\", () => {\n const signer = new DefaultSignerSolana({\n dmk: {} as DeviceManagementKit,\n sessionId: {} as DeviceSessionId,\n });\n expect(signer).toBeDefined();\n });\n\n it(\"should call getAddress\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({ dmk, sessionId });\n signer.getAddress(\"derivationPath\", {});\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call signTransaction\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({ dmk, sessionId });\n signer.signTransaction(\"derivationPath\", new Uint8Array(), {});\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call signMessage\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({ dmk, sessionId });\n signer.signMessage(\"44'/501'/0'/0'\", \"Hello world\");\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call getAppConfiguration\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({ dmk, sessionId });\n signer.getAppConfiguration();\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n});\n"],
5
- "mappings": "AAKA,OAAS,uBAAAA,MAA2B,wBAEpC,SAAS,sBAAuB,IAAM,CACpC,GAAG,oBAAqB,IAAM,CAC5B,MAAMC,EAAS,IAAID,EAAoB,CACrC,IAAK,CAAC,EACN,UAAW,CAAC,CACd,CAAC,EACD,OAAOC,CAAM,EAAE,YAAY,CAC7B,CAAC,EAED,GAAG,yBAA0B,IAAM,CACjC,MAAMC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACMC,EAAY,CAAC,EACJ,IAAIH,EAAoB,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,EAClD,WAAW,iBAAkB,CAAC,CAAC,EACtC,OAAOD,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,MAAMA,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACMC,EAAY,CAAC,EACJ,IAAIH,EAAoB,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,EAClD,gBAAgB,iBAAkB,IAAI,WAAc,CAAC,CAAC,EAC7D,OAAOD,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,0BAA2B,IAAM,CAClC,MAAMA,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACMC,EAAY,CAAC,EACJ,IAAIH,EAAoB,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,EAClD,YAAY,iBAAkB,aAAa,EAClD,OAAOD,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,MAAMA,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACMC,EAAY,CAAC,EACJ,IAAIH,EAAoB,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,EAClD,oBAAoB,EAC3B,OAAOD,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,CACH,CAAC",
6
- "names": ["DefaultSignerSolana", "signer", "dmk", "sessionId"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { vi } from \"vitest\";\n\nimport { DefaultSignerSolana } from \"./DefaultSignerSolana\";\n\ndescribe(\"DefaultSignerSolana\", () => {\n const contextModuleStub: ContextModule = {} as ContextModule;\n\n it(\"should be defined\", () => {\n const signer = new DefaultSignerSolana({\n dmk: {} as DeviceManagementKit,\n sessionId: {} as DeviceSessionId,\n contextModule: contextModuleStub,\n });\n expect(signer).toBeDefined();\n });\n\n it(\"should call getAddress\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n signer.getAddress(\"derivationPath\", {});\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call signTransaction\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n signer.signTransaction(\"derivationPath\", new Uint8Array());\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call signMessage\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n signer.signMessage(\"44'/501'/0'/0'\", \"Hello world\");\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call getAppConfiguration\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const signer = new DefaultSignerSolana({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n signer.getAppConfiguration();\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n});\n"],
5
+ "mappings": "AAKA,OAAS,MAAAA,MAAU,SAEnB,OAAS,uBAAAC,MAA2B,wBAEpC,SAAS,sBAAuB,IAAM,CACpC,MAAMC,EAAmC,CAAC,EAE1C,GAAG,oBAAqB,IAAM,CAC5B,MAAMC,EAAS,IAAIF,EAAoB,CACrC,IAAK,CAAC,EACN,UAAW,CAAC,EACZ,cAAeC,CACjB,CAAC,EACD,OAAOC,CAAM,EAAE,YAAY,CAC7B,CAAC,EAED,GAAG,yBAA0B,IAAM,CACjC,MAAMC,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACJ,IAAIJ,EAAoB,CACrC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACM,WAAW,iBAAkB,CAAC,CAAC,EACtC,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,MAAMA,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACJ,IAAIJ,EAAoB,CACrC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACM,gBAAgB,iBAAkB,IAAI,UAAY,EACzD,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,0BAA2B,IAAM,CAClC,MAAMA,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACJ,IAAIJ,EAAoB,CACrC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACM,YAAY,iBAAkB,aAAa,EAClD,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,MAAMA,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACJ,IAAIJ,EAAoB,CACrC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACM,oBAAoB,EAC3B,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,CACH,CAAC",
6
+ "names": ["vi", "DefaultSignerSolana", "contextModuleStub", "signer", "dmk", "sessionId"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{useCasesTypes as o}from"./use-cases/di/useCasesTypes";import{makeContainer as n}from"./di";class p{_container;constructor({dmk:e,sessionId:t,contextModule:r}){this._container=n({dmk:e,sessionId:t,contextModule:r})}generateTransaction(e){return this._container.get(o.GenerateTransactionUseCase).execute(e)}getAddress(e,t){return this._container.get(o.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(o.GetAppConfigurationUseCase).execute()}}export{p as DefaultSolanaTools};
2
+ //# sourceMappingURL=DefaultSolanaTools.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/DefaultSolanaTools.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GenerateTransactionDAReturnType } from \"@api/app-binder/GenerateTransactionDeviceActionTypes\";\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type SolanaTools } from \"@api/SolanaTools\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type GenerateTransactionUseCase } from \"./use-cases/generateTransaction/GenerateTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSolanaToolsConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport class DefaultSolanaTools implements SolanaTools {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n }: DefaultSolanaToolsConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId, contextModule });\n }\n\n generateTransaction(derivationPath: string): GenerateTransactionDAReturnType {\n return this._container\n .get<GenerateTransactionUseCase>(useCasesTypes.GenerateTransactionUseCase)\n .execute(derivationPath);\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(useCasesTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
5
+ "mappings": "AAeA,OAAS,iBAAAA,MAAqB,+BAE9B,OAAS,iBAAAC,MAAqB,OAQvB,MAAMC,CAA0C,CAC7C,WAER,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,cAAAC,CACF,EAAsC,CACpC,KAAK,WAAaJ,EAAc,CAAE,IAAAE,EAAK,UAAAC,EAAW,cAAAC,CAAc,CAAC,CACnE,CAEA,oBAAoBC,EAAyD,CAC3E,OAAO,KAAK,WACT,IAAgCN,EAAc,0BAA0B,EACxE,QAAQM,CAAc,CAC3B,CAEA,WACEA,EACAC,EACwB,CACxB,OAAO,KAAK,WACT,IAAuBP,EAAc,iBAAiB,EACtD,QAAQM,EAAgBC,CAAO,CACpC,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgCP,EAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
6
+ "names": ["useCasesTypes", "makeContainer", "DefaultSolanaTools", "dmk", "sessionId", "contextModule", "derivationPath", "options"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{vi as s}from"vitest";import{DefaultSolanaTools as t}from"./DefaultSolanaTools";describe("DefaultSolanaTools",()=>{const n={};it("should be defined",()=>{const e=new t({dmk:{},sessionId:{},contextModule:n});expect(e).toBeDefined()}),it("should call getAddress",()=>{const e={executeDeviceAction:s.fn()},o={};new t({dmk:e,sessionId:o,contextModule:n}).getAddress("derivationPath",{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call getAppConfiguration",()=>{const e={executeDeviceAction:s.fn()},o={};new t({dmk:e,sessionId:o,contextModule:n}).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call generateTransaction",()=>{const e={executeDeviceAction:s.fn()},o={};new t({dmk:e,sessionId:o,contextModule:n}).generateTransaction("derivationPath"),expect(e.executeDeviceAction).toHaveBeenCalled()})});
2
+ //# sourceMappingURL=DefaultSolanaTools.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/DefaultSolanaTools.test.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { vi } from \"vitest\";\n\nimport { DefaultSolanaTools } from \"./DefaultSolanaTools\";\n\ndescribe(\"DefaultSolanaTools\", () => {\n const contextModuleStub: ContextModule = {} as ContextModule;\n\n it(\"should be defined\", () => {\n const solanaTools = new DefaultSolanaTools({\n dmk: {} as DeviceManagementKit,\n sessionId: {} as DeviceSessionId,\n contextModule: contextModuleStub,\n });\n expect(solanaTools).toBeDefined();\n });\n\n it(\"should call getAddress\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const solanaTools = new DefaultSolanaTools({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n solanaTools.getAddress(\"derivationPath\", {});\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call getAppConfiguration\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const solanaTools = new DefaultSolanaTools({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n solanaTools.getAppConfiguration();\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n\n it(\"should call generateTransaction\", () => {\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const sessionId = {} as DeviceSessionId;\n const solanaTools = new DefaultSolanaTools({\n dmk,\n sessionId,\n contextModule: contextModuleStub,\n });\n solanaTools.generateTransaction(\"derivationPath\");\n expect(dmk.executeDeviceAction).toHaveBeenCalled();\n });\n});\n"],
5
+ "mappings": "AAKA,OAAS,MAAAA,MAAU,SAEnB,OAAS,sBAAAC,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,MAAMC,EAAmC,CAAC,EAE1C,GAAG,oBAAqB,IAAM,CAC5B,MAAMC,EAAc,IAAIF,EAAmB,CACzC,IAAK,CAAC,EACN,UAAW,CAAC,EACZ,cAAeC,CACjB,CAAC,EACD,OAAOC,CAAW,EAAE,YAAY,CAClC,CAAC,EAED,GAAG,yBAA0B,IAAM,CACjC,MAAMC,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACC,IAAIJ,EAAmB,CACzC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACW,WAAW,iBAAkB,CAAC,CAAC,EAC3C,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,MAAMA,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACC,IAAIJ,EAAmB,CACzC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACW,oBAAoB,EAChC,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,EAED,GAAG,kCAAmC,IAAM,CAC1C,MAAMA,EAAM,CACV,oBAAqBJ,EAAG,GAAG,CAC7B,EACMK,EAAY,CAAC,EACC,IAAIJ,EAAmB,CACzC,IAAAG,EACA,UAAAC,EACA,cAAeH,CACjB,CAAC,EACW,oBAAoB,gBAAgB,EAChD,OAAOE,EAAI,mBAAmB,EAAE,iBAAiB,CACnD,CAAC,CACH,CAAC",
6
+ "names": ["vi", "DefaultSolanaTools", "contextModuleStub", "solanaTools", "dmk", "sessionId"]
7
+ }
@@ -1,2 +1,2 @@
1
- var v=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=(s,e,n,t)=>{for(var i=t>1?void 0:t?g(e,n):e,p=s.length-1,a;p>=0;p--)(a=s[p])&&(i=(t?a(e,n,i):a(i))||i);return t&&i&&v(e,n,i),i},c=(s,e)=>(n,t)=>e(n,t,s);import{CallTaskInAppDeviceAction as D,SendCommandInAppDeviceAction as m,UserInteractionRequired as o}from"@ledgerhq/device-management-kit";import{inject as A,injectable as k}from"inversify";import{SendSignMessageTask as f}from"../app-binder/task/SendSignMessageTask";import{externalTypes as u}from"../externalTypes";import{GetAppConfigurationCommand as I}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as T}from"./command/GetPubKeyCommand";import{SignTransactionDeviceAction as h}from"./device-action/SignTransactionDeviceAction";let r=class{constructor(e,n){this.dmk=e;this.sessionId=n}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new T(e),appName:"Solana",requiredUserInteraction:e.checkOnDevice?o.VerifyAddress:o.None,skipOpenApp:e.skipOpenApp}})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new h({input:{derivationPath:e.derivationPath,transaction:e.transaction,skipOpenApp:e.skipOpenApp}})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new D({input:{task:async n=>new f(n,{derivationPath:e.derivationPath,sendingData:new TextEncoder().encode(e.message)}).run(),appName:"Solana",requiredUserInteraction:o.SignPersonalMessage,skipOpenApp:e.skipOpenApp}})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new I,appName:"Solana",requiredUserInteraction:o.None,skipOpenApp:!1}})})}};r=d([k(),c(0,A(u.Dmk)),c(1,A(u.SessionId))],r);export{r as SolanaAppBinder};
1
+ var v=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var u=(o,e,n,t)=>{for(var i=t>1?void 0:t?D(e,n):e,a=o.length-1,c;a>=0;a--)(c=o[a])&&(i=(t?c(e,n,i):c(i))||i);return t&&i&&v(e,n,i),i},s=(o,e)=>(n,t)=>e(n,t,o);import{CallTaskInAppDeviceAction as k,SendCommandInAppDeviceAction as A,UserInteractionRequired as r}from"@ledgerhq/device-management-kit";import{inject as d,injectable as g}from"inversify";import{SendSignMessageTask as h}from"../app-binder/task/SendSignMessageTask";import{externalTypes as m}from"../externalTypes";import{GetAppConfigurationCommand as T}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as f}from"./command/GetPubKeyCommand";import{GenerateTransactionDeviceAction as l}from"./device-action/GenerateTransactionDeviceAction";import{SignTransactionDeviceAction as I}from"./device-action/SignTransactionDeviceAction";let p=class{constructor(e,n,t){this.dmk=e;this.sessionId=n;this.contextModule=t}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{command:new f(e),appName:"Solana",requiredUserInteraction:e.checkOnDevice?r.VerifyAddress:r.None,skipOpenApp:e.skipOpenApp}})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new I({input:{derivationPath:e.derivationPath,transaction:e.transaction,skipOpenApp:e.skipOpenApp,contextModule:this.contextModule}})})}generateTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new l({input:{derivationPath:e.derivationPath,skipOpenApp:e.skipOpenApp,contextModule:this.contextModule}})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new k({input:{task:async n=>new h(n,{derivationPath:e.derivationPath,sendingData:new TextEncoder().encode(e.message)}).run(),appName:"Solana",requiredUserInteraction:r.SignPersonalMessage,skipOpenApp:e.skipOpenApp}})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{command:new T,appName:"Solana",requiredUserInteraction:r.None,skipOpenApp:!1}})})}};p=u([g(),s(0,d(m.Dmk)),s(1,d(m.SessionId)),s(2,d(m.ContextModule))],p);export{p as SolanaAppBinder};
2
2
  //# sourceMappingURL=SolanaAppBinder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/SolanaAppBinder.ts"],
4
- "sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(args),\n appName: \"Solana\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n skipOpenApp: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n skipOpenApp: boolean;\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n sendingData: new TextEncoder().encode(args.message),\n }).run(),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n }\n}\n"],
5
- "mappings": "iOAAA,OACE,6BAAAA,EAGA,gCAAAC,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAOnC,OAAS,uBAAAC,MAA2B,gDACpC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,8BAAAC,MAAkC,uCAC3C,OAAS,oBAAAC,MAAwB,6BACjC,OAAS,+BAAAC,MAAmC,8CAGrC,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACzC,CAFmC,SAAAD,EACM,eAAAC,CACxC,CAEH,WAAWC,EAIgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EAAiBF,CAAI,EAClC,QAAS,SACT,wBAAyBA,EAAK,cAC1BG,EAAwB,cACxBA,EAAwB,KAC5B,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA4B,CAC5C,MAAO,CACL,eAAgBJ,EAAK,eACrB,YAAaA,EAAK,YAClB,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAIgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIK,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAIC,EAAoBD,EAAa,CACnC,eAAgBN,EAAK,eACrB,YAAa,IAAI,YAAY,EAAE,OAAOA,EAAK,OAAO,CACpD,CAAC,EAAE,IAAI,EACT,QAAS,SACT,wBAAyBG,EAAwB,oBACjD,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIO,EACb,QAAS,SACT,wBAAyBL,EAAwB,KACjD,YAAa,EACf,CACF,CAAC,CACH,CAAC,CACH,CACF,EA9EaN,EAANY,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GACxBF,EAAA,EAAAC,EAAOC,EAAc,SAAS,IAHtBhB",
6
- "names": ["CallTaskInAppDeviceAction", "SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "SendSignMessageTask", "externalTypes", "GetAppConfigurationCommand", "GetPubKeyCommand", "SignTransactionDeviceAction", "SolanaAppBinder", "dmk", "sessionId", "args", "SendCommandInAppDeviceAction", "GetPubKeyCommand", "UserInteractionRequired", "SignTransactionDeviceAction", "CallTaskInAppDeviceAction", "internalApi", "SendSignMessageTask", "GetAppConfigurationCommand", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { GenerateTransactionDAReturnType } from \"@api/app-binder/GenerateTransactionDeviceActionTypes\";\nimport { GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { GenerateTransactionDeviceAction } from \"./device-action/GenerateTransactionDeviceAction\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(args),\n appName: \"Solana\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n skipOpenApp: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n skipOpenApp: args.skipOpenApp,\n contextModule: this.contextModule,\n },\n }),\n });\n }\n\n generateTransaction(args: {\n derivationPath: string;\n skipOpenApp: boolean;\n }): GenerateTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new GenerateTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n skipOpenApp: args.skipOpenApp,\n contextModule: this.contextModule,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n skipOpenApp: boolean;\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n sendingData: new TextEncoder().encode(args.message),\n }).run(),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n }\n}\n"],
5
+ "mappings": "iOACA,OACE,6BAAAA,EAGA,gCAAAC,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAQnC,OAAS,uBAAAC,MAA2B,gDACpC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,8BAAAC,MAAkC,uCAC3C,OAAS,oBAAAC,MAAwB,6BACjC,OAAS,mCAAAC,MAAuC,kDAChD,OAAS,+BAAAC,MAAmC,8CAGrC,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACIC,EAC7C,CAHmC,SAAAF,EACM,eAAAC,EACI,mBAAAC,CAC5C,CAEH,WAAWC,EAIgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EAAiBF,CAAI,EAClC,QAAS,SACT,wBAAyBA,EAAK,cAC1BG,EAAwB,cACxBA,EAAwB,KAC5B,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA4B,CAC5C,MAAO,CACL,eAAgBJ,EAAK,eACrB,YAAaA,EAAK,YAClB,YAAaA,EAAK,YAClB,cAAe,KAAK,aACtB,CACF,CAAC,CACH,CAAC,CACH,CAEA,oBAAoBA,EAGgB,CAClC,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIK,EAAgC,CAChD,MAAO,CACL,eAAgBL,EAAK,eACrB,YAAaA,EAAK,YAClB,cAAe,KAAK,aACtB,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAIgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIM,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAIC,EAAoBD,EAAa,CACnC,eAAgBP,EAAK,eACrB,YAAa,IAAI,YAAY,EAAE,OAAOA,EAAK,OAAO,CACpD,CAAC,EAAE,IAAI,EACT,QAAS,SACT,wBAAyBG,EAAwB,oBACjD,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIQ,EACb,QAAS,SACT,wBAAyBN,EAAwB,KACjD,YAAa,EACf,CACF,CAAC,CACH,CAAC,CACH,CACF,EAhGaP,EAANc,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GACxBF,EAAA,EAAAC,EAAOC,EAAc,SAAS,GAC9BF,EAAA,EAAAC,EAAOC,EAAc,aAAa,IAJ1BlB",
6
+ "names": ["CallTaskInAppDeviceAction", "SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "SendSignMessageTask", "externalTypes", "GetAppConfigurationCommand", "GetPubKeyCommand", "GenerateTransactionDeviceAction", "SignTransactionDeviceAction", "SolanaAppBinder", "dmk", "sessionId", "contextModule", "args", "SendCommandInAppDeviceAction", "GetPubKeyCommand", "UserInteractionRequired", "SignTransactionDeviceAction", "GenerateTransactionDeviceAction", "CallTaskInAppDeviceAction", "internalApi", "SendSignMessageTask", "GetAppConfigurationCommand", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{DeviceActionStatus as c,SendCommandInAppDeviceAction as A,UserInteractionRequired as l}from"@ledgerhq/device-management-kit";import{from as u}from"rxjs";import{GetAppConfigurationCommand as v}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as m}from"./command/GetPubKeyCommand";import{SignTransactionDeviceAction as D}from"./device-action/SignTransactionDeviceAction";import{SolanaAppBinder as a}from"./SolanaAppBinder";describe("SolanaAppBinder",()=>{const n={sendCommand:vi.fn(),executeDeviceAction:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const i=new a({},{});expect(i).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((i,s)=>{const e="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:u([{status:c.Completed,output:e}]),cancel:vi.fn()});const o=new a(n,"sessionId"),{observable:p}=o.getAddress({derivationPath:"44'/501'",checkOnDevice:!1,skipOpenApp:!1}),r=[];p.subscribe({next:t=>{r.push(t)},error:t=>{s(t)},complete:()=>{try{expect(r).toEqual([{status:c.Completed,output:e}]),i()}catch(t){s(t)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const i={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1,skipOpenApp:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const e={...i,checkOnDevice:!0};new a(n,"sessionId").getAddress(e),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new A({input:{command:new m(e),appName:"Solana",requiredUserInteraction:l.VerifyAddress,skipOpenApp:!1}})})}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const e={...i,checkOnDevice:!1};new a(n,"sessionId").getAddress(e),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new A({input:{command:new m(e),appName:"Solana",requiredUserInteraction:l.None,skipOpenApp:!1}})})})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((i,s)=>{const e=new Uint8Array([1,2,3]);vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:u([{status:c.Completed,output:e}]),cancel:vi.fn()});const o=new a(n,"sessionId"),{observable:p}=o.signTransaction({derivationPath:"44'/501'",transaction:new Uint8Array([1,2,3,4]),skipOpenApp:!1}),r=[];p.subscribe({next:t=>{r.push(t)},error:t=>{s(t)},complete:()=>{try{expect(r).toEqual([{status:c.Completed,output:e}]),i()}catch(t){s(t)}}})})),it("should call executeDeviceAction with the correct params",()=>{const i="44'/60'/3'/2/1",s=new Uint8Array([1,2,3,4]),e=!1;new a(n,"sessionId").signTransaction({derivationPath:i,transaction:s,skipOpenApp:e}),expect(n.executeDeviceAction).toHaveBeenCalledWith({deviceAction:new D({input:{derivationPath:i,transaction:s,skipOpenApp:e}}),sessionId:"sessionId"})})}),describe("signMessage",()=>{it("should return the signed message",()=>new Promise((i,s)=>{const e=new Uint8Array([28,138,84,5,16]),o={derivationPath:"44'/501'/0'/0'",message:"Hello world",skipOpenApp:!1};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:u([{status:c.Completed,output:e}]),cancel:vi.fn()});const p=new a(n,"sessionId"),{observable:r}=p.signMessage(o),t=[];r.subscribe({next:d=>{t.push(d)},error:d=>{s(d)},complete:()=>{try{expect(t).toEqual([{status:c.Completed,output:e}]),i()}catch(d){s(d)}}})}))}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((i,s)=>{const e={blindSigningEnabled:!0,pubKeyDisplayMode:"LONG",version:"2.5.10"};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:u([{status:c.Completed,output:e}]),cancel:vi.fn()});const o=new a(n,"sessionId"),{observable:p}=o.getAppConfiguration(),r=[];p.subscribe({next:t=>{r.push(t)},error:t=>{s(t)},complete:()=>{try{expect(r).toEqual([{status:c.Completed,output:e}]),i()}catch(t){s(t)}}})})),it("should call executeDeviceAction with the correct params",()=>{new a(n,"sessionId").getAppConfiguration(),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new A({input:{command:new v,appName:"Solana",requiredUserInteraction:l.None,skipOpenApp:!1}})})})})});
1
+ import{DeviceActionStatus as p,SendCommandInAppDeviceAction as l,UserInteractionRequired as m}from"@ledgerhq/device-management-kit";import{from as A}from"rxjs";import{GetAppConfigurationCommand as D}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as v}from"./command/GetPubKeyCommand";import{GenerateTransactionDeviceAction as g}from"./device-action/GenerateTransactionDeviceAction";import{SignTransactionDeviceAction as h}from"./device-action/SignTransactionDeviceAction";import{SolanaAppBinder as c}from"./SolanaAppBinder";describe("SolanaAppBinder",()=>{const o={},i={sendCommand:vi.fn(),executeDeviceAction:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const n=new c({},{},o);expect(n).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((n,s)=>{const t="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:A([{status:p.Completed,output:t}]),cancel:vi.fn()});const a=new c(i,"sessionId",o),{observable:d}=a.getAddress({derivationPath:"44'/501'",checkOnDevice:!1,skipOpenApp:!1}),r=[];d.subscribe({next:e=>{r.push(e)},error:e=>{s(e)},complete:()=>{try{expect(r).toEqual([{status:p.Completed,output:t}]),n()}catch(e){s(e)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const n={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1,skipOpenApp:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const t={...n,checkOnDevice:!0};new c(i,"sessionId",o).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new l({input:{command:new v(t),appName:"Solana",requiredUserInteraction:m.VerifyAddress,skipOpenApp:!1}})})}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const t={...n,checkOnDevice:!1};new c(i,"sessionId",o).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new l({input:{command:new v(t),appName:"Solana",requiredUserInteraction:m.None,skipOpenApp:!1}})})})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((n,s)=>{const t=new Uint8Array([1,2,3]);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:A([{status:p.Completed,output:t}]),cancel:vi.fn()});const a=new c(i,"sessionId",o),{observable:d}=a.signTransaction({derivationPath:"44'/501'",transaction:new Uint8Array([1,2,3,4]),skipOpenApp:!1}),r=[];d.subscribe({next:e=>{r.push(e)},error:e=>{s(e)},complete:()=>{try{expect(r).toEqual([{status:p.Completed,output:t}]),n()}catch(e){s(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{const n="44'/60'/3'/2/1",s=new Uint8Array([1,2,3,4]),t=!1;new c(i,"sessionId",o).signTransaction({derivationPath:n,transaction:s,skipOpenApp:t}),expect(i.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new h({input:{derivationPath:n,transaction:s,skipOpenApp:t,contextModule:o}})})})}),describe("signMessage",()=>{it("should return the signed message",()=>new Promise((n,s)=>{const t=new Uint8Array([28,138,84,5,16]),a={derivationPath:"44'/501'/0'/0'",message:"Hello world",skipOpenApp:!1};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:A([{status:p.Completed,output:t}]),cancel:vi.fn()});const d=new c(i,"sessionId",o),{observable:r}=d.signMessage(a),e=[];r.subscribe({next:u=>{e.push(u)},error:u=>{s(u)},complete:()=>{try{expect(e).toEqual([{status:p.Completed,output:t}]),n()}catch(u){s(u)}}})}))}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((n,s)=>{const t={blindSigningEnabled:!0,pubKeyDisplayMode:"LONG",version:"2.5.10"};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:A([{status:p.Completed,output:t}]),cancel:vi.fn()});const a=new c(i,"sessionId",o),{observable:d}=a.getAppConfiguration(),r=[];d.subscribe({next:e=>{r.push(e)},error:e=>{s(e)},complete:()=>{try{expect(r).toEqual([{status:p.Completed,output:t}]),n()}catch(e){s(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{new c(i,"sessionId",o).getAppConfiguration(),expect(i.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new l({input:{command:new D,appName:"Solana",requiredUserInteraction:m.None,skipOpenApp:!1}})})})}),describe("generateTransaction",()=>{it("should return the serialized transaction",()=>new Promise((n,s)=>{const t="BASE64_OR_HEX_TX";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:A([{status:p.Completed,output:t}]),cancel:vi.fn()});const a=new c(i,"sessionId",o),{observable:d}=a.generateTransaction({derivationPath:"44'/501'/0'/0'",skipOpenApp:!1}),r=[];d.subscribe({next:e=>r.push(e),error:e=>s(e),complete:()=>{try{expect(r).toEqual([{status:p.Completed,output:t}]),n()}catch(e){s(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{const n="44'/501'/0'/0'";new c(i,"sessionId",o).generateTransaction({derivationPath:n,skipOpenApp:!0}),expect(i.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new g({input:{derivationPath:n,skipOpenApp:!0,contextModule:o}})})})})});
2
2
  //# sourceMappingURL=SolanaAppBinder.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/SolanaAppBinder.test.ts"],
4
- "sourcesContent": ["import {\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type DmkError,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/index\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { SolanaAppBinder } from \"./SolanaAppBinder\";\n\ndescribe(\"SolanaAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new SolanaAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const address = \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: address,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n const { observable } = appBinder.getAddress({\n derivationPath: \"44'/501'\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: address,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n skipOpenApp: false,\n };\n\n it(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(params),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n }),\n });\n });\n\n it(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(params),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature = new Uint8Array([0x01, 0x02, 0x03]);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/501'\",\n transaction: new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const derivationPath = \"44'/60'/3'/2/1\";\n const transaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const skipOpenApp = false;\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n appBinder.signTransaction({ derivationPath, transaction, skipOpenApp });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath,\n transaction,\n skipOpenApp,\n },\n }),\n sessionId: \"sessionId\",\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signed message\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signedMessage = new Uint8Array([0x1c, 0x8a, 0x54, 0x05, 0x10]);\n const signMessageArgs = {\n derivationPath: \"44'/501'/0'/0'\",\n message: \"Hello world\",\n skipOpenApp: false,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signedMessage,\n } as DeviceActionState<\n Uint8Array,\n DmkError,\n DeviceActionIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n const { observable } = appBinder.signMessage(signMessageArgs);\n\n // THEN\n const states: DeviceActionState<Uint8Array, unknown, unknown>[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signedMessage,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const appConfiguration = {\n blindSigningEnabled: true,\n pubKeyDisplayMode: \"LONG\",\n version: \"2.5.10\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: appConfiguration,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n const { observable } = appBinder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: appConfiguration,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n\n // WHEN\n appBinder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(), // Correct command\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAppConfigurationCommand", "GetPubKeyCommand", "SignTransactionDeviceAction", "SolanaAppBinder", "mockedDmk", "binder", "resolve", "reject", "address", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "signature", "derivationPath", "transaction", "skipOpenApp", "signedMessage", "signMessageArgs", "appConfiguration"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceActionIntermediateValue,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type DmkError,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GenerateTransactionDAError,\n type GenerateTransactionDAIntermediateValue,\n type GenerateTransactionDAOutput,\n} from \"@api/app-binder/GenerateTransactionDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/index\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { GenerateTransactionDeviceAction } from \"./device-action/GenerateTransactionDeviceAction\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { SolanaAppBinder } from \"./SolanaAppBinder\";\n\ndescribe(\"SolanaAppBinder\", () => {\n // stub ContextModule for tests\n const contextModuleStub: ContextModule = {} as ContextModule;\n\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new SolanaAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n contextModuleStub,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const address = \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: address,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n const { observable } = appBinder.getAddress({\n derivationPath: \"44'/501'\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: address,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n skipOpenApp: false,\n };\n\n it(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(params),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n }),\n });\n });\n\n it(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(params),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature = new Uint8Array([0x01, 0x02, 0x03]);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/501'\",\n transaction: new Uint8Array([0x01, 0x02, 0x03, 0x04]),\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const derivationPath = \"44'/60'/3'/2/1\";\n const transaction = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n const skipOpenApp = false;\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n appBinder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath,\n transaction,\n skipOpenApp,\n contextModule: contextModuleStub,\n },\n }),\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signed message\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signedMessage = new Uint8Array([0x1c, 0x8a, 0x54, 0x05, 0x10]);\n const signMessageArgs = {\n derivationPath: \"44'/501'/0'/0'\",\n message: \"Hello world\",\n skipOpenApp: false,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signedMessage,\n } as DeviceActionState<\n Uint8Array,\n DmkError,\n DeviceActionIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n const { observable } = appBinder.signMessage(signMessageArgs);\n\n // THEN\n const states: DeviceActionState<Uint8Array, unknown, unknown>[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signedMessage,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const appConfiguration = {\n blindSigningEnabled: true,\n pubKeyDisplayMode: \"LONG\",\n version: \"2.5.10\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: appConfiguration,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n const { observable } = appBinder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: appConfiguration,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n\n // WHEN\n appBinder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: \"Solana\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n\n describe(\"generateTransaction\", () => {\n it(\"should return the serialized transaction\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const serializedTx = \"BASE64_OR_HEX_TX\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: serializedTx,\n } as DeviceActionState<\n GenerateTransactionDAOutput,\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n const { observable } = appBinder.generateTransaction({\n derivationPath: \"44'/501'/0'/0'\",\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GenerateTransactionDAOutput,\n GenerateTransactionDAError,\n GenerateTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: (err) => reject(err),\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output: serializedTx },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const derivationPath = \"44'/501'/0'/0'\";\n const skipOpenApp = true;\n\n // WHEN\n const appBinder = new SolanaAppBinder(\n mockedDmk,\n \"sessionId\",\n contextModuleStub,\n );\n appBinder.generateTransaction({ derivationPath, skipOpenApp });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new GenerateTransactionDeviceAction({\n input: {\n derivationPath,\n skipOpenApp,\n contextModule: contextModuleStub,\n },\n }),\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAppConfigurationCommand", "GetPubKeyCommand", "GenerateTransactionDeviceAction", "SignTransactionDeviceAction", "SolanaAppBinder", "contextModuleStub", "mockedDmk", "binder", "resolve", "reject", "address", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "signature", "derivationPath", "transaction", "skipOpenApp", "signedMessage", "signMessageArgs", "appConfiguration", "serializedTx"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{ApduBuilder as t,ApduParser as p,CommandResultFactory as o,InvalidStatusWordError as l}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as s}from"@ledgerhq/signer-utils";import{Maybe as m}from"purify-ts";import{SOLANA_APP_ERRORS as d,SolanaAppCommandErrorFactory as C}from"./utils/SolanaApplicationErrors";const i=224,u=32,A=0,c=0,n=4;class S{errorHelper=new s(d,C);getApdu(){return new t({cla:i,ins:u,p1:A,p2:c}).build()}parseResponse(r){return m.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new p(r);if(e.testMinimalLength(n)===!1)return o({error:new l("Challenge key is missing")});const a=e.encodeToHexaString(e.extractFieldByLength(n));return o({data:{challenge:a}})})}}export{S as GetChallengeCommand};
2
+ //# sourceMappingURL=GetChallengeCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/GetChallengeCommand.ts"],
4
+ "sourcesContent": ["// https://github.com/LedgerHQ/app-solana/blob/develop/doc/api.md#get-challenge\nimport {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst CLA = 0xe0;\nconst INS = 0x20;\nconst P1 = 0x00;\nconst P2 = 0x00;\nconst CHALLENGE_LENGTH = 4;\n\nexport type GetChallengeCommandResponse = {\n challenge: string;\n};\n\nexport class GetChallengeCommand\n implements Command<GetChallengeCommandResponse, void, SolanaAppErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetChallengeCommandResponse,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: CLA,\n ins: INS,\n p1: P1,\n p2: P2,\n }).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<GetChallengeCommandResponse, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n if (parser.testMinimalLength(CHALLENGE_LENGTH) === false) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Challenge key is missing\"),\n });\n }\n\n const challenge = parser.encodeToHexaString(\n parser.extractFieldByLength(CHALLENGE_LENGTH),\n );\n\n return CommandResultFactory({\n data: {\n challenge,\n },\n });\n });\n }\n}\n"],
5
+ "mappings": "AACA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,qBAAAC,EACA,gCAAAC,MAEK,kCAEP,MAAMC,EAAM,IACNC,EAAM,GACNC,EAAK,EACLC,EAAK,EACLC,EAAmB,EAMlB,MAAMC,CAEb,CACmB,YAAc,IAAIT,EAGjCE,EAAmBC,CAA4B,EAEjD,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAKQ,EACL,IAAKC,EACL,GAAIC,EACJ,GAAIC,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cACEG,EACiE,CACjE,OAAOT,EAAM,aACX,KAAK,YAAY,SAASS,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAId,EAAWa,CAAQ,EAEtC,GAAIC,EAAO,kBAAkBH,CAAgB,IAAM,GACjD,OAAOV,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,0BAA0B,CAC9D,CAAC,EAGH,MAAMa,EAAYD,EAAO,mBACvBA,EAAO,qBAAqBH,CAAgB,CAC9C,EAEA,OAAOV,EAAqB,CAC1B,KAAM,CACJ,UAAAc,CACF,CACF,CAAC,CACH,CAAC,CACH,CACF",
6
+ "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "SOLANA_APP_ERRORS", "SolanaAppCommandErrorFactory", "CLA", "INS", "P1", "P2", "CHALLENGE_LENGTH", "GetChallengeCommand", "response", "parser", "challenge"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{CommandResultFactory as s,InvalidStatusWordError as o,isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{GetChallengeCommand as a}from"./GetChallengeCommand";const n=Uint8Array.from([224,32,0,0,0]),c=Uint8Array.from([1,2,3,4]),d={statusCode:Uint8Array.from([144,0]),data:c},p={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},l=Uint8Array.from([1,2]),u={statusCode:Uint8Array.from([144,0]),data:l};describe("GetChallengeCommand",()=>{let t;beforeEach(()=>{t=new a}),describe("getApdu",()=>{it("should return the challenge apdu",()=>{const e=t.getApdu();expect(e.getRawApdu()).toStrictEqual(n)})}),describe("parseResponse",()=>{it("should parse the response",()=>{const e=t.parseResponse(d);expect(e).toStrictEqual(s({data:{challenge:"01020304"}}))}),it("should return an error if the response is not successful",()=>{const e=t.parseResponse(p);expect(r(e)).toBe(!1)}),it("should return an error if the response is too short",()=>{const e=t.parseResponse(u);expect(r(e)).toBe(!1),expect(e.error).toBeInstanceOf(o)})})});
2
+ //# sourceMappingURL=GetChallengeCommand.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/GetChallengeCommand.test.ts"],
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { GetChallengeCommand } from \"./GetChallengeCommand\";\n\nconst GET_CHALLENGE_APDU = Uint8Array.from([0xe0, 0x20, 0x00, 0x00, 0x00]);\n\nconst LNX_RESPONSE_DATA_GOOD = Uint8Array.from([0x01, 0x02, 0x03, 0x04]);\n\nconst LNX_RESPONSE_GOOD = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_GOOD,\n};\n\nconst LNX_RESPONSE_LOCKED = {\n statusCode: Uint8Array.from([0x55, 0x15]),\n data: new Uint8Array(),\n};\n\nconst LNX_RESPONSE_DATA_TOO_SHORT = Uint8Array.from([0x01, 0x02]);\n\nconst LNX_RESPONSE_TOO_SHORT = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_TOO_SHORT,\n};\n\ndescribe(\"GetChallengeCommand\", () => {\n let command: GetChallengeCommand;\n\n beforeEach(() => {\n command = new GetChallengeCommand();\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the challenge apdu\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(GET_CHALLENGE_APDU);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should parse the response\", () => {\n const parsedResponse = command.parseResponse(LNX_RESPONSE_GOOD);\n expect(parsedResponse).toStrictEqual(\n CommandResultFactory({\n data: {\n challenge: \"01020304\",\n },\n }),\n );\n });\n\n it(\"should return an error if the response is not successful\", () => {\n const result = command.parseResponse(LNX_RESPONSE_LOCKED);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"should return an error if the response is too short\", () => {\n const result = command.parseResponse(LNX_RESPONSE_TOO_SHORT);\n\n expect(isSuccessCommandResult(result)).toBe(false);\n // @ts-ignore\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OACE,wBAAAA,EACA,0BAAAC,EACA,0BAAAC,MACK,kCAEP,OAAS,uBAAAC,MAA2B,wBAEpC,MAAMC,EAAqB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,EAEnEC,EAAyB,WAAW,KAAK,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EAEjEC,EAAoB,CACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMD,CACR,EAEME,EAAsB,CAC1B,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAEMC,EAA8B,WAAW,KAAK,CAAC,EAAM,CAAI,CAAC,EAE1DC,EAAyB,CAC7B,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMD,CACR,EAEA,SAAS,sBAAuB,IAAM,CACpC,IAAIE,EAEJ,WAAW,IAAM,CACfA,EAAU,IAAIP,CAChB,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,mCAAoC,IAAM,CAC3C,MAAMQ,EAAOD,EAAQ,QAAQ,EAC7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cAAcP,CAAkB,CAC5D,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,4BAA6B,IAAM,CACpC,MAAMQ,EAAiBF,EAAQ,cAAcJ,CAAiB,EAC9D,OAAOM,CAAc,EAAE,cACrBZ,EAAqB,CACnB,KAAM,CACJ,UAAW,UACb,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,2DAA4D,IAAM,CACnE,MAAMa,EAASH,EAAQ,cAAcH,CAAmB,EACxD,OAAOL,EAAuBW,CAAM,CAAC,EAAE,KAAK,EAAK,CACnD,CAAC,EAED,GAAG,sDAAuD,IAAM,CAC9D,MAAMA,EAASH,EAAQ,cAAcD,CAAsB,EAE3D,OAAOP,EAAuBW,CAAM,CAAC,EAAE,KAAK,EAAK,EAEjD,OAAOA,EAAO,KAAK,EAAE,eAAeZ,CAAsB,CAC5D,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "GetChallengeCommand", "GET_CHALLENGE_APDU", "LNX_RESPONSE_DATA_GOOD", "LNX_RESPONSE_GOOD", "LNX_RESPONSE_LOCKED", "LNX_RESPONSE_DATA_TOO_SHORT", "LNX_RESPONSE_TOO_SHORT", "command", "apdu", "parsedResponse", "result"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/GetPubKeyCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CommandErrorHelper,\n DerivationPathUtils,\n} from \"@ledgerhq/signer-utils\";\nimport bs58 from \"bs58\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type PublicKey } from \"@api/model/PublicKey\";\n\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst PUBKEY_LENGTH = 32;\n\ntype GetPubKeyCommandResponse = PublicKey;\ntype GetPubKeyCommandArgs = {\n derivationPath: string;\n checkOnDevice: boolean;\n};\n\nexport class GetPubKeyCommand\n implements\n Command<GetPubKeyCommandResponse, GetPubKeyCommandArgs, SolanaAppErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetPubKeyCommandResponse,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n args: GetPubKeyCommandArgs;\n\n constructor(args: GetPubKeyCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const getPubKeyArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x05,\n p1: this.args.checkOnDevice ? 0x01 : 0x00,\n p2: 0x00,\n };\n const builder = new ApduBuilder(getPubKeyArgs);\n const derivationPath = this.args.derivationPath;\n\n const path = DerivationPathUtils.splitPath(derivationPath);\n builder.add8BitUIntToData(path.length);\n path.forEach((element) => {\n builder.add32BitUIntToData(element);\n });\n\n return builder.build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<GetPubKeyCommandResponse, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n if (parser.testMinimalLength(PUBKEY_LENGTH) === false) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Public key is missing\"),\n });\n }\n\n const buffer = parser.extractFieldByLength(PUBKEY_LENGTH);\n if (buffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unable to extract public key\"),\n });\n }\n\n return CommandResultFactory({\n data: bs58.encode(buffer),\n });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OACE,sBAAAC,EACA,uBAAAC,MACK,yBACP,OAAOC,MAAU,OACjB,OAAS,SAAAC,MAAa,YAItB,OACE,qBAAAC,EACA,gCAAAC,MAEK,kCAEP,MAAMC,EAAgB,GAQf,MAAMC,CAGb,CACmB,YAAc,IAAIP,EAGjCI,EAAmBC,CAA4B,EAEjD,KAEA,YAAYG,EAA4B,CACtC,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,MAAMC,EAAiC,CACrC,IAAK,IACL,IAAK,EACL,GAAI,KAAK,KAAK,cAAgB,EAAO,EACrC,GAAI,CACN,EACMC,EAAU,IAAId,EAAYa,CAAa,EACvCE,EAAiB,KAAK,KAAK,eAE3BC,EAAOX,EAAoB,UAAUU,CAAc,EACzD,OAAAD,EAAQ,kBAAkBE,EAAK,MAAM,EACrCA,EAAK,QAASC,GAAY,CACxBH,EAAQ,mBAAmBG,CAAO,CACpC,CAAC,EAEMH,EAAQ,MAAM,CACvB,CAEA,cACEI,EAC8D,CAC9D,OAAOX,EAAM,aACX,KAAK,YAAY,SAASW,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIlB,EAAWiB,CAAQ,EAEtC,GAAIC,EAAO,kBAAkBT,CAAa,IAAM,GAC9C,OAAOR,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,uBAAuB,CAC3D,CAAC,EAGH,MAAMiB,EAASD,EAAO,qBAAqBT,CAAa,EACxD,OAAIU,IAAW,OACNlB,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,8BAA8B,CAClE,CAAC,EAGID,EAAqB,CAC1B,KAAMI,EAAK,OAAOc,CAAM,CAC1B,CAAC,CACH,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CommandErrorHelper,\n DerivationPathUtils,\n} from \"@ledgerhq/signer-utils\";\nimport bs58 from \"bs58\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type PublicKey } from \"@api/model/PublicKey\";\n\nimport {\n SOLANA_APP_ERRORS,\n SolanaAppCommandErrorFactory,\n type SolanaAppErrorCodes,\n} from \"./utils/SolanaApplicationErrors\";\n\nconst PUBKEY_LENGTH = 32;\n\nexport type GetPubKeyCommandResponse = PublicKey;\n\nexport type GetPubKeyCommandArgs = {\n derivationPath: string;\n checkOnDevice: boolean;\n};\n\nexport class GetPubKeyCommand\n implements\n Command<GetPubKeyCommandResponse, GetPubKeyCommandArgs, SolanaAppErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetPubKeyCommandResponse,\n SolanaAppErrorCodes\n >(SOLANA_APP_ERRORS, SolanaAppCommandErrorFactory);\n\n args: GetPubKeyCommandArgs;\n\n constructor(args: GetPubKeyCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const getPubKeyArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x05,\n p1: this.args.checkOnDevice ? 0x01 : 0x00,\n p2: 0x00,\n };\n const builder = new ApduBuilder(getPubKeyArgs);\n const derivationPath = this.args.derivationPath;\n\n const path = DerivationPathUtils.splitPath(derivationPath);\n builder.add8BitUIntToData(path.length);\n path.forEach((element) => {\n builder.add32BitUIntToData(element);\n });\n\n return builder.build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<GetPubKeyCommandResponse, SolanaAppErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n if (parser.testMinimalLength(PUBKEY_LENGTH) === false) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Public key is missing\"),\n });\n }\n\n const buffer = parser.extractFieldByLength(PUBKEY_LENGTH);\n if (buffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Unable to extract public key\"),\n });\n }\n\n return CommandResultFactory({\n data: bs58.encode(buffer),\n });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OACE,sBAAAC,EACA,uBAAAC,MACK,yBACP,OAAOC,MAAU,OACjB,OAAS,SAAAC,MAAa,YAItB,OACE,qBAAAC,EACA,gCAAAC,MAEK,kCAEP,MAAMC,EAAgB,GASf,MAAMC,CAGb,CACmB,YAAc,IAAIP,EAGjCI,EAAmBC,CAA4B,EAEjD,KAEA,YAAYG,EAA4B,CACtC,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,MAAMC,EAAiC,CACrC,IAAK,IACL,IAAK,EACL,GAAI,KAAK,KAAK,cAAgB,EAAO,EACrC,GAAI,CACN,EACMC,EAAU,IAAId,EAAYa,CAAa,EACvCE,EAAiB,KAAK,KAAK,eAE3BC,EAAOX,EAAoB,UAAUU,CAAc,EACzD,OAAAD,EAAQ,kBAAkBE,EAAK,MAAM,EACrCA,EAAK,QAASC,GAAY,CACxBH,EAAQ,mBAAmBG,CAAO,CACpC,CAAC,EAEMH,EAAQ,MAAM,CACvB,CAEA,cACEI,EAC8D,CAC9D,OAAOX,EAAM,aACX,KAAK,YAAY,SAASW,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIlB,EAAWiB,CAAQ,EAEtC,GAAIC,EAAO,kBAAkBT,CAAa,IAAM,GAC9C,OAAOR,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,uBAAuB,CAC3D,CAAC,EAGH,MAAMiB,EAASD,EAAO,qBAAqBT,CAAa,EACxD,OAAIU,IAAW,OACNlB,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,8BAA8B,CAClE,CAAC,EAGID,EAAqB,CAC1B,KAAMI,EAAK,OAAOc,CAAM,CAC1B,CAAC,CACH,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "DerivationPathUtils", "bs58", "Maybe", "SOLANA_APP_ERRORS", "SolanaAppCommandErrorFactory", "PUBKEY_LENGTH", "GetPubKeyCommand", "args", "getPubKeyArgs", "builder", "derivationPath", "path", "element", "response", "parser", "buffer"]
7
7
  }