@ledgerhq/coin-solana 0.7.0-next.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 (521) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +16 -0
  4. package/CHANGELOG.md +27 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/api/cached.d.ts +3 -0
  8. package/lib/api/cached.d.ts.map +1 -0
  9. package/lib/api/cached.js +41 -0
  10. package/lib/api/cached.js.map +1 -0
  11. package/lib/api/chain/account/index.d.ts +2 -0
  12. package/lib/api/chain/account/index.d.ts.map +1 -0
  13. package/lib/api/chain/account/index.js +8 -0
  14. package/lib/api/chain/account/index.js.map +1 -0
  15. package/lib/api/chain/account/parser.d.ts +10 -0
  16. package/lib/api/chain/account/parser.d.ts.map +1 -0
  17. package/lib/api/chain/account/parser.js +56 -0
  18. package/lib/api/chain/account/parser.js.map +1 -0
  19. package/lib/api/chain/account/stake.d.ts +237 -0
  20. package/lib/api/chain/account/stake.d.ts.map +1 -0
  21. package/lib/api/chain/account/stake.js +38 -0
  22. package/lib/api/chain/account/stake.js.map +1 -0
  23. package/lib/api/chain/account/token.d.ts +116 -0
  24. package/lib/api/chain/account/token.d.ts.map +1 -0
  25. package/lib/api/chain/account/token.js +42 -0
  26. package/lib/api/chain/account/token.js.map +1 -0
  27. package/lib/api/chain/account/vote.d.ts +252 -0
  28. package/lib/api/chain/account/vote.d.ts.map +1 -0
  29. package/lib/api/chain/account/vote.js +44 -0
  30. package/lib/api/chain/account/vote.js.map +1 -0
  31. package/lib/api/chain/index.d.ts +29 -0
  32. package/lib/api/chain/index.d.ts.map +1 -0
  33. package/lib/api/chain/index.js +96 -0
  34. package/lib/api/chain/index.js.map +1 -0
  35. package/lib/api/chain/instruction/associated-token-account/index.d.ts +15 -0
  36. package/lib/api/chain/instruction/associated-token-account/index.d.ts.map +1 -0
  37. package/lib/api/chain/instruction/associated-token-account/index.js +21 -0
  38. package/lib/api/chain/instruction/associated-token-account/index.js.map +1 -0
  39. package/lib/api/chain/instruction/associated-token-account/types.d.ts +30 -0
  40. package/lib/api/chain/instruction/associated-token-account/types.d.ts.map +1 -0
  41. package/lib/api/chain/instruction/associated-token-account/types.js +19 -0
  42. package/lib/api/chain/instruction/associated-token-account/types.js.map +1 -0
  43. package/lib/api/chain/instruction/memo/index.d.ts +15 -0
  44. package/lib/api/chain/instruction/memo/index.d.ts.map +1 -0
  45. package/lib/api/chain/instruction/memo/index.js +14 -0
  46. package/lib/api/chain/instruction/memo/index.js.map +1 -0
  47. package/lib/api/chain/instruction/memo/types.d.ts +21 -0
  48. package/lib/api/chain/instruction/memo/types.d.ts.map +1 -0
  49. package/lib/api/chain/instruction/memo/types.js +16 -0
  50. package/lib/api/chain/instruction/memo/types.js.map +1 -0
  51. package/lib/api/chain/instruction/stake/index.d.ts +15 -0
  52. package/lib/api/chain/instruction/stake/index.d.ts.map +1 -0
  53. package/lib/api/chain/instruction/stake/index.js +20 -0
  54. package/lib/api/chain/instruction/stake/index.js.map +1 -0
  55. package/lib/api/chain/instruction/stake/types.d.ts +215 -0
  56. package/lib/api/chain/instruction/stake/types.d.ts.map +1 -0
  57. package/lib/api/chain/instruction/stake/types.js +80 -0
  58. package/lib/api/chain/instruction/stake/types.js.map +1 -0
  59. package/lib/api/chain/instruction/system/index.d.ts +15 -0
  60. package/lib/api/chain/instruction/system/index.d.ts.map +1 -0
  61. package/lib/api/chain/instruction/system/index.js +20 -0
  62. package/lib/api/chain/instruction/system/index.js.map +1 -0
  63. package/lib/api/chain/instruction/system/types.d.ts +298 -0
  64. package/lib/api/chain/instruction/system/types.d.ts.map +1 -0
  65. package/lib/api/chain/instruction/system/types.js +117 -0
  66. package/lib/api/chain/instruction/system/types.js.map +1 -0
  67. package/lib/api/chain/instruction/token/index.d.ts +15 -0
  68. package/lib/api/chain/instruction/token/index.d.ts.map +1 -0
  69. package/lib/api/chain/instruction/token/index.js +20 -0
  70. package/lib/api/chain/instruction/token/index.js.map +1 -0
  71. package/lib/api/chain/instruction/token/types.d.ts +497 -0
  72. package/lib/api/chain/instruction/token/types.d.ts.map +1 -0
  73. package/lib/api/chain/instruction/token/types.js +200 -0
  74. package/lib/api/chain/instruction/token/types.js.map +1 -0
  75. package/lib/api/chain/program/constants.d.ts +11 -0
  76. package/lib/api/chain/program/constants.d.ts.map +1 -0
  77. package/lib/api/chain/program/constants.js +14 -0
  78. package/lib/api/chain/program/constants.js.map +1 -0
  79. package/lib/api/chain/program/index.d.ts +2 -0
  80. package/lib/api/chain/program/index.d.ts.map +1 -0
  81. package/lib/api/chain/program/index.js +7 -0
  82. package/lib/api/chain/program/index.js.map +1 -0
  83. package/lib/api/chain/program/parser.d.ts +35 -0
  84. package/lib/api/chain/program/parser.d.ts.map +1 -0
  85. package/lib/api/chain/program/parser.js +66 -0
  86. package/lib/api/chain/program/parser.js.map +1 -0
  87. package/lib/api/chain/validators/bignum.d.ts +3 -0
  88. package/lib/api/chain/validators/bignum.d.ts.map +1 -0
  89. package/lib/api/chain/validators/bignum.js +11 -0
  90. package/lib/api/chain/validators/bignum.js.map +1 -0
  91. package/lib/api/chain/validators/index.d.ts +10 -0
  92. package/lib/api/chain/validators/index.d.ts.map +1 -0
  93. package/lib/api/chain/validators/index.js +10 -0
  94. package/lib/api/chain/validators/index.js.map +1 -0
  95. package/lib/api/chain/validators/pubkey.d.ts +3 -0
  96. package/lib/api/chain/validators/pubkey.d.ts.map +1 -0
  97. package/lib/api/chain/validators/pubkey.js +7 -0
  98. package/lib/api/chain/validators/pubkey.js.map +1 -0
  99. package/lib/api/chain/web3.d.ts +43 -0
  100. package/lib/api/chain/web3.d.ts.map +1 -0
  101. package/lib/api/chain/web3.js +272 -0
  102. package/lib/api/chain/web3.js.map +1 -0
  103. package/lib/api/index.d.ts +5 -0
  104. package/lib/api/index.d.ts.map +1 -0
  105. package/lib/api/index.js +25 -0
  106. package/lib/api/index.js.map +1 -0
  107. package/lib/api/logged.d.ts +3 -0
  108. package/lib/api/logged.d.ts.map +1 -0
  109. package/lib/api/logged.js +69 -0
  110. package/lib/api/logged.js.map +1 -0
  111. package/lib/api/queued.d.ts +3 -0
  112. package/lib/api/queued.d.ts.map +1 -0
  113. package/lib/api/queued.js +27 -0
  114. package/lib/api/queued.js.map +1 -0
  115. package/lib/api/traced.d.ts +3 -0
  116. package/lib/api/traced.d.ts.map +1 -0
  117. package/lib/api/traced.js +80 -0
  118. package/lib/api/traced.js.map +1 -0
  119. package/lib/bridge/bridge.d.ts +15 -0
  120. package/lib/bridge/bridge.d.ts.map +1 -0
  121. package/lib/bridge/bridge.js +134 -0
  122. package/lib/bridge/bridge.js.map +1 -0
  123. package/lib/bridge/js.d.ts +7 -0
  124. package/lib/bridge/js.d.ts.map +1 -0
  125. package/lib/bridge/js.js +28 -0
  126. package/lib/bridge/js.js.map +1 -0
  127. package/lib/bridge.integration.test.d.ts +4 -0
  128. package/lib/bridge.integration.test.d.ts.map +1 -0
  129. package/lib/bridge.integration.test.js +988 -0
  130. package/lib/bridge.integration.test.js.map +1 -0
  131. package/lib/broadcast.d.ts +7 -0
  132. package/lib/broadcast.d.ts.map +1 -0
  133. package/lib/broadcast.js +37 -0
  134. package/lib/broadcast.js.map +1 -0
  135. package/lib/buildTransaction.d.ts +5 -0
  136. package/lib/buildTransaction.d.ts.map +1 -0
  137. package/lib/buildTransaction.js +67 -0
  138. package/lib/buildTransaction.js.map +1 -0
  139. package/lib/cli-transaction.d.ts +19 -0
  140. package/lib/cli-transaction.d.ts.map +1 -0
  141. package/lib/cli-transaction.js +196 -0
  142. package/lib/cli-transaction.js.map +1 -0
  143. package/lib/createTransaction.d.ts +5 -0
  144. package/lib/createTransaction.d.ts.map +1 -0
  145. package/lib/createTransaction.js +19 -0
  146. package/lib/createTransaction.js.map +1 -0
  147. package/lib/datasets/solana.scanAccounts.1.d.ts +6 -0
  148. package/lib/datasets/solana.scanAccounts.1.d.ts.map +1 -0
  149. package/lib/datasets/solana.scanAccounts.1.js +12 -0
  150. package/lib/datasets/solana.scanAccounts.1.js.map +1 -0
  151. package/lib/deviceTransactionConfig.d.ts +10 -0
  152. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  153. package/lib/deviceTransactionConfig.js +228 -0
  154. package/lib/deviceTransactionConfig.js.map +1 -0
  155. package/lib/errors.d.ts +61 -0
  156. package/lib/errors.d.ts.map +1 -0
  157. package/lib/errors.js +25 -0
  158. package/lib/errors.js.map +1 -0
  159. package/lib/estimateMaxSpendable.d.ts +11 -0
  160. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  161. package/lib/estimateMaxSpendable.js +63 -0
  162. package/lib/estimateMaxSpendable.js.map +1 -0
  163. package/lib/getTransactionStatus.d.ts +5 -0
  164. package/lib/getTransactionStatus.d.ts.map +1 -0
  165. package/lib/getTransactionStatus.js +73 -0
  166. package/lib/getTransactionStatus.js.map +1 -0
  167. package/lib/hw-getAddress.d.ts +6 -0
  168. package/lib/hw-getAddress.d.ts.map +1 -0
  169. package/lib/hw-getAddress.js +28 -0
  170. package/lib/hw-getAddress.js.map +1 -0
  171. package/lib/logic.d.ts +29 -0
  172. package/lib/logic.d.ts.map +1 -0
  173. package/lib/logic.js +102 -0
  174. package/lib/logic.js.map +1 -0
  175. package/lib/preload-data.d.ts +7 -0
  176. package/lib/preload-data.d.ts.map +1 -0
  177. package/lib/preload-data.js +45 -0
  178. package/lib/preload-data.js.map +1 -0
  179. package/lib/preload.d.ts +7 -0
  180. package/lib/preload.d.ts.map +1 -0
  181. package/lib/preload.js +67 -0
  182. package/lib/preload.js.map +1 -0
  183. package/lib/preload.test.d.ts +2 -0
  184. package/lib/preload.test.d.ts.map +1 -0
  185. package/lib/preload.test.js +9 -0
  186. package/lib/preload.test.js.map +1 -0
  187. package/lib/prepareTransaction.d.ts +5 -0
  188. package/lib/prepareTransaction.d.ts.map +1 -0
  189. package/lib/prepareTransaction.js +500 -0
  190. package/lib/prepareTransaction.js.map +1 -0
  191. package/lib/serialization.d.ts +9 -0
  192. package/lib/serialization.d.ts.map +1 -0
  193. package/lib/serialization.js +69 -0
  194. package/lib/serialization.js.map +1 -0
  195. package/lib/signOperation.d.ts +7 -0
  196. package/lib/signOperation.d.ts.map +1 -0
  197. package/lib/signOperation.js +153 -0
  198. package/lib/signOperation.js.map +1 -0
  199. package/lib/signer.d.ts +11 -0
  200. package/lib/signer.d.ts.map +1 -0
  201. package/lib/signer.js +3 -0
  202. package/lib/signer.js.map +1 -0
  203. package/lib/specs.d.ts +7 -0
  204. package/lib/specs.d.ts.map +1 -0
  205. package/lib/specs.js +409 -0
  206. package/lib/specs.js.map +1 -0
  207. package/lib/speculos-deviceActions.d.ts +8 -0
  208. package/lib/speculos-deviceActions.d.ts.map +1 -0
  209. package/lib/speculos-deviceActions.js +217 -0
  210. package/lib/speculos-deviceActions.js.map +1 -0
  211. package/lib/synchronization.d.ts +5 -0
  212. package/lib/synchronization.d.ts.map +1 -0
  213. package/lib/synchronization.js +463 -0
  214. package/lib/synchronization.js.map +1 -0
  215. package/lib/transaction.d.ts +15 -0
  216. package/lib/transaction.d.ts.map +1 -0
  217. package/lib/transaction.js +154 -0
  218. package/lib/transaction.js.map +1 -0
  219. package/lib/tx-fees.d.ts +4 -0
  220. package/lib/tx-fees.d.ts.map +1 -0
  221. package/lib/tx-fees.js +167 -0
  222. package/lib/tx-fees.js.map +1 -0
  223. package/lib/types.d.ts +225 -0
  224. package/lib/types.d.ts.map +1 -0
  225. package/lib/types.js +3 -0
  226. package/lib/types.js.map +1 -0
  227. package/lib/utils.d.ts +24 -0
  228. package/lib/utils.d.ts.map +1 -0
  229. package/lib/utils.js +172 -0
  230. package/lib/utils.js.map +1 -0
  231. package/lib/validator-app/index.d.ts +22 -0
  232. package/lib/validator-app/index.d.ts.map +1 -0
  233. package/lib/validator-app/index.js +62 -0
  234. package/lib/validator-app/index.js.map +1 -0
  235. package/lib-es/api/cached.d.ts +3 -0
  236. package/lib-es/api/cached.d.ts.map +1 -0
  237. package/lib-es/api/cached.js +34 -0
  238. package/lib-es/api/cached.js.map +1 -0
  239. package/lib-es/api/chain/account/index.d.ts +2 -0
  240. package/lib-es/api/chain/account/index.d.ts.map +1 -0
  241. package/lib-es/api/chain/account/index.js +2 -0
  242. package/lib-es/api/chain/account/index.js.map +1 -0
  243. package/lib-es/api/chain/account/parser.d.ts +10 -0
  244. package/lib-es/api/chain/account/parser.d.ts.map +1 -0
  245. package/lib-es/api/chain/account/parser.js +48 -0
  246. package/lib-es/api/chain/account/parser.js.map +1 -0
  247. package/lib-es/api/chain/account/stake.d.ts +237 -0
  248. package/lib-es/api/chain/account/stake.d.ts.map +1 -0
  249. package/lib-es/api/chain/account/stake.js +35 -0
  250. package/lib-es/api/chain/account/stake.js.map +1 -0
  251. package/lib-es/api/chain/account/token.d.ts +116 -0
  252. package/lib-es/api/chain/account/token.d.ts.map +1 -0
  253. package/lib-es/api/chain/account/token.js +39 -0
  254. package/lib-es/api/chain/account/token.js.map +1 -0
  255. package/lib-es/api/chain/account/vote.d.ts +252 -0
  256. package/lib-es/api/chain/account/vote.d.ts.map +1 -0
  257. package/lib-es/api/chain/account/vote.js +41 -0
  258. package/lib-es/api/chain/account/vote.js.map +1 -0
  259. package/lib-es/api/chain/index.d.ts +29 -0
  260. package/lib-es/api/chain/index.d.ts.map +1 -0
  261. package/lib-es/api/chain/index.js +92 -0
  262. package/lib-es/api/chain/index.js.map +1 -0
  263. package/lib-es/api/chain/instruction/associated-token-account/index.d.ts +15 -0
  264. package/lib-es/api/chain/instruction/associated-token-account/index.d.ts.map +1 -0
  265. package/lib-es/api/chain/instruction/associated-token-account/index.js +17 -0
  266. package/lib-es/api/chain/instruction/associated-token-account/index.js.map +1 -0
  267. package/lib-es/api/chain/instruction/associated-token-account/types.d.ts +30 -0
  268. package/lib-es/api/chain/instruction/associated-token-account/types.d.ts.map +1 -0
  269. package/lib-es/api/chain/instruction/associated-token-account/types.js +16 -0
  270. package/lib-es/api/chain/instruction/associated-token-account/types.js.map +1 -0
  271. package/lib-es/api/chain/instruction/memo/index.d.ts +15 -0
  272. package/lib-es/api/chain/instruction/memo/index.d.ts.map +1 -0
  273. package/lib-es/api/chain/instruction/memo/index.js +10 -0
  274. package/lib-es/api/chain/instruction/memo/index.js.map +1 -0
  275. package/lib-es/api/chain/instruction/memo/types.d.ts +21 -0
  276. package/lib-es/api/chain/instruction/memo/types.d.ts.map +1 -0
  277. package/lib-es/api/chain/instruction/memo/types.js +13 -0
  278. package/lib-es/api/chain/instruction/memo/types.js.map +1 -0
  279. package/lib-es/api/chain/instruction/stake/index.d.ts +15 -0
  280. package/lib-es/api/chain/instruction/stake/index.d.ts.map +1 -0
  281. package/lib-es/api/chain/instruction/stake/index.js +16 -0
  282. package/lib-es/api/chain/instruction/stake/index.js.map +1 -0
  283. package/lib-es/api/chain/instruction/stake/types.d.ts +215 -0
  284. package/lib-es/api/chain/instruction/stake/types.d.ts.map +1 -0
  285. package/lib-es/api/chain/instruction/stake/types.js +77 -0
  286. package/lib-es/api/chain/instruction/stake/types.js.map +1 -0
  287. package/lib-es/api/chain/instruction/system/index.d.ts +15 -0
  288. package/lib-es/api/chain/instruction/system/index.d.ts.map +1 -0
  289. package/lib-es/api/chain/instruction/system/index.js +16 -0
  290. package/lib-es/api/chain/instruction/system/index.js.map +1 -0
  291. package/lib-es/api/chain/instruction/system/types.d.ts +298 -0
  292. package/lib-es/api/chain/instruction/system/types.d.ts.map +1 -0
  293. package/lib-es/api/chain/instruction/system/types.js +114 -0
  294. package/lib-es/api/chain/instruction/system/types.js.map +1 -0
  295. package/lib-es/api/chain/instruction/token/index.d.ts +15 -0
  296. package/lib-es/api/chain/instruction/token/index.d.ts.map +1 -0
  297. package/lib-es/api/chain/instruction/token/index.js +16 -0
  298. package/lib-es/api/chain/instruction/token/index.js.map +1 -0
  299. package/lib-es/api/chain/instruction/token/types.d.ts +497 -0
  300. package/lib-es/api/chain/instruction/token/types.d.ts.map +1 -0
  301. package/lib-es/api/chain/instruction/token/types.js +197 -0
  302. package/lib-es/api/chain/instruction/token/types.js.map +1 -0
  303. package/lib-es/api/chain/program/constants.d.ts +11 -0
  304. package/lib-es/api/chain/program/constants.d.ts.map +1 -0
  305. package/lib-es/api/chain/program/constants.js +11 -0
  306. package/lib-es/api/chain/program/constants.js.map +1 -0
  307. package/lib-es/api/chain/program/index.d.ts +2 -0
  308. package/lib-es/api/chain/program/index.d.ts.map +1 -0
  309. package/lib-es/api/chain/program/index.js +2 -0
  310. package/lib-es/api/chain/program/index.js.map +1 -0
  311. package/lib-es/api/chain/program/parser.d.ts +35 -0
  312. package/lib-es/api/chain/program/parser.d.ts.map +1 -0
  313. package/lib-es/api/chain/program/parser.js +61 -0
  314. package/lib-es/api/chain/program/parser.js.map +1 -0
  315. package/lib-es/api/chain/validators/bignum.d.ts +3 -0
  316. package/lib-es/api/chain/validators/bignum.d.ts.map +1 -0
  317. package/lib-es/api/chain/validators/bignum.js +8 -0
  318. package/lib-es/api/chain/validators/bignum.js.map +1 -0
  319. package/lib-es/api/chain/validators/index.d.ts +10 -0
  320. package/lib-es/api/chain/validators/index.d.ts.map +1 -0
  321. package/lib-es/api/chain/validators/index.js +7 -0
  322. package/lib-es/api/chain/validators/index.js.map +1 -0
  323. package/lib-es/api/chain/validators/pubkey.d.ts +3 -0
  324. package/lib-es/api/chain/validators/pubkey.d.ts.map +1 -0
  325. package/lib-es/api/chain/validators/pubkey.js +4 -0
  326. package/lib-es/api/chain/validators/pubkey.js.map +1 -0
  327. package/lib-es/api/chain/web3.d.ts +43 -0
  328. package/lib-es/api/chain/web3.d.ts.map +1 -0
  329. package/lib-es/api/chain/web3.js +249 -0
  330. package/lib-es/api/chain/web3.js.map +1 -0
  331. package/lib-es/api/index.d.ts +5 -0
  332. package/lib-es/api/index.d.ts.map +1 -0
  333. package/lib-es/api/index.js +5 -0
  334. package/lib-es/api/index.js.map +1 -0
  335. package/lib-es/api/logged.d.ts +3 -0
  336. package/lib-es/api/logged.d.ts.map +1 -0
  337. package/lib-es/api/logged.js +65 -0
  338. package/lib-es/api/logged.js.map +1 -0
  339. package/lib-es/api/queued.d.ts +3 -0
  340. package/lib-es/api/queued.d.ts.map +1 -0
  341. package/lib-es/api/queued.js +23 -0
  342. package/lib-es/api/queued.js.map +1 -0
  343. package/lib-es/api/traced.d.ts +3 -0
  344. package/lib-es/api/traced.d.ts.map +1 -0
  345. package/lib-es/api/traced.js +76 -0
  346. package/lib-es/api/traced.js.map +1 -0
  347. package/lib-es/bridge/bridge.d.ts +15 -0
  348. package/lib-es/bridge/bridge.d.ts.map +1 -0
  349. package/lib-es/bridge/bridge.js +127 -0
  350. package/lib-es/bridge/bridge.js.map +1 -0
  351. package/lib-es/bridge/js.d.ts +7 -0
  352. package/lib-es/bridge/js.d.ts.map +1 -0
  353. package/lib-es/bridge/js.js +24 -0
  354. package/lib-es/bridge/js.js.map +1 -0
  355. package/lib-es/bridge.integration.test.d.ts +4 -0
  356. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  357. package/lib-es/bridge.integration.test.js +986 -0
  358. package/lib-es/bridge.integration.test.js.map +1 -0
  359. package/lib-es/broadcast.d.ts +7 -0
  360. package/lib-es/broadcast.d.ts.map +1 -0
  361. package/lib-es/broadcast.js +33 -0
  362. package/lib-es/broadcast.js.map +1 -0
  363. package/lib-es/buildTransaction.d.ts +5 -0
  364. package/lib-es/buildTransaction.d.ts.map +1 -0
  365. package/lib-es/buildTransaction.js +63 -0
  366. package/lib-es/buildTransaction.js.map +1 -0
  367. package/lib-es/cli-transaction.d.ts +19 -0
  368. package/lib-es/cli-transaction.d.ts.map +1 -0
  369. package/lib-es/cli-transaction.js +190 -0
  370. package/lib-es/cli-transaction.js.map +1 -0
  371. package/lib-es/createTransaction.d.ts +5 -0
  372. package/lib-es/createTransaction.d.ts.map +1 -0
  373. package/lib-es/createTransaction.js +15 -0
  374. package/lib-es/createTransaction.js.map +1 -0
  375. package/lib-es/datasets/solana.scanAccounts.1.d.ts +6 -0
  376. package/lib-es/datasets/solana.scanAccounts.1.d.ts.map +1 -0
  377. package/lib-es/datasets/solana.scanAccounts.1.js +10 -0
  378. package/lib-es/datasets/solana.scanAccounts.1.js.map +1 -0
  379. package/lib-es/deviceTransactionConfig.d.ts +10 -0
  380. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  381. package/lib-es/deviceTransactionConfig.js +223 -0
  382. package/lib-es/deviceTransactionConfig.js.map +1 -0
  383. package/lib-es/errors.d.ts +61 -0
  384. package/lib-es/errors.d.ts.map +1 -0
  385. package/lib-es/errors.js +22 -0
  386. package/lib-es/errors.js.map +1 -0
  387. package/lib-es/estimateMaxSpendable.d.ts +11 -0
  388. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  389. package/lib-es/estimateMaxSpendable.js +55 -0
  390. package/lib-es/estimateMaxSpendable.js.map +1 -0
  391. package/lib-es/getTransactionStatus.d.ts +5 -0
  392. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  393. package/lib-es/getTransactionStatus.js +69 -0
  394. package/lib-es/getTransactionStatus.js.map +1 -0
  395. package/lib-es/hw-getAddress.d.ts +6 -0
  396. package/lib-es/hw-getAddress.d.ts.map +1 -0
  397. package/lib-es/hw-getAddress.js +23 -0
  398. package/lib-es/hw-getAddress.js.map +1 -0
  399. package/lib-es/logic.d.ts +29 -0
  400. package/lib-es/logic.d.ts.map +1 -0
  401. package/lib-es/logic.js +87 -0
  402. package/lib-es/logic.js.map +1 -0
  403. package/lib-es/preload-data.d.ts +7 -0
  404. package/lib-es/preload-data.d.ts.map +1 -0
  405. package/lib-es/preload-data.js +39 -0
  406. package/lib-es/preload-data.js.map +1 -0
  407. package/lib-es/preload.d.ts +7 -0
  408. package/lib-es/preload.d.ts.map +1 -0
  409. package/lib-es/preload.js +62 -0
  410. package/lib-es/preload.js.map +1 -0
  411. package/lib-es/preload.test.d.ts +2 -0
  412. package/lib-es/preload.test.d.ts.map +1 -0
  413. package/lib-es/preload.test.js +7 -0
  414. package/lib-es/preload.test.js.map +1 -0
  415. package/lib-es/prepareTransaction.d.ts +5 -0
  416. package/lib-es/prepareTransaction.d.ts.map +1 -0
  417. package/lib-es/prepareTransaction.js +497 -0
  418. package/lib-es/prepareTransaction.js.map +1 -0
  419. package/lib-es/serialization.d.ts +9 -0
  420. package/lib-es/serialization.d.ts.map +1 -0
  421. package/lib-es/serialization.js +60 -0
  422. package/lib-es/serialization.js.map +1 -0
  423. package/lib-es/signOperation.d.ts +7 -0
  424. package/lib-es/signOperation.d.ts.map +1 -0
  425. package/lib-es/signOperation.js +146 -0
  426. package/lib-es/signOperation.js.map +1 -0
  427. package/lib-es/signer.d.ts +11 -0
  428. package/lib-es/signer.d.ts.map +1 -0
  429. package/lib-es/signer.js +2 -0
  430. package/lib-es/signer.js.map +1 -0
  431. package/lib-es/specs.d.ts +7 -0
  432. package/lib-es/specs.d.ts.map +1 -0
  433. package/lib-es/specs.js +404 -0
  434. package/lib-es/specs.js.map +1 -0
  435. package/lib-es/speculos-deviceActions.d.ts +8 -0
  436. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  437. package/lib-es/speculos-deviceActions.js +211 -0
  438. package/lib-es/speculos-deviceActions.js.map +1 -0
  439. package/lib-es/synchronization.d.ts +5 -0
  440. package/lib-es/synchronization.d.ts.map +1 -0
  441. package/lib-es/synchronization.js +456 -0
  442. package/lib-es/synchronization.js.map +1 -0
  443. package/lib-es/transaction.d.ts +15 -0
  444. package/lib-es/transaction.d.ts.map +1 -0
  445. package/lib-es/transaction.js +148 -0
  446. package/lib-es/transaction.js.map +1 -0
  447. package/lib-es/tx-fees.d.ts +4 -0
  448. package/lib-es/tx-fees.d.ts.map +1 -0
  449. package/lib-es/tx-fees.js +160 -0
  450. package/lib-es/tx-fees.js.map +1 -0
  451. package/lib-es/types.d.ts +225 -0
  452. package/lib-es/types.d.ts.map +1 -0
  453. package/lib-es/types.js +2 -0
  454. package/lib-es/types.js.map +1 -0
  455. package/lib-es/utils.d.ts +24 -0
  456. package/lib-es/utils.d.ts.map +1 -0
  457. package/lib-es/utils.js +157 -0
  458. package/lib-es/utils.js.map +1 -0
  459. package/lib-es/validator-app/index.d.ts +22 -0
  460. package/lib-es/validator-app/index.d.ts.map +1 -0
  461. package/lib-es/validator-app/index.js +55 -0
  462. package/lib-es/validator-app/index.js.map +1 -0
  463. package/package.json +90 -0
  464. package/src/api/cached.ts +79 -0
  465. package/src/api/chain/account/index.ts +1 -0
  466. package/src/api/chain/account/parser.ts +63 -0
  467. package/src/api/chain/account/stake.ts +45 -0
  468. package/src/api/chain/account/token.ts +63 -0
  469. package/src/api/chain/account/vote.ts +55 -0
  470. package/src/api/chain/index.ts +212 -0
  471. package/src/api/chain/instruction/associated-token-account/index.ts +33 -0
  472. package/src/api/chain/instruction/associated-token-account/types.ts +23 -0
  473. package/src/api/chain/instruction/memo/index.ts +24 -0
  474. package/src/api/chain/instruction/memo/types.ts +18 -0
  475. package/src/api/chain/instruction/stake/index.ts +29 -0
  476. package/src/api/chain/instruction/stake/types.ts +95 -0
  477. package/src/api/chain/instruction/system/index.ts +30 -0
  478. package/src/api/chain/instruction/system/types.ts +141 -0
  479. package/src/api/chain/instruction/token/index.ts +30 -0
  480. package/src/api/chain/instruction/token/types.ts +222 -0
  481. package/src/api/chain/program/constants.ts +10 -0
  482. package/src/api/chain/program/index.ts +1 -0
  483. package/src/api/chain/program/parser.ts +120 -0
  484. package/src/api/chain/validators/bignum.ts +7 -0
  485. package/src/api/chain/validators/index.ts +9 -0
  486. package/src/api/chain/validators/pubkey.ts +8 -0
  487. package/src/api/chain/web3.ts +399 -0
  488. package/src/api/index.ts +4 -0
  489. package/src/api/logged.ts +70 -0
  490. package/src/api/queued.ts +25 -0
  491. package/src/api/traced.ts +89 -0
  492. package/src/bridge/bridge.ts +192 -0
  493. package/src/bridge/js.ts +42 -0
  494. package/src/bridge.integration.test.ts +1104 -0
  495. package/src/broadcast.ts +38 -0
  496. package/src/buildTransaction.ts +81 -0
  497. package/src/cli-transaction.ts +246 -0
  498. package/src/createTransaction.ts +18 -0
  499. package/src/datasets/solana.scanAccounts.1.ts +9 -0
  500. package/src/deviceTransactionConfig.ts +302 -0
  501. package/src/errors.ts +61 -0
  502. package/src/estimateMaxSpendable.ts +72 -0
  503. package/src/getTransactionStatus.ts +79 -0
  504. package/src/hw-getAddress.ts +22 -0
  505. package/src/logic.ts +123 -0
  506. package/src/preload-data.ts +46 -0
  507. package/src/preload.test.ts +14 -0
  508. package/src/preload.ts +74 -0
  509. package/src/prepareTransaction.ts +686 -0
  510. package/src/serialization.ts +81 -0
  511. package/src/signOperation.ts +315 -0
  512. package/src/signer.ts +10 -0
  513. package/src/specs.ts +514 -0
  514. package/src/speculos-deviceActions.ts +229 -0
  515. package/src/synchronization.ts +729 -0
  516. package/src/transaction.ts +199 -0
  517. package/src/tx-fees.ts +206 -0
  518. package/src/types.ts +291 -0
  519. package/src/utils.ts +176 -0
  520. package/src/validator-app/index.ts +79 -0
  521. package/tsconfig.json +13 -0
@@ -0,0 +1,199 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import type {
3
+ Command,
4
+ StakeCreateAccountCommand,
5
+ StakeDelegateCommand,
6
+ StakeSplitCommand,
7
+ StakeUndelegateCommand,
8
+ StakeWithdrawCommand,
9
+ TokenCreateATACommand,
10
+ TokenTransferCommand,
11
+ Transaction,
12
+ TransactionRaw,
13
+ TransferCommand,
14
+ } from "./types";
15
+ import { formatTransactionStatus } from "@ledgerhq/coin-framework/formatters";
16
+ import {
17
+ fromTransactionCommonRaw,
18
+ fromTransactionStatusRawCommon as fromTransactionStatusRaw,
19
+ toTransactionCommonRaw,
20
+ toTransactionStatusRawCommon as toTransactionStatusRaw,
21
+ } from "@ledgerhq/coin-framework/serialization";
22
+ import type { Account } from "@ledgerhq/types-live";
23
+ import { getTokenById } from "@ledgerhq/cryptoassets/index";
24
+ import { findSubAccountById, getAccountCurrency } from "@ledgerhq/coin-framework/account";
25
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
26
+ import { assertUnreachable } from "./utils";
27
+ import { toTokenId } from "./logic";
28
+
29
+ export const fromTransactionRaw = (tr: TransactionRaw): Transaction => {
30
+ const common = fromTransactionCommonRaw(tr);
31
+ const { family, model } = tr;
32
+ return {
33
+ ...common,
34
+ family,
35
+ model: JSON.parse(model),
36
+ };
37
+ };
38
+
39
+ export const toTransactionRaw = (t: Transaction): TransactionRaw => {
40
+ const common = toTransactionCommonRaw(t);
41
+ const { family, model } = t;
42
+ return {
43
+ ...common,
44
+ family,
45
+ model: JSON.stringify(model),
46
+ };
47
+ };
48
+
49
+ const lamportsToSOL = (account: Account, amount: number) => {
50
+ return formatCurrencyUnit(getAccountCurrency(account).units[0], new BigNumber(amount), {
51
+ showCode: true,
52
+ disableRounding: true,
53
+ });
54
+ };
55
+
56
+ export const formatTransaction = (tx: Transaction, mainAccount: Account): string => {
57
+ if (tx.model.commandDescriptor === undefined) {
58
+ throw new Error("can not format unprepared transaction");
59
+ }
60
+ const { commandDescriptor } = tx.model;
61
+
62
+ if (Object.keys(commandDescriptor.errors).length > 0) {
63
+ throw new Error("can not format invalid transaction");
64
+ }
65
+ return formatCommand(mainAccount, tx, commandDescriptor.command);
66
+ };
67
+
68
+ function formatCommand(mainAccount: Account, tx: Transaction, command: Command) {
69
+ switch (command.kind) {
70
+ case "transfer":
71
+ return formatTransfer(mainAccount, tx, command);
72
+ case "token.transfer":
73
+ return formatTokenTransfer(mainAccount, tx, command);
74
+ case "token.createATA":
75
+ return formatCreateATA(command);
76
+ case "stake.createAccount":
77
+ return formatStakeCreateAccount(mainAccount, tx, command);
78
+ case "stake.delegate":
79
+ return formatStakeDelegate(command);
80
+ case "stake.undelegate":
81
+ return formatStakeUndelegate(command);
82
+ case "stake.withdraw":
83
+ return formatStakeWithdraw(mainAccount, tx, command);
84
+ case "stake.split":
85
+ return formatStakeSplit(mainAccount, tx, command);
86
+ default:
87
+ return assertUnreachable(command);
88
+ }
89
+ }
90
+
91
+ function formatStakeCreateAccount(
92
+ mainAccount: Account,
93
+ tx: Transaction,
94
+ command: StakeCreateAccountCommand,
95
+ ) {
96
+ const amount = lamportsToSOL(mainAccount, command.amount + command.stakeAccRentExemptAmount);
97
+ const str = [
98
+ ` CREATE STAKE ACCOUNT: ${command.stakeAccAddress}`,
99
+ ` FROM: ${command.fromAccAddress}`,
100
+ ` AMOUNT: ${amount}${tx.useAllAmount ? " (ALL)" : ""}`,
101
+ ` SEED: ${command.seed}`,
102
+ ` VALIDATOR: ${command.delegate.voteAccAddress}`,
103
+ ]
104
+ .filter(Boolean)
105
+ .join("\n");
106
+
107
+ return "\n" + str;
108
+ }
109
+
110
+ function formatTransfer(mainAccount: Account, tx: Transaction, command: TransferCommand) {
111
+ const amount = lamportsToSOL(mainAccount, command.amount);
112
+ const str = [
113
+ ` SEND: ${amount}${tx.useAllAmount ? " (ALL)" : ""}`,
114
+ ` TO: ${command.recipient}`,
115
+ command.memo ? ` MEMO: ${command.memo}` : "",
116
+ ]
117
+ .filter(Boolean)
118
+ .join("\n");
119
+
120
+ return "\n" + str;
121
+ }
122
+
123
+ function formatTokenTransfer(mainAccount: Account, tx: Transaction, command: TokenTransferCommand) {
124
+ if (!tx.subAccountId) {
125
+ throw new Error("expected subaccountId on transaction");
126
+ }
127
+ const subAccount = findSubAccountById(mainAccount, tx.subAccountId);
128
+ if (!subAccount || subAccount.type !== "TokenAccount") {
129
+ throw new Error("token subaccount expected");
130
+ }
131
+ const amount = formatCurrencyUnit(
132
+ getAccountCurrency(subAccount).units[0],
133
+ new BigNumber(command.amount),
134
+ {
135
+ showCode: true,
136
+ disableRounding: true,
137
+ },
138
+ );
139
+ const recipient = command.recipientDescriptor.walletAddress;
140
+ const str = [
141
+ ` SEND: ${amount}${tx.useAllAmount ? " (ALL)" : ""}`,
142
+ ` TO: ${recipient}`,
143
+ command.memo ? ` MEMO: ${command.memo}` : "",
144
+ ]
145
+ .filter(Boolean)
146
+ .join("\n");
147
+ return "\n" + str;
148
+ }
149
+
150
+ function formatCreateATA(command: TokenCreateATACommand) {
151
+ const token = getTokenById(toTokenId(command.mint));
152
+ const str = [` OPT IN TOKEN: ${token.ticker}`].filter(Boolean).join("\n");
153
+ return "\n" + str;
154
+ }
155
+
156
+ function formatStakeDelegate(command: StakeDelegateCommand) {
157
+ const str = [` DELEGATE: ${command.stakeAccAddr}`, ` TO: ${command.voteAccAddr}`]
158
+ .filter(Boolean)
159
+ .join("\n");
160
+ return "\n" + str;
161
+ }
162
+
163
+ function formatStakeUndelegate(command: StakeUndelegateCommand) {
164
+ const str = [` UNDELEGATE: ${command.stakeAccAddr}`].filter(Boolean).join("\n");
165
+ return "\n" + str;
166
+ }
167
+
168
+ function formatStakeWithdraw(mainAccount: Account, tx: Transaction, command: StakeWithdrawCommand) {
169
+ const amount = lamportsToSOL(mainAccount, command.amount);
170
+ const str = [
171
+ ` WITHDRAW FROM: ${command.stakeAccAddr}`,
172
+ ` AMOUNT: ${amount}${tx.useAllAmount ? " (ALL)" : ""}`,
173
+ ` TO: ${command.toAccAddr}`,
174
+ ]
175
+ .filter(Boolean)
176
+ .join("\n");
177
+ return "\n" + str;
178
+ }
179
+
180
+ function formatStakeSplit(mainAccount: Account, tx: Transaction, command: StakeSplitCommand) {
181
+ const amount = lamportsToSOL(mainAccount, command.amount);
182
+ const str = [
183
+ ` SPLIT: ${command.stakeAccAddr}`,
184
+ ` AMOUNT: ${amount}${tx.useAllAmount ? " (ALL)" : ""}`,
185
+ ` TO: ${command.splitStakeAccAddr}`,
186
+ ]
187
+ .filter(Boolean)
188
+ .join("\n");
189
+ return "\n" + str;
190
+ }
191
+
192
+ export default {
193
+ formatTransaction,
194
+ fromTransactionRaw,
195
+ toTransactionRaw,
196
+ fromTransactionStatusRaw,
197
+ toTransactionStatusRaw,
198
+ formatTransactionStatus,
199
+ };
package/src/tx-fees.ts ADDED
@@ -0,0 +1,206 @@
1
+ import { ChainAPI } from "./api";
2
+ import { buildTransactionWithAPI } from "./buildTransaction";
3
+ import createTransaction from "./createTransaction";
4
+ import { Transaction, TransactionModel } from "./types";
5
+ import { assertUnreachable } from "./utils";
6
+ import { VersionedTransaction as OnChainTransaction } from "@solana/web3.js";
7
+ import { log } from "@ledgerhq/logs";
8
+
9
+ const DEFAULT_TX_FEE = 5000;
10
+
11
+ export async function estimateTxFee(
12
+ api: ChainAPI,
13
+ address: string,
14
+ kind: TransactionModel["kind"],
15
+ ) {
16
+ const tx = createDummyTx(address, kind);
17
+ const [onChainTx] = await buildTransactionWithAPI(address, tx, api);
18
+
19
+ let fee = await api.getFeeForMessage(onChainTx.message);
20
+
21
+ if (typeof fee !== "number") {
22
+ // Sometimes getFeeForMessage doesn't return valid fees, because onChainTx.message.recentBlockhash
23
+ // is outdated --> retrying with a next blockhash
24
+ log("debug", `Solana api.getFeeForMessage returned invalid fee: <${fee}>`);
25
+ fee = await retryWithNewBlockhash(api, onChainTx);
26
+ }
27
+
28
+ if (typeof fee !== "number") {
29
+ log(
30
+ "error",
31
+ `Solana unexpected fee: <${fee}>, after retry with a new blockhash. Fallback to the default.`,
32
+ );
33
+ // If still failing, fallback to a default fees value
34
+ fee = DEFAULT_TX_FEE;
35
+ }
36
+ return fee;
37
+ }
38
+
39
+ const createDummyTx = (address: string, kind: TransactionModel["kind"]) => {
40
+ switch (kind) {
41
+ case "transfer":
42
+ return createDummyTransferTx(address);
43
+ case "stake.createAccount":
44
+ return createDummyStakeCreateAccountTx(address);
45
+ case "stake.delegate":
46
+ return createDummyStakeDelegateTx(address);
47
+ case "stake.undelegate":
48
+ return createDummyStakeUndelegateTx(address);
49
+ case "stake.withdraw":
50
+ return createDummyStakeWithdrawTx(address);
51
+ case "stake.split":
52
+ case "token.createATA":
53
+ case "token.transfer":
54
+ throw new Error(`not implemented for <${kind}>`);
55
+ default:
56
+ return assertUnreachable(kind);
57
+ }
58
+ };
59
+
60
+ const createDummyTransferTx = (address: string): Transaction => {
61
+ return {
62
+ ...createTransaction({} as any),
63
+ model: {
64
+ kind: "transfer",
65
+ uiState: {},
66
+ commandDescriptor: {
67
+ command: {
68
+ kind: "transfer",
69
+ amount: 0,
70
+ recipient: address,
71
+ sender: address,
72
+ },
73
+ ...commandDescriptorCommons,
74
+ },
75
+ },
76
+ };
77
+ };
78
+
79
+ const createDummyStakeCreateAccountTx = (address: string): Transaction => {
80
+ return {
81
+ ...createTransaction({} as any),
82
+ model: {
83
+ kind: "stake.createAccount",
84
+ uiState: {} as any,
85
+ commandDescriptor: {
86
+ command: {
87
+ kind: "stake.createAccount",
88
+ amount: 0,
89
+ delegate: {
90
+ voteAccAddress: randomAddresses[0],
91
+ },
92
+ fromAccAddress: address,
93
+ seed: "",
94
+ stakeAccAddress: randomAddresses[1],
95
+ stakeAccRentExemptAmount: 0,
96
+ },
97
+ ...commandDescriptorCommons,
98
+ },
99
+ },
100
+ };
101
+ };
102
+
103
+ const createDummyStakeDelegateTx = (address: string): Transaction => {
104
+ return {
105
+ ...createTransaction({} as any),
106
+ model: {
107
+ kind: "stake.delegate",
108
+ uiState: {} as any,
109
+ commandDescriptor: {
110
+ command: {
111
+ kind: "stake.delegate",
112
+ authorizedAccAddr: address,
113
+ stakeAccAddr: randomAddresses[0],
114
+ voteAccAddr: randomAddresses[1],
115
+ },
116
+ ...commandDescriptorCommons,
117
+ },
118
+ },
119
+ };
120
+ };
121
+
122
+ const createDummyStakeUndelegateTx = (address: string): Transaction => {
123
+ return {
124
+ ...createTransaction({} as any),
125
+ model: {
126
+ kind: "stake.undelegate",
127
+ uiState: {} as any,
128
+ commandDescriptor: {
129
+ command: {
130
+ kind: "stake.undelegate",
131
+ authorizedAccAddr: address,
132
+ stakeAccAddr: randomAddresses[0],
133
+ },
134
+ ...commandDescriptorCommons,
135
+ },
136
+ },
137
+ };
138
+ };
139
+
140
+ const createDummyStakeWithdrawTx = (address: string): Transaction => {
141
+ return {
142
+ ...createTransaction({} as any),
143
+ model: {
144
+ kind: "stake.withdraw",
145
+ uiState: {} as any,
146
+ commandDescriptor: {
147
+ command: {
148
+ kind: "stake.withdraw",
149
+ amount: 0,
150
+ authorizedAccAddr: address,
151
+ stakeAccAddr: randomAddresses[0],
152
+ toAccAddr: randomAddresses[1],
153
+ },
154
+ ...commandDescriptorCommons,
155
+ },
156
+ },
157
+ };
158
+ };
159
+
160
+ const commandDescriptorCommons = {
161
+ errors: {},
162
+ fee: 0,
163
+ warnings: {},
164
+ };
165
+
166
+ // pregenerate for better caching
167
+ const randomAddresses = [
168
+ "HxCvgjSbF8HMt3fj8P3j49jmajNCMwKAqBu79HUDPtkM",
169
+ "AjmMiagw33Ad4WdPR3y2QWsDXaLxmsiSZEpMfpT1Q9uZ",
170
+ "AVHhsobqNw3b3XD43fz7Crq3d3UxFYZfHAByh7ogZoeN",
171
+ "FvbvvXMY4Rf1AtGG7UHJUesjt8FFgPnPy6o83Dna9mXK",
172
+ "AEtRo9MKfLqGtjvxdz8H93R7SQxXLEkibVSJbs9XKnD1",
173
+ ];
174
+
175
+ async function retryWithNewBlockhash(api: ChainAPI, onChainTx: OnChainTransaction) {
176
+ if (onChainTx.message.recentBlockhash === undefined) {
177
+ throw new Error("expected recentBlockhash");
178
+ }
179
+
180
+ onChainTx.message.recentBlockhash = await waitNextBlockhash(
181
+ api,
182
+ onChainTx.message.recentBlockhash,
183
+ );
184
+
185
+ return api.getFeeForMessage(onChainTx.message);
186
+ }
187
+
188
+ function sleep(durationMS: number): Promise<void> {
189
+ return new Promise(res => setTimeout(res, durationMS));
190
+ }
191
+
192
+ async function waitNextBlockhash(api: ChainAPI, currentBlockhash: string) {
193
+ const sleepTimeMS = 5000;
194
+ for (let i = 0; i < 5; i++) {
195
+ log("info", `sleeping for ${sleepTimeMS} ms, waiting for a new blockhash`);
196
+ await sleep(sleepTimeMS);
197
+ const blockhash = await api.getLatestBlockhash();
198
+ if (blockhash !== currentBlockhash) {
199
+ log("info", "got a new blockhash");
200
+ return blockhash;
201
+ }
202
+ log("info", "got same blockhash");
203
+ }
204
+
205
+ throw new Error("next blockhash timeout");
206
+ }
package/src/types.ts ADDED
@@ -0,0 +1,291 @@
1
+ import BigNumber from "bignumber.js";
2
+ import {
3
+ Account,
4
+ AccountRaw,
5
+ Operation,
6
+ TransactionCommon,
7
+ TransactionCommonRaw,
8
+ TransactionStatusCommon,
9
+ TransactionStatusCommonRaw,
10
+ } from "@ledgerhq/types-live";
11
+ import { ValidatorsAppValidator } from "./validator-app";
12
+
13
+ export type TransferCommand = {
14
+ kind: "transfer";
15
+ sender: string;
16
+ recipient: string;
17
+ amount: number;
18
+ memo?: string | undefined;
19
+ };
20
+
21
+ export type TokenCreateATACommand = {
22
+ kind: "token.createATA";
23
+ owner: string;
24
+ mint: string;
25
+ associatedTokenAccountAddress: string;
26
+ };
27
+
28
+ export type StakeCreateAccountCommand = {
29
+ kind: "stake.createAccount";
30
+ fromAccAddress: string;
31
+ stakeAccAddress: string;
32
+ seed: string;
33
+ amount: number;
34
+ stakeAccRentExemptAmount: number;
35
+ delegate: {
36
+ voteAccAddress: string;
37
+ };
38
+ };
39
+
40
+ export type StakeDelegateCommand = {
41
+ kind: "stake.delegate";
42
+ authorizedAccAddr: string;
43
+ stakeAccAddr: string;
44
+ voteAccAddr: string;
45
+ };
46
+
47
+ export type StakeUndelegateCommand = {
48
+ kind: "stake.undelegate";
49
+ authorizedAccAddr: string;
50
+ stakeAccAddr: string;
51
+ };
52
+
53
+ export type StakeWithdrawCommand = {
54
+ kind: "stake.withdraw";
55
+ authorizedAccAddr: string;
56
+ stakeAccAddr: string;
57
+ toAccAddr: string;
58
+ amount: number;
59
+ };
60
+
61
+ export type StakeSplitCommand = {
62
+ kind: "stake.split";
63
+ authorizedAccAddr: string;
64
+ stakeAccAddr: string;
65
+ amount: number;
66
+ seed: string;
67
+ splitStakeAccAddr: string;
68
+ };
69
+
70
+ export type TokenRecipientDescriptor = {
71
+ walletAddress: string;
72
+ tokenAccAddress: string;
73
+ shouldCreateAsAssociatedTokenAccount: boolean;
74
+ };
75
+
76
+ export type TokenTransferCommand = {
77
+ kind: "token.transfer";
78
+ ownerAddress: string;
79
+ ownerAssociatedTokenAccountAddress: string;
80
+ recipientDescriptor: TokenRecipientDescriptor;
81
+ amount: number;
82
+ mintAddress: string;
83
+ mintDecimals: number;
84
+ memo?: string | undefined;
85
+ };
86
+
87
+ export type Command =
88
+ | TransferCommand
89
+ | TokenTransferCommand
90
+ | TokenCreateATACommand
91
+ | StakeCreateAccountCommand
92
+ | StakeDelegateCommand
93
+ | StakeUndelegateCommand
94
+ | StakeWithdrawCommand
95
+ | StakeSplitCommand;
96
+
97
+ export type CommandDescriptor = {
98
+ command: Command;
99
+ fee: number;
100
+ warnings: Record<string, Error>;
101
+ errors: Record<string, Error>;
102
+ };
103
+
104
+ export type TransferTransaction = {
105
+ kind: "transfer";
106
+ uiState: {
107
+ memo?: string | undefined;
108
+ };
109
+ };
110
+
111
+ export type TokenTransferTransaction = {
112
+ kind: "token.transfer";
113
+ uiState: {
114
+ subAccountId: string;
115
+ memo?: string | undefined;
116
+ };
117
+ };
118
+
119
+ export type TokenCreateATATransaction = {
120
+ kind: "token.createATA";
121
+ uiState: {
122
+ tokenId: string;
123
+ };
124
+ };
125
+
126
+ export type StakeCreateAccountTransaction = {
127
+ kind: "stake.createAccount";
128
+ uiState: {
129
+ delegate: {
130
+ voteAccAddress: string;
131
+ };
132
+ };
133
+ };
134
+
135
+ export type StakeDelegateTransaction = {
136
+ kind: "stake.delegate";
137
+ uiState: {
138
+ stakeAccAddr: string;
139
+ voteAccAddr: string;
140
+ };
141
+ };
142
+
143
+ export type StakeUndelegateTransaction = {
144
+ kind: "stake.undelegate";
145
+ uiState: {
146
+ stakeAccAddr: string;
147
+ };
148
+ };
149
+
150
+ export type StakeWithdrawTransaction = {
151
+ kind: "stake.withdraw";
152
+ uiState: {
153
+ stakeAccAddr: string;
154
+ };
155
+ };
156
+
157
+ export type StakeSplitTransaction = {
158
+ kind: "stake.split";
159
+ uiState: {
160
+ stakeAccAddr: string;
161
+ };
162
+ };
163
+
164
+ export type TransactionModel = { commandDescriptor?: CommandDescriptor } & (
165
+ | TransferTransaction
166
+ | TokenTransferTransaction
167
+ | TokenCreateATATransaction
168
+ | StakeCreateAccountTransaction
169
+ | StakeDelegateTransaction
170
+ | StakeUndelegateTransaction
171
+ | StakeWithdrawTransaction
172
+ | StakeSplitTransaction
173
+ );
174
+
175
+ export type Transaction = TransactionCommon & {
176
+ family: "solana";
177
+ model: TransactionModel;
178
+ };
179
+
180
+ export type TransactionRaw = TransactionCommonRaw & {
181
+ family: "solana";
182
+ model: string;
183
+ };
184
+
185
+ export type SolanaStake = {
186
+ stakeAccAddr: string;
187
+ hasStakeAuth: boolean;
188
+ hasWithdrawAuth: boolean;
189
+ delegation:
190
+ | {
191
+ stake: number;
192
+ voteAccAddr: string;
193
+ }
194
+ | undefined;
195
+ stakeAccBalance: number;
196
+ rentExemptReserve: number;
197
+ withdrawable: number;
198
+ activation: {
199
+ state: "active" | "inactive" | "activating" | "deactivating";
200
+ active: number;
201
+ inactive: number;
202
+ };
203
+ reward?:
204
+ | {
205
+ amount: number;
206
+ }
207
+ | undefined;
208
+ };
209
+
210
+ export type SolanaStakeWithMeta = {
211
+ stake: SolanaStake;
212
+ meta: {
213
+ validator?: {
214
+ name?: string;
215
+ img?: string;
216
+ url?: string;
217
+ };
218
+ };
219
+ };
220
+
221
+ export type SolanaResources = {
222
+ stakes: SolanaStake[];
223
+ unstakeReserve: BigNumber;
224
+ };
225
+
226
+ export type SolanaResourcesRaw = {
227
+ stakes: string;
228
+ unstakeReserve: string;
229
+ };
230
+
231
+ export type SolanaValidator = {
232
+ voteAccAddr: string;
233
+ commission: number;
234
+ activatedStake: number;
235
+ };
236
+
237
+ export type SolanaPreloadDataV1 = {
238
+ version: "1";
239
+ validatorsWithMeta: SolanaValidatorWithMeta[];
240
+ validators: ValidatorsAppValidator[];
241
+ };
242
+
243
+ // exists for discriminated union to work
244
+ export type SolanaPreloadDataV2 = {
245
+ version: "2";
246
+ };
247
+
248
+ export type SolanaPreloadData = SolanaPreloadDataV1 | SolanaPreloadDataV2;
249
+
250
+ export type SolanaValidatorWithMeta = {
251
+ validator: SolanaValidator;
252
+ meta: {
253
+ name?: string;
254
+ img?: string;
255
+ };
256
+ };
257
+
258
+ export type StakeAction = "deactivate" | "activate" | "withdraw" | "reactivate";
259
+
260
+ export type SolanaAccount = Account & { solanaResources: SolanaResources };
261
+
262
+ export type SolanaAccountRaw = AccountRaw & {
263
+ solanaResources: SolanaResourcesRaw;
264
+ };
265
+
266
+ export type TransactionStatus = TransactionStatusCommon;
267
+
268
+ export type TransactionStatusRaw = TransactionStatusCommonRaw;
269
+
270
+ export type SolanaOperation = Operation<SolanaOperationExtra>;
271
+ export type SolanaOperationRaw = Operation<SolanaOperationExtraRaw>;
272
+
273
+ export type ExtraStakeInfo = {
274
+ address: string;
275
+ amount: BigNumber;
276
+ };
277
+
278
+ export type ExtraStakeInfoRaw = {
279
+ address: string;
280
+ amount: string;
281
+ };
282
+
283
+ export type SolanaOperationExtra = {
284
+ memo?: string | undefined;
285
+ stake?: ExtraStakeInfo;
286
+ };
287
+
288
+ export type SolanaOperationExtraRaw = {
289
+ memo?: string | undefined;
290
+ stake?: ExtraStakeInfoRaw;
291
+ };