@ledgerhq/device-signer-kit-solana 1.0.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 (348) hide show
  1. package/LICENSE.MD +202 -0
  2. package/README.md +513 -0
  3. package/lib/cjs/api/SignerSolana.js +2 -0
  4. package/lib/cjs/api/SignerSolana.js.map +7 -0
  5. package/lib/cjs/api/SignerSolanaBuilder.js +2 -0
  6. package/lib/cjs/api/SignerSolanaBuilder.js.map +7 -0
  7. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js +2 -0
  8. package/lib/cjs/api/app-binder/GetAddressDeviceActionTypes.js.map +7 -0
  9. package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js +2 -0
  10. package/lib/cjs/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +7 -0
  11. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +2 -0
  12. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +7 -0
  13. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +2 -0
  14. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +7 -0
  15. package/lib/cjs/api/index.js +2 -0
  16. package/lib/cjs/api/index.js.map +7 -0
  17. package/lib/cjs/api/model/AddressOption.js +2 -0
  18. package/lib/cjs/api/model/AddressOption.js.map +7 -0
  19. package/lib/cjs/api/model/AppConfiguration.js +2 -0
  20. package/lib/cjs/api/model/AppConfiguration.js.map +7 -0
  21. package/lib/cjs/api/model/PublicKey.js +2 -0
  22. package/lib/cjs/api/model/PublicKey.js.map +7 -0
  23. package/lib/cjs/api/model/PublicKeyDisplayMode.js +2 -0
  24. package/lib/cjs/api/model/PublicKeyDisplayMode.js.map +7 -0
  25. package/lib/cjs/api/model/Signature.js +2 -0
  26. package/lib/cjs/api/model/Signature.js.map +7 -0
  27. package/lib/cjs/api/model/Transaction.js +2 -0
  28. package/lib/cjs/api/model/Transaction.js.map +7 -0
  29. package/lib/cjs/api/model/TransactionOptions.js +2 -0
  30. package/lib/cjs/api/model/TransactionOptions.js.map +7 -0
  31. package/lib/cjs/index.js +2 -0
  32. package/lib/cjs/index.js.map +7 -0
  33. package/lib/cjs/internal/DefaultSignerSolana.js +2 -0
  34. package/lib/cjs/internal/DefaultSignerSolana.js.map +7 -0
  35. package/lib/cjs/internal/DefaultSignerSolana.test.js +2 -0
  36. package/lib/cjs/internal/DefaultSignerSolana.test.js.map +7 -0
  37. package/lib/cjs/internal/app-binder/SolanaAppBinder.js +2 -0
  38. package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +7 -0
  39. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +2 -0
  40. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +7 -0
  41. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
  42. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
  43. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
  44. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
  45. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js +2 -0
  46. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.js.map +7 -0
  47. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js +2 -0
  48. package/lib/cjs/internal/app-binder/command/GetPubKeyCommand.test.js.map +7 -0
  49. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js +2 -0
  50. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.js.map +7 -0
  51. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js +2 -0
  52. package/lib/cjs/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +7 -0
  53. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +2 -0
  54. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +7 -0
  55. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +2 -0
  56. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +7 -0
  57. package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js +2 -0
  58. package/lib/cjs/internal/app-binder/command/utils/solanaAppError.test.js.map +7 -0
  59. package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js +2 -0
  60. package/lib/cjs/internal/app-binder/command/utils/solanaAppErrors.js.map +7 -0
  61. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
  62. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
  63. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
  64. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
  65. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +2 -0
  66. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +7 -0
  67. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +2 -0
  68. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +7 -0
  69. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
  70. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
  71. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +2 -0
  72. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +7 -0
  73. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
  74. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
  75. package/lib/cjs/internal/app-binder/di/appBinderModule.js +2 -0
  76. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +7 -0
  77. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +2 -0
  78. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +7 -0
  79. package/lib/cjs/internal/app-binder/di/appBinderTypes.js +2 -0
  80. package/lib/cjs/internal/app-binder/di/appBinderTypes.js.map +7 -0
  81. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js +2 -0
  82. package/lib/cjs/internal/app-binder/task/SendCommandInChunksTask.js.map +7 -0
  83. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js +2 -0
  84. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js.map +7 -0
  85. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js +2 -0
  86. package/lib/cjs/internal/app-binder/task/SendSignDataTask.test.js.map +7 -0
  87. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +2 -0
  88. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +7 -0
  89. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +2 -0
  90. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +7 -0
  91. package/lib/cjs/internal/di.js +2 -0
  92. package/lib/cjs/internal/di.js.map +7 -0
  93. package/lib/cjs/internal/externalTypes.js +2 -0
  94. package/lib/cjs/internal/externalTypes.js.map +7 -0
  95. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js +2 -0
  96. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.js.map +7 -0
  97. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
  98. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
  99. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +2 -0
  100. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +7 -0
  101. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js +2 -0
  102. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js.map +7 -0
  103. package/lib/cjs/internal/use-cases/di/useCasesModule.js +2 -0
  104. package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +7 -0
  105. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +2 -0
  106. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +7 -0
  107. package/lib/cjs/internal/use-cases/di/useCasesTypes.js +2 -0
  108. package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +7 -0
  109. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +2 -0
  110. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +7 -0
  111. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +2 -0
  112. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +7 -0
  113. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js +2 -0
  114. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.js.map +7 -0
  115. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js +2 -0
  116. package/lib/cjs/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +7 -0
  117. package/lib/cjs/package.json +58 -0
  118. package/lib/esm/api/SignerSolana.js +1 -0
  119. package/lib/esm/api/SignerSolana.js.map +7 -0
  120. package/lib/esm/api/SignerSolanaBuilder.js +2 -0
  121. package/lib/esm/api/SignerSolanaBuilder.js.map +7 -0
  122. package/lib/esm/api/app-binder/GetAddressDeviceActionTypes.js +1 -0
  123. package/lib/esm/api/app-binder/GetAddressDeviceActionTypes.js.map +7 -0
  124. package/lib/esm/api/app-binder/GetAppConfigurationDeviceActionTypes.js +1 -0
  125. package/lib/esm/api/app-binder/GetAppConfigurationDeviceActionTypes.js.map +7 -0
  126. package/lib/esm/api/app-binder/SignMessageDeviceActionTypes.js +1 -0
  127. package/lib/esm/api/app-binder/SignMessageDeviceActionTypes.js.map +7 -0
  128. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
  129. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +7 -0
  130. package/lib/esm/api/index.js +2 -0
  131. package/lib/esm/api/index.js.map +7 -0
  132. package/lib/esm/api/model/AddressOption.js +1 -0
  133. package/lib/esm/api/model/AddressOption.js.map +7 -0
  134. package/lib/esm/api/model/AppConfiguration.js +1 -0
  135. package/lib/esm/api/model/AppConfiguration.js.map +7 -0
  136. package/lib/esm/api/model/PublicKey.js +1 -0
  137. package/lib/esm/api/model/PublicKey.js.map +7 -0
  138. package/lib/esm/api/model/PublicKeyDisplayMode.js +2 -0
  139. package/lib/esm/api/model/PublicKeyDisplayMode.js.map +7 -0
  140. package/lib/esm/api/model/Signature.js +1 -0
  141. package/lib/esm/api/model/Signature.js.map +7 -0
  142. package/lib/esm/api/model/Transaction.js +1 -0
  143. package/lib/esm/api/model/Transaction.js.map +7 -0
  144. package/lib/esm/api/model/TransactionOptions.js +1 -0
  145. package/lib/esm/api/model/TransactionOptions.js.map +7 -0
  146. package/lib/esm/index.js +2 -0
  147. package/lib/esm/index.js.map +7 -0
  148. package/lib/esm/internal/DefaultSignerSolana.js +2 -0
  149. package/lib/esm/internal/DefaultSignerSolana.js.map +7 -0
  150. package/lib/esm/internal/DefaultSignerSolana.test.js +2 -0
  151. package/lib/esm/internal/DefaultSignerSolana.test.js.map +7 -0
  152. package/lib/esm/internal/app-binder/SolanaAppBinder.js +2 -0
  153. package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +7 -0
  154. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +2 -0
  155. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +7 -0
  156. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
  157. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
  158. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
  159. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
  160. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js +2 -0
  161. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.js.map +7 -0
  162. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js +2 -0
  163. package/lib/esm/internal/app-binder/command/GetPubKeyCommand.test.js.map +7 -0
  164. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js +2 -0
  165. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.js.map +7 -0
  166. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js +2 -0
  167. package/lib/esm/internal/app-binder/command/SignOffChainMessageCommand.test.js.map +7 -0
  168. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +2 -0
  169. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +7 -0
  170. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +2 -0
  171. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +7 -0
  172. package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js +2 -0
  173. package/lib/esm/internal/app-binder/command/utils/solanaAppError.test.js.map +7 -0
  174. package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js +2 -0
  175. package/lib/esm/internal/app-binder/command/utils/solanaAppErrors.js.map +7 -0
  176. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
  177. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
  178. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
  179. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
  180. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +2 -0
  181. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +7 -0
  182. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +2 -0
  183. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +7 -0
  184. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
  185. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
  186. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +2 -0
  187. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +7 -0
  188. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
  189. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
  190. package/lib/esm/internal/app-binder/di/appBinderModule.js +2 -0
  191. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +7 -0
  192. package/lib/esm/internal/app-binder/di/appBinderModule.test.js +2 -0
  193. package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +7 -0
  194. package/lib/esm/internal/app-binder/di/appBinderTypes.js +2 -0
  195. package/lib/esm/internal/app-binder/di/appBinderTypes.js.map +7 -0
  196. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js +2 -0
  197. package/lib/esm/internal/app-binder/task/SendCommandInChunksTask.js.map +7 -0
  198. package/lib/esm/internal/app-binder/task/SendSignDataTask.js +2 -0
  199. package/lib/esm/internal/app-binder/task/SendSignDataTask.js.map +7 -0
  200. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js +2 -0
  201. package/lib/esm/internal/app-binder/task/SendSignDataTask.test.js.map +7 -0
  202. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +2 -0
  203. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +7 -0
  204. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +2 -0
  205. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +7 -0
  206. package/lib/esm/internal/di.js +2 -0
  207. package/lib/esm/internal/di.js.map +7 -0
  208. package/lib/esm/internal/externalTypes.js +2 -0
  209. package/lib/esm/internal/externalTypes.js.map +7 -0
  210. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js +2 -0
  211. package/lib/esm/internal/use-cases/address/GetAddressUseCase.js.map +7 -0
  212. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
  213. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
  214. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +2 -0
  215. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +7 -0
  216. package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js +2 -0
  217. package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.js.map +7 -0
  218. package/lib/esm/internal/use-cases/di/useCasesModule.js +2 -0
  219. package/lib/esm/internal/use-cases/di/useCasesModule.js.map +7 -0
  220. package/lib/esm/internal/use-cases/di/useCasesModule.test.js +2 -0
  221. package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +7 -0
  222. package/lib/esm/internal/use-cases/di/useCasesTypes.js +2 -0
  223. package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +7 -0
  224. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +2 -0
  225. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +7 -0
  226. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +2 -0
  227. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +7 -0
  228. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js +2 -0
  229. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.js.map +7 -0
  230. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js +2 -0
  231. package/lib/esm/internal/use-cases/transaction/SignTransactionUseCase.test.js.map +7 -0
  232. package/lib/esm/package.json +58 -0
  233. package/lib/types/api/SignerSolana.d.ts +14 -0
  234. package/lib/types/api/SignerSolana.d.ts.map +1 -0
  235. package/lib/types/api/SignerSolanaBuilder.d.ts +28 -0
  236. package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -0
  237. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts +9 -0
  238. package/lib/types/api/app-binder/GetAddressDeviceActionTypes.d.ts.map +1 -0
  239. package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts +7 -0
  240. package/lib/types/api/app-binder/GetAppConfigurationDeviceActionTypes.d.ts.map +1 -0
  241. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +20 -0
  242. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -0
  243. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +23 -0
  244. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -0
  245. package/lib/types/api/index.d.ts +10 -0
  246. package/lib/types/api/index.d.ts.map +1 -0
  247. package/lib/types/api/model/AddressOption.d.ts +4 -0
  248. package/lib/types/api/model/AddressOption.d.ts.map +1 -0
  249. package/lib/types/api/model/AppConfiguration.d.ts +7 -0
  250. package/lib/types/api/model/AppConfiguration.d.ts.map +1 -0
  251. package/lib/types/api/model/PublicKey.d.ts +2 -0
  252. package/lib/types/api/model/PublicKey.d.ts.map +1 -0
  253. package/lib/types/api/model/PublicKeyDisplayMode.d.ts +5 -0
  254. package/lib/types/api/model/PublicKeyDisplayMode.d.ts.map +1 -0
  255. package/lib/types/api/model/Signature.d.ts +2 -0
  256. package/lib/types/api/model/Signature.d.ts.map +1 -0
  257. package/lib/types/api/model/Transaction.d.ts +2 -0
  258. package/lib/types/api/model/Transaction.d.ts.map +1 -0
  259. package/lib/types/api/model/TransactionOptions.d.ts +2 -0
  260. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -0
  261. package/lib/types/index.d.ts +3 -0
  262. package/lib/types/index.d.ts.map +1 -0
  263. package/lib/types/internal/DefaultSignerSolana.d.ts +22 -0
  264. package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -0
  265. package/lib/types/internal/DefaultSignerSolana.test.d.ts +2 -0
  266. package/lib/types/internal/DefaultSignerSolana.test.d.ts.map +1 -0
  267. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +27 -0
  268. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -0
  269. package/lib/types/internal/app-binder/SolanaAppBinder.test.d.ts +2 -0
  270. package/lib/types/internal/app-binder/SolanaAppBinder.test.d.ts.map +1 -0
  271. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +11 -0
  272. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -0
  273. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts +2 -0
  274. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts.map +1 -0
  275. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts +15 -0
  276. package/lib/types/internal/app-binder/command/GetPubKeyCommand.d.ts.map +1 -0
  277. package/lib/types/internal/app-binder/command/GetPubKeyCommand.test.d.ts +2 -0
  278. package/lib/types/internal/app-binder/command/GetPubKeyCommand.test.d.ts.map +1 -0
  279. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts +14 -0
  280. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.d.ts.map +1 -0
  281. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.test.d.ts +2 -0
  282. package/lib/types/internal/app-binder/command/SignOffChainMessageCommand.test.d.ts.map +1 -0
  283. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +19 -0
  284. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -0
  285. package/lib/types/internal/app-binder/command/SignTransactionCommand.test.d.ts +2 -0
  286. package/lib/types/internal/app-binder/command/SignTransactionCommand.test.d.ts.map +1 -0
  287. package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts +2 -0
  288. package/lib/types/internal/app-binder/command/utils/solanaAppError.test.d.ts.map +1 -0
  289. package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts +8 -0
  290. package/lib/types/internal/app-binder/command/utils/solanaAppErrors.d.ts.map +1 -0
  291. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +15 -0
  292. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +1 -0
  293. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +2 -0
  294. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +1 -0
  295. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +17 -0
  296. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -0
  297. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.test.d.ts +2 -0
  298. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.test.d.ts.map +1 -0
  299. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +3 -0
  300. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -0
  301. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts +2 -0
  302. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -0
  303. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +12 -0
  304. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -0
  305. package/lib/types/internal/app-binder/di/appBinderModule.d.ts +3 -0
  306. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -0
  307. package/lib/types/internal/app-binder/di/appBinderModule.test.d.ts +2 -0
  308. package/lib/types/internal/app-binder/di/appBinderModule.test.d.ts.map +1 -0
  309. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts +4 -0
  310. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts.map +1 -0
  311. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts +18 -0
  312. package/lib/types/internal/app-binder/task/SendCommandInChunksTask.d.ts.map +1 -0
  313. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts +17 -0
  314. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts.map +1 -0
  315. package/lib/types/internal/app-binder/task/SendSignDataTask.test.d.ts +2 -0
  316. package/lib/types/internal/app-binder/task/SendSignDataTask.test.d.ts.map +1 -0
  317. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +15 -0
  318. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -0
  319. package/lib/types/internal/app-binder/task/SendSignMessageTask.test.d.ts +2 -0
  320. package/lib/types/internal/app-binder/task/SendSignMessageTask.test.d.ts.map +1 -0
  321. package/lib/types/internal/di.d.ts +8 -0
  322. package/lib/types/internal/di.d.ts.map +1 -0
  323. package/lib/types/internal/externalTypes.d.ts +5 -0
  324. package/lib/types/internal/externalTypes.d.ts.map +1 -0
  325. package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts +9 -0
  326. package/lib/types/internal/use-cases/address/GetAddressUseCase.d.ts.map +1 -0
  327. package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts +2 -0
  328. package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts.map +1 -0
  329. package/lib/types/internal/use-cases/app-configuration/GetAppConfiguration.test.d.ts +2 -0
  330. package/lib/types/internal/use-cases/app-configuration/GetAppConfiguration.test.d.ts.map +1 -0
  331. package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.d.ts +8 -0
  332. package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.d.ts.map +1 -0
  333. package/lib/types/internal/use-cases/di/useCasesModule.d.ts +3 -0
  334. package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -0
  335. package/lib/types/internal/use-cases/di/useCasesModule.test.d.ts +2 -0
  336. package/lib/types/internal/use-cases/di/useCasesModule.test.d.ts.map +1 -0
  337. package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +7 -0
  338. package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -0
  339. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts +8 -0
  340. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -0
  341. package/lib/types/internal/use-cases/message/SignMessageUseCase.test.d.ts +2 -0
  342. package/lib/types/internal/use-cases/message/SignMessageUseCase.test.d.ts.map +1 -0
  343. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts +10 -0
  344. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.d.ts.map +1 -0
  345. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.test.d.ts +2 -0
  346. package/lib/types/internal/use-cases/transaction/SignTransactionUseCase.test.d.ts.map +1 -0
  347. package/lib/types/tsconfig.prod.tsbuildinfo +1 -0
  348. package/package.json +57 -0
@@ -0,0 +1,2 @@
1
+ "use strict";var o=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var y=(r,p)=>{for(var n in p)o(r,n,{get:p[n],enumerable:!0})},s=(r,p,n,t)=>{if(p&&typeof p=="object"||typeof p=="function")for(let i of u(p))!f.call(r,i)&&i!==n&&o(r,i,{get:()=>p[i],enumerable:!(t=B(p,i))||t.enumerable});return r};var T=r=>s(o({},"__esModule",{value:!0}),r),c=(r,p,n,t)=>{for(var i=t>1?void 0:t?B(p,n):p,d=r.length-1,m;d>=0;d--)(m=r[d])&&(i=(t?m(p,n,i):m(i))||i);return t&&i&&o(p,n,i),i},A=(r,p)=>(n,t)=>p(n,t,r);var _={};y(_,{SignMessageUseCase:()=>e});module.exports=T(_);var a=require("inversify"),l=require("../../app-binder/di/appBinderTypes");let e=class{_appBinder;constructor(p){this._appBinder=p}execute(p,n){return this._appBinder.signMessage({derivationPath:p,message:n})}};e=c([(0,a.injectable)(),A(0,(0,a.inject)(l.appBinderTypes.AppBinder))],e);0&&(module.exports={SignMessageUseCase});
2
+ //# sourceMappingURL=SignMessageUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/message/SignMessageUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\n@injectable()\nexport class SignMessageUseCase {\n private _appBinder: SolanaAppBinder;\n\n constructor(\n @inject(appBinderTypes.AppBinder)\n appBinding: SolanaAppBinder,\n ) {\n this._appBinder = appBinding;\n }\n\n execute(derivationPath: string, message: string): SignMessageDAReturnType {\n return this._appBinder.signMessage({\n derivationPath,\n message,\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAGnCC,EAA+B,kDAIxB,IAAMC,EAAN,KAAyB,CACtB,WAER,YAEEC,EACA,CACA,KAAK,WAAaA,CACpB,CAEA,QAAQC,EAAwBC,EAA0C,CACxE,OAAO,KAAK,WAAW,YAAY,CACjC,eAAAD,EACA,QAAAC,CACF,CAAC,CACH,CACF,EAhBaH,EAANI,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,iBAAe,SAAS,IAJvBL",
6
+ "names": ["SignMessageUseCase_exports", "__export", "SignMessageUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "SignMessageUseCase", "appBinding", "derivationPath", "message", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=require("./SignMessageUseCase");describe("SignMessageUseCase",()=>{it("should call signMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",a={signMessage:jest.fn()};new n.SignMessageUseCase(a).execute(e,s),expect(a.signMessage).toHaveBeenCalledWith({derivationPath:e,message:s})})});
2
+ //# sourceMappingURL=SignMessageUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/message/SignMessageUseCase.test.ts"],
4
+ "sourcesContent": ["import { type SolanaAppBinder } from \"@internal/app-binder/SolanaAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signMessage: jest.fn(),\n };\n const signMessageUseCase = new SignMessageUseCase(\n appBinder as unknown as SolanaAppBinder,\n );\n\n // When\n signMessageUseCase.execute(derivationPath, message);\n\n // Then\n expect(appBinder.signMessage).toHaveBeenCalledWith({\n derivationPath,\n message,\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAmC,gCAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,kEAAmE,IAAM,CAE1E,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,YAAa,KAAK,GAAG,CACvB,EAC2B,IAAI,qBAC7BA,CACF,EAGmB,QAAQF,EAAgBC,CAAO,EAGlD,OAAOC,EAAU,WAAW,EAAE,qBAAqB,CACjD,eAAAF,EACA,QAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_SignMessageUseCase", "derivationPath", "message", "appBinder"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var A=(n,r)=>{for(var t in r)a(n,t,{get:r[t],enumerable:!0})},l=(n,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of B(r))!u.call(n,p)&&p!==t&&a(n,p,{get:()=>r[p],enumerable:!(i=s(r,p))||i.enumerable});return n};var y=n=>l(a({},"__esModule",{value:!0}),n),T=(n,r,t,i)=>{for(var p=i>1?void 0:i?s(r,t):r,m=n.length-1,c;m>=0;m--)(c=n[m])&&(p=(i?c(r,t,p):c(p))||p);return i&&p&&a(r,t,p),p},d=(n,r)=>(t,i)=>r(t,i,n);var j={};A(j,{SignTransactionUseCase:()=>o});module.exports=y(j);var e=require("inversify"),f=require("../../app-binder/di/appBinderTypes");let o=class{constructor(r){this.appBinder=r}execute(r,t,i){return this.appBinder.signTransaction({derivationPath:r,transaction:t,options:i})}};o=T([(0,e.injectable)(),d(0,(0,e.inject)(f.appBinderTypes.AppBinder))],o);0&&(module.exports={SignTransactionUseCase});
2
+ //# sourceMappingURL=SignTransactionUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 options,\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,QAAAC,CACF,CAAC,CACH,CACF,EAhBaJ,EAANK,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBN",
6
+ "names": ["SignTransactionUseCase_exports", "__export", "SignTransactionUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "SignTransactionUseCase", "appBinder", "derivationPath", "transaction", "options", "__decorateClass", "__decorateParam"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=require("./SignTransactionUseCase");describe("GetAppConfigurationUseCase",()=>{const e=jest.fn(),a={signTransaction:e};let n;beforeEach(()=>{jest.clearAllMocks(),n=new t.SignTransactionUseCase(a)}),it("should return the config from the appBinder's getAppConfiguration method",()=>{e.mockReturnValue(new Uint8Array([66]));const o=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]),options:void 0}),expect(o).toEqual(new Uint8Array([66]))})});
2
+ //# sourceMappingURL=SignTransactionUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 = jest.fn();\n const appBinderMock = {\n signTransaction: signTransactionMock,\n } as unknown as SolanaAppBinder;\n let useCase: SignTransactionUseCase;\n\n beforeEach(() => {\n jest.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 options: undefined,\n });\n expect(result).toEqual(new Uint8Array([0x042]));\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAuC,oCAEvC,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAsB,KAAK,GAAG,EAC9BC,EAAgB,CACpB,gBAAiBD,CACnB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,KAAK,cAAc,EACnBA,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,QAAS,MACX,CAAC,EACD,OAAOG,CAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,EAAK,CAAC,CAAC,CAChD,CAAC,CACH,CAAC",
6
+ "names": ["import_SignTransactionUseCase", "signTransactionMock", "appBinderMock", "useCase", "result"]
7
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@ledgerhq/device-signer-kit-solana",
3
+ "version": "1.0.0",
4
+ "license": "Apache-2.0",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./lib/types/index.d.ts",
8
+ "import": "./lib/esm/index.js",
9
+ "require": "./lib/cjs/index.js"
10
+ },
11
+ "./*": {
12
+ "types": "./lib/types/*",
13
+ "import": "./lib/esm/*",
14
+ "require": "./lib/cjs/*"
15
+ }
16
+ },
17
+ "files": [
18
+ "./lib"
19
+ ],
20
+ "scripts": {
21
+ "prebuild": "rimraf lib",
22
+ "build": "pnpm lmdk-build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
23
+ "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
24
+ "watch:builds": "pnpm lmdk-watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
25
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
26
+ "lint": "eslint",
27
+ "lint:fix": "pnpm lint --fix",
28
+ "postpack": "find . -name '*.tgz' -exec cp {} ../../../dist/ \\; ",
29
+ "prettier": "prettier . --check",
30
+ "prettier:fix": "prettier . --write",
31
+ "typecheck": "tsc --noEmit",
32
+ "test": "jest",
33
+ "test:watch": "pnpm test -- --watch",
34
+ "test:coverage": "pnpm test -- --coverage"
35
+ },
36
+ "dependencies": {
37
+ "@ledgerhq/signer-utils": "workspace:*",
38
+ "bs58": "^6.0.0",
39
+ "inversify": "^6.0.3",
40
+ "inversify-logger-middleware": "^3.1.0",
41
+ "purify-ts": "^2.1.0",
42
+ "reflect-metadata": "^0.2.2",
43
+ "xstate": "^5.18.2"
44
+ },
45
+ "devDependencies": {
46
+ "@ledgerhq/device-management-kit": "workspace:*",
47
+ "@ledgerhq/esbuild-tools": "workspace:*",
48
+ "@ledgerhq/eslint-config-dsdk": "workspace:*",
49
+ "@ledgerhq/jest-config-dsdk": "workspace:*",
50
+ "@ledgerhq/prettier-config-dsdk": "workspace:*",
51
+ "@ledgerhq/tsconfig-dsdk": "workspace:*",
52
+ "rxjs": "^7.8.1",
53
+ "ts-node": "^10.9.2"
54
+ },
55
+ "peerDependencies": {
56
+ "@ledgerhq/device-management-kit": "workspace:*"
57
+ }
58
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SignerSolana.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{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};
2
+ //# sourceMappingURL=SignerSolanaBuilder.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=GetAddressDeviceActionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=GetAppConfigurationDeviceActionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SignMessageDeviceActionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SignTransactionDeviceActionTypes.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{SignerSolanaBuilder as r}from"./SignerSolanaBuilder";export{r as SignerSolanaBuilder};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=AddressOption.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=AppConfiguration.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=PublicKey.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ var r=(n=>(n.LONG="long",n.SHORT="short",n))(r||{});export{r as PublicKeyDisplayMode};
2
+ //# sourceMappingURL=PublicKeyDisplayMode.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/model/PublicKeyDisplayMode.ts"],
4
+ "sourcesContent": ["export enum PublicKeyDisplayMode {\n LONG = \"long\",\n SHORT = \"short\",\n}\n"],
5
+ "mappings": "AAAO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,QAFEA,OAAA",
6
+ "names": ["PublicKeyDisplayMode"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Signature.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Transaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=TransactionOptions.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"reflect-metadata";export*from"./api/index";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["// inversify requirement\nimport \"reflect-metadata\";\n\nexport * from \"@api/index\";\n"],
5
+ "mappings": "AACA,MAAO,mBAEP,WAAc",
6
+ "names": []
7
+ }
@@ -0,0 +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){return this._container.get(n.SignMessageUseCase).execute(e,t)}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
+ //# sourceMappingURL=DefaultSignerSolana.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 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 ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message);\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": "AAiBA,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,EACyB,CACzB,OAAO,KAAK,WACT,IAAwBR,EAAc,kBAAkB,EACxD,QAAQK,EAAgBG,CAAO,CACpC,CAEA,WACEH,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"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DefaultSignerSolana as s}from"./DefaultSignerSolana";describe("DefaultSignerSolana",()=>{it("should be defined",()=>{const e=new s({dmk:{},sessionId:{}});expect(e).toBeDefined()}),it("should call getAddress",()=>{const e={executeDeviceAction:jest.fn()},n={};new s({dmk:e,sessionId:n}).getAddress("derivationPath",{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signTransaction",()=>{const e={executeDeviceAction:jest.fn()},n={};new s({dmk:e,sessionId:n}).signTransaction("derivationPath",new Uint8Array,{}),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call signMessage",()=>{const e={executeDeviceAction:jest.fn()},n={};new s({dmk:e,sessionId:n}).signMessage("44'/501'/0'/0'","Hello world"),expect(e.executeDeviceAction).toHaveBeenCalled()}),it("should call getAppConfiguration",()=>{const e={executeDeviceAction:jest.fn()},n={};new s({dmk:e,sessionId:n}).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalled()})});
2
+ //# sourceMappingURL=DefaultSignerSolana.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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: jest.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: jest.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: jest.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: jest.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,KAAK,GAAG,CAC/B,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,KAAK,GAAG,CAC/B,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,KAAK,GAAG,CAC/B,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,KAAK,GAAG,CAC/B,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"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var A=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=(o,e,n,t)=>{for(var i=t>1?void 0:t?g(e,n):e,r=o.length-1,a;r>=0;r--)(a=o[r])&&(i=(t?a(e,n,i):a(i))||i);return t&&i&&A(e,n,i),i},c=(o,e)=>(n,t)=>e(n,t,o);import{SendCommandInAppDeviceAction as d,UserInteractionRequired as m}from"@ledgerhq/device-management-kit";import{inject as u,injectable as D}from"inversify";import{externalTypes as v}from"../externalTypes";import{GetAppConfigurationCommand as f}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as h}from"./command/GetPubKeyCommand";import{SignMessageDeviceAction as T}from"./device-action/SignMessage/SignMessageDeviceAction";import{SignTransactionDeviceAction as I}from"./device-action/SignTransactionDeviceAction";let s=class{constructor(e,n){this.dmk=e;this.sessionId=n}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new d({input:{command:new h(e),appName:"Solana",requiredUserInteraction:e.checkOnDevice?m.VerifyAddress:m.None}})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new I({input:{derivationPath:e.derivationPath,transaction:e.transaction,options:e.options??{}}})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new T({input:{derivationPath:e.derivationPath,message:e.message}})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new d({input:{command:new f,appName:"Solana",requiredUserInteraction:m.None}})})}};s=p([D(),c(0,u(v.Dmk)),c(1,u(v.SessionId))],s);export{s as SolanaAppBinder};
2
+ //# sourceMappingURL=SolanaAppBinder.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/app-binder/SolanaAppBinder.ts"],
4
+ "sourcesContent": ["import {\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 { TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { SignMessageDeviceAction } from \"./device-action/SignMessage/SignMessageDeviceAction\";\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 }): 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 },\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n options?: TransactionOptions;\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 options: args.options ?? {},\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignMessageDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n message: args.message,\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 },\n }),\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAQnC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,8BAAAC,MAAkC,uCAC3C,OAAS,oBAAAC,MAAwB,6BACjC,OAAS,2BAAAC,MAA+B,sDACxC,OAAS,+BAAAC,MAAmC,8CAGrC,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACzC,CAFmC,SAAAD,EACM,eAAAC,CACxC,CAEH,WAAWC,EAGgB,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,IAC9B,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBH,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA4B,CAC5C,MAAO,CACL,eAAgBJ,EAAK,eACrB,YAAaA,EAAK,YAClB,QAASA,EAAK,SAAW,CAAC,CAC5B,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAGgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIK,EAAwB,CACxC,MAAO,CACL,eAAgBL,EAAK,eACrB,QAASA,EAAK,OAChB,CACF,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIK,EACb,QAAS,SACT,wBAAyBH,EAAwB,IACnD,CACF,CAAC,CACH,CAAC,CACH,CACF,EApEaN,EAANU,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GACxBF,EAAA,EAAAC,EAAOC,EAAc,SAAS,IAHtBd",
6
+ "names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "externalTypes", "GetAppConfigurationCommand", "GetPubKeyCommand", "SignMessageDeviceAction", "SignTransactionDeviceAction", "SolanaAppBinder", "dmk", "sessionId", "args", "SendCommandInAppDeviceAction", "GetPubKeyCommand", "UserInteractionRequired", "SignTransactionDeviceAction", "SignMessageDeviceAction", "GetAppConfigurationCommand", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceActionStatus as c,SendCommandInAppDeviceAction as u,UserInteractionRequired as A}from"@ledgerhq/device-management-kit";import{from as d}from"rxjs";import{GetAppConfigurationCommand as m}from"./command/GetAppConfigurationCommand";import{GetPubKeyCommand as l}from"./command/GetPubKeyCommand";import{SignMessageDeviceAction as D}from"./device-action/SignMessage/SignMessageDeviceAction";import{SignTransactionDeviceAction as v}from"./device-action/SignTransactionDeviceAction";import{SolanaAppBinder as r}from"./SolanaAppBinder";describe("SolanaAppBinder",()=>{const n={sendCommand:jest.fn(),executeDeviceAction:jest.fn()};beforeEach(()=>{jest.clearAllMocks()}),it("should be defined",()=>{const e=new r({},{});expect(e).toBeDefined()}),describe("getAddress",()=>{it("should return the address",e=>{const i="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";jest.spyOn(n,"executeDeviceAction").mockReturnValue({observable:d([{status:c.Completed,output:i}]),cancel:jest.fn()});const s=new r(n,"sessionId"),{observable:a}=s.getAddress({derivationPath:"44'/501'",checkOnDevice:!1}),o=[];a.subscribe({next:t=>{o.push(t)},error:t=>{e(t)},complete:()=>{try{expect(o).toEqual([{status:c.Completed,output:i}]),e()}catch(t){e(t)}}})}),describe("calls of executeDeviceAction with the correct params",()=>{const e={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const s={...e,checkOnDevice:!0};new r(n,"sessionId").getAddress(s),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new u({input:{command:new l(s),appName:"Solana",requiredUserInteraction:A.VerifyAddress}})})}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const s={...e,checkOnDevice:!1};new r(n,"sessionId").getAddress(s),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new u({input:{command:new l(s),appName:"Solana",requiredUserInteraction:A.None}})})})})}),describe("signTransaction",()=>{it("should return the signature",e=>{const i=new Uint8Array([1,2,3]);jest.spyOn(n,"executeDeviceAction").mockReturnValue({observable:d([{status:c.Completed,output:i}]),cancel:jest.fn()});const s=new r(n,"sessionId"),{observable:a}=s.signTransaction({derivationPath:"44'/501'",transaction:new Uint8Array([1,2,3,4])}),o=[];a.subscribe({next:t=>{o.push(t)},error:t=>{e(t)},complete:()=>{try{expect(o).toEqual([{status:c.Completed,output:i}]),e()}catch(t){e(t)}}})}),it("should call executeDeviceAction with the correct params",()=>{const e="44'/60'/3'/2/1",i=new Uint8Array([1,2,3,4]);new r(n,"sessionId").signTransaction({derivationPath:e,transaction:i}),expect(n.executeDeviceAction).toHaveBeenCalledWith({deviceAction:new v({input:{derivationPath:e,transaction:i,options:{}}}),sessionId:"sessionId"})})}),describe("signMessage",()=>{it("should return the signed message",e=>{const i=new Uint8Array([28,138,84,5,16]),s={derivationPath:"44'/501'/0'/0'",message:"Hello world"};jest.spyOn(n,"executeDeviceAction").mockReturnValue({observable:d([{status:c.Completed,output:i}]),cancel:jest.fn()});const a=new r(n,"sessionId"),{observable:o}=a.signMessage(s),t=[];o.subscribe({next:p=>{t.push(p)},error:p=>{e(p)},complete:()=>{try{expect(t).toEqual([{status:c.Completed,output:i}]),e()}catch(p){e(p)}}})}),it("should call executeDeviceAction with correct parameters",()=>{const e={derivationPath:"44'/501'/0'/0'",message:"Hello world"};new r(n,"sessionId").signMessage(e),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new D({input:{derivationPath:e.derivationPath,message:e.message}})})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",e=>{const i={blindSigningEnabled:!0,pubKeyDisplayMode:"LONG",version:"2.5.10"};jest.spyOn(n,"executeDeviceAction").mockReturnValue({observable:d([{status:c.Completed,output:i}]),cancel:jest.fn()});const s=new r(n,"sessionId"),{observable:a}=s.getAppConfiguration(),o=[];a.subscribe({next:t=>{o.push(t)},error:t=>{e(t)},complete:()=>{try{expect(o).toEqual([{status:c.Completed,output:i}]),e()}catch(t){e(t)}}})}),it("should call executeDeviceAction with the correct params",()=>{new r(n,"sessionId").getAppConfiguration(),expect(n.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new u({input:{command:new m,appName:"Solana",requiredUserInteraction:A.None}})})})})});
2
+ //# sourceMappingURL=SolanaAppBinder.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 { SignMessageDeviceAction } from \"./device-action/SignMessage/SignMessageDeviceAction\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { SolanaAppBinder } from \"./SolanaAppBinder\";\n\ndescribe(\"SolanaAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: jest.fn(),\n executeDeviceAction: jest.fn(),\n } as unknown as DeviceManagementKit;\n\n beforeEach(() => {\n jest.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\", (done) => {\n // GIVEN\n const address = \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\";\n\n jest.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: jest.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 });\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 done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: address,\n },\n ]);\n done();\n } catch (err) {\n done(err);\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 };\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 },\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 },\n }),\n });\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n it(\"should return the signature\", (done) => {\n // GIVEN\n const signature = new Uint8Array([0x01, 0x02, 0x03]);\n\n jest.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: jest.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 });\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 done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n done();\n } catch (err) {\n done(err);\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\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n appBinder.signTransaction({ derivationPath, transaction });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath,\n transaction,\n options: {},\n },\n }),\n sessionId: \"sessionId\",\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signed message\", (done) => {\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 };\n\n jest.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: jest.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 done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signedMessage,\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n\n it(\"should call executeDeviceAction with correct parameters\", () => {\n // GIVEN\n const signMessageArgs = {\n derivationPath: \"44'/501'/0'/0'\",\n message: \"Hello world\",\n };\n\n // WHEN\n const appBinder = new SolanaAppBinder(mockedDmk, \"sessionId\");\n appBinder.signMessage(signMessageArgs);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SignMessageDeviceAction({\n input: {\n derivationPath: signMessageArgs.derivationPath,\n message: signMessageArgs.message,\n },\n }),\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", (done) => {\n // GIVEN\n const appConfiguration = {\n blindSigningEnabled: true,\n pubKeyDisplayMode: \"LONG\",\n version: \"2.5.10\",\n };\n\n jest.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: jest.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 observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: appConfiguration,\n },\n ]);\n done();\n } catch (err) {\n done(err);\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 },\n }),\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAppConfigurationCommand", "GetPubKeyCommand", "SignMessageDeviceAction", "SignTransactionDeviceAction", "SolanaAppBinder", "mockedDmk", "binder", "done", "address", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "signature", "derivationPath", "transaction", "signedMessage", "signMessageArgs", "appConfiguration"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ApduBuilder as d,ApduParser as m,CommandResultFactory as e,InvalidStatusWordError as u,isCommandErrorCode as C}from"@ledgerhq/device-management-kit";import{PublicKeyDisplayMode as p}from"../../../api/model/PublicKeyDisplayMode";import{SolanaAppCommandError as g,solanaAppErrors as a}from"./utils/solanaAppErrors";class y{args;constructor(r){this.args=r}getApdu(){return new d({cla:224,ins:4,p1:0,p2:0}).build()}parseResponse(r){const t=new m(r),n=t.encodeToHexaString(r.statusCode);if(C(n,a))return e({error:new g({...a[n],errorCode:n})});const o=t.extractFieldByLength(5);if(!o||o.length!==5||o.some(s=>s===void 0))return e({error:new u("Invalid response")});const i={blindSigningEnabled:!!o[0],pubKeyDisplayMode:o[1]===0?p.LONG:p.SHORT,version:`${o[2]}.${o[3]}.${o[4]}`};return e({data:i})}}export{y as GetAppConfigurationCommand};
2
+ //# sourceMappingURL=GetAppConfigurationCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/GetAppConfigurationCommand.ts"],
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n isCommandErrorCode,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\n\nimport {\n SolanaAppCommandError,\n solanaAppErrors,\n} from \"./utils/solanaAppErrors\";\n\ntype GetAppConfigurationCommandArgs = void;\n\nexport class GetAppConfigurationCommand\n implements Command<AppConfiguration, GetAppConfigurationCommandArgs>\n{\n args: GetAppConfigurationCommandArgs;\n\n constructor(args: GetAppConfigurationCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x04,\n p1: 0x00,\n p2: 0x00,\n }).build();\n }\n\n parseResponse(response: ApduResponse): CommandResult<AppConfiguration> {\n const parser = new ApduParser(response);\n const errorCode = parser.encodeToHexaString(response.statusCode);\n if (isCommandErrorCode(errorCode, solanaAppErrors)) {\n return CommandResultFactory({\n error: new SolanaAppCommandError({\n ...solanaAppErrors[errorCode],\n errorCode,\n }),\n });\n }\n\n const buffer = parser.extractFieldByLength(5);\n if (\n !buffer ||\n buffer.length !== 5 ||\n buffer.some((element) => element === undefined)\n ) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid response\"),\n });\n }\n\n const config: AppConfiguration = {\n blindSigningEnabled: Boolean(buffer[0]),\n pubKeyDisplayMode:\n buffer[1] === 0\n ? PublicKeyDisplayMode.LONG\n : PublicKeyDisplayMode.SHORT,\n version: `${buffer[2]}.${buffer[3]}.${buffer[4]}`,\n };\n\n return CommandResultFactory({\n data: config,\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,EACA,sBAAAC,MACK,kCAGP,OAAS,wBAAAC,MAA4B,kCAErC,OACE,yBAAAC,EACA,mBAAAC,MACK,0BAIA,MAAMC,CAEb,CACE,KAEA,YAAYC,EAAsC,CAChD,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,OAAO,IAAIT,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cAAcU,EAAyD,CACrE,MAAMC,EAAS,IAAIV,EAAWS,CAAQ,EAChCE,EAAYD,EAAO,mBAAmBD,EAAS,UAAU,EAC/D,GAAIN,EAAmBQ,EAAWL,CAAe,EAC/C,OAAOL,EAAqB,CAC1B,MAAO,IAAII,EAAsB,CAC/B,GAAGC,EAAgBK,CAAS,EAC5B,UAAAA,CACF,CAAC,CACH,CAAC,EAGH,MAAMC,EAASF,EAAO,qBAAqB,CAAC,EAC5C,GACE,CAACE,GACDA,EAAO,SAAW,GAClBA,EAAO,KAAMC,GAAYA,IAAY,MAAS,EAE9C,OAAOZ,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,kBAAkB,CACtD,CAAC,EAGH,MAAMY,EAA2B,CAC/B,oBAAqB,EAAQF,EAAO,CAAC,EACrC,kBACEA,EAAO,CAAC,IAAM,EACVR,EAAqB,KACrBA,EAAqB,MAC3B,QAAS,GAAGQ,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,EACjD,EAEA,OAAOX,EAAqB,CAC1B,KAAMa,CACR,CAAC,CACH,CACF",
6
+ "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "isCommandErrorCode", "PublicKeyDisplayMode", "SolanaAppCommandError", "solanaAppErrors", "GetAppConfigurationCommand", "args", "response", "parser", "errorCode", "buffer", "element", "config"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ApduResponse as s,CommandResultFactory as n,isSuccessCommandResult as o}from"@ledgerhq/device-management-kit";import{PublicKeyDisplayMode as a}from"../../../api/model/PublicKeyDisplayMode";import{GetAppConfigurationCommand as i}from"./GetAppConfigurationCommand";const p=new Uint8Array([224,4,0,0,0]),c=new Uint8Array([1,0,2,5,10]),d=new s({statusCode:Uint8Array.from([144,0]),data:c}),l=new Uint8Array([1,1,2,5,10]),u=new s({statusCode:Uint8Array.from([144,0]),data:l});describe("GetAppConfigurationCommand",()=>{let t;beforeEach(()=>{t=new i,jest.clearAllMocks(),jest.requireActual("@ledgerhq/device-management-kit")}),describe("getApdu",()=>{it("should return the correct APDU",()=>{const e=t.getApdu();expect(e.getRawApdu()).toEqual(p)})}),describe("parseResponse",()=>{it("should parse the response correctly",()=>{const e=t.parseResponse(d);expect(e).toStrictEqual(n({data:{blindSigningEnabled:!0,pubKeyDisplayMode:a.LONG,version:"2.5.10"}}))}),it("should parse the response correctly with short pub key display mode",()=>{const e=t.parseResponse(u);expect(e).toStrictEqual(n({data:{blindSigningEnabled:!0,pubKeyDisplayMode:a.SHORT,version:"2.5.10"}}))}),describe("error handling",()=>{it("should return error if response is not success",()=>{const e=new s({statusCode:Uint8Array.from([106,130]),data:new Uint8Array(0)}),r=t.parseResponse(e);expect(o(r)).toBe(!1),o(r)?fail("Expected error"):expect(r.error).toEqual(expect.objectContaining({_tag:"InvalidStatusWordError",originalError:expect.objectContaining({message:"Invalid response"})}))}),it("should return error if response is not success",()=>{const e=new s({statusCode:Uint8Array.from([106,130]),data:new Uint8Array(0)}),r=t.parseResponse(e);expect(o(r)).toBe(!1),o(r)?fail("Expected error"):expect(r.error).toEqual(expect.objectContaining({_tag:"InvalidStatusWordError",originalError:expect.objectContaining({message:"Invalid response"})}))})})})});
2
+ //# sourceMappingURL=GetAppConfigurationCommand.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/GetAppConfigurationCommand.test.ts"],
4
+ "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { PublicKeyDisplayMode } from \"@api/model/PublicKeyDisplayMode\";\n\nimport { GetAppConfigurationCommand } from \"./GetAppConfigurationCommand\";\n\nconst GET_APP_CONFIG_APDU = new Uint8Array([0xe0, 0x04, 0x00, 0x00, 0x00]);\n\nconst GET_APP_CONFIG_RESPONSE_DATA = new Uint8Array([\n 0x01, 0x00, 0x02, 0x05, 0x0a,\n]);\n\nconst GET_APP_CONFIG_RESPONSE = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: GET_APP_CONFIG_RESPONSE_DATA,\n});\n\nconst GET_APP_CONFIG_RESPONSE_DATA_SHORT_PUB_KEY_DISPLAY_MODE = new Uint8Array([\n 0x01, 0x01, 0x02, 0x05, 0x0a,\n]);\n\nconst GET_APP_CONFIG_RESPONSE_SHORT_PUB_KEY_DISPLAY_MODE = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: GET_APP_CONFIG_RESPONSE_DATA_SHORT_PUB_KEY_DISPLAY_MODE,\n});\n\ndescribe(\"GetAppConfigurationCommand\", () => {\n let command: GetAppConfigurationCommand;\n\n beforeEach(() => {\n command = new GetAppConfigurationCommand();\n jest.clearAllMocks();\n jest.requireActual(\"@ledgerhq/device-management-kit\");\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the correct APDU\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toEqual(GET_APP_CONFIG_APDU);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should parse the response correctly\", () => {\n const parsed = command.parseResponse(GET_APP_CONFIG_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n blindSigningEnabled: true,\n pubKeyDisplayMode: PublicKeyDisplayMode.LONG,\n version: \"2.5.10\",\n },\n }),\n );\n });\n\n it(\"should parse the response correctly with short pub key display mode\", () => {\n const parsed = command.parseResponse(\n GET_APP_CONFIG_RESPONSE_SHORT_PUB_KEY_DISPLAY_MODE,\n );\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n blindSigningEnabled: true,\n pubKeyDisplayMode: PublicKeyDisplayMode.SHORT,\n version: \"2.5.10\",\n },\n }),\n );\n });\n\n describe(\"error handling\", () => {\n it(\"should return error if response is not success\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x82]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toEqual(\n expect.objectContaining({\n _tag: \"InvalidStatusWordError\",\n originalError: expect.objectContaining({\n message: \"Invalid response\",\n }),\n }),\n );\n } else {\n fail(\"Expected error\");\n }\n });\n\n it(\"should return error if response is not success\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x82]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toEqual(\n expect.objectContaining({\n _tag: \"InvalidStatusWordError\",\n originalError: expect.objectContaining({\n message: \"Invalid response\",\n }),\n }),\n );\n } else {\n fail(\"Expected error\");\n }\n });\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OACE,gBAAAA,EACA,wBAAAC,EACA,0BAAAC,MACK,kCAEP,OAAS,wBAAAC,MAA4B,kCAErC,OAAS,8BAAAC,MAAkC,+BAE3C,MAAMC,EAAsB,IAAI,WAAW,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,EAEnEC,EAA+B,IAAI,WAAW,CAClD,EAAM,EAAM,EAAM,EAAM,EAC1B,CAAC,EAEKC,EAA0B,IAAIP,EAAa,CAC/C,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMM,CACR,CAAC,EAEKE,EAA0D,IAAI,WAAW,CAC7E,EAAM,EAAM,EAAM,EAAM,EAC1B,CAAC,EAEKC,EAAqD,IAAIT,EAAa,CAC1E,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMQ,CACR,CAAC,EAED,SAAS,6BAA8B,IAAM,CAC3C,IAAIE,EAEJ,WAAW,IAAM,CACfA,EAAU,IAAIN,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,iCAAiC,CACtD,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,iCAAkC,IAAM,CACzC,MAAMO,EAAOD,EAAQ,QAAQ,EAC7B,OAAOC,EAAK,WAAW,CAAC,EAAE,QAAQN,CAAmB,CACvD,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,sCAAuC,IAAM,CAC9C,MAAMO,EAASF,EAAQ,cAAcH,CAAuB,EAC5D,OAAOK,CAAM,EAAE,cACbX,EAAqB,CACnB,KAAM,CACJ,oBAAqB,GACrB,kBAAmBE,EAAqB,KACxC,QAAS,QACX,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,sEAAuE,IAAM,CAC9E,MAAMS,EAASF,EAAQ,cACrBD,CACF,EACA,OAAOG,CAAM,EAAE,cACbX,EAAqB,CACnB,KAAM,CACJ,oBAAqB,GACrB,kBAAmBE,EAAqB,MACxC,QAAS,QACX,CACF,CAAC,CACH,CACF,CAAC,EAED,SAAS,iBAAkB,IAAM,CAC/B,GAAG,iDAAkD,IAAM,CACzD,MAAMU,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CACxB,CAAC,EACKc,EAASJ,EAAQ,cAAcG,CAAQ,EAC7C,OAAOX,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,EAUhC,KAAK,gBAAgB,EATrB,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,KAAM,yBACN,cAAe,OAAO,iBAAiB,CACrC,QAAS,kBACX,CAAC,CACH,CAAC,CACH,CAIJ,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,MAAMD,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CACxB,CAAC,EACKc,EAASJ,EAAQ,cAAcG,CAAQ,EAC7C,OAAOX,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,EAUhC,KAAK,gBAAgB,EATrB,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,KAAM,yBACN,cAAe,OAAO,iBAAiB,CACrC,QAAS,kBACX,CAAC,CACH,CAAC,CACH,CAIJ,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "PublicKeyDisplayMode", "GetAppConfigurationCommand", "GET_APP_CONFIG_APDU", "GET_APP_CONFIG_RESPONSE_DATA", "GET_APP_CONFIG_RESPONSE", "GET_APP_CONFIG_RESPONSE_DATA_SHORT_PUB_KEY_DISPLAY_MODE", "GET_APP_CONFIG_RESPONSE_SHORT_PUB_KEY_DISPLAY_MODE", "command", "apdu", "parsed", "response", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ApduBuilder as m,ApduParser as p,CommandResultFactory as n,InvalidStatusWordError as a,isCommandErrorCode as u}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as c}from"@ledgerhq/signer-utils";import l from"bs58";import{SolanaAppCommandError as y,solanaAppErrors as s}from"./utils/solanaAppErrors";const d=32;class h{args;constructor(t){this.args=t}getApdu(){const t={cla:224,ins:5,p1:this.args.checkOnDevice?1:0,p2:0},e=new m(t),r=this.args.derivationPath,o=c.splitPath(r);return e.add8BitUIntToData(o.length),o.forEach(i=>{e.add32BitUIntToData(i)}),e.build()}parseResponse(t){const e=new p(t),r=e.encodeToHexaString(t.statusCode);if(u(r,s))return n({error:new y({...s[r],errorCode:r})});if(e.testMinimalLength(d)===!1)return n({error:new a("Public key is missing")});const o=e.extractFieldByLength(d);return o===void 0?n({error:new a("Unable to extract public key")}):n({data:l.encode(o)})}}export{h as GetPubKeyCommand};
2
+ //# sourceMappingURL=GetPubKeyCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 isCommandErrorCode,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport bs58 from \"bs58\";\n\nimport { type PublicKey } from \"@api/model/PublicKey\";\n\nimport {\n SolanaAppCommandError,\n solanaAppErrors,\n} from \"./utils/solanaAppErrors\";\n\nconst PUBKEY_LENGTH = 32;\n\ntype GetPubKeyCommandResponse = PublicKey;\ntype GetPubKeyCommandArgs = {\n derivationPath: string;\n checkOnDevice: boolean;\n};\n\nexport class GetPubKeyCommand\n implements Command<GetPubKeyCommandResponse, GetPubKeyCommandArgs>\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> {\n const parser = new ApduParser(response);\n const errorCode = parser.encodeToHexaString(response.statusCode);\n if (isCommandErrorCode(errorCode, solanaAppErrors)) {\n return CommandResultFactory({\n error: new SolanaAppCommandError({\n ...solanaAppErrors[errorCode],\n errorCode,\n }),\n });\n }\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"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,EACA,sBAAAC,MACK,kCACP,OAAS,uBAAAC,MAA2B,yBACpC,OAAOC,MAAU,OAIjB,OACE,yBAAAC,EACA,mBAAAC,MACK,0BAEP,MAAMC,EAAgB,GAQf,MAAMC,CAEb,CACE,KAEA,YAAYC,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,IAAIb,EAAYY,CAAa,EACvCE,EAAiB,KAAK,KAAK,eAE3BC,EAAOV,EAAoB,UAAUS,CAAc,EACzD,OAAAD,EAAQ,kBAAkBE,EAAK,MAAM,EACrCA,EAAK,QAASC,GAAY,CACxBH,EAAQ,mBAAmBG,CAAO,CACpC,CAAC,EAEMH,EAAQ,MAAM,CACvB,CAEA,cACEI,EACyC,CACzC,MAAMC,EAAS,IAAIjB,EAAWgB,CAAQ,EAChCE,EAAYD,EAAO,mBAAmBD,EAAS,UAAU,EAC/D,GAAIb,EAAmBe,EAAWX,CAAe,EAC/C,OAAON,EAAqB,CAC1B,MAAO,IAAIK,EAAsB,CAC/B,GAAGC,EAAgBW,CAAS,EAC5B,UAAAA,CACF,CAAC,CACH,CAAC,EAGH,GAAID,EAAO,kBAAkBT,CAAa,IAAM,GAC9C,OAAOP,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,uBAAuB,CAC3D,CAAC,EAGH,MAAMiB,EAASF,EAAO,qBAAqBT,CAAa,EACxD,OAAIW,IAAW,OACNlB,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,8BAA8B,CAClE,CAAC,EAGID,EAAqB,CAC1B,KAAMI,EAAK,OAAOc,CAAM,CAC1B,CAAC,CACH,CACF",
6
+ "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "isCommandErrorCode", "DerivationPathUtils", "bs58", "SolanaAppCommandError", "solanaAppErrors", "PUBKEY_LENGTH", "GetPubKeyCommand", "args", "getPubKeyArgs", "builder", "derivationPath", "path", "element", "response", "parser", "errorCode", "buffer"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ApduResponse as o,CommandResultFactory as a,isSuccessCommandResult as x}from"@ledgerhq/device-management-kit";import{GetPubKeyCommand as n}from"./GetPubKeyCommand";const i=new Uint8Array([224,5,1,0,9,2,128,0,0,44,128,0,1,245]),c=new Uint8Array([224,5,0,0,9,2,128,0,0,44,128,0,1,245]),d=new Uint8Array([224,5,1,0,9,2,128,0,0,44,128,0,1,246]),u=new Uint8Array([178,167,34,220,24,221,92,73,195,244,142,155,7,38,241,27,230,103,134,233,28,172,87,52,152,214,238,136,57,44,201,106,144,0]),p=new o({statusCode:Uint8Array.from([144,0]),data:u});describe("GetPubKeyCommand",()=>{let t;const s={derivationPath:"44'/501'",checkOnDevice:!0};beforeEach(()=>{t=new n(s),jest.clearAllMocks(),jest.requireActual("@ledgerhq/device-management-kit")}),describe("getApdu",()=>{it("should return APDU",()=>{const e=t.getApdu();expect(e.getRawApdu()).toEqual(i)}),it("should return APDU without confirm",()=>{t=new n({...s,checkOnDevice:!1});const e=t.getApdu();expect(e.getRawApdu()).toEqual(c)}),it("should return APDU with different path",()=>{t=new n({...s,derivationPath:"44'/502'"});const e=t.getApdu();expect(e.getRawApdu()).toEqual(d)})}),describe("parseResponse",()=>{it("should parse the response",()=>{const e=t.parseResponse(p);expect(e).toStrictEqual(a({data:"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5"}))}),describe("error handling",()=>{it("should return error if response is not success",()=>{const e=new o({statusCode:Uint8Array.from([106,130]),data:new Uint8Array(0)}),r=t.parseResponse(e);expect(x(r)).toBe(!1),x(r)?fail("Expected error"):expect(r.error).toEqual(expect.objectContaining({_tag:"InvalidStatusWordError",originalError:expect.objectContaining({message:"Public key is missing"})}))}),it("should return error if public key is missing",()=>{const e=new o({statusCode:Uint8Array.from([144,0]),data:new Uint8Array(0)}),r=t.parseResponse(e);expect(x(r)).toBe(!1),x(r)?fail("Expected error"):expect(r.error.originalError).toEqual(expect.objectContaining({message:"Public key is missing"}))})})})});
2
+ //# sourceMappingURL=GetPubKeyCommand.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/GetPubKeyCommand.test.ts"],
4
+ "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { GetPubKeyCommand } from \"./GetPubKeyCommand\";\n\nconst GET_PUBKYEY_APDU_DEFAULT_PATH_WITH_CONFIRM = new Uint8Array([\n 0xe0, 0x05, 0x01, 0x00, 0x09, 0x02, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x01,\n 0xf5,\n]);\n\nconst GET_PUBKYEY_APDU_DEFAULT_PATH_WITHOUT_CONFIRM = new Uint8Array([\n 0xe0, 0x05, 0x00, 0x00, 0x09, 0x02, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x01,\n 0xf5,\n]);\n\nconst GET_PUBKEY_APDU_DIFFERENT_PATH = new Uint8Array([\n 0xe0, 0x05, 0x01, 0x00, 0x09, 0x02, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x01,\n 0xf6,\n]);\n\n// D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\nconst GET_PUBKEY_APDU = new Uint8Array([\n 0xb2, 0xa7, 0x22, 0xdc, 0x18, 0xdd, 0x5c, 0x49, 0xc3, 0xf4, 0x8e, 0x9b, 0x07,\n 0x26, 0xf1, 0x1b, 0xe6, 0x67, 0x86, 0xe9, 0x1c, 0xac, 0x57, 0x34, 0x98, 0xd6,\n 0xee, 0x88, 0x39, 0x2c, 0xc9, 0x6a, 0x90, 0x00,\n]);\n\nconst GET_PUBKEY_APDU_RESPONSE = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: GET_PUBKEY_APDU,\n});\n\ndescribe(\"GetPubKeyCommand\", () => {\n let command: GetPubKeyCommand;\n const defaultArgs = {\n derivationPath: \"44'/501'\",\n checkOnDevice: true,\n };\n\n beforeEach(() => {\n command = new GetPubKeyCommand(defaultArgs);\n jest.clearAllMocks();\n jest.requireActual(\"@ledgerhq/device-management-kit\");\n });\n\n describe(\"getApdu\", () => {\n it(\"should return APDU\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toEqual(\n GET_PUBKYEY_APDU_DEFAULT_PATH_WITH_CONFIRM,\n );\n });\n\n it(\"should return APDU without confirm\", () => {\n command = new GetPubKeyCommand({\n ...defaultArgs,\n checkOnDevice: false,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toEqual(\n GET_PUBKYEY_APDU_DEFAULT_PATH_WITHOUT_CONFIRM,\n );\n });\n\n it(\"should return APDU with different path\", () => {\n command = new GetPubKeyCommand({\n ...defaultArgs,\n derivationPath: \"44'/502'\",\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toEqual(GET_PUBKEY_APDU_DIFFERENT_PATH);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should parse the response\", () => {\n const parsed = command.parseResponse(GET_PUBKEY_APDU_RESPONSE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\",\n }),\n );\n });\n\n describe(\"error handling\", () => {\n it(\"should return error if response is not success\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x82]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toEqual(\n expect.objectContaining({\n _tag: \"InvalidStatusWordError\",\n originalError: expect.objectContaining({\n message: \"Public key is missing\",\n }),\n }),\n );\n } else {\n fail(\"Expected error\");\n }\n });\n\n it(\"should return error if public key is missing\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error.originalError).toEqual(\n expect.objectContaining({\n message: \"Public key is missing\",\n }),\n );\n } else {\n fail(\"Expected error\");\n }\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "GetPubKeyCommand", "GET_PUBKYEY_APDU_DEFAULT_PATH_WITH_CONFIRM", "GET_PUBKYEY_APDU_DEFAULT_PATH_WITHOUT_CONFIRM", "GET_PUBKEY_APDU_DIFFERENT_PATH", "GET_PUBKEY_APDU", "GET_PUBKEY_APDU_RESPONSE", "command", "defaultArgs", "apdu", "parsed", "response", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ApduBuilder as t,ApduParser as i,CommandResultFactory as a,InvalidStatusWordError as m,isCommandErrorCode as d}from"@ledgerhq/device-management-kit";import{SolanaAppCommandError as p,solanaAppErrors as o}from"./utils/solanaAppErrors";const g=64;class l{args;constructor(e){this.args=e}getApdu(){return new t({cla:224,ins:7,p1:1,p2:0}).addBufferToData(this.args.message).build()}parseResponse(e){const n=new i(e),r=n.encodeToHexaString(e.statusCode);if(d(r,o))return a({error:new p({...o[r],errorCode:r})});const s=n.extractFieldByLength(g);return s?a({data:s}):a({error:new m("Signature extraction failed")})}}export{l as SignOffChainMessageCommand};
2
+ //# sourceMappingURL=SignOffChainMessageCommand.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/app-binder/command/SignOffChainMessageCommand.ts"],
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n isCommandErrorCode,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\n\nimport {\n SolanaAppCommandError,\n solanaAppErrors,\n} from \"./utils/solanaAppErrors\";\n\nconst SIGNATURE_LENGTH = 64;\n\nexport type SignOffChainMessageCommandResponse = Signature;\nexport type SignOffChainMessageCommandArgs = {\n readonly message: Uint8Array;\n readonly derivationPath: string;\n};\n\nexport class SignOffChainMessageCommand\n implements\n Command<SignOffChainMessageCommandResponse, SignOffChainMessageCommandArgs>\n{\n args: SignOffChainMessageCommandArgs;\n\n constructor(args: SignOffChainMessageCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x01,\n p2: 0x00,\n })\n .addBufferToData(this.args.message)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignOffChainMessageCommandResponse> {\n const parser = new ApduParser(response);\n const errorCode = parser.encodeToHexaString(response.statusCode);\n if (isCommandErrorCode(errorCode, solanaAppErrors)) {\n return CommandResultFactory({\n error: new SolanaAppCommandError({\n ...solanaAppErrors[errorCode],\n errorCode,\n }),\n });\n }\n\n const signature = parser.extractFieldByLength(SIGNATURE_LENGTH);\n if (!signature) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Signature extraction failed\"),\n });\n }\n\n return CommandResultFactory({\n data: signature,\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,EACA,sBAAAC,MACK,kCAIP,OACE,yBAAAC,EACA,mBAAAC,MACK,0BAEP,MAAMC,EAAmB,GAQlB,MAAMC,CAGb,CACE,KAEA,YAAYC,EAAsC,CAChD,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,OAAO,IAAIT,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cACEU,EACmD,CACnD,MAAMC,EAAS,IAAIV,EAAWS,CAAQ,EAChCE,EAAYD,EAAO,mBAAmBD,EAAS,UAAU,EAC/D,GAAIN,EAAmBQ,EAAWN,CAAe,EAC/C,OAAOJ,EAAqB,CAC1B,MAAO,IAAIG,EAAsB,CAC/B,GAAGC,EAAgBM,CAAS,EAC5B,UAAAA,CACF,CAAC,CACH,CAAC,EAGH,MAAMC,EAAYF,EAAO,qBAAqBJ,CAAgB,EAC9D,OAAKM,EAMEX,EAAqB,CAC1B,KAAMW,CACR,CAAC,EAPQX,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,6BAA6B,CACjE,CAAC,CAML,CACF",
6
+ "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "isCommandErrorCode", "SolanaAppCommandError", "solanaAppErrors", "SIGNATURE_LENGTH", "SignOffChainMessageCommand", "args", "response", "parser", "errorCode", "signature"]
7
+ }