@ledgerhq/device-signer-kit-solana 1.7.1 → 1.9.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 (307) hide show
  1. package/README.md +46 -16
  2. package/lib/cjs/api/SignerSolanaBuilder.js +1 -1
  3. package/lib/cjs/api/SignerSolanaBuilder.js.map +3 -3
  4. package/lib/cjs/api/app-binder/DelayedSignTransactionDeviceActionTypes.js +2 -0
  5. package/lib/cjs/api/app-binder/DelayedSignTransactionDeviceActionTypes.js.map +7 -0
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  8. package/lib/cjs/api/model/AppConfiguration.js +1 -1
  9. package/lib/cjs/api/model/AppConfiguration.js.map +1 -1
  10. package/lib/cjs/api/model/MessageOptions.js +1 -1
  11. package/lib/cjs/api/model/MessageOptions.js.map +1 -1
  12. package/lib/cjs/api/model/SolanaTransactionOptionalConfig.js +1 -1
  13. package/lib/cjs/api/model/SolanaTransactionOptionalConfig.js.map +1 -1
  14. package/lib/cjs/internal/DefaultSignerSolana.js +1 -1
  15. package/lib/cjs/internal/DefaultSignerSolana.js.map +3 -3
  16. package/lib/cjs/internal/app-binder/SolanaAppBinder.js +1 -1
  17. package/lib/cjs/internal/app-binder/SolanaAppBinder.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js +1 -1
  19. package/lib/cjs/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  20. package/lib/cjs/internal/app-binder/SolanaApplicationResolver.js +1 -1
  21. package/lib/cjs/internal/app-binder/SolanaApplicationResolver.js.map +3 -3
  22. package/lib/cjs/internal/app-binder/SolanaApplicationResolver.test.js +1 -1
  23. package/lib/cjs/internal/app-binder/SolanaApplicationResolver.test.js.map +3 -3
  24. package/lib/cjs/internal/app-binder/command/DelayedSignTransactionCommand.js +2 -0
  25. package/lib/cjs/internal/app-binder/command/DelayedSignTransactionCommand.js.map +7 -0
  26. package/lib/cjs/internal/app-binder/command/DelayedSignTransactionCommand.test.js +2 -0
  27. package/lib/cjs/internal/app-binder/command/DelayedSignTransactionCommand.test.js.map +7 -0
  28. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
  30. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  32. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
  33. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
  34. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
  35. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
  36. package/lib/cjs/internal/app-binder/command/SignTransactionPreviewCommand.js +2 -0
  37. package/lib/cjs/internal/app-binder/command/SignTransactionPreviewCommand.js.map +7 -0
  38. package/lib/cjs/internal/app-binder/command/SignTransactionPreviewCommand.test.js +2 -0
  39. package/lib/cjs/internal/app-binder/command/SignTransactionPreviewCommand.test.js.map +7 -0
  40. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
  41. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
  42. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
  43. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
  44. package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +2 -2
  46. package/lib/cjs/internal/app-binder/constants.js +1 -1
  47. package/lib/cjs/internal/app-binder/constants.js.map +3 -3
  48. package/lib/cjs/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.js +2 -0
  49. package/lib/cjs/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.js.map +7 -0
  50. package/lib/cjs/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.js +2 -0
  51. package/lib/cjs/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  53. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  54. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  55. package/lib/cjs/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  56. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  57. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  58. package/lib/cjs/internal/app-binder/di/appBinderTypes.js +1 -1
  59. package/lib/cjs/internal/app-binder/di/appBinderTypes.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/services/BlockhashService.js +2 -0
  61. package/lib/cjs/internal/app-binder/services/BlockhashService.js.map +7 -0
  62. package/lib/cjs/internal/app-binder/services/BlockhashService.test.js +2 -0
  63. package/lib/cjs/internal/app-binder/services/BlockhashService.test.js.map +7 -0
  64. package/lib/cjs/internal/app-binder/services/OffchainMessageBuilder.js +1 -1
  65. package/lib/cjs/internal/app-binder/services/OffchainMessageBuilder.js.map +3 -3
  66. package/lib/cjs/internal/app-binder/services/TransactionInspector.js +1 -1
  67. package/lib/cjs/internal/app-binder/services/TransactionInspector.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  69. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  72. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  73. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  74. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  75. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  76. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js +1 -1
  77. package/lib/cjs/internal/app-binder/task/SendSignDataTask.js.map +2 -2
  78. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js +1 -1
  79. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  80. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  81. package/lib/cjs/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/task/context-providers/loadCertificate.js +2 -0
  83. package/lib/cjs/internal/app-binder/task/context-providers/loadCertificate.js.map +7 -0
  84. package/lib/cjs/internal/app-binder/task/context-providers/provideContextRegistry.js +2 -0
  85. package/lib/cjs/internal/app-binder/task/context-providers/provideContextRegistry.js.map +7 -0
  86. package/lib/cjs/internal/app-binder/task/context-providers/provideContextRegistry.test.js +2 -0
  87. package/lib/cjs/internal/app-binder/task/context-providers/provideContextRegistry.test.js.map +7 -0
  88. package/lib/cjs/internal/app-binder/task/context-providers/provideContextTypes.js +2 -0
  89. package/lib/cjs/internal/app-binder/task/context-providers/provideContextTypes.js.map +7 -0
  90. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js +2 -0
  91. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.js.map +7 -0
  92. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js +2 -0
  93. package/lib/cjs/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +7 -0
  94. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenContext.js +2 -0
  95. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenContext.js.map +7 -0
  96. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenContext.test.js +2 -0
  97. package/lib/cjs/internal/app-binder/task/context-providers/provideTokenContext.test.js.map +7 -0
  98. package/lib/cjs/internal/app-binder/task/context-providers/provideTransactionCheckContext.js +2 -0
  99. package/lib/cjs/internal/app-binder/task/context-providers/provideTransactionCheckContext.js.map +7 -0
  100. package/lib/cjs/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.js +2 -0
  101. package/lib/cjs/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.js.map +7 -0
  102. package/lib/cjs/internal/di.js +1 -1
  103. package/lib/cjs/internal/di.js.map +3 -3
  104. package/lib/cjs/internal/externalTypes.js +1 -1
  105. package/lib/cjs/internal/externalTypes.js.map +2 -2
  106. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  107. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  108. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js +1 -1
  109. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.js.map +2 -2
  110. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  111. package/lib/cjs/internal/use-cases/message/SignMessageUseCase.test.js.map +3 -3
  112. package/lib/cjs/package.json +4 -4
  113. package/lib/esm/api/SignerSolanaBuilder.js +1 -1
  114. package/lib/esm/api/SignerSolanaBuilder.js.map +3 -3
  115. package/lib/esm/api/app-binder/DelayedSignTransactionDeviceActionTypes.js +2 -0
  116. package/lib/esm/api/app-binder/DelayedSignTransactionDeviceActionTypes.js.map +7 -0
  117. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  118. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  119. package/lib/esm/api/model/MessageOptions.js.map +1 -1
  120. package/lib/esm/internal/DefaultSignerSolana.js +1 -1
  121. package/lib/esm/internal/DefaultSignerSolana.js.map +3 -3
  122. package/lib/esm/internal/app-binder/SolanaAppBinder.js +1 -1
  123. package/lib/esm/internal/app-binder/SolanaAppBinder.js.map +3 -3
  124. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js +1 -1
  125. package/lib/esm/internal/app-binder/SolanaAppBinder.test.js.map +3 -3
  126. package/lib/esm/internal/app-binder/SolanaApplicationResolver.js +1 -1
  127. package/lib/esm/internal/app-binder/SolanaApplicationResolver.js.map +3 -3
  128. package/lib/esm/internal/app-binder/SolanaApplicationResolver.test.js +1 -1
  129. package/lib/esm/internal/app-binder/SolanaApplicationResolver.test.js.map +3 -3
  130. package/lib/esm/internal/app-binder/command/DelayedSignTransactionCommand.js +2 -0
  131. package/lib/esm/internal/app-binder/command/DelayedSignTransactionCommand.js.map +7 -0
  132. package/lib/esm/internal/app-binder/command/DelayedSignTransactionCommand.test.js +2 -0
  133. package/lib/esm/internal/app-binder/command/DelayedSignTransactionCommand.test.js.map +7 -0
  134. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  135. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +3 -3
  136. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  137. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  138. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
  139. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
  140. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
  141. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
  142. package/lib/esm/internal/app-binder/command/SignTransactionPreviewCommand.js +2 -0
  143. package/lib/esm/internal/app-binder/command/SignTransactionPreviewCommand.js.map +7 -0
  144. package/lib/esm/internal/app-binder/command/SignTransactionPreviewCommand.test.js +2 -0
  145. package/lib/esm/internal/app-binder/command/SignTransactionPreviewCommand.test.js.map +7 -0
  146. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
  147. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
  148. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
  149. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
  150. package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js +1 -1
  151. package/lib/esm/internal/app-binder/command/utils/SolanaApplicationErrors.js.map +2 -2
  152. package/lib/esm/internal/app-binder/constants.js +1 -1
  153. package/lib/esm/internal/app-binder/constants.js.map +3 -3
  154. package/lib/esm/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.js +2 -0
  155. package/lib/esm/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.js.map +7 -0
  156. package/lib/esm/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.js +2 -0
  157. package/lib/esm/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.js.map +7 -0
  158. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js +1 -1
  159. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.js.map +3 -3
  160. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js +1 -1
  161. package/lib/esm/internal/app-binder/device-action/SignTransactionDeviceAction.test.js.map +3 -3
  162. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  163. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  164. package/lib/esm/internal/app-binder/di/appBinderTypes.js +1 -1
  165. package/lib/esm/internal/app-binder/di/appBinderTypes.js.map +2 -2
  166. package/lib/esm/internal/app-binder/services/BlockhashService.js +2 -0
  167. package/lib/esm/internal/app-binder/services/BlockhashService.js.map +7 -0
  168. package/lib/esm/internal/app-binder/services/BlockhashService.test.js +2 -0
  169. package/lib/esm/internal/app-binder/services/BlockhashService.test.js.map +7 -0
  170. package/lib/esm/internal/app-binder/services/OffchainMessageBuilder.js +1 -1
  171. package/lib/esm/internal/app-binder/services/OffchainMessageBuilder.js.map +3 -3
  172. package/lib/esm/internal/app-binder/services/TransactionInspector.js +1 -1
  173. package/lib/esm/internal/app-binder/services/TransactionInspector.js.map +3 -3
  174. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  175. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  176. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  177. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  178. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
  179. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
  180. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
  181. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
  182. package/lib/esm/internal/app-binder/task/SendSignDataTask.js +1 -1
  183. package/lib/esm/internal/app-binder/task/SendSignDataTask.js.map +2 -2
  184. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js +1 -1
  185. package/lib/esm/internal/app-binder/task/SendSignMessageTask.js.map +3 -3
  186. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js +1 -1
  187. package/lib/esm/internal/app-binder/task/SendSignMessageTask.test.js.map +3 -3
  188. package/lib/esm/internal/app-binder/task/context-providers/loadCertificate.js +2 -0
  189. package/lib/esm/internal/app-binder/task/context-providers/loadCertificate.js.map +7 -0
  190. package/lib/esm/internal/app-binder/task/context-providers/provideContextRegistry.js +2 -0
  191. package/lib/esm/internal/app-binder/task/context-providers/provideContextRegistry.js.map +7 -0
  192. package/lib/esm/internal/app-binder/task/context-providers/provideContextRegistry.test.js +2 -0
  193. package/lib/esm/internal/app-binder/task/context-providers/provideContextRegistry.test.js.map +7 -0
  194. package/lib/esm/internal/app-binder/task/context-providers/provideContextTypes.js +1 -0
  195. package/lib/esm/internal/app-binder/task/context-providers/provideContextTypes.js.map +7 -0
  196. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js +2 -0
  197. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.js.map +7 -0
  198. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js +2 -0
  199. package/lib/esm/internal/app-binder/task/context-providers/provideLifiContext.test.js.map +7 -0
  200. package/lib/esm/internal/app-binder/task/context-providers/provideTokenContext.js +2 -0
  201. package/lib/esm/internal/app-binder/task/context-providers/provideTokenContext.js.map +7 -0
  202. package/lib/esm/internal/app-binder/task/context-providers/provideTokenContext.test.js +2 -0
  203. package/lib/esm/internal/app-binder/task/context-providers/provideTokenContext.test.js.map +7 -0
  204. package/lib/esm/internal/app-binder/task/context-providers/provideTransactionCheckContext.js +2 -0
  205. package/lib/esm/internal/app-binder/task/context-providers/provideTransactionCheckContext.js.map +7 -0
  206. package/lib/esm/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.js +2 -0
  207. package/lib/esm/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.js.map +7 -0
  208. package/lib/esm/internal/di.js +1 -1
  209. package/lib/esm/internal/di.js.map +3 -3
  210. package/lib/esm/internal/externalTypes.js +1 -1
  211. package/lib/esm/internal/externalTypes.js.map +2 -2
  212. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js +1 -1
  213. package/lib/esm/internal/use-cases/app-configuration/GetAppConfiguration.test.js.map +2 -2
  214. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js +1 -1
  215. package/lib/esm/internal/use-cases/message/SignMessageUseCase.js.map +2 -2
  216. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js +1 -1
  217. package/lib/esm/internal/use-cases/message/SignMessageUseCase.test.js.map +3 -3
  218. package/lib/esm/package.json +4 -4
  219. package/lib/types/api/SignerSolanaBuilder.d.ts +3 -1
  220. package/lib/types/api/SignerSolanaBuilder.d.ts.map +1 -1
  221. package/lib/types/api/app-binder/DelayedSignTransactionDeviceActionTypes.d.ts +41 -0
  222. package/lib/types/api/app-binder/DelayedSignTransactionDeviceActionTypes.d.ts.map +1 -0
  223. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +16 -4
  224. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  225. package/lib/types/api/model/AppConfiguration.d.ts +2 -0
  226. package/lib/types/api/model/AppConfiguration.d.ts.map +1 -1
  227. package/lib/types/api/model/MessageOptions.d.ts +13 -0
  228. package/lib/types/api/model/MessageOptions.d.ts.map +1 -1
  229. package/lib/types/api/model/SolanaTransactionOptionalConfig.d.ts +3 -0
  230. package/lib/types/api/model/SolanaTransactionOptionalConfig.d.ts.map +1 -1
  231. package/lib/types/internal/DefaultSignerSolana.d.ts +113 -203
  232. package/lib/types/internal/DefaultSignerSolana.d.ts.map +1 -1
  233. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts +5 -1
  234. package/lib/types/internal/app-binder/SolanaAppBinder.d.ts.map +1 -1
  235. package/lib/types/internal/app-binder/SolanaApplicationResolver.d.ts +22 -3
  236. package/lib/types/internal/app-binder/SolanaApplicationResolver.d.ts.map +1 -1
  237. package/lib/types/internal/app-binder/command/DelayedSignTransactionCommand.d.ts +30 -0
  238. package/lib/types/internal/app-binder/command/DelayedSignTransactionCommand.d.ts.map +1 -0
  239. package/lib/types/internal/app-binder/command/DelayedSignTransactionCommand.test.d.ts +2 -0
  240. package/lib/types/internal/app-binder/command/DelayedSignTransactionCommand.test.d.ts.map +1 -0
  241. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
  242. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +29 -0
  243. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -0
  244. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts +2 -0
  245. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts.map +1 -0
  246. package/lib/types/internal/app-binder/command/SignTransactionPreviewCommand.d.ts +30 -0
  247. package/lib/types/internal/app-binder/command/SignTransactionPreviewCommand.d.ts.map +1 -0
  248. package/lib/types/internal/app-binder/command/SignTransactionPreviewCommand.test.d.ts +2 -0
  249. package/lib/types/internal/app-binder/command/SignTransactionPreviewCommand.test.d.ts.map +1 -0
  250. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +16 -0
  251. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -0
  252. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts +2 -0
  253. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts.map +1 -0
  254. package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts +1 -1
  255. package/lib/types/internal/app-binder/command/utils/SolanaApplicationErrors.d.ts.map +1 -1
  256. package/lib/types/internal/app-binder/constants.d.ts +1 -0
  257. package/lib/types/internal/app-binder/constants.d.ts.map +1 -1
  258. package/lib/types/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.d.ts +51 -0
  259. package/lib/types/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.d.ts.map +1 -0
  260. package/lib/types/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.d.ts +2 -0
  261. package/lib/types/internal/app-binder/device-action/DelayedSignTransactionDeviceAction.test.d.ts.map +1 -0
  262. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts +10 -1
  263. package/lib/types/internal/app-binder/device-action/SignTransactionDeviceAction.d.ts.map +1 -1
  264. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  265. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts +1 -0
  266. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts.map +1 -1
  267. package/lib/types/internal/app-binder/services/BlockhashService.d.ts +45 -0
  268. package/lib/types/internal/app-binder/services/BlockhashService.d.ts.map +1 -0
  269. package/lib/types/internal/app-binder/services/BlockhashService.test.d.ts +2 -0
  270. package/lib/types/internal/app-binder/services/BlockhashService.test.d.ts.map +1 -0
  271. package/lib/types/internal/app-binder/services/OffchainMessageBuilder.d.ts.map +1 -1
  272. package/lib/types/internal/app-binder/services/TransactionInspector.d.ts.map +1 -1
  273. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +5 -7
  274. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
  275. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -14
  276. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
  277. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts +2 -2
  278. package/lib/types/internal/app-binder/task/SendSignDataTask.d.ts.map +1 -1
  279. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts +1 -0
  280. package/lib/types/internal/app-binder/task/SendSignMessageTask.d.ts.map +1 -1
  281. package/lib/types/internal/app-binder/task/context-providers/loadCertificate.d.ts +4 -0
  282. package/lib/types/internal/app-binder/task/context-providers/loadCertificate.d.ts.map +1 -0
  283. package/lib/types/internal/app-binder/task/context-providers/provideContextRegistry.d.ts +8 -0
  284. package/lib/types/internal/app-binder/task/context-providers/provideContextRegistry.d.ts.map +1 -0
  285. package/lib/types/internal/app-binder/task/context-providers/provideContextRegistry.test.d.ts +2 -0
  286. package/lib/types/internal/app-binder/task/context-providers/provideContextRegistry.test.d.ts.map +1 -0
  287. package/lib/types/internal/app-binder/task/context-providers/provideContextTypes.d.ts +11 -0
  288. package/lib/types/internal/app-binder/task/context-providers/provideContextTypes.d.ts.map +1 -0
  289. package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.d.ts +4 -0
  290. package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.d.ts.map +1 -0
  291. package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.test.d.ts +2 -0
  292. package/lib/types/internal/app-binder/task/context-providers/provideLifiContext.test.d.ts.map +1 -0
  293. package/lib/types/internal/app-binder/task/context-providers/provideTokenContext.d.ts +4 -0
  294. package/lib/types/internal/app-binder/task/context-providers/provideTokenContext.d.ts.map +1 -0
  295. package/lib/types/internal/app-binder/task/context-providers/provideTokenContext.test.d.ts +2 -0
  296. package/lib/types/internal/app-binder/task/context-providers/provideTokenContext.test.d.ts.map +1 -0
  297. package/lib/types/internal/app-binder/task/context-providers/provideTransactionCheckContext.d.ts +4 -0
  298. package/lib/types/internal/app-binder/task/context-providers/provideTransactionCheckContext.d.ts.map +1 -0
  299. package/lib/types/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.d.ts +2 -0
  300. package/lib/types/internal/app-binder/task/context-providers/provideTransactionCheckContext.test.d.ts.map +1 -0
  301. package/lib/types/internal/di.d.ts +2 -1
  302. package/lib/types/internal/di.d.ts.map +1 -1
  303. package/lib/types/internal/externalTypes.d.ts +1 -0
  304. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  305. package/lib/types/internal/use-cases/message/SignMessageUseCase.d.ts.map +1 -1
  306. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  307. package/package.json +7 -7
package/README.md CHANGED
@@ -39,9 +39,15 @@ npm install @ledgerhq/device-signer-kit-solana
39
39
  To initialise a Solana signer instance, you need a Ledger Device Management Kit instance and the ID of the session of the connected device. Use the `SignerSolanaBuilder` along with the [Context Module](https://github.com/LedgerHQ/device-sdk-ts/tree/develop/packages/signer/context-module) by default developed by Ledger:
40
40
 
41
41
  ```typescript
42
- const signerSolana = new SignerSolanaBuilder({ sdk, sessionId }).build();
42
+ const signerSolana = new SignerSolanaBuilder({
43
+ dmk,
44
+ sessionId,
45
+ solanaRPCURL,
46
+ }).build();
43
47
  ```
44
48
 
49
+ - **solanaRPCURL** _(optional)_ — Solana RPC endpoint used for fetching a fresh `recentBlockhash` during delayed signing. Only required when using `delayed: true` without a custom `fetchBlockhash` callback. You can override it per `signTransaction` call via `SolanaTransactionOptionalConfig.solanaRPCURL`. In browser environments, use a CORS-enabled RPC URL.
50
+
45
51
  ## 🔹 Use Cases
46
52
 
47
53
  The `SignerSolanaBuilder.build()` method will return a `SignerSolana` instance that exposes 4 dedicated methods, each of which calls an independent use case. Each use case will return an object that contains an observable and a method called `cancel`.
@@ -82,9 +88,7 @@ const { observable, cancel } = signerSolana.getAddress(derivationPath, options);
82
88
  - `observable` Emits DeviceActionState updates, including the following details:
83
89
 
84
90
  ```typescript
85
- type GetAddressCommandResponse = {
86
- publicKey: string; // Address in base58 format
87
- };
91
+ type GetAddressDAOutput = string; // base58-encoded Solana address
88
92
  ```
89
93
 
90
94
  - `cancel` A function to cancel the action on the Ledger device.
@@ -121,6 +125,15 @@ const { observable, cancel } = signerSolana.signTransaction(
121
125
  - **transactionOptions** `SolanaTransactionOptionalConfig`
122
126
  Provides additional context for transaction signing.
123
127
 
128
+ - **solanaRPCURL** `string` _(optional)_
129
+ Overrides the RPC URL from `SignerSolanaBuilder` for this call. Used only for fetching a fresh blockhash during delayed signing.
130
+
131
+ - **delayed** `boolean` _(optional)_
132
+ When `true`, uses the two-step delayed signing flow so the user's review time does not race the blockhash expiry. Requires the Solana app version to support delayed signing and either `solanaRPCURL` (builder or per-call) or `fetchBlockhash` to be provided. If the conditions are not met (missing RPC config or unsupported app version), the signer falls back to standard signing and logs a warning.
133
+
134
+ - **fetchBlockhash** `() => Promise<Uint8Array>` _(optional)_
135
+ Custom callback to supply the fresh 32-byte blockhash for delayed signing instead of fetching via `solanaRPCURL`. When provided, `solanaRPCURL` is not required for the delayed path.
136
+
124
137
  - **transactionResolutionContext** `object`
125
138
  Lets you explicitly pass `tokenAddress` and ATA details, bypassing extraction from the transaction itself.
126
139
 
@@ -136,11 +149,8 @@ const { observable, cancel } = signerSolana.signTransaction(
136
149
  - **tokenInternalId** `string`
137
150
  Ledger internal token ID
138
151
 
139
- - **solanaRPCURL** `string`
140
- RPC endpoint to use if `transactionResolutionContext` is not provided
141
- and parsing requires network lookups.
142
- In browser environments, use a CORS-enabled RPC URL.
143
- Defaults to: `"https://api.mainnet-beta.solana.com/"`.
152
+ - **skipOpenApp** `boolean`
153
+ If `true`, skips opening the Solana app on the device.
144
154
 
145
155
  ---
146
156
 
@@ -149,9 +159,7 @@ const { observable, cancel } = signerSolana.signTransaction(
149
159
  - `observable` That emits DeviceActionState updates, including the following details:
150
160
 
151
161
  ```ts
152
- type SolanaSignature = {
153
- signature: Uint8Array; // Signed transaction bytes
154
- };
162
+ type SignTransactionDAOutput = Uint8Array; // raw signature (64 bytes)
155
163
  ```
156
164
 
157
165
  - `cancel` A function to cancel the action on the Ledger device.
@@ -188,7 +196,7 @@ enum DeviceActionStatus {
188
196
  - **Pending** → Waiting for user confirmation on the device.
189
197
  Includes an `intermediateValue` of type `IntermediateValue`.
190
198
  - **Stopped** → Action was cancelled before completion.
191
- - **Completed** → Provides the signed transaction bytes (`Uint8Array`).
199
+ - **Completed** → Provides the raw 64-byte Ed25519 signature (`Uint8Array`).
192
200
  - **Error** → The device or signing operation failed (`SignTransactionDAError`).
193
201
 
194
202
  ---
@@ -228,7 +236,7 @@ const subscription = observable.subscribe({
228
236
 
229
237
  #### **Notes**
230
238
 
231
- - Clear signing only supports simple instructions like a single `transfer` or combos like `createAccound + fundAccount` or `createAccount + transfer`. If you are receiving `6808` error from device, most likely the instructions are not supported and blind signing is required.
239
+ - Clear signing only supports simple instructions like a single `transfer` or combos like `createAccount + fundAccount` or `createAccount + transfer`. If you are receiving `6808` error from device, most likely the instructions are not supported and blind signing is required.
232
240
 
233
241
  ---
234
242
 
@@ -277,16 +285,18 @@ const { observable, cancel } = signerSolana.signMessage(
277
285
  skipOpenApp?: boolean;
278
286
  version?: SignMessageVersion; // defaults to V0
279
287
  appDomain?: string; // V0 only
288
+ signers?: Uint8Array[]; // V1 only
280
289
  };
281
290
  ```
282
291
 
283
292
  - `skipOpenApp`: Skip the automatic open-app step.
284
293
  - `version`: The off-chain message signing mode. Defaults to `SignMessageVersion.V0`.
285
294
  - **V0** (default) — original off-chain message header with `appDomain`, format detection, and up to 65 515 bytes. Falls back to Legacy on `6a81`.
286
- - **V1** — simplified header: no `appDomain`, no format byte. Up to 65 535 bytes. Falls back to V0 -> Legacy on `6a81`. Not yet supported by released firmware.
295
+ - **V1** — simplified header per [sRFC 38](https://github.com/solana-foundation/SRFCs/discussions/3): no `appDomain`, no format byte. Up to 65 535 bytes. Falls back to V0 -> Legacy on `6a81`. Requires Solana device app version 1.14+.
287
296
  - **Legacy** — compact header for backward compatibility with old Solana app firmware. Current firmware will reject it with `6a81`.
288
297
  - **Raw** — pass-through mode: sends the caller-provided `Uint8Array` payload directly with no header wrapping. Use when you have already built a valid off-chain message. Returns a plain base58 signature (no envelope).
289
- - `appDomain`: Application domain string for V0 headers. Encoded as UTF-8 and padded/truncated to 32 bytes. Ignored for V1, Legacy, and Raw.
298
+ - `appDomain`: V0 only. Application domain string included in the off-chain message header. Encoded as UTF-8 and padded/truncated to 32 bytes. Ignored for V1, Legacy, and Raw.
299
+ - `signers`: V1 only. Additional required signers to include in the off-chain message header alongside the user's key. Per sRFC 38, this is the recommended replacement for the V0 `appDomain` field — pass the dApp's public key here to bind the message to a specific application. Signers are sorted and deduplicated automatically. Each entry must be a 32-byte Ed25519 public key; at most 254 additional signers are supported (1 slot reserved for the user's key). Passing a signer with the wrong length or exceeding the limit returns an error before any device communication. Ignored for V0, Legacy, and Raw.
290
300
 
291
301
  #### **Returns**
292
302
 
@@ -300,6 +310,26 @@ type SignMessageOutput = {
300
310
 
301
311
  - `cancel` A function to cancel the action on the Ledger device.
302
312
 
313
+ #### **Examples**
314
+
315
+ V0 with app domain:
316
+
317
+ ```typescript
318
+ const { observable } = signerSolana.signMessage("44'/501'/0'", "Hello World", {
319
+ version: SignMessageVersion.V0,
320
+ appDomain: "my-app.com",
321
+ });
322
+ ```
323
+
324
+ V1 with additional required signer (replaces `appDomain` per sRFC 38):
325
+
326
+ ```typescript
327
+ const { observable } = signerSolana.signMessage("44'/501'/0'", "Hello World", {
328
+ version: SignMessageVersion.V1,
329
+ signers: [dAppPubkeyBytes], // dApp's Ed25519 public key as Uint8Array(32)
330
+ });
331
+ ```
332
+
303
333
  ---
304
334
 
305
335
  ### Use Case 4: Get App Configuration
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},c=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of l(e))!a.call(t,i)&&i!==o&&s(t,i,{get:()=>e[i],enumerable:!(n=u(e,i))||n.enumerable});return t};var m=t=>c(s({},"__esModule",{value:!0}),t);var M={};g(M,{SignerSolanaBuilder:()=>p});module.exports=m(M);var r=require("@ledgerhq/context-module"),d=require("../internal/DefaultSignerSolana");class p{_dmk;_sessionId;_customContextModule;_originToken;constructor({dmk:e,sessionId:o,originToken:n}){this._dmk=e,this._sessionId=o,this._originToken=n}withContextModule(e){return this._customContextModule=e,this}build(){return new d.DefaultSignerSolana({dmk:this._dmk,sessionId:this._sessionId,contextModule:this._customContextModule??new r.ContextModuleBuilder({originToken:this._originToken,loggerFactory:e=>this._dmk.getLoggerFactory()(["ContextModule",e])}).build()})}}0&&(module.exports={SignerSolanaBuilder});
1
+ "use strict";var r=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!u.call(t,o)&&o!==n&&r(t,o,{get:()=>e[o],enumerable:!(i=d(e,o))||i.enumerable});return t};var c=t=>C(r({},"__esModule",{value:!0}),t);var _={};g(_,{SignerSolanaBuilder:()=>m});module.exports=c(_);var s=require("@ledgerhq/context-module"),a=require("../internal/DefaultSignerSolana");class m{_dmk;_sessionId;_customContextModule;_originToken;_solanaRPCURL;constructor({dmk:e,sessionId:n,originToken:i,solanaRPCURL:o}){this._dmk=e,this._sessionId=n,this._originToken=i,this._solanaRPCURL=o}withContextModule(e){return this._customContextModule=e,this}build(){return new a.DefaultSignerSolana({dmk:this._dmk,sessionId:this._sessionId,solanaRPCURL:this._solanaRPCURL,contextModule:this._customContextModule??new s.ContextModuleBuilder({originToken:this._originToken,loggerFactory:e=>this._dmk.getLoggerFactory()(["ContextModule",e])}).setChain(s.ContextModuleChainID.Solana).build()})}}0&&(module.exports={SignerSolanaBuilder});
2
2
  //# sourceMappingURL=SignerSolanaBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/SignerSolanaBuilder.ts"],
4
- "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n }).build(),\n });\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,oCAMPC,EAAoC,yCAiB7B,MAAMH,CAAoB,CACvB,KACA,WACA,qBACA,aAER,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,YAAAC,CACF,EAAuC,CACrC,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,CACtB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,OAAO,IAAI,sBAAoB,CAC7B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,cACE,KAAK,sBACL,IAAI,uBAAqB,CACvB,YAAa,KAAK,aAClB,cAAgBC,GACd,KAAK,KAAK,iBAAiB,EAAE,CAAC,gBAAiBA,CAAG,CAAC,CACvD,CAAC,EAAE,MAAM,CACb,CAAC,CACH,CACF",
6
- "names": ["SignerSolanaBuilder_exports", "__export", "SignerSolanaBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerSolana", "dmk", "sessionId", "originToken", "contextModule", "tag"]
4
+ "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n ContextModuleChainID,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerSolana } from \"@internal/DefaultSignerSolana\";\n\ntype SignerSolanaBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n solanaRPCURL?: string;\n};\n\n/**\n * Builder for the `SignerSolana` class.\n *\n * @example\n * ```\n * const signer = new SignerSolanaBuilder({ dmk, sessionId })\n * .build();\n * ```\n */\nexport class SignerSolanaBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n private readonly _solanaRPCURL: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n solanaRPCURL,\n }: SignerSolanaBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n this._solanaRPCURL = solanaRPCURL;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the solana signer\n *\n * @returns the solana signer\n */\n public build() {\n return new DefaultSignerSolana({\n dmk: this._dmk,\n sessionId: this._sessionId,\n solanaRPCURL: this._solanaRPCURL,\n contextModule:\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n })\n .setChain(ContextModuleChainID.Solana)\n .build(),\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,oCAMPC,EAAoC,yCAkB7B,MAAMH,CAAoB,CACvB,KACA,WACA,qBACA,aACS,cAEjB,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAuC,CACrC,KAAK,KAAOH,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,EACpB,KAAK,cAAgBC,CACvB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,OAAO,IAAI,sBAAoB,CAC7B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,aAAc,KAAK,cACnB,cACE,KAAK,sBACL,IAAI,uBAAqB,CACvB,YAAa,KAAK,aAClB,cAAgBC,GACd,KAAK,KAAK,iBAAiB,EAAE,CAAC,gBAAiBA,CAAG,CAAC,CACvD,CAAC,EACE,SAAS,uBAAqB,MAAM,EACpC,MAAM,CACb,CAAC,CACH,CACF",
6
+ "names": ["SignerSolanaBuilder_exports", "__export", "SignerSolanaBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerSolana", "dmk", "sessionId", "originToken", "solanaRPCURL", "contextModule", "tag"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var y=(r,e)=>{for(var n in e)a(r,n,{get:e[n],enumerable:!0})},d=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of i(e))!l.call(r,t)&&t!==n&&a(r,t,{get:()=>e[t],enumerable:!(o=p(e,t))||o.enumerable});return r};var s=r=>d(a({},"__esModule",{value:!0}),r);var D={};y(D,{delayedSignDAStateSteps:()=>A});module.exports=s(D);const A=Object.freeze({ZERO_BLOCKHASH:"signer.sol.steps.zeroBlockhash",PREVIEW_TRANSACTION:"signer.sol.steps.previewTransaction",FETCH_BLOCKHASH:"signer.sol.steps.fetchBlockhash",PATCH_TRANSACTION:"signer.sol.steps.patchTransaction",DELAYED_SIGN:"signer.sol.steps.delayedSign",FALLBACK_TO_NON_DELAYED_SIGN:"signer.sol.steps.fallbackToNonDelayedSign"});0&&(module.exports={delayedSignDAStateSteps});
2
+ //# sourceMappingURL=DelayedSignTransactionDeviceActionTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/DelayedSignTransactionDeviceActionTypes.ts"],
4
+ "sourcesContent": ["import {\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type SendCommandInAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type UserInputType } from \"@api/model/TransactionResolutionContext\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { type BlockhashService } from \"@internal/app-binder/services/BlockhashService\";\n\nexport const delayedSignDAStateSteps = Object.freeze({\n ZERO_BLOCKHASH: \"signer.sol.steps.zeroBlockhash\",\n PREVIEW_TRANSACTION: \"signer.sol.steps.previewTransaction\",\n FETCH_BLOCKHASH: \"signer.sol.steps.fetchBlockhash\",\n PATCH_TRANSACTION: \"signer.sol.steps.patchTransaction\",\n DELAYED_SIGN: \"signer.sol.steps.delayedSign\",\n FALLBACK_TO_NON_DELAYED_SIGN: \"signer.sol.steps.fallbackToNonDelayedSign\",\n} as const);\n\nexport type DelayedSignDAStateStep =\n (typeof delayedSignDAStateSteps)[keyof typeof delayedSignDAStateSteps];\n\nexport type DelayedSignDAOutput = Signature;\n\nexport type DelayedSignDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly rpcUrl?: string;\n readonly fetchBlockhash?: () => Promise<Uint8Array>;\n readonly userInputType?: UserInputType;\n readonly blockhashService?: BlockhashService;\n};\n\nexport type DelayedSignDAError =\n | OpenAppDAError\n | SendCommandInAppDAError<SolanaAppErrorCodes>;\n\ntype DelayedSignDARequiredInteraction =\n | UserInteractionRequired\n | OpenAppDARequiredInteraction;\n\nexport type DelayedSignDAIntermediateValue = {\n requiredUserInteraction: DelayedSignDARequiredInteraction;\n step: DelayedSignDAStateStep;\n};\n\nexport type DelayedSignDAState = DeviceActionState<\n DelayedSignDAOutput,\n DelayedSignDAError,\n DelayedSignDAIntermediateValue\n>;\n\nexport type DelayedSignDAInternalState = {\n readonly error: DelayedSignDAError | null;\n readonly signature: Signature | null;\n readonly zeroedTransaction: Uint8Array | null;\n readonly freshBlockhash: Uint8Array | null;\n readonly patchedTransaction: Uint8Array | null;\n readonly previewFallback: boolean;\n};\n\nexport type DelayedSignDAReturnType = ExecuteDeviceActionReturnType<\n DelayedSignDAOutput,\n DelayedSignDAError,\n DelayedSignDAIntermediateValue\n>;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAcO,MAAME,EAA0B,OAAO,OAAO,CACnD,eAAgB,iCAChB,oBAAqB,sCACrB,gBAAiB,kCACjB,kBAAmB,oCACnB,aAAc,+BACd,6BAA8B,2CAChC,CAAU",
6
+ "names": ["DelayedSignTransactionDeviceActionTypes_exports", "__export", "delayedSignDAStateSteps", "__toCommonJS"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var c=(n,t)=>{for(var r in t)o(n,r,{get:t[r],enumerable:!0})},A=(n,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of p(t))!s.call(n,e)&&e!==r&&o(n,e,{get:()=>t[e],enumerable:!(a=i(t,e))||a.enumerable});return n};var S=n=>A(o({},"__esModule",{value:!0}),n);var l={};c(l,{signTransactionDAStateSteps:()=>T});module.exports=S(l);const T=Object.freeze({OPEN_APP:"signer.sol.steps.openApp",GET_APP_CONFIG:"signer.sol.steps.getAppConfig",INSPECT_TRANSACTION:"signer.sol.steps.inspectTransaction",BUILD_TRANSACTION_CONTEXT:"signer.sol.steps.buildTransactionContext",PROVIDE_TRANSACTION_CONTEXT:"signer.sol.steps.provideTransactionContext",SIGN_TRANSACTION:"signer.sol.steps.signTransaction"});0&&(module.exports={signTransactionDAStateSteps});
1
+ "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},S=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!p.call(t,n)&&n!==r&&o(t,n,{get:()=>e[n],enumerable:!(a=i(e,n))||a.enumerable});return t};var l=t=>S(o({},"__esModule",{value:!0}),t);var A={};c(A,{signTransactionDAStateSteps:()=>T});module.exports=l(A);const T=Object.freeze({OPEN_APP:"signer.sol.steps.openApp",GET_APP_CONFIG:"signer.sol.steps.getAppConfig",WEB3_CHECKS_OPT_IN:"signer.sol.steps.web3ChecksOptIn",WEB3_CHECKS_OPT_IN_RESULT:"signer.sol.steps.web3ChecksOptInResult",INSPECT_TRANSACTION:"signer.sol.steps.inspectTransaction",GET_PUB_KEY:"signer.sol.steps.getPubKey",BUILD_TRANSACTION_CONTEXT:"signer.sol.steps.buildTransactionContext",PROVIDE_TRANSACTION_CONTEXT:"signer.sol.steps.provideTransactionContext",SIGN_TRANSACTION:"signer.sol.steps.signTransaction",DELAYED_SIGN:"signer.sol.steps.delayedSign"});0&&(module.exports={signTransactionDAStateSteps});
2
2
  //# sourceMappingURL=SignTransactionDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type SolanaTransactionContextResultSuccess } from \"@ledgerhq/context-module/src/solana/domain/solanaContextTypes.js\";\nimport {\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type SendCommandInAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { type TxInspectorResult } from \"@internal/app-binder/services/TransactionInspector\";\n\nexport const signTransactionDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.sol.steps.openApp\",\n GET_APP_CONFIG: \"signer.sol.steps.getAppConfig\",\n INSPECT_TRANSACTION: \"signer.sol.steps.inspectTransaction\",\n BUILD_TRANSACTION_CONTEXT: \"signer.sol.steps.buildTransactionContext\",\n PROVIDE_TRANSACTION_CONTEXT: \"signer.sol.steps.provideTransactionContext\",\n SIGN_TRANSACTION: \"signer.sol.steps.signTransaction\",\n} as const);\n\nexport type SignTransactionDAStateStep =\n (typeof signTransactionDAStateSteps)[keyof typeof signTransactionDAStateSteps];\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Transaction;\n readonly contextModule: ContextModule;\n readonly transactionOptions?: SolanaTransactionOptionalConfig;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | SendCommandInAppDAError<SolanaAppErrorCodes>;\n\ntype SignTransactionDARequiredInteraction =\n | UserInteractionRequired\n | OpenAppDARequiredInteraction;\n\nexport type SignTransactionDAIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: SignTransactionDAStateStep;\n};\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly signature: Signature | null;\n readonly appConfig: AppConfiguration | null;\n readonly solanaTransactionContext: SolanaTransactionContextResultSuccess | null;\n readonly inspectorResult: TxInspectorResult | null;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAkBO,MAAME,EAA8B,OAAO,OAAO,CACvD,SAAU,2BACV,eAAgB,gCAChB,oBAAqB,sCACrB,0BAA2B,2CAC3B,4BAA6B,6CAC7B,iBAAkB,kCACpB,CAAU",
4
+ "sourcesContent": ["import {\n type ContextModule,\n type SolanaTransactionContextResultSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type SendCommandInAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SolanaAppErrorCodes } from \"@internal/app-binder/command/utils/SolanaApplicationErrors\";\nimport { type BlockhashService } from \"@internal/app-binder/services/BlockhashService\";\nimport { type TxInspectorResult } from \"@internal/app-binder/services/TransactionInspector\";\n\nimport { type DelayedSignDAStateStep } from \"./DelayedSignTransactionDeviceActionTypes\";\n\nexport const signTransactionDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.sol.steps.openApp\",\n GET_APP_CONFIG: \"signer.sol.steps.getAppConfig\",\n WEB3_CHECKS_OPT_IN: \"signer.sol.steps.web3ChecksOptIn\",\n WEB3_CHECKS_OPT_IN_RESULT: \"signer.sol.steps.web3ChecksOptInResult\",\n INSPECT_TRANSACTION: \"signer.sol.steps.inspectTransaction\",\n GET_PUB_KEY: \"signer.sol.steps.getPubKey\",\n BUILD_TRANSACTION_CONTEXT: \"signer.sol.steps.buildTransactionContext\",\n PROVIDE_TRANSACTION_CONTEXT: \"signer.sol.steps.provideTransactionContext\",\n SIGN_TRANSACTION: \"signer.sol.steps.signTransaction\",\n DELAYED_SIGN: \"signer.sol.steps.delayedSign\",\n} as const);\n\nexport type SignTransactionDAStateStep =\n | (typeof signTransactionDAStateSteps)[keyof typeof signTransactionDAStateSteps]\n | DelayedSignDAStateStep;\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Transaction;\n readonly contextModule: ContextModule;\n readonly transactionOptions?: SolanaTransactionOptionalConfig;\n readonly solanaRPCURL?: string;\n readonly blockhashService?: BlockhashService;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | SendCommandInAppDAError<SolanaAppErrorCodes>;\n\ntype SignTransactionDARequiredInteraction =\n | UserInteractionRequired\n | OpenAppDARequiredInteraction;\n\nexport type SignTransactionDAIntermediateValue =\n | {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: Exclude<\n SignTransactionDAStateStep,\n typeof signTransactionDAStateSteps.WEB3_CHECKS_OPT_IN_RESULT\n >;\n }\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: typeof signTransactionDAStateSteps.WEB3_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly signature: Signature | null;\n readonly appConfig: AppConfiguration | null;\n readonly solanaTransactionContext: SolanaTransactionContextResultSuccess | null;\n readonly inspectorResult: TxInspectorResult | null;\n readonly signerAddress: string | null;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAuBO,MAAME,EAA8B,OAAO,OAAO,CACvD,SAAU,2BACV,eAAgB,gCAChB,mBAAoB,mCACpB,0BAA2B,yCAC3B,oBAAqB,sCACrB,YAAa,6BACb,0BAA2B,2CAC3B,4BAA6B,6CAC7B,iBAAkB,mCAClB,aAAc,8BAChB,CAAU",
6
6
  "names": ["SignTransactionDeviceActionTypes_exports", "__export", "signTransactionDAStateSteps", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var r=(e,i,l,p)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of a(i))!b.call(e,o)&&o!==l&&n(e,o,{get:()=>i[o],enumerable:!(p=y(i,o))||p.enumerable});return e};var t=e=>r(n({},"__esModule",{value:!0}),e);var d={};module.exports=t(d);
1
+ "use strict";var b=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var s=(o,e,l,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of a(e))!y.call(o,i)&&i!==l&&b(o,i,{get:()=>e[i],enumerable:!(n=p(e,i))||n.enumerable});return o};var t=o=>s(b({},"__esModule",{value:!0}),o);var d={};module.exports=t(d);
2
2
  //# sourceMappingURL=AppConfiguration.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/model/AppConfiguration.ts"],
4
- "sourcesContent": ["import { type PublicKeyDisplayMode } from \"./PublicKeyDisplayMode\";\n\nexport type AppConfiguration = {\n blindSigningEnabled: boolean;\n pubKeyDisplayMode: PublicKeyDisplayMode;\n version: string;\n};\n"],
4
+ "sourcesContent": ["import { type PublicKeyDisplayMode } from \"./PublicKeyDisplayMode\";\n\nexport type AppConfiguration = {\n blindSigningEnabled: boolean;\n pubKeyDisplayMode: PublicKeyDisplayMode;\n version: string;\n web3ChecksEnabled?: boolean;\n web3ChecksOptIn?: boolean;\n};\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["AppConfiguration_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var v=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var r=(t,a)=>{for(var o in a)v(t,o,{get:a[o],enumerable:!0})},w=(t,a,o,y)=>{if(a&&typeof a=="object"||typeof a=="function")for(let p of l(a))!m.call(t,p)&&p!==o&&v(t,p,{get:()=>a[p],enumerable:!(y=e(a,p))||y.enumerable});return t};var x=t=>w(v({},"__esModule",{value:!0}),t);var O={};r(O,{SignMessageVersion:()=>c});module.exports=x(O);var c=(p=>(p.Raw="raw",p.Legacy="legacy",p.V0="v0",p.V1="v1",p))(c||{});0&&(module.exports={SignMessageVersion});
1
+ "use strict";var o=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,a)=>{for(var r in a)o(t,r,{get:a[r],enumerable:!0})},m=(t,a,r,y)=>{if(a&&typeof a=="object"||typeof a=="function")for(let p of v(a))!c.call(t,p)&&p!==r&&o(t,p,{get:()=>a[p],enumerable:!(y=n(a,p))||y.enumerable});return t};var w=t=>m(o({},"__esModule",{value:!0}),t);var x={};l(x,{SignMessageVersion:()=>e});module.exports=w(x);var e=(p=>(p.Raw="raw",p.Legacy="legacy",p.V0="v0",p.V1="v1",p))(e||{});0&&(module.exports={SignMessageVersion});
2
2
  //# sourceMappingURL=MessageOptions.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/model/MessageOptions.ts"],
4
- "sourcesContent": ["export enum SignMessageVersion {\n /**\n * Pass-through mode: sends `sendingData` directly to the device with no\n * header wrapping. Use this when the caller has already built a valid\n * off-chain message payload (e.g. a correctly formatted V0 or V1 OCM).\n * Returns a plain base58 signature (no envelope).\n */\n Raw = \"raw\",\n /**\n * Compact V0 header without `appDomain` or signer fields.\n * Only recognised by older Solana app firmware versions.\n * Current firmware (>= 1.x) requires the full V0 header and will\n * reject this format with `6a81`.\n */\n Legacy = \"legacy\",\n V0 = \"v0\",\n V1 = \"v1\",\n}\n\nexport type MessageOptions = {\n skipOpenApp?: boolean;\n /**\n * Off-chain message signing mode. Defaults to `V0`.\n *\n * - `V0` (default) \u2014 supported on all firmware with off-chain signing.\n * Falls back to Legacy on `6a81`.\n * - `V1` \u2014 supported on firmware with V1 off-chain signing (not yet\n * released). Falls back to V0 on `6a81`.\n * - `Legacy` \u2014 for backward compatibility with very old Solana app\n * firmware. Current firmware will reject it.\n * - `Raw` \u2014 pass-through: the caller provides the fully formatted\n * payload (as `Uint8Array`) and the SDK sends it as-is.\n *\n * Fallback cascade on `6a81` (invalid header):\n * V1 -> V0 -> Legacy\n * V0 -> Legacy\n * Legacy / Raw -> no fallback\n */\n version?: SignMessageVersion;\n /**\n * V0 only: the application domain to include in the off-chain message header.\n * Encoded as UTF-8 and padded/truncated to 32 bytes.\n * If omitted, defaults to 32 zero bytes. Ignored for V1, Legacy, and Raw.\n *\n * @see https://docs.anza.xyz/proposals/off-chain-message-signing\n */\n appDomain?: string;\n};\n"],
4
+ "sourcesContent": ["export enum SignMessageVersion {\n /**\n * Pass-through mode: sends `sendingData` directly to the device with no\n * header wrapping. Use this when the caller has already built a valid\n * off-chain message payload (e.g. a correctly formatted V0 or V1 OCM).\n * Returns a plain base58 signature (no envelope).\n */\n Raw = \"raw\",\n /**\n * Compact V0 header without `appDomain` or signer fields.\n * Only recognised by older Solana app firmware versions.\n * Current firmware (>= 1.x) requires the full V0 header and will\n * reject this format with `6a81`.\n */\n Legacy = \"legacy\",\n V0 = \"v0\",\n V1 = \"v1\",\n}\n\nexport type MessageOptions = {\n skipOpenApp?: boolean;\n /**\n * Off-chain message signing mode. Defaults to `V0`.\n *\n * - `V0` (default) \u2014 supported on all firmware with off-chain signing.\n * Falls back to Legacy on `6a81`.\n * - `V1` \u2014 supported on firmware with V1 off-chain signing (not yet\n * released). Falls back to V0 on `6a81`.\n * - `Legacy` \u2014 for backward compatibility with very old Solana app\n * firmware. Current firmware will reject it.\n * - `Raw` \u2014 pass-through: the caller provides the fully formatted\n * payload (as `Uint8Array`) and the SDK sends it as-is.\n *\n * Fallback cascade on `6a81` (invalid header):\n * V1 -> V0 -> Legacy\n * V0 -> Legacy\n * Legacy / Raw -> no fallback\n */\n version?: SignMessageVersion;\n /**\n * V0 only: the application domain to include in the off-chain message header.\n * Encoded as UTF-8 and padded/truncated to 32 bytes.\n * If omitted, defaults to 32 zero bytes. Ignored for V1, Legacy, and Raw.\n *\n * @see https://docs.anza.xyz/proposals/off-chain-message-signing\n */\n appDomain?: string;\n /**\n * V1 only: additional required signers to include in the off-chain message\n * header alongside the user's key. Per sRFC 38, this is the recommended\n * replacement for the V0 `appDomain` field \u2014 add the dApp's pubkey here to\n * bind the message to a specific application. Ignored for V0, Legacy, and Raw.\n *\n * Each entry must be a 32-byte Ed25519 public key (`Uint8Array` of length 32).\n * The V1 signer count is encoded as a `uint8`, so at most 254 additional\n * signers are supported (1 slot is reserved for the user's key). Passing a\n * signer with the wrong length or exceeding the limit returns an error before\n * any device communication.\n */\n signers?: Uint8Array[];\n};\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAO,IAAKE,OAOVA,EAAA,IAAM,MAONA,EAAA,OAAS,SACTA,EAAA,GAAK,KACLA,EAAA,GAAK,KAhBKA,OAAA",
6
6
  "names": ["MessageOptions_exports", "__export", "SignMessageVersion", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var l=(n,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of p(o))!r.call(n,t)&&t!==e&&i(n,t,{get:()=>o[t],enumerable:!(a=s(o,t))||a.enumerable});return n};var C=n=>l(i({},"__esModule",{value:!0}),n);var R={};module.exports=C(R);
1
+ "use strict";var e=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var p=(n,o,i,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of r(o))!l.call(n,t)&&t!==i&&e(n,t,{get:()=>o[t],enumerable:!(a=s(o,t))||a.enumerable});return n};var c=n=>p(e({},"__esModule",{value:!0}),n);var C={};module.exports=c(C);
2
2
  //# sourceMappingURL=SolanaTransactionOptionalConfig.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/model/SolanaTransactionOptionalConfig.ts"],
4
- "sourcesContent": ["import { type TransactionResolutionContext } from \"./TransactionResolutionContext\";\n\nexport type SolanaTransactionOptionalConfig = {\n transactionResolutionContext?: TransactionResolutionContext;\n solanaRPCURL?: string;\n skipOpenApp?: boolean;\n};\n"],
4
+ "sourcesContent": ["import { type TransactionResolutionContext } from \"./TransactionResolutionContext\";\n\nexport type SolanaTransactionOptionalConfig = {\n transactionResolutionContext?: TransactionResolutionContext;\n /** When set, overrides the signer-level RPC URL for this call. */\n solanaRPCURL?: string;\n skipOpenApp?: boolean;\n delayed?: boolean;\n fetchBlockhash?: () => Promise<Uint8Array>;\n};\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SolanaTransactionOptionalConfig_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var u=(n,e)=>{for(var t in e)i(n,t,{get:e[t],enumerable:!0})},c=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!m.call(n,s)&&s!==t&&i(n,s,{get:()=>e[s],enumerable:!(r=p(e,s))||r.enumerable});return n};var f=n=>c(i({},"__esModule",{value:!0}),n);var C={};u(C,{DefaultSignerSolana:()=>y});module.exports=f(C);var o=require("./use-cases/di/useCasesTypes"),a=require("./di");class y{_container;constructor({dmk:e,sessionId:t,contextModule:r}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t,contextModule:r})}signTransaction(e,t,r){return this._container.get(o.useCasesTypes.SignTransactionUseCase).execute(e,t,r)}signMessage(e,t,r){return this._container.get(o.useCasesTypes.SignMessageUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(o.useCasesTypes.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(o.useCasesTypes.GetAppConfigurationUseCase).execute()}}0&&(module.exports={DefaultSignerSolana});
1
+ "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var u=(n,e)=>{for(var t in e)i(n,t,{get:e[t],enumerable:!0})},c=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!m.call(n,s)&&s!==t&&i(n,s,{get:()=>e[s],enumerable:!(r=p(e,s))||r.enumerable});return n};var f=n=>c(i({},"__esModule",{value:!0}),n);var y={};u(y,{DefaultSignerSolana:()=>C});module.exports=f(y);var o=require("./use-cases/di/useCasesTypes"),a=require("./di");class C{_container;constructor({dmk:e,sessionId:t,contextModule:r,solanaRPCURL:s}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t,contextModule:r,solanaRPCURL:s})}signTransaction(e,t,r){return this._container.get(o.useCasesTypes.SignTransactionUseCase).execute(e,t,r)}signMessage(e,t,r){return this._container.get(o.useCasesTypes.SignMessageUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(o.useCasesTypes.GetAddressUseCase).execute(e,t)}getAppConfiguration(){return this._container.get(o.useCasesTypes.GetAppConfigurationUseCase).execute()}}0&&(module.exports={DefaultSignerSolana});
2
2
  //# sourceMappingURL=DefaultSignerSolana.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/DefaultSignerSolana.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId, contextModule });\n }\n\n /**\n * ## signTransaction\n * #### Securely sign a Solana or SPL transaction using **clear signing** on Ledger devices.\n * ---\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used in the transaction.\n *\n * - **transaction** `Uint8Array`\n * The serialised transaction to sign.\n *\n * **Optional**\n * - **options** `SolanaTransactionOptionalConfig`\n * Provides additional context for transaction signing.\n *\n * - **transactionResolutionContext** `object`\n * Lets you explicitly pass `tokenAddress` and ATA details, bypassing extraction from the transaction itself.\n *\n * - **tokenAddress** `string`\n * SPL token address being transferred.\n *\n * - **createATA** `object`\n * Information about creating an associated token account (ATA).\n *\n * - **address** `string` \u2013 Address (owner) of the ATA.\n * - **mintAddress** `string` \u2013 Mint address of the ATA.\n *\n * - **tokenInternalId** `string`\n * Ledger internal token ID\n *\n * - **solanaRPCURL** `string`\n * RPC endpoint to use if `transactionResolutionContext` is not provided\n * and parsing requires network lookups.\n * In browser environments, use a CORS-enabled RPC URL.\n * Defaults to: `\"https://api.mainnet-beta.solana.com/\"`.\n *\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ---\n * ### Returns\n *\n * - `observable` That emits DeviceActionState updates\n * - `cancel` A function to cancel the action on the Ledger device.\n *\n * ---\n * ### Internal Flow\n *\n * Under the hood, this method subscribes to an\n * `Observable<DeviceActionState<Uint8Array, SignTransactionDAError, IntermediateValue>>`.\n *\n * #### DeviceActionState\n * Represents the lifecycle of a device action:\n *\n * ```ts\n * type DeviceActionState<Output, Error, IntermediateValue> =\n * | { status: DeviceActionStatus.NotStarted }\n * | { status: DeviceActionStatus.Pending; intermediateValue: IntermediateValue }\n * | { status: DeviceActionStatus.Stopped }\n * | { status: DeviceActionStatus.Completed; output: Output }\n * | { status: DeviceActionStatus.Error; error: Error };\n *\n * enum DeviceActionStatus {\n * NotStarted = \"not-started\",\n * Pending = \"pending\",\n * Stopped = \"stopped\",\n * Completed = \"completed\",\n * Error = \"error\"\n * }\n * ```\n *\n * - **NotStarted** \u2192 Action hasn\u2019t begun.\n * - **Pending** \u2192 Waiting for user confirmation on the device.\n * Includes an `intermediateValue` of type `IntermediateValue`.\n * - **Stopped** \u2192 Action was cancelled before completion.\n * - **Completed** \u2192 Provides the signed transaction bytes (`Uint8Array`).\n * - **Error** \u2192 The device or signing operation failed (`SignTransactionDAError`).\n *\n * ---\n * ### Example\n *\n * ```ts\n * const { observable } = signerSolana.signTransaction(\"m/44'/501'/0'/0'\", serializedTx, {\n * transactionResolutionContext: resolution,\n * });\n * observable.subscribe({\n * next: state => {\n * if (state.status === DeviceActionStatus.Pending) {\n * console.log(\"Waiting for user action...\", state.intermediateValue);\n * }\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output);\n * }\n * },\n * error: err => console.error(\"Error:\", err),\n * });\n * ```\n */\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, solanaTransactionOptionalConfig);\n }\n\n /**\n * ## signMessage\n * #### Sign a Solana off-chain message on Ledger devices.\n *\n * Supports multiple signing modes via `SignMessageVersion`:\n * - **V0** (default) \u2014 original header with `appDomain`, up to 65 515 bytes. Falls back to Legacy on `6a81`.\n * - **V1** \u2014 simplified header, up to 65 535 bytes. Falls back to V0 -> Legacy on `6a81`. Not yet supported by released firmware.\n * - **Legacy** \u2014 compact header for backward compatibility with old Solana app firmware.\n * - **Raw** \u2014 pass-through: sends a caller-formatted `Uint8Array` payload as-is, no header wrapping.\n *\n * ---\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used for signing.\n *\n * - **message** `string | Uint8Array`\n * The message to sign. Pass a `string` for V0/V1/Legacy (UTF-8 encoded\n * automatically). Pass a `Uint8Array` for Raw mode when you have an\n * already-formatted binary payload.\n *\n * **Optional**\n * - **options** `MessageOptions`\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n * - **version** `SignMessageVersion`\n * Off-chain message signing mode. Defaults to `SignMessageVersion.V0`.\n * - **appDomain** `string`\n * V0 only: application domain included in the header (padded/truncated to 32 bytes).\n * Ignored for V1, Legacy, and Raw.\n *\n * ---\n * ### Returns\n *\n * - `observable` That emits DeviceActionState updates\n * - `cancel` A function to cancel the action on the Ledger device.\n *\n * ---\n * ### Internal Flow\n *\n * Under the hood, this method subscribes to an\n * `Observable<DeviceActionState<{ signature: string }, SignMessageDAError, IntermediateValue>>`.\n *\n * #### DeviceActionState\n * Represents the lifecycle of a device action:\n *\n * ```ts\n * type DeviceActionState<Output, Error, IntermediateValue> =\n * | { status: DeviceActionStatus.NotStarted }\n * | { status: DeviceActionStatus.Pending; intermediateValue: IntermediateValue }\n * | { status: DeviceActionStatus.Stopped }\n * | { status: DeviceActionStatus.Completed; output: Output }\n * | { status: DeviceActionStatus.Error; error: Error };\n *\n * enum DeviceActionStatus {\n * NotStarted = \"not-started\",\n * Pending = \"pending\",\n * Stopped = \"stopped\",\n * Completed = \"completed\",\n * Error = \"error\"\n * }\n * ```\n *\n * - **NotStarted** \u2192 Action hasn\u2019t begun.\n * - **Pending** \u2192 Waiting for user confirmation on the device.\n * Includes an `intermediateValue` of type `IntermediateValue`.\n * - **Stopped** \u2192 Action was cancelled before completion.\n * - **Completed** \u2192 Provides `{ signature: string }` \u2014 a base58 envelope\n * (V1/V0/Legacy) or a raw base58 signature (Raw).\n * - **Error** \u2192 The device or signing operation failed (`SignMessageDAError`).\n *\n * ---\n * ### Example\n *\n * ```ts\n * import { SignMessageVersion } from \"@ledgerhq/device-signer-kit-solana\";\n *\n * const { observable } = signerSolana.signMessage(\n * \"m/44'/501'/0'/0'\",\n * \"Hello World\",\n * { version: SignMessageVersion.V0 },\n * );\n * observable.subscribe({\n * next: state => {\n * if (state.status === DeviceActionStatus.Pending) {\n * console.log(\"Waiting for user action...\", state.intermediateValue);\n * }\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output.signature);\n * }\n * },\n * error: err => console.error(\"Error:\", err),\n * });\n * ```\n */\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n /**\n * ## getAddress\n * #### Retrieve a Solana address from Ledger devices.\n * ---\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path of the account to retrieve the address from.\n *\n * **Optional**\n * - **options** `AddressOptions`\n * - **checkOnDevice** `boolean`\n * If `true`, prompts the user to verify the address on the device.\n *\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ---\n * ### Returns\n *\n * - `observable` That emits DeviceActionState updates\n * - `cancel` A function to cancel the action on the Ledger device.\n *\n * ---\n * ### Internal Flow\n *\n * Under the hood, this method subscribes to an\n * `Observable<DeviceActionState<string, GetAddressDAError, IntermediateValue>>`.\n *\n * #### DeviceActionState\n * Represents the lifecycle of a device action:\n *\n * ```ts\n * type DeviceActionState<Output, Error, IntermediateValue> =\n * | { status: DeviceActionStatus.NotStarted }\n * | { status: DeviceActionStatus.Pending; intermediateValue: IntermediateValue }\n * | { status: DeviceActionStatus.Stopped }\n * | { status: DeviceActionStatus.Completed; output: Output }\n * | { status: DeviceActionStatus.Error; error: Error };\n *\n * enum DeviceActionStatus {\n * NotStarted = \"not-started\",\n * Pending = \"pending\",\n * Stopped = \"stopped\",\n * Completed = \"completed\",\n * Error = \"error\"\n * }\n * ```\n *\n * - **NotStarted** \u2192 Action hasn\u2019t begun.\n * - **Pending** \u2192 Waiting for user confirmation on the device.\n * Includes an `intermediateValue` of type `IntermediateValue`.\n * - **Stopped** \u2192 Action was cancelled before completion.\n * - **Completed** \u2192 Provides the base58-encoded address string, decoded to `Uint8Array`.\n * - **Error** \u2192 The device or signing operation failed (`GetAddressDAError`).\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 /**\n * ## getAppConfiguration\n * #### Retrieve the current Solana app configuration from a Ledger device.\n * ---\n * ### Parameters\n *\n * This method does not require any parameters.\n *\n * ---\n * ### Returns\n *\n * - `observable` That emits DeviceActionState updates\n * - `cancel` A function to cancel the action on the Ledger device.\n *\n * ---\n * ### Internal Flow\n *\n * Under the hood, this method subscribes to an\n * `Observable<DeviceActionState<GetAppConfigurationResult, Error, IntermediateValue>>`.\n *\n * #### DeviceActionState\n * Represents the lifecycle of a device action:\n *\n * ```ts\n * type DeviceActionState<Output, Error, IntermediateValue> =\n * | { status: DeviceActionStatus.NotStarted }\n * | { status: DeviceActionStatus.Pending; intermediateValue: IntermediateValue }\n * | { status: DeviceActionStatus.Stopped }\n * | { status: DeviceActionStatus.Completed; output: Output }\n * | { status: DeviceActionStatus.Error; error: Error };\n *\n * enum DeviceActionStatus {\n * NotStarted = \"not-started\",\n * Pending = \"pending\",\n * Stopped = \"stopped\",\n * Completed = \"completed\",\n * Error = \"error\"\n * }\n * ```\n *\n * - **NotStarted** \u2192 Action hasn\u2019t begun.\n * - **Pending** \u2192 Waiting for user confirmation on the device.\n * Includes an `intermediateValue` of type `IntermediateValue`.\n * - **Stopped** \u2192 Action was cancelled before completion.\n * - **Completed** \u2192 Provides the app configuration object.\n * - **Error** \u2192 The device or signing operation failed.\n *\n * ---\n * ### Example\n *\n * ```ts\n * const config = await signerSolana.getAppConfiguration();\n * console.log(config.version, config.flags);\n * ```\n */\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAmBA,IAAAI,EAA8B,wCAG9BC,EAA8B,gBAQvB,MAAMH,CAA4C,CAC/C,WAER,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,cAAAC,CACF,EAAuC,CACrC,KAAK,cAAa,iBAAc,CAAE,IAAAF,EAAK,UAAAC,EAAW,cAAAC,CAAc,CAAC,CACnE,CAsGA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,gBAAc,sBAAsB,EAChE,QAAQF,EAAgBC,EAAaC,CAA+B,CACzE,CAkGA,YACEF,EACAG,EACAC,EACyB,CACzB,OAAO,KAAK,WACT,IAAwB,gBAAc,kBAAkB,EACxD,QAAQJ,EAAgBG,EAASC,CAAO,CAC7C,CA4DA,WACEJ,EACAI,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,gBAAc,iBAAiB,EACtD,QAAQJ,EAAgBI,CAAO,CACpC,CAyDA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgC,gBAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
6
- "names": ["DefaultSignerSolana_exports", "__export", "DefaultSignerSolana", "__toCommonJS", "import_useCasesTypes", "import_di", "dmk", "sessionId", "contextModule", "derivationPath", "transaction", "solanaTransactionOptionalConfig", "message", "options"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOption\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { type Transaction } from \"@api/model/Transaction\";\nimport { type SignerSolana } from \"@api/SignerSolana\";\n\nimport { type GetAddressUseCase } from \"./use-cases/address/GetAddressUseCase\";\nimport { type GetAppConfigurationUseCase } from \"./use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\nimport { type SignMessageUseCase } from \"./use-cases/message/SignMessageUseCase\";\nimport { type SignTransactionUseCase } from \"./use-cases/transaction/SignTransactionUseCase\";\nimport { makeContainer } from \"./di\";\n\nexport type DefaultSignerSolanaConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n solanaRPCURL?: string;\n};\n\nexport class DefaultSignerSolana implements SignerSolana {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n }: DefaultSignerSolanaConstructorArgs) {\n this._container = makeContainer({\n dmk,\n sessionId,\n contextModule,\n solanaRPCURL,\n });\n }\n\n /**\n * Securely sign a Solana or SPL transaction using **clear signing** on Ledger devices.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used in the transaction (e.g. `\"44'/501'/0'/0'\"`).\n *\n * - **transaction** `Uint8Array`\n * The serialised transaction to sign.\n *\n * **Optional**\n * - **solanaTransactionOptionalConfig** `SolanaTransactionOptionalConfig`\n * Provides additional context for transaction signing. The\n * `transactionResolutionContext` is not required \u2014 the signer will attempt\n * to resolve metadata from the transaction itself. Explicitly providing it\n * is recommended when the information is available, as it removes ambiguity\n * and ensures accurate clear-signing details on the device.\n *\n * - **solanaRPCURL** `string`\n * Solana RPC endpoint for fetching a fresh blockhash when\n * `delayed: true`. If the signer was built with\n * `SignerSolanaBuilder({ solanaRPCURL })`, the value here overrides\n * that default for this call only.\n *\n * - **delayed** `boolean`\n * When `true`, uses the device\u2019s two-step signing flow (preview then\n * delayed sign) so review time does not race the blockhash. Requires a\n * Solana app version that supports delayed signing, and either a\n * resolved RPC URL (builder and/or **solanaRPCURL** above) or\n * **fetchBlockhash**. Otherwise the signer falls back to legacy signing.\n *\n * - **fetchBlockhash** `() => Promise<Uint8Array>`\n * Optional. When `delayed: true`, use this instead of the default RPC\n * `getLatestBlockhash` (e.g. custom commitment or RPC). Must return the\n * 32-byte recent blockhash. If provided, an RPC URL is not required for\n * the delayed path.\n *\n * - **transactionResolutionContext** `object`\n * Lets you explicitly pass `tokenAddress` and ATA details, bypassing\n * extraction from the transaction itself.\n *\n * - **tokenAddress** `string`\n * SPL token address being transferred.\n *\n * - **createATA** `object`\n * Information about creating an associated token account (ATA).\n *\n * - **address** `string` \u2013 Address (owner) of the ATA.\n * - **mintAddress** `string` \u2013 Mint address of the ATA.\n *\n * - **tokenInternalId** `string`\n * Ledger internal token ID.\n *\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<Uint8Array, SignTransactionDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is a `Uint8Array` containing the 64-byte Ed25519 signature.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.signTransaction(\"44'/501'/0'/0'\", serializedTx, {\n * transactionResolutionContext: { tokenAddress: \"EPjFWdd5...\" },\n * });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output); // Uint8Array\n * }\n * },\n * });\n * ```\n */\n signTransaction(\n derivationPath: string,\n transaction: Transaction,\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, solanaTransactionOptionalConfig);\n }\n\n /**\n * Sign a Solana off-chain message on the device.\n *\n * Supports multiple signing modes via `SignMessageVersion`:\n * - **V0** (default) \u2014 original header with `appDomain`, up to 65 515 bytes.\n * Falls back to Legacy on `6a81`.\n * - **V1** \u2014 simplified header per sRFC 38, up to 65 535 bytes. No `appDomain`\n * field; use `signers` to bind the message to a specific application instead.\n * Falls back to V0 then Legacy on `6a81`. Requires Solana device app version 1.14+.\n * - **Legacy** \u2014 compact header for backward compatibility with old Solana app firmware.\n * - **Raw** \u2014 pass-through: sends a caller-formatted `Uint8Array` payload\n * as-is, no header wrapping.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path used for signing (e.g. `\"44'/501'/0'\"`).\n *\n * - **message** `string | Uint8Array`\n * The message to sign. Pass a `string` for V0/V1/Legacy (UTF-8 encoded\n * automatically). Pass a `Uint8Array` for Raw mode when you have an\n * already-formatted binary payload.\n *\n * **Optional**\n * - **options** `MessageOptions`\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n * - **version** `SignMessageVersion`\n * Off-chain message signing mode. Defaults to `SignMessageVersion.V0`.\n * - **appDomain** `string`\n * V0 only: application domain included in the header (padded/truncated to 32 bytes).\n * Ignored for V1, Legacy, and Raw.\n * - **signers** `Uint8Array[]`\n * V1 only: additional required signers included in the off-chain message header\n * alongside the user's key. Per sRFC 38, this is the recommended replacement for\n * the V0 `appDomain` field \u2014 pass the dApp's public key here to bind the message\n * to a specific application. Signers are sorted and deduplicated automatically.\n * Each entry must be a 32-byte Ed25519 public key. At most 254 additional signers\n * are supported (1 slot reserved for the user's key). Invalid length or exceeding\n * the limit returns an error before any device communication.\n * Ignored for V0, Legacy, and Raw.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<{ signature: string }, SignMessageDAError, IntermediateValue>` updates.\n * On **Completed**, `output.signature` is a base58-encoded string \u2014 a full\n * envelope (V0/V1/Legacy) or the plain Ed25519 signature (Raw).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * // V0 with app domain\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V0,\n * appDomain: \"my-app.com\",\n * });\n *\n * // V1 with additional required signer (replaces appDomain per sRFC 38)\n * const { observable } = signer.signMessage(\"44'/501'/0'\", \"Hello World\", {\n * version: SignMessageVersion.V1,\n * signers: [dAppPubkeyBytes],\n * });\n *\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Signature:\", state.output.signature); // base58 string\n * }\n * },\n * });\n * ```\n */\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n /**\n * Derive and optionally display a Solana address on the device.\n *\n * ### Parameters\n *\n * **Required**\n * - **derivationPath** `string`\n * The derivation path of the account to retrieve the address from\n * (e.g. `\"44'/501'/0'\"`).\n *\n * **Optional**\n * - **options** `AddressOptions`\n * - **checkOnDevice** `boolean`\n * If `true`, prompts the user to verify the address on the device.\n * - **skipOpenApp** `boolean`\n * If `true`, skips opening the Solana app on the device.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<string, GetAddressDAError, IntermediateValue>` updates.\n * On **Completed**, `output` is the base58-encoded Solana address.\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAddress(\"44'/501'/0'\", { checkOnDevice: true });\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(\"Address:\", state.output); // base58 string\n * }\n * },\n * });\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 /**\n * Query the Solana app version and settings on the connected device.\n *\n * ### Parameters\n *\n * This method does not require any parameters.\n *\n * ### Returns\n *\n * `{ observable, cancel }` where:\n * - `observable` emits `DeviceActionState<AppConfiguration, GetAppConfigurationDAError, IntermediateValue>` updates.\n * On **Completed**, `output` contains:\n * - `blindSigningEnabled` `boolean` \u2014 whether blind signing is enabled.\n * - `pubKeyDisplayMode` `PublicKeyDisplayMode` \u2014 how the public key is displayed.\n * - `version` `string` \u2014 the Solana app version (e.g. `\"1.14.0\"`).\n * - `cancel` aborts the action on the Ledger device.\n *\n * @example\n * ```ts\n * const { observable } = signer.getAppConfiguration();\n * observable.subscribe({\n * next: (state) => {\n * if (state.status === DeviceActionStatus.Completed) {\n * console.log(`Solana app v${state.output.version}`);\n * }\n * },\n * });\n * ```\n */\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(useCasesTypes.GetAppConfigurationUseCase)\n .execute();\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAmBA,IAAAI,EAA8B,wCAG9BC,EAA8B,gBASvB,MAAMH,CAA4C,CAC/C,WAER,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,cAAAC,EACA,aAAAC,CACF,EAAuC,CACrC,KAAK,cAAa,iBAAc,CAC9B,IAAAH,EACA,UAAAC,EACA,cAAAC,EACA,aAAAC,CACF,CAAC,CACH,CAiFA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,gBAAc,sBAAsB,EAChE,QAAQF,EAAgBC,EAAaC,CAA+B,CACzE,CA4EA,YACEF,EACAG,EACAC,EACyB,CACzB,OAAO,KAAK,WACT,IAAwB,gBAAc,kBAAkB,EACxD,QAAQJ,EAAgBG,EAASC,CAAO,CAC7C,CAsCA,WACEJ,EACAI,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,gBAAc,iBAAiB,EACtD,QAAQJ,EAAgBI,CAAO,CACpC,CA+BA,qBAAuD,CACrD,OAAO,KAAK,WACT,IAAgC,gBAAc,0BAA0B,EACxE,QAAQ,CACb,CACF",
6
+ "names": ["DefaultSignerSolana_exports", "__export", "DefaultSignerSolana", "__toCommonJS", "import_useCasesTypes", "import_di", "dmk", "sessionId", "contextModule", "solanaRPCURL", "derivationPath", "transaction", "solanaTransactionOptionalConfig", "message", "options"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var T=(i,e)=>{for(var t in e)m(i,t,{get:e[t],enumerable:!0})},C=(i,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of h(e))!y.call(i,n)&&n!==t&&m(i,n,{get:()=>e[n],enumerable:!(o=A(e,n))||o.enumerable});return i};var I=i=>C(m({},"__esModule",{value:!0}),i),v=(i,e,t,o)=>{for(var n=o>1?void 0:o?A(e,t):e,g=i.length-1,u;g>=0;g--)(u=i[g])&&(n=(o?u(e,t,n):u(n))||n);return o&&n&&m(e,t,n),n},a=(i,e)=>(t,o)=>e(t,o,i);var M={};T(M,{SolanaAppBinder:()=>c});module.exports=I(M);var r=require("@ledgerhq/device-management-kit"),s=require("inversify"),f=require("../app-binder/task/SendSignMessageTask"),p=require("../externalTypes"),l=require("./command/GetAppConfigurationCommand"),D=require("./command/GetPubKeyCommand"),k=require("./device-action/SignTransactionDeviceAction"),d=require("./constants");let c=class{constructor(e,t,o,n){this.dmk=e;this.sessionId=t;this.contextModule=o;this.dmkLoggerFactory=n}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.SendCommandInAppDeviceAction({input:{command:new D.GetPubKeyCommand(e),appName:d.APP_NAME,requiredUserInteraction:e.checkOnDevice?r.UserInteractionRequired.VerifyAddress:r.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("GetPubKeyCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new k.SignTransactionDeviceAction({input:{derivationPath:e.derivationPath,transaction:e.transaction,transactionOptions:e.solanaTransactionOptionalConfig,contextModule:this.contextModule},loggerFactory:this.dmkLoggerFactory})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.CallTaskInAppDeviceAction({input:{task:async t=>new f.SendSignMessageTask(t,{derivationPath:e.derivationPath,sendingData:e.message,version:e.version,appDomain:e.appDomain}).run(),appName:d.APP_NAME,requiredUserInteraction:r.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("SendSignMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.SendCommandInAppDeviceAction({input:{command:new l.GetAppConfigurationCommand,appName:d.APP_NAME,requiredUserInteraction:r.UserInteractionRequired.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};c=v([(0,s.injectable)(),a(0,(0,s.inject)(p.externalTypes.Dmk)),a(1,(0,s.inject)(p.externalTypes.SessionId)),a(2,(0,s.inject)(p.externalTypes.ContextModule)),a(3,(0,s.inject)(p.externalTypes.DmkLoggerFactory))],c);0&&(module.exports={SolanaAppBinder});
1
+ "use strict";var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var T=(n,e)=>{for(var t in e)g(n,t,{get:e[t],enumerable:!0})},C=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of y(e))!S.call(n,i)&&i!==t&&g(n,i,{get:()=>e[i],enumerable:!(o=v(e,i))||o.enumerable});return n};var I=n=>C(g({},"__esModule",{value:!0}),n),h=(n,e,t,o)=>{for(var i=o>1?void 0:o?v(e,t):e,m=n.length-1,d;m>=0;m--)(d=n[m])&&(i=(o?d(e,t,i):d(i))||i);return o&&i&&g(e,t,i),i},a=(n,e)=>(t,o)=>e(t,o,n);var P={};T(P,{SolanaAppBinder:()=>c});module.exports=I(P);var r=require("@ledgerhq/device-management-kit"),s=require("inversify"),A=require("../app-binder/task/SendSignMessageTask"),p=require("../externalTypes"),l=require("./command/GetAppConfigurationCommand"),k=require("./command/GetPubKeyCommand"),f=require("./device-action/SignTransactionDeviceAction"),D=require("./di/appBinderTypes"),u=require("./constants");let c=class{constructor(e,t,o,i,m,d){this.dmk=e;this.sessionId=t;this.contextModule=o;this.dmkLoggerFactory=i;this.solanaRPCURL=m;this.blockhashService=d}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.SendCommandInAppDeviceAction({input:{command:new k.GetPubKeyCommand(e),appName:u.APP_NAME,requiredUserInteraction:e.checkOnDevice?r.UserInteractionRequired.VerifyAddress:r.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("GetPubKeyCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new f.SignTransactionDeviceAction({input:{derivationPath:e.derivationPath,transaction:e.transaction,transactionOptions:e.solanaTransactionOptionalConfig,contextModule:this.contextModule,solanaRPCURL:this.solanaRPCURL,blockhashService:this.blockhashService},loggerFactory:this.dmkLoggerFactory})})}signMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.CallTaskInAppDeviceAction({input:{task:async t=>new A.SendSignMessageTask(t,{derivationPath:e.derivationPath,sendingData:e.message,version:e.version,appDomain:e.appDomain,signers:e.signers}).run(),appName:u.APP_NAME,requiredUserInteraction:r.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("SendSignMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new r.SendCommandInAppDeviceAction({input:{command:new l.GetAppConfigurationCommand,appName:u.APP_NAME,requiredUserInteraction:r.UserInteractionRequired.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};c=h([(0,s.injectable)(),a(0,(0,s.inject)(p.externalTypes.Dmk)),a(1,(0,s.inject)(p.externalTypes.SessionId)),a(2,(0,s.inject)(p.externalTypes.ContextModule)),a(3,(0,s.inject)(p.externalTypes.DmkLoggerFactory)),a(4,(0,s.inject)(p.externalTypes.SolanaRPCURL)),a(5,(0,s.inject)(D.appBinderTypes.BlockhashService))],c);0&&(module.exports={SolanaAppBinder});
2
2
  //# sourceMappingURL=SolanaAppBinder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/SolanaAppBinder.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\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 { type SignMessageVersion } from \"@api/model/MessageOptions\";\nimport { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(args),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetPubKeyCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig;\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 transactionOptions: args.solanaTransactionOptionalConfig,\n contextModule: this.contextModule,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n version?: SignMessageVersion;\n appDomain?: string;\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n sendingData: args.message,\n version: args.version,\n appDomain: args.appDomain,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"SendSignMessageTask\"),\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: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAOO,2CACPC,EAAmC,qBASnCC,EAAoC,yDACpCC,EAA8B,mCAE9BC,EAA2C,gDAC3CC,EAAiC,sCACjCC,EAA4C,uDAC5CC,EAAyB,uBAGlB,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACIC,EAErCC,EACR,CALmC,SAAAH,EACM,eAAAC,EACI,mBAAAC,EAErC,sBAAAC,CACP,CAEH,WAAWC,EAIgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,mBAAiBA,CAAI,EAClC,QAAS,WACT,wBAAyBA,EAAK,cAC1B,0BAAwB,cACxB,0BAAwB,KAC5B,YAAaA,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,kBAAkB,CAClD,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,mBAAoBA,EAAK,gCACzB,cAAe,KAAK,aACtB,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAMgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,sBAAoBA,EAAa,CACnC,eAAgBD,EAAK,eACrB,YAAaA,EAAK,QAClB,QAASA,EAAK,QACd,UAAWA,EAAK,SAClB,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyB,0BAAwB,oBACjD,YAAaA,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,qBAAqB,CACrD,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,6BACb,QAAS,WACT,wBAAyB,0BAAwB,KACjD,YAAa,EACf,EACA,OAAQ,KAAK,iBAAiB,4BAA4B,CAC5D,CAAC,CACH,CAAC,CACH,CACF,EA1FaL,EAANO,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GACxBA,EAAA,eAAO,gBAAc,SAAS,GAC9BA,EAAA,eAAO,gBAAc,aAAa,GAClCA,EAAA,eAAO,gBAAc,gBAAgB,IAL7BR",
6
- "names": ["SolanaAppBinder_exports", "__export", "SolanaAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_SendSignMessageTask", "import_externalTypes", "import_GetAppConfigurationCommand", "import_GetPubKeyCommand", "import_SignTransactionDeviceAction", "import_constants", "SolanaAppBinder", "dmk", "sessionId", "contextModule", "dmkLoggerFactory", "args", "internalApi", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\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 { type SignMessageVersion } from \"@api/model/MessageOptions\";\nimport { SolanaTransactionOptionalConfig } from \"@api/model/SolanaTransactionOptionalConfig\";\nimport { Transaction } from \"@api/model/Transaction\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SendSignMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nimport { GetAppConfigurationCommand } from \"./command/GetAppConfigurationCommand\";\nimport { GetPubKeyCommand } from \"./command/GetPubKeyCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransactionDeviceAction\";\nimport { appBinderTypes } from \"./di/appBinderTypes\";\nimport { BlockhashService } from \"./services/BlockhashService\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class SolanaAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n @inject(externalTypes.SolanaRPCURL)\n private solanaRPCURL: string | undefined,\n @inject(appBinderTypes.BlockhashService)\n private blockhashService: BlockhashService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetPubKeyCommand(args),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetPubKeyCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Transaction;\n solanaTransactionOptionalConfig?: SolanaTransactionOptionalConfig;\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 transactionOptions: args.solanaTransactionOptionalConfig,\n contextModule: this.contextModule,\n solanaRPCURL: this.solanaRPCURL,\n blockhashService: this.blockhashService,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n version?: SignMessageVersion;\n appDomain?: string;\n signers?: Uint8Array[];\n }): SignMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n sendingData: args.message,\n version: args.version,\n appDomain: args.appDomain,\n signers: args.signers,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"SendSignMessageTask\"),\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: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAOO,2CACPC,EAAmC,qBASnCC,EAAoC,yDACpCC,EAA8B,mCAE9BC,EAA2C,gDAC3CC,EAAiC,sCACjCC,EAA4C,uDAC5CC,EAA+B,+BAE/BC,EAAyB,uBAGlB,IAAMC,EAAN,KAAsB,CAC3B,YACqCC,EACMC,EACIC,EAErCC,EAEAC,EAEAC,EACR,CATmC,SAAAL,EACM,eAAAC,EACI,mBAAAC,EAErC,sBAAAC,EAEA,kBAAAC,EAEA,sBAAAC,CACP,CAEH,WAAWC,EAIgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,mBAAiBA,CAAI,EAClC,QAAS,WACT,wBAAyBA,EAAK,cAC1B,0BAAwB,cACxB,0BAAwB,KAC5B,YAAaA,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,kBAAkB,CAClD,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,mBAAoBA,EAAK,gCACzB,cAAe,KAAK,cACpB,aAAc,KAAK,aACnB,iBAAkB,KAAK,gBACzB,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAOgB,CAC1B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,sBAAoBA,EAAa,CACnC,eAAgBD,EAAK,eACrB,YAAaA,EAAK,QAClB,QAASA,EAAK,QACd,UAAWA,EAAK,UAChB,QAASA,EAAK,OAChB,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyB,0BAAwB,oBACjD,YAAaA,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,qBAAqB,CACrD,CAAC,CACH,CAAC,CACH,CAEA,qBAAuD,CACrD,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,6BACb,QAAS,WACT,wBAAyB,0BAAwB,KACjD,YAAa,EACf,EACA,OAAQ,KAAK,iBAAiB,4BAA4B,CAC5D,CAAC,CACH,CAAC,CACH,CACF,EAlGaP,EAANS,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GACxBA,EAAA,eAAO,gBAAc,SAAS,GAC9BA,EAAA,eAAO,gBAAc,aAAa,GAClCA,EAAA,eAAO,gBAAc,gBAAgB,GAErCA,EAAA,eAAO,gBAAc,YAAY,GAEjCA,EAAA,eAAO,iBAAe,gBAAgB,IAT9BV",
6
+ "names": ["SolanaAppBinder_exports", "__export", "SolanaAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_SendSignMessageTask", "import_externalTypes", "import_GetAppConfigurationCommand", "import_GetPubKeyCommand", "import_SignTransactionDeviceAction", "import_appBinderTypes", "import_constants", "SolanaAppBinder", "dmk", "sessionId", "contextModule", "dmkLoggerFactory", "solanaRPCURL", "blockhashService", "args", "internalApi", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var o=require("@ledgerhq/device-management-kit"),l=require("rxjs"),g=require("./command/GetAppConfigurationCommand"),v=require("./command/GetPubKeyCommand"),m=require("./constants"),u=require("./SolanaAppBinder");const d=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("SolanaAppBinder",()=>{const c={},i={sendCommand:vi.fn(),executeDeviceAction:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const s=new u.SolanaAppBinder({},{},c,d);expect(s).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((s,n)=>{const t="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const a=new u.SolanaAppBinder(i,"sessionId",c,d),{observable:A}=a.getAddress({derivationPath:"44'/501'",checkOnDevice:!1,skipOpenApp:!1}),r=[];A.subscribe({next:e=>{r.push(e)},error:e=>{n(e)},complete:()=>{try{expect(r).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const s={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1,skipOpenApp:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const t={...s,checkOnDevice:!0};new u.SolanaAppBinder(i,"sessionId",c,d).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new v.GetPubKeyCommand(t),appName:m.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.VerifyAddress,skipOpenApp:!1}})}))}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const t={...s,checkOnDevice:!1};new u.SolanaAppBinder(i,"sessionId",c,d).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new v.GetPubKeyCommand(t),appName:m.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.None,skipOpenApp:!1}})}))})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((s,n)=>{const t=new Uint8Array([1,2,3]);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const a=new u.SolanaAppBinder(i,"sessionId",c,d),{observable:A}=a.signTransaction({derivationPath:"44'/501'",transaction:new Uint8Array([1,2,3,4]),solanaTransactionOptionalConfig:{skipOpenApp:!1}}),r=[];A.subscribe({next:e=>{r.push(e)},error:e=>{n(e)},complete:()=>{try{expect(r).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{const s="44'/60'/3'/2/1",n=new Uint8Array([1,2,3,4]),t=!1;new u.SolanaAppBinder(i,"sessionId",c,d).signTransaction({derivationPath:s,transaction:n,solanaTransactionOptionalConfig:{skipOpenApp:!1}}),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{derivationPath:s,transaction:n,transactionOptions:{skipOpenApp:t},contextModule:c}})}))})}),describe("signMessage",()=>{it("should return the signed message",()=>new Promise((s,n)=>{const t={signature:"signature"},a={derivationPath:"44'/501'/0'/0'",message:"Hello world",skipOpenApp:!1};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const A=new u.SolanaAppBinder(i,"sessionId",c,d),{observable:r}=A.signMessage(a),e=[];r.subscribe({next:p=>{e.push(p)},error:p=>{n(p)},complete:()=>{try{expect(e).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(p){n(p)}}})})),it("should accept a Uint8Array message for Raw pass-through",()=>new Promise((s,n)=>{const t={signature:"rawSig"},a=new Uint8Array([255,1,2]);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const A=new u.SolanaAppBinder(i,"sessionId",c,d),{observable:r}=A.signMessage({derivationPath:"44'/501'/0'/0'",message:a,skipOpenApp:!1}),e=[];r.subscribe({next:p=>e.push(p),error:p=>n(p),complete:()=>{try{expect(e).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(p){n(p)}}})}))}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((s,n)=>{const t={blindSigningEnabled:!0,pubKeyDisplayMode:"LONG",version:"2.5.10"};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const a=new u.SolanaAppBinder(i,"sessionId",c,d),{observable:A}=a.getAppConfiguration(),r=[];A.subscribe({next:e=>{r.push(e)},error:e=>{n(e)},complete:()=>{try{expect(r).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{new u.SolanaAppBinder(i,"sessionId",c,d).getAppConfiguration(),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new g.GetAppConfigurationCommand,appName:m.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.None,skipOpenApp:!1}})}))})})});
1
+ "use strict";var o=require("@ledgerhq/device-management-kit"),m=require("rxjs"),x=require("../../api/index"),f=require("../app-binder/services/bs58Encoder"),b=require("./command/GetAppConfigurationCommand"),D=require("./command/GetPubKeyCommand"),d=require("./services/BlockhashService"),g=require("./constants"),u=require("./SolanaAppBinder");const A=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("SolanaAppBinder",()=>{const c={},i={sendCommand:vi.fn(),executeDeviceAction:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const s=new u.SolanaAppBinder({},{},c,A,void 0,new d.BlockhashService);expect(s).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((s,n)=>{const t="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const r=new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService),{observable:l}=r.getAddress({derivationPath:"44'/501'",checkOnDevice:!1,skipOpenApp:!1}),a=[];l.subscribe({next:e=>{a.push(e)},error:e=>{n(e)},complete:()=>{try{expect(a).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const s={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1,skipOpenApp:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const t={...s,checkOnDevice:!0};new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new D.GetPubKeyCommand(t),appName:g.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.VerifyAddress,skipOpenApp:!1}})}))}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const t={...s,checkOnDevice:!1};new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new D.GetPubKeyCommand(t),appName:g.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.None,skipOpenApp:!1}})}))})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((s,n)=>{const t=new Uint8Array([1,2,3]);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const r=new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService),{observable:l}=r.signTransaction({derivationPath:"44'/501'",transaction:new Uint8Array([1,2,3,4]),solanaTransactionOptionalConfig:{skipOpenApp:!1}}),a=[];l.subscribe({next:e=>{a.push(e)},error:e=>{n(e)},complete:()=>{try{expect(a).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{const s="44'/60'/3'/2/1",n=new Uint8Array([1,2,3,4]),t=!1;new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService).signTransaction({derivationPath:s,transaction:n,solanaTransactionOptionalConfig:{skipOpenApp:!1}}),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:expect.objectContaining({derivationPath:s,transaction:n,transactionOptions:{skipOpenApp:t},contextModule:c})})}))})}),describe("signMessage",()=>{it("should return the signed message",()=>new Promise((s,n)=>{const t={signature:"signature"},r={derivationPath:"44'/501'/0'/0'",message:"Hello world",skipOpenApp:!1};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const l=new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService),{observable:a}=l.signMessage(r),e=[];a.subscribe({next:p=>{e.push(p)},error:p=>{n(p)},complete:()=>{try{expect(e).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(p){n(p)}}})})),it("passes signers into the V1 OCM via the task closure",async()=>{const s=[new Uint8Array(32).fill(34)],n=new Uint8Array(32).fill(17),t=new Uint8Array(64).fill(170);i.executeDeviceAction.mockReturnValueOnce({observable:(0,m.from)([]),cancel:vi.fn()}),new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService).signMessage({derivationPath:"44'/501'/0'/0'",message:"hi",skipOpenApp:!1,version:x.SignMessageVersion.V1,signers:s});const l=vi.mocked(i.executeDeviceAction).mock.calls[0][0].deviceAction.input.task,a=vi.fn().mockResolvedValueOnce((0,o.CommandResultFactory)({data:f.DefaultBs58Encoder.encode(n)})).mockResolvedValueOnce((0,o.CommandResultFactory)({data:t})),e=await l({sendCommand:a});if(expect("data"in e).toBe(!0),!("data"in e))throw new Error("expected data result");const v=f.DefaultBs58Encoder.decode(e.data.signature).slice(65);expect(v[16]).toBe(1),expect(v[17]).toBe(2),expect(v.slice(18,50)).toEqual(n),expect(v.slice(50,82)).toEqual(s[0])}),it("should accept a Uint8Array message for Raw pass-through",()=>new Promise((s,n)=>{const t={signature:"rawSig"},r=new Uint8Array([255,1,2]);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const l=new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService),{observable:a}=l.signMessage({derivationPath:"44'/501'/0'/0'",message:r,skipOpenApp:!1}),e=[];a.subscribe({next:p=>e.push(p),error:p=>n(p),complete:()=>{try{expect(e).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(p){n(p)}}})}))}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((s,n)=>{const t={blindSigningEnabled:!0,pubKeyDisplayMode:"LONG",version:"2.5.10"};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:o.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const r=new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService),{observable:l}=r.getAppConfiguration(),a=[];l.subscribe({next:e=>{a.push(e)},error:e=>{n(e)},complete:()=>{try{expect(a).toEqual([{status:o.DeviceActionStatus.Completed,output:t}]),s()}catch(e){n(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{new u.SolanaAppBinder(i,"sessionId",c,A,void 0,new d.BlockhashService).getAppConfiguration(),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:{command:new b.GetAppConfigurationCommand,appName:g.APP_NAME,requiredUserInteraction:o.UserInteractionRequired.None,skipOpenApp:!1}})}))})})});
2
2
  //# sourceMappingURL=SolanaAppBinder.test.js.map