@ledgerhq/live-common 21.36.1 → 22.0.1

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 (935) hide show
  1. package/README.md +1 -3
  2. package/lib/__tests__/test-helpers/bridge.d.ts.map +1 -1
  3. package/lib/__tests__/test-helpers/bridge.js +11 -9
  4. package/lib/__tests__/test-helpers/bridge.js.map +1 -1
  5. package/lib/__tests__/test-helpers/libcore-setup.d.ts.map +1 -1
  6. package/lib/__tests__/test-helpers/libcore-setup.js +0 -6
  7. package/lib/__tests__/test-helpers/libcore-setup.js.map +1 -1
  8. package/lib/__tests__/test-helpers/libcore-setup.native.d.ts +0 -1
  9. package/lib/__tests__/test-helpers/libcore-setup.native.d.ts.map +1 -1
  10. package/lib/__tests__/test-helpers/libcore-setup.native.js +0 -1
  11. package/lib/__tests__/test-helpers/libcore-setup.native.js.map +1 -1
  12. package/lib/__tests__/test-helpers/setup.js +2 -1
  13. package/lib/__tests__/test-helpers/setup.js.map +1 -1
  14. package/lib/account/formatters.d.ts.map +1 -1
  15. package/lib/account/formatters.js +22 -7
  16. package/lib/account/formatters.js.map +1 -1
  17. package/lib/account/pending.d.ts +2 -1
  18. package/lib/account/pending.d.ts.map +1 -1
  19. package/lib/account/serialization.d.ts +6 -4
  20. package/lib/account/serialization.d.ts.map +1 -1
  21. package/lib/account/serialization.js +22 -7
  22. package/lib/account/serialization.js.map +1 -1
  23. package/lib/account/support.d.ts +0 -2
  24. package/lib/account/support.d.ts.map +1 -1
  25. package/lib/account/support.js +1 -22
  26. package/lib/account/support.js.map +1 -1
  27. package/lib/api/Ethereum.d.ts +6 -2
  28. package/lib/api/Ethereum.d.ts.map +1 -1
  29. package/lib/api/Ethereum.js +19 -3
  30. package/lib/api/Ethereum.js.map +1 -1
  31. package/lib/api/Ledger.d.ts.map +1 -1
  32. package/lib/api/Ledger.js +0 -9
  33. package/lib/api/Ledger.js.map +1 -1
  34. package/lib/api/explorerConfig/index.d.ts.map +1 -1
  35. package/lib/api/explorerConfig/index.js +7 -0
  36. package/lib/api/explorerConfig/index.js.map +1 -1
  37. package/lib/appSupportsQuitApp.d.ts +1 -0
  38. package/lib/appSupportsQuitApp.d.ts.map +1 -1
  39. package/lib/appSupportsQuitApp.js +1 -0
  40. package/lib/appSupportsQuitApp.js.map +1 -1
  41. package/lib/apps/support.d.ts.map +1 -1
  42. package/lib/apps/support.js +2 -1
  43. package/lib/apps/support.js.map +1 -1
  44. package/lib/bot/index.d.ts.map +1 -1
  45. package/lib/bot/index.js +16 -23
  46. package/lib/bot/index.js.map +1 -1
  47. package/lib/bridge/impl.d.ts.map +1 -1
  48. package/lib/bridge/impl.js +3 -13
  49. package/lib/bridge/impl.js.map +1 -1
  50. package/lib/bridge/jsHelpers.d.ts +2 -2
  51. package/lib/bridge/jsHelpers.d.ts.map +1 -1
  52. package/lib/bridge/jsHelpers.js +238 -245
  53. package/lib/bridge/jsHelpers.js.map +1 -1
  54. package/lib/cross.d.ts.map +1 -1
  55. package/lib/cross.js +6 -7
  56. package/lib/cross.js.map +1 -1
  57. package/lib/derivation.d.ts +0 -39
  58. package/lib/derivation.d.ts.map +1 -1
  59. package/lib/derivation.js +5 -86
  60. package/lib/derivation.js.map +1 -1
  61. package/lib/env.d.ts +15 -25
  62. package/lib/env.d.ts.map +1 -1
  63. package/lib/env.js +12 -23
  64. package/lib/env.js.map +1 -1
  65. package/lib/env.react.d.ts +1 -1
  66. package/lib/env.react.d.ts.map +1 -1
  67. package/lib/families/algorand/types.d.ts +0 -78
  68. package/lib/families/algorand/types.d.ts.map +1 -1
  69. package/lib/families/algorand/types.js +1 -154
  70. package/lib/families/algorand/types.js.map +1 -1
  71. package/lib/families/bitcoin/account.d.ts.map +1 -1
  72. package/lib/families/bitcoin/account.js +0 -1
  73. package/lib/families/bitcoin/account.js.map +1 -1
  74. package/lib/families/bitcoin/bridge.test.d.ts +2 -0
  75. package/lib/families/bitcoin/bridge.test.d.ts.map +1 -0
  76. package/lib/families/bitcoin/bridge.test.js +11 -0
  77. package/lib/families/bitcoin/bridge.test.js.map +1 -0
  78. package/lib/families/bitcoin/js-signOperation.d.ts.map +1 -1
  79. package/lib/families/bitcoin/js-signOperation.js +130 -139
  80. package/lib/families/bitcoin/js-signOperation.js.map +1 -1
  81. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  82. package/lib/families/bitcoin/js-synchronisation.js +1 -2
  83. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  84. package/lib/families/bitcoin/logic.d.ts +2 -5
  85. package/lib/families/bitcoin/logic.d.ts.map +1 -1
  86. package/lib/families/bitcoin/logic.js +4 -123
  87. package/lib/families/bitcoin/logic.js.map +1 -1
  88. package/lib/families/bitcoin/networks.js +1 -1
  89. package/lib/families/bitcoin/networks.js.map +1 -1
  90. package/lib/families/bitcoin/serialization.d.ts +2 -2
  91. package/lib/families/bitcoin/serialization.d.ts.map +1 -1
  92. package/lib/families/bitcoin/serialization.js +2 -4
  93. package/lib/families/bitcoin/serialization.js.map +1 -1
  94. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  95. package/lib/families/bitcoin/specs.js +2 -2
  96. package/lib/families/bitcoin/specs.js.map +1 -1
  97. package/lib/families/bitcoin/transaction.d.ts +1 -26
  98. package/lib/families/bitcoin/transaction.d.ts.map +1 -1
  99. package/lib/families/bitcoin/transaction.js +1 -239
  100. package/lib/families/bitcoin/transaction.js.map +1 -1
  101. package/lib/families/bitcoin/types.d.ts +0 -82
  102. package/lib/families/bitcoin/types.d.ts.map +1 -1
  103. package/lib/families/bitcoin/types.js +1 -118
  104. package/lib/families/bitcoin/types.js.map +1 -1
  105. package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts.map +1 -1
  106. package/lib/families/bitcoin/wallet-btc/explorer/index.js +10 -3
  107. package/lib/families/bitcoin/wallet-btc/explorer/index.js.map +1 -1
  108. package/lib/families/bitcoin/wallet-btc/storage/index.d.ts.map +1 -1
  109. package/lib/families/bitcoin/wallet-btc/storage/index.js +1 -2
  110. package/lib/families/bitcoin/wallet-btc/storage/index.js.map +1 -1
  111. package/lib/families/bitcoin/wallet-btc/utils.js +1 -1
  112. package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
  113. package/lib/families/celo/types.d.ts +0 -5
  114. package/lib/families/celo/types.d.ts.map +1 -1
  115. package/lib/families/celo/types.js +0 -3
  116. package/lib/families/celo/types.js.map +1 -1
  117. package/lib/families/cosmos/api/Cosmos.js +1 -1
  118. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  119. package/lib/families/cosmos/bridge.test.d.ts +2 -0
  120. package/lib/families/cosmos/bridge.test.d.ts.map +1 -0
  121. package/lib/families/cosmos/bridge.test.js +11 -0
  122. package/lib/families/cosmos/bridge.test.js.map +1 -0
  123. package/lib/families/cosmos/js-signOperation.d.ts.map +1 -1
  124. package/lib/families/cosmos/js-signOperation.js.map +1 -1
  125. package/lib/families/cosmos/js-synchronisation.d.ts.map +1 -1
  126. package/lib/families/cosmos/js-synchronisation.js +2 -1
  127. package/lib/families/cosmos/js-synchronisation.js.map +1 -1
  128. package/lib/families/cosmos/logic.d.ts +0 -9
  129. package/lib/families/cosmos/logic.d.ts.map +1 -1
  130. package/lib/families/cosmos/logic.js +5 -20
  131. package/lib/families/cosmos/logic.js.map +1 -1
  132. package/lib/families/cosmos/types.d.ts +0 -190
  133. package/lib/families/cosmos/types.d.ts.map +1 -1
  134. package/lib/families/cosmos/types.js +0 -370
  135. package/lib/families/cosmos/types.js.map +1 -1
  136. package/lib/families/crypto_org/js-buildTransaction.js +1 -1
  137. package/lib/families/crypto_org/js-buildTransaction.js.map +1 -1
  138. package/lib/families/crypto_org/js-signOperation.d.ts.map +1 -1
  139. package/lib/families/crypto_org/js-signOperation.js +54 -62
  140. package/lib/families/crypto_org/js-signOperation.js.map +1 -1
  141. package/lib/families/crypto_org/types.d.ts +0 -5
  142. package/lib/families/crypto_org/types.d.ts.map +1 -1
  143. package/lib/families/crypto_org/types.js +0 -3
  144. package/lib/families/crypto_org/types.js.map +1 -1
  145. package/lib/families/elrond/js-signOperation.d.ts.map +1 -1
  146. package/lib/families/elrond/js-signOperation.js +43 -50
  147. package/lib/families/elrond/js-signOperation.js.map +1 -1
  148. package/lib/families/elrond/types.d.ts +1 -6
  149. package/lib/families/elrond/types.d.ts.map +1 -1
  150. package/lib/families/elrond/types.js +0 -3
  151. package/lib/families/elrond/types.js.map +1 -1
  152. package/lib/families/ethereum/bridge/js.d.ts.map +1 -1
  153. package/lib/families/ethereum/bridge/js.js +6 -1
  154. package/lib/families/ethereum/bridge/js.js.map +1 -1
  155. package/lib/families/ethereum/bridge.test.d.ts +2 -0
  156. package/lib/families/ethereum/bridge.test.d.ts.map +1 -0
  157. package/lib/families/ethereum/bridge.test.js +11 -0
  158. package/lib/families/ethereum/bridge.test.js.map +1 -0
  159. package/lib/families/ethereum/modules/erc1155.js +9 -9
  160. package/lib/families/ethereum/modules/erc1155.js.map +1 -1
  161. package/lib/families/ethereum/modules/erc721.d.ts.map +1 -1
  162. package/lib/families/ethereum/modules/erc721.js +12 -16
  163. package/lib/families/ethereum/modules/erc721.js.map +1 -1
  164. package/lib/families/ethereum/nft.unit.test.d.ts +2 -0
  165. package/lib/families/ethereum/nft.unit.test.d.ts.map +1 -0
  166. package/lib/families/ethereum/{nft.merging.unit.test.js → nft.unit.test.js} +61 -6
  167. package/lib/families/ethereum/nft.unit.test.js.map +1 -0
  168. package/lib/families/ethereum/nftResolvers.d.ts +19 -0
  169. package/lib/families/ethereum/nftResolvers.d.ts.map +1 -0
  170. package/lib/families/ethereum/nftResolvers.js +121 -0
  171. package/lib/families/ethereum/nftResolvers.js.map +1 -0
  172. package/lib/families/ethereum/synchronisation.js +2 -2
  173. package/lib/families/ethereum/synchronisation.js.map +1 -1
  174. package/lib/families/ethereum/types.d.ts +0 -5
  175. package/lib/families/ethereum/types.d.ts.map +1 -1
  176. package/lib/families/ethereum/types.js +0 -3
  177. package/lib/families/ethereum/types.js.map +1 -1
  178. package/lib/families/filecoin/types.d.ts +0 -5
  179. package/lib/families/filecoin/types.d.ts.map +1 -1
  180. package/lib/families/filecoin/types.js +0 -3
  181. package/lib/families/filecoin/types.js.map +1 -1
  182. package/lib/families/neo/types.d.ts +0 -5
  183. package/lib/families/neo/types.d.ts.map +1 -1
  184. package/lib/families/neo/types.js +0 -3
  185. package/lib/families/neo/types.js.map +1 -1
  186. package/lib/families/polkadot/bridge.test.d.ts +2 -0
  187. package/lib/families/polkadot/bridge.test.d.ts.map +1 -0
  188. package/lib/families/polkadot/bridge.test.js +145 -0
  189. package/lib/families/polkadot/bridge.test.js.map +1 -0
  190. package/lib/families/polkadot/js-signOperation.d.ts.map +1 -1
  191. package/lib/families/polkadot/js-signOperation.js +54 -61
  192. package/lib/families/polkadot/js-signOperation.js.map +1 -1
  193. package/lib/families/polkadot/types.d.ts +0 -5
  194. package/lib/families/polkadot/types.d.ts.map +1 -1
  195. package/lib/families/polkadot/types.js +0 -3
  196. package/lib/families/polkadot/types.js.map +1 -1
  197. package/lib/families/ripple/bridge/js.d.ts.map +1 -1
  198. package/lib/families/ripple/bridge/js.js +299 -313
  199. package/lib/families/ripple/bridge/js.js.map +1 -1
  200. package/lib/families/ripple/bridge.test.d.ts +2 -0
  201. package/lib/families/ripple/bridge.test.d.ts.map +1 -0
  202. package/lib/{libcore/buildAccount/buildSubAccounts.js → families/ripple/bridge.test.js} +17 -20
  203. package/lib/families/ripple/bridge.test.js.map +1 -0
  204. package/lib/families/ripple/types.d.ts +0 -59
  205. package/lib/families/ripple/types.d.ts.map +1 -1
  206. package/lib/families/ripple/types.js +0 -87
  207. package/lib/families/ripple/types.js.map +1 -1
  208. package/lib/families/solana/api/cached.d.ts.map +1 -1
  209. package/lib/families/solana/api/cached.js +10 -0
  210. package/lib/families/solana/api/cached.js.map +1 -1
  211. package/lib/families/solana/api/chain/account/index.d.ts +1 -1
  212. package/lib/families/solana/api/chain/account/index.d.ts.map +1 -1
  213. package/lib/families/solana/api/chain/account/index.js +2 -1
  214. package/lib/families/solana/api/chain/account/index.js.map +1 -1
  215. package/lib/families/solana/api/chain/account/parser.d.ts +5 -0
  216. package/lib/families/solana/api/chain/account/parser.d.ts.map +1 -1
  217. package/lib/families/solana/api/chain/account/parser.js +24 -1
  218. package/lib/families/solana/api/chain/account/parser.js.map +1 -1
  219. package/lib/families/solana/api/chain/account/stake.d.ts +5 -5
  220. package/lib/families/solana/api/chain/account/token.d.ts +5 -5
  221. package/lib/families/solana/api/chain/account/vote.d.ts +252 -0
  222. package/lib/families/solana/api/chain/account/vote.d.ts.map +1 -0
  223. package/lib/families/solana/api/chain/account/vote.js +44 -0
  224. package/lib/families/solana/api/chain/account/vote.js.map +1 -0
  225. package/lib/families/solana/api/chain/index.d.ts +7 -0
  226. package/lib/families/solana/api/chain/index.d.ts.map +1 -1
  227. package/lib/families/solana/api/chain/index.js +35 -0
  228. package/lib/families/solana/api/chain/index.js.map +1 -1
  229. package/lib/families/solana/api/chain/instruction/stake/types.d.ts +7 -7
  230. package/lib/families/solana/api/chain/instruction/system/index.d.ts +15 -0
  231. package/lib/families/solana/api/chain/instruction/system/index.d.ts.map +1 -0
  232. package/lib/families/solana/api/chain/instruction/system/index.js +20 -0
  233. package/lib/families/solana/api/chain/instruction/system/index.js.map +1 -0
  234. package/lib/families/solana/api/chain/instruction/system/types.d.ts +298 -0
  235. package/lib/families/solana/api/chain/instruction/system/types.d.ts.map +1 -0
  236. package/lib/families/solana/api/chain/instruction/system/types.js +117 -0
  237. package/lib/families/solana/api/chain/instruction/system/types.js.map +1 -0
  238. package/lib/families/solana/api/chain/program/parser.d.ts +5 -0
  239. package/lib/families/solana/api/chain/program/parser.d.ts.map +1 -1
  240. package/lib/families/solana/api/chain/program/parser.js +7 -0
  241. package/lib/families/solana/api/chain/program/parser.js.map +1 -1
  242. package/lib/families/solana/api/chain/web3.d.ts +20 -1
  243. package/lib/families/solana/api/chain/web3.d.ts.map +1 -1
  244. package/lib/families/solana/api/chain/web3.js +122 -1
  245. package/lib/families/solana/api/chain/web3.js.map +1 -1
  246. package/lib/families/solana/api/logged.d.ts.map +1 -1
  247. package/lib/families/solana/api/logged.js +5 -0
  248. package/lib/families/solana/api/logged.js.map +1 -1
  249. package/lib/families/solana/bridge/bridge.d.ts.map +1 -1
  250. package/lib/families/solana/bridge/bridge.js +16 -7
  251. package/lib/families/solana/bridge/bridge.js.map +1 -1
  252. package/lib/families/solana/bridge/mock-data.d.ts +116 -11
  253. package/lib/families/solana/bridge/mock-data.d.ts.map +1 -1
  254. package/lib/families/solana/bridge/mock-data.js +19 -493
  255. package/lib/families/solana/bridge/mock-data.js.map +1 -1
  256. package/lib/families/solana/bridge/mock.d.ts.map +1 -1
  257. package/lib/families/solana/bridge/mock.js +1 -0
  258. package/lib/families/solana/bridge/mock.js.map +1 -1
  259. package/lib/families/solana/bridge.test.d.ts +2 -0
  260. package/lib/families/solana/bridge.test.d.ts.map +1 -0
  261. package/lib/families/solana/bridge.test.js +11 -0
  262. package/lib/families/solana/bridge.test.js.map +1 -0
  263. package/lib/families/solana/cli-transaction.d.ts +5 -1
  264. package/lib/families/solana/cli-transaction.d.ts.map +1 -1
  265. package/lib/families/solana/cli-transaction.js +72 -4
  266. package/lib/families/solana/cli-transaction.js.map +1 -1
  267. package/lib/families/solana/deviceTransactionConfig.d.ts +3 -3
  268. package/lib/families/solana/deviceTransactionConfig.d.ts.map +1 -1
  269. package/lib/families/solana/deviceTransactionConfig.js +128 -20
  270. package/lib/families/solana/deviceTransactionConfig.js.map +1 -1
  271. package/lib/families/solana/errors.d.ts +30 -0
  272. package/lib/families/solana/errors.d.ts.map +1 -1
  273. package/lib/families/solana/errors.js +11 -1
  274. package/lib/families/solana/errors.js.map +1 -1
  275. package/lib/families/solana/js-buildTransaction.d.ts.map +1 -1
  276. package/lib/families/solana/js-buildTransaction.js +13 -7
  277. package/lib/families/solana/js-buildTransaction.js.map +1 -1
  278. package/lib/families/solana/js-estimateMaxSpendable.d.ts.map +1 -1
  279. package/lib/families/solana/js-estimateMaxSpendable.js +26 -17
  280. package/lib/families/solana/js-estimateMaxSpendable.js.map +1 -1
  281. package/lib/families/solana/js-getTransactionStatus.d.ts +1 -1
  282. package/lib/families/solana/js-getTransactionStatus.d.ts.map +1 -1
  283. package/lib/families/solana/js-getTransactionStatus.js +36 -79
  284. package/lib/families/solana/js-getTransactionStatus.js.map +1 -1
  285. package/lib/families/solana/js-preload-data.d.ts +7 -0
  286. package/lib/families/solana/js-preload-data.d.ts.map +1 -0
  287. package/lib/families/solana/js-preload-data.js +45 -0
  288. package/lib/families/solana/js-preload-data.js.map +1 -0
  289. package/lib/families/solana/js-preload.d.ts +6 -0
  290. package/lib/families/solana/js-preload.d.ts.map +1 -0
  291. package/lib/{libcore/buildBigNumber.js → families/solana/js-preload.js} +60 -28
  292. package/lib/families/solana/js-preload.js.map +1 -0
  293. package/lib/families/solana/js-prepareTransaction.d.ts.map +1 -1
  294. package/lib/families/solana/js-prepareTransaction.js +453 -142
  295. package/lib/families/solana/js-prepareTransaction.js.map +1 -1
  296. package/lib/families/solana/js-signOperation.d.ts.map +1 -1
  297. package/lib/families/solana/js-signOperation.js +90 -68
  298. package/lib/families/solana/js-signOperation.js.map +1 -1
  299. package/lib/families/solana/js-synchronization.d.ts.map +1 -1
  300. package/lib/families/solana/js-synchronization.js +159 -57
  301. package/lib/families/solana/js-synchronization.js.map +1 -1
  302. package/lib/families/solana/logic.d.ts +16 -0
  303. package/lib/families/solana/logic.d.ts.map +1 -1
  304. package/lib/families/solana/logic.js +59 -1
  305. package/lib/families/solana/logic.js.map +1 -1
  306. package/lib/families/solana/react.d.ts +7 -0
  307. package/lib/families/solana/react.d.ts.map +1 -0
  308. package/lib/families/solana/react.js +56 -0
  309. package/lib/families/solana/react.js.map +1 -0
  310. package/lib/families/solana/serialization.d.ts +4 -0
  311. package/lib/families/solana/serialization.d.ts.map +1 -0
  312. package/lib/families/solana/serialization.js +16 -0
  313. package/lib/families/solana/serialization.js.map +1 -0
  314. package/lib/families/solana/specs.d.ts.map +1 -1
  315. package/lib/families/solana/specs.js +320 -0
  316. package/lib/families/solana/specs.js.map +1 -1
  317. package/lib/families/solana/speculos-deviceActions.d.ts +5 -0
  318. package/lib/families/solana/speculos-deviceActions.d.ts.map +1 -1
  319. package/lib/families/solana/speculos-deviceActions.js +189 -14
  320. package/lib/families/solana/speculos-deviceActions.js.map +1 -1
  321. package/lib/families/solana/test-dataset.d.ts +18 -0
  322. package/lib/families/solana/test-dataset.d.ts.map +1 -1
  323. package/lib/families/solana/test-dataset.js +694 -202
  324. package/lib/families/solana/test-dataset.js.map +1 -1
  325. package/lib/families/solana/test-specifics.d.ts +9 -0
  326. package/lib/families/solana/test-specifics.d.ts.map +1 -0
  327. package/lib/families/solana/test-specifics.js +238 -0
  328. package/lib/families/solana/test-specifics.js.map +1 -0
  329. package/lib/families/solana/transaction.d.ts.map +1 -1
  330. package/lib/families/solana/transaction.js +69 -13
  331. package/lib/families/solana/transaction.js.map +1 -1
  332. package/lib/families/solana/types.d.ts +129 -21
  333. package/lib/families/solana/types.d.ts.map +1 -1
  334. package/lib/families/solana/types.js +0 -3
  335. package/lib/families/solana/types.js.map +1 -1
  336. package/lib/families/solana/utils.d.ts +6 -0
  337. package/lib/families/solana/utils.d.ts.map +1 -1
  338. package/lib/families/solana/utils.js +76 -4
  339. package/lib/families/solana/utils.js.map +1 -1
  340. package/lib/families/solana/validator-app/index.d.ts +22 -0
  341. package/lib/families/solana/validator-app/index.d.ts.map +1 -0
  342. package/lib/families/{algorand/libcore-getFeesForTransaction.js → solana/validator-app/index.js} +45 -28
  343. package/lib/families/solana/validator-app/index.js.map +1 -0
  344. package/lib/families/stellar/api/horizon.d.ts +2 -1
  345. package/lib/families/stellar/api/horizon.d.ts.map +1 -1
  346. package/lib/families/stellar/api/horizon.js.map +1 -1
  347. package/lib/families/stellar/bridge.test.d.ts +2 -0
  348. package/lib/families/stellar/bridge.test.d.ts.map +1 -0
  349. package/lib/families/stellar/bridge.test.js +11 -0
  350. package/lib/families/stellar/bridge.test.js.map +1 -0
  351. package/lib/families/stellar/js-signOperation.d.ts.map +1 -1
  352. package/lib/families/stellar/js-signOperation.js +44 -51
  353. package/lib/families/stellar/js-signOperation.js.map +1 -1
  354. package/lib/families/stellar/test-dataset.d.ts.map +1 -1
  355. package/lib/families/stellar/test-dataset.js +2 -4
  356. package/lib/families/stellar/test-dataset.js.map +1 -1
  357. package/lib/families/stellar/types.d.ts +0 -5
  358. package/lib/families/stellar/types.d.ts.map +1 -1
  359. package/lib/families/stellar/types.js +1 -3
  360. package/lib/families/stellar/types.js.map +1 -1
  361. package/lib/families/tezos/bridge/js.d.ts.map +1 -1
  362. package/lib/families/tezos/bridge/js.js +16 -3
  363. package/lib/families/tezos/bridge/js.js.map +1 -1
  364. package/lib/families/tezos/bridge.test.d.ts +2 -0
  365. package/lib/families/tezos/bridge.test.d.ts.map +1 -0
  366. package/lib/families/tezos/{test-specifics.js → bridge.test.js} +36 -33
  367. package/lib/families/tezos/bridge.test.js.map +1 -0
  368. package/lib/families/tezos/types.d.ts +0 -86
  369. package/lib/families/tezos/types.d.ts.map +1 -1
  370. package/lib/families/tezos/types.js +0 -138
  371. package/lib/families/tezos/types.js.map +1 -1
  372. package/lib/families/tron/bridge/js.d.ts.map +1 -1
  373. package/lib/families/tron/bridge/js.js +159 -167
  374. package/lib/families/tron/bridge/js.js.map +1 -1
  375. package/lib/families/tron/types.d.ts +0 -6
  376. package/lib/families/tron/types.d.ts.map +1 -1
  377. package/lib/families/tron/types.js +0 -4
  378. package/lib/families/tron/types.js.map +1 -1
  379. package/lib/generated/cli-transaction.d.ts +5 -1
  380. package/lib/generated/cli-transaction.d.ts.map +1 -1
  381. package/lib/generated/customAddressValidation.d.ts +1 -10
  382. package/lib/generated/customAddressValidation.d.ts.map +1 -1
  383. package/lib/generated/customAddressValidation.js +1 -9
  384. package/lib/generated/customAddressValidation.js.map +1 -1
  385. package/lib/generated/speculos-deviceActions.d.ts +1 -0
  386. package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
  387. package/lib/generated/types.d.ts +0 -92
  388. package/lib/generated/types.d.ts.map +1 -1
  389. package/lib/generated/types.js +0 -34
  390. package/lib/generated/types.js.map +1 -1
  391. package/lib/mock/account.d.ts.map +1 -1
  392. package/lib/mock/account.js +7 -1
  393. package/lib/mock/account.js.map +1 -1
  394. package/lib/nft/NftMetadataProvider/index.d.ts +9 -8
  395. package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -1
  396. package/lib/nft/NftMetadataProvider/index.js +135 -69
  397. package/lib/nft/NftMetadataProvider/index.js.map +1 -1
  398. package/lib/nft/NftMetadataProvider/types.d.ts +13 -7
  399. package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -1
  400. package/lib/nft/helpers.d.ts +24 -8
  401. package/lib/nft/helpers.d.ts.map +1 -1
  402. package/lib/nft/helpers.js +125 -40
  403. package/lib/nft/helpers.js.map +1 -1
  404. package/lib/nft/nftId.d.ts +7 -2
  405. package/lib/nft/nftId.d.ts.map +1 -1
  406. package/lib/nft/nftId.js +5 -4
  407. package/lib/nft/nftId.js.map +1 -1
  408. package/lib/nft/support.d.ts +2 -1
  409. package/lib/nft/support.d.ts.map +1 -1
  410. package/lib/nft/support.js +39 -1
  411. package/lib/nft/support.js.map +1 -1
  412. package/lib/reconciliation.d.ts.map +1 -1
  413. package/lib/reconciliation.js +8 -5
  414. package/lib/reconciliation.js.map +1 -1
  415. package/lib/types/account.d.ts +7 -3
  416. package/lib/types/account.d.ts.map +1 -1
  417. package/lib/types/bridge.d.ts +16 -1
  418. package/lib/types/bridge.d.ts.map +1 -1
  419. package/lib/types/nft.d.ts +28 -6
  420. package/lib/types/nft.d.ts.map +1 -1
  421. package/package.json +4 -4
  422. package/src/__tests__/test-helpers/bridge.ts +11 -7
  423. package/src/__tests__/test-helpers/libcore-setup.native.ts +0 -1
  424. package/src/__tests__/test-helpers/libcore-setup.ts +1 -7
  425. package/src/__tests__/test-helpers/setup.ts +2 -1
  426. package/src/account/formatters.ts +6 -8
  427. package/src/account/serialization.ts +46 -6
  428. package/src/account/support.ts +2 -19
  429. package/src/api/Ethereum.ts +36 -6
  430. package/src/api/Ledger.ts +1 -12
  431. package/src/api/explorerConfig/index.ts +8 -0
  432. package/src/appSupportsQuitApp.ts +1 -0
  433. package/src/apps/support.ts +1 -0
  434. package/src/bot/index.ts +1 -6
  435. package/src/bridge/impl.ts +5 -17
  436. package/src/bridge/jsHelpers.ts +219 -216
  437. package/src/cross.ts +2 -4
  438. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +6290 -0
  439. package/src/derivation.ts +1 -85
  440. package/src/env.ts +12 -23
  441. package/src/families/algorand/types.ts +2 -255
  442. package/src/{__tests__/__snapshots__/all.libcore.ts.snap → families/bitcoin/__snapshots__/bridge.test.ts.snap} +7085 -14082
  443. package/src/families/bitcoin/account.ts +0 -1
  444. package/src/families/bitcoin/bridge.test.ts +6 -0
  445. package/src/families/bitcoin/js-signOperation.ts +14 -22
  446. package/src/families/bitcoin/js-synchronisation.ts +0 -1
  447. package/src/families/bitcoin/logic.ts +2 -77
  448. package/src/families/bitcoin/networks.ts +1 -1
  449. package/src/families/bitcoin/serialization.ts +0 -4
  450. package/src/families/bitcoin/specs.ts +5 -3
  451. package/src/families/bitcoin/transaction.ts +0 -191
  452. package/src/families/bitcoin/types.ts +0 -225
  453. package/src/families/bitcoin/wallet-btc/explorer/index.ts +21 -21
  454. package/src/families/bitcoin/wallet-btc/storage/index.ts +1 -4
  455. package/src/families/bitcoin/wallet-btc/utils.ts +1 -1
  456. package/src/families/celo/types.ts +0 -6
  457. package/src/families/cosmos/__snapshots__/bridge.test.ts.snap +1156 -0
  458. package/src/families/cosmos/api/Cosmos.ts +1 -1
  459. package/src/families/cosmos/bridge.test.ts +6 -0
  460. package/src/families/cosmos/js-signOperation.ts +8 -0
  461. package/src/families/cosmos/js-synchronisation.ts +3 -1
  462. package/src/families/cosmos/logic.ts +4 -37
  463. package/src/families/cosmos/types.ts +1 -619
  464. package/src/families/crypto_org/js-buildTransaction.ts +1 -1
  465. package/src/families/crypto_org/js-signOperation.ts +14 -19
  466. package/src/families/crypto_org/types.ts +1 -5
  467. package/src/families/elrond/js-signOperation.ts +10 -14
  468. package/src/families/elrond/types.ts +2 -6
  469. package/src/families/ethereum/__snapshots__/bridge.test.ts.snap +3263 -0
  470. package/src/families/ethereum/bridge/js.ts +5 -0
  471. package/src/families/ethereum/bridge.test.ts +6 -0
  472. package/src/families/ethereum/modules/erc1155.ts +9 -9
  473. package/src/families/ethereum/modules/erc721.ts +11 -11
  474. package/src/families/ethereum/nft.unit.test.ts +147 -0
  475. package/src/families/ethereum/nftResolvers.ts +79 -0
  476. package/src/families/ethereum/synchronisation.ts +7 -2
  477. package/src/families/ethereum/types.ts +1 -6
  478. package/src/families/filecoin/types.ts +0 -6
  479. package/src/families/neo/types.ts +1 -5
  480. package/src/families/polkadot/bridge.test.ts +81 -0
  481. package/src/families/polkadot/js-signOperation.ts +61 -61
  482. package/src/families/polkadot/types.ts +1 -5
  483. package/src/families/ripple/bridge/js.ts +257 -260
  484. package/src/families/ripple/bridge.test.ts +12 -0
  485. package/src/families/ripple/types.ts +0 -143
  486. package/src/families/solana/__snapshots__/bridge.test.ts.snap +116 -0
  487. package/src/families/solana/api/cached.ts +40 -0
  488. package/src/families/solana/api/chain/account/index.ts +5 -1
  489. package/src/families/solana/api/chain/account/parser.ts +28 -0
  490. package/src/families/solana/api/chain/account/vote.ts +63 -0
  491. package/src/families/solana/api/chain/index.ts +63 -0
  492. package/src/families/solana/api/chain/instruction/system/index.ts +30 -0
  493. package/src/families/solana/api/chain/instruction/system/types.ts +141 -0
  494. package/src/families/solana/api/chain/program/parser.ts +18 -0
  495. package/src/families/solana/api/chain/web3.ts +173 -1
  496. package/src/families/solana/api/logged.ts +5 -0
  497. package/src/families/solana/bridge/bridge.ts +27 -4
  498. package/src/families/solana/bridge/mock-data.ts +19 -588
  499. package/src/families/solana/bridge/mock.ts +1 -0
  500. package/src/families/solana/bridge.test.ts +6 -0
  501. package/src/families/solana/cli-transaction.ts +87 -3
  502. package/src/families/solana/deviceTransactionConfig.ts +180 -24
  503. package/src/families/solana/errors.ts +40 -0
  504. package/src/families/solana/js-buildTransaction.ts +19 -8
  505. package/src/families/solana/js-estimateMaxSpendable.ts +20 -7
  506. package/src/families/solana/js-getTransactionStatus.ts +34 -93
  507. package/src/families/solana/js-preload-data.ts +53 -0
  508. package/src/families/solana/js-preload.ts +66 -0
  509. package/src/families/solana/js-prepareTransaction.ts +471 -148
  510. package/src/families/solana/js-signOperation.ts +177 -74
  511. package/src/families/solana/js-synchronization.ts +195 -54
  512. package/src/families/solana/logic.ts +80 -0
  513. package/src/families/solana/react.ts +81 -0
  514. package/src/families/solana/serialization.ts +17 -0
  515. package/src/families/solana/specs.ts +411 -1
  516. package/src/families/solana/speculos-deviceActions.ts +192 -15
  517. package/src/families/solana/test-dataset.ts +707 -327
  518. package/src/families/solana/test-specifics.ts +171 -0
  519. package/src/families/solana/transaction.ts +93 -16
  520. package/src/families/solana/types.ts +158 -27
  521. package/src/families/solana/utils.ts +52 -1
  522. package/src/families/solana/validator-app/index.ts +106 -0
  523. package/src/families/stellar/__snapshots__/bridge.test.ts.snap +2570 -0
  524. package/src/families/stellar/api/horizon.ts +2 -1
  525. package/src/families/stellar/bridge.test.ts +6 -0
  526. package/src/families/stellar/js-signOperation.ts +10 -14
  527. package/src/families/stellar/test-dataset.ts +2 -4
  528. package/src/families/stellar/types.ts +0 -5
  529. package/src/families/tezos/bridge/js.ts +16 -1
  530. package/src/families/tezos/bridge.test.ts +24 -0
  531. package/src/families/tezos/types.ts +0 -224
  532. package/src/families/tron/bridge/js.ts +57 -58
  533. package/src/families/tron/types.ts +1 -6
  534. package/src/generated/customAddressValidation.ts +0 -6
  535. package/src/generated/types.ts +0 -202
  536. package/src/mock/account.ts +7 -1
  537. package/src/nft/NftMetadataProvider/index.tsx +163 -75
  538. package/src/nft/NftMetadataProvider/types.ts +31 -8
  539. package/src/nft/helpers.ts +169 -35
  540. package/src/nft/nftId.ts +13 -4
  541. package/src/nft/support.ts +14 -1
  542. package/src/reconciliation.ts +10 -5
  543. package/src/types/account.ts +7 -3
  544. package/src/types/bridge.ts +20 -0
  545. package/src/types/nft.ts +32 -9
  546. package/lib/__tests__/all.libcore.d.ts +0 -2
  547. package/lib/__tests__/all.libcore.d.ts.map +0 -1
  548. package/lib/__tests__/all.libcore.js +0 -203
  549. package/lib/__tests__/all.libcore.js.map +0 -1
  550. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.d.ts +0 -2
  551. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.d.ts.map +0 -1
  552. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.js +0 -12
  553. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.js.map +0 -1
  554. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.d.ts +0 -2
  555. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.d.ts.map +0 -1
  556. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.js +0 -10
  557. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.js.map +0 -1
  558. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.d.ts +0 -2
  559. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.d.ts.map +0 -1
  560. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.js +0 -10
  561. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.js.map +0 -1
  562. package/lib/bridge/shared.d.ts +0 -6
  563. package/lib/bridge/shared.d.ts.map +0 -1
  564. package/lib/bridge/shared.js +0 -78
  565. package/lib/bridge/shared.js.map +0 -1
  566. package/lib/families/algorand/bridge/libcore.d.ts +0 -17
  567. package/lib/families/algorand/bridge/libcore.d.ts.map +0 -1
  568. package/lib/families/algorand/bridge/libcore.js +0 -404
  569. package/lib/families/algorand/bridge/libcore.js.map +0 -1
  570. package/lib/families/algorand/buildASAOperation.d.ts +0 -8
  571. package/lib/families/algorand/buildASAOperation.d.ts.map +0 -1
  572. package/lib/families/algorand/buildASAOperation.js +0 -140
  573. package/lib/families/algorand/buildASAOperation.js.map +0 -1
  574. package/lib/families/algorand/libcore-broadcast.d.ts +0 -3
  575. package/lib/families/algorand/libcore-broadcast.d.ts.map +0 -1
  576. package/lib/families/algorand/libcore-broadcast.js +0 -63
  577. package/lib/families/algorand/libcore-broadcast.js.map +0 -1
  578. package/lib/families/algorand/libcore-buildOperation.d.ts +0 -7
  579. package/lib/families/algorand/libcore-buildOperation.d.ts.map +0 -1
  580. package/lib/families/algorand/libcore-buildOperation.js +0 -131
  581. package/lib/families/algorand/libcore-buildOperation.js.map +0 -1
  582. package/lib/families/algorand/libcore-buildSubAccounts.d.ts +0 -11
  583. package/lib/families/algorand/libcore-buildSubAccounts.d.ts.map +0 -1
  584. package/lib/families/algorand/libcore-buildSubAccounts.js +0 -221
  585. package/lib/families/algorand/libcore-buildSubAccounts.js.map +0 -1
  586. package/lib/families/algorand/libcore-buildTransaction.d.ts +0 -13
  587. package/lib/families/algorand/libcore-buildTransaction.d.ts.map +0 -1
  588. package/lib/families/algorand/libcore-buildTransaction.js +0 -144
  589. package/lib/families/algorand/libcore-buildTransaction.js.map +0 -1
  590. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts +0 -17
  591. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts.map +0 -1
  592. package/lib/families/algorand/libcore-getFeesForTransaction.js.map +0 -1
  593. package/lib/families/algorand/libcore-postBuildAccount.d.ts +0 -8
  594. package/lib/families/algorand/libcore-postBuildAccount.d.ts.map +0 -1
  595. package/lib/families/algorand/libcore-postBuildAccount.js +0 -99
  596. package/lib/families/algorand/libcore-postBuildAccount.js.map +0 -1
  597. package/lib/families/algorand/libcore-signOperation.d.ts +0 -4
  598. package/lib/families/algorand/libcore-signOperation.d.ts.map +0 -1
  599. package/lib/families/algorand/libcore-signOperation.js +0 -146
  600. package/lib/families/algorand/libcore-signOperation.js.map +0 -1
  601. package/lib/families/bitcoin/bridge/libcore.d.ts +0 -8
  602. package/lib/families/bitcoin/bridge/libcore.d.ts.map +0 -1
  603. package/lib/families/bitcoin/bridge/libcore.js +0 -333
  604. package/lib/families/bitcoin/bridge/libcore.js.map +0 -1
  605. package/lib/families/bitcoin/customAddressValidation.d.ts +0 -8
  606. package/lib/families/bitcoin/customAddressValidation.d.ts.map +0 -1
  607. package/lib/families/bitcoin/customAddressValidation.js +0 -67
  608. package/lib/families/bitcoin/customAddressValidation.js.map +0 -1
  609. package/lib/families/bitcoin/libcore-broadcast.d.ts +0 -3
  610. package/lib/families/bitcoin/libcore-broadcast.d.ts.map +0 -1
  611. package/lib/families/bitcoin/libcore-broadcast.js +0 -61
  612. package/lib/families/bitcoin/libcore-broadcast.js.map +0 -1
  613. package/lib/families/bitcoin/libcore-buildOperation.d.ts +0 -9
  614. package/lib/families/bitcoin/libcore-buildOperation.d.ts.map +0 -1
  615. package/lib/families/bitcoin/libcore-buildOperation.js +0 -74
  616. package/lib/families/bitcoin/libcore-buildOperation.js.map +0 -1
  617. package/lib/families/bitcoin/libcore-buildTransaction.d.ts +0 -14
  618. package/lib/families/bitcoin/libcore-buildTransaction.d.ts.map +0 -1
  619. package/lib/families/bitcoin/libcore-buildTransaction.js +0 -199
  620. package/lib/families/bitcoin/libcore-buildTransaction.js.map +0 -1
  621. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.d.ts +0 -12
  622. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  623. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.js +0 -87
  624. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.js.map +0 -1
  625. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.d.ts +0 -2
  626. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.d.ts.map +0 -1
  627. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.js +0 -71
  628. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.js.map +0 -1
  629. package/lib/families/bitcoin/libcore-getFeesForTransaction.d.ts +0 -10
  630. package/lib/families/bitcoin/libcore-getFeesForTransaction.d.ts.map +0 -1
  631. package/lib/families/bitcoin/libcore-getFeesForTransaction.js +0 -110
  632. package/lib/families/bitcoin/libcore-getFeesForTransaction.js.map +0 -1
  633. package/lib/families/bitcoin/libcore-postBuildAccount.d.ts +0 -8
  634. package/lib/families/bitcoin/libcore-postBuildAccount.d.ts.map +0 -1
  635. package/lib/families/bitcoin/libcore-postBuildAccount.js +0 -108
  636. package/lib/families/bitcoin/libcore-postBuildAccount.js.map +0 -1
  637. package/lib/families/bitcoin/libcore-signOperation.d.ts +0 -4
  638. package/lib/families/bitcoin/libcore-signOperation.d.ts.map +0 -1
  639. package/lib/families/bitcoin/libcore-signOperation.js +0 -328
  640. package/lib/families/bitcoin/libcore-signOperation.js.map +0 -1
  641. package/lib/families/cosmos/bridge/libcore.d.ts +0 -8
  642. package/lib/families/cosmos/bridge/libcore.d.ts.map +0 -1
  643. package/lib/families/cosmos/bridge/libcore.js +0 -216
  644. package/lib/families/cosmos/bridge/libcore.js.map +0 -1
  645. package/lib/families/cosmos/libcore-broadcast.d.ts +0 -3
  646. package/lib/families/cosmos/libcore-broadcast.d.ts.map +0 -1
  647. package/lib/families/cosmos/libcore-broadcast.js +0 -66
  648. package/lib/families/cosmos/libcore-broadcast.js.map +0 -1
  649. package/lib/families/cosmos/libcore-buildOperation.d.ts +0 -8
  650. package/lib/families/cosmos/libcore-buildOperation.d.ts.map +0 -1
  651. package/lib/families/cosmos/libcore-buildOperation.js +0 -217
  652. package/lib/families/cosmos/libcore-buildOperation.js.map +0 -1
  653. package/lib/families/cosmos/libcore-buildTransaction.d.ts +0 -14
  654. package/lib/families/cosmos/libcore-buildTransaction.d.ts.map +0 -1
  655. package/lib/families/cosmos/libcore-buildTransaction.js +0 -275
  656. package/lib/families/cosmos/libcore-buildTransaction.js.map +0 -1
  657. package/lib/families/cosmos/libcore-getFeesForTransaction.d.ts +0 -18
  658. package/lib/families/cosmos/libcore-getFeesForTransaction.d.ts.map +0 -1
  659. package/lib/families/cosmos/libcore-getFeesForTransaction.js +0 -84
  660. package/lib/families/cosmos/libcore-getFeesForTransaction.js.map +0 -1
  661. package/lib/families/cosmos/libcore-getTransactionStatus.d.ts +0 -5
  662. package/lib/families/cosmos/libcore-getTransactionStatus.d.ts.map +0 -1
  663. package/lib/families/cosmos/libcore-getTransactionStatus.js +0 -272
  664. package/lib/families/cosmos/libcore-getTransactionStatus.js.map +0 -1
  665. package/lib/families/cosmos/libcore-mergeOperations.d.ts +0 -4
  666. package/lib/families/cosmos/libcore-mergeOperations.d.ts.map +0 -1
  667. package/lib/families/cosmos/libcore-mergeOperations.js +0 -49
  668. package/lib/families/cosmos/libcore-mergeOperations.js.map +0 -1
  669. package/lib/families/cosmos/libcore-postBuildAccount.d.ts +0 -8
  670. package/lib/families/cosmos/libcore-postBuildAccount.d.ts.map +0 -1
  671. package/lib/families/cosmos/libcore-postBuildAccount.js +0 -313
  672. package/lib/families/cosmos/libcore-postBuildAccount.js.map +0 -1
  673. package/lib/families/cosmos/libcore-signOperation.d.ts +0 -4
  674. package/lib/families/cosmos/libcore-signOperation.d.ts.map +0 -1
  675. package/lib/families/cosmos/libcore-signOperation.js +0 -142
  676. package/lib/families/cosmos/libcore-signOperation.js.map +0 -1
  677. package/lib/families/cosmos/message.d.ts +0 -5
  678. package/lib/families/cosmos/message.d.ts.map +0 -1
  679. package/lib/families/cosmos/message.js +0 -233
  680. package/lib/families/cosmos/message.js.map +0 -1
  681. package/lib/families/cosmos/test-specifics.d.ts +0 -3
  682. package/lib/families/cosmos/test-specifics.d.ts.map +0 -1
  683. package/lib/families/cosmos/test-specifics.js +0 -307
  684. package/lib/families/cosmos/test-specifics.js.map +0 -1
  685. package/lib/families/ethereum/nft.merging.unit.test.d.ts +0 -2
  686. package/lib/families/ethereum/nft.merging.unit.test.d.ts.map +0 -1
  687. package/lib/families/ethereum/nft.merging.unit.test.js.map +0 -1
  688. package/lib/families/filecoin/customAddressValidation.d.ts +0 -8
  689. package/lib/families/filecoin/customAddressValidation.d.ts.map +0 -1
  690. package/lib/families/filecoin/customAddressValidation.js +0 -50
  691. package/lib/families/filecoin/customAddressValidation.js.map +0 -1
  692. package/lib/families/polkadot/test-specifics.d.ts +0 -3
  693. package/lib/families/polkadot/test-specifics.d.ts.map +0 -1
  694. package/lib/families/polkadot/test-specifics.js +0 -91
  695. package/lib/families/polkadot/test-specifics.js.map +0 -1
  696. package/lib/families/tezos/bridge/libcore.d.ts +0 -14
  697. package/lib/families/tezos/bridge/libcore.d.ts.map +0 -1
  698. package/lib/families/tezos/bridge/libcore.js +0 -336
  699. package/lib/families/tezos/bridge/libcore.js.map +0 -1
  700. package/lib/families/tezos/libcore-broadcast.d.ts +0 -3
  701. package/lib/families/tezos/libcore-broadcast.d.ts.map +0 -1
  702. package/lib/families/tezos/libcore-broadcast.js +0 -61
  703. package/lib/families/tezos/libcore-broadcast.js.map +0 -1
  704. package/lib/families/tezos/libcore-buildOperation.d.ts +0 -7
  705. package/lib/families/tezos/libcore-buildOperation.d.ts.map +0 -1
  706. package/lib/families/tezos/libcore-buildOperation.js +0 -93
  707. package/lib/families/tezos/libcore-buildOperation.js.map +0 -1
  708. package/lib/families/tezos/libcore-buildSubAccounts.d.ts +0 -11
  709. package/lib/families/tezos/libcore-buildSubAccounts.d.ts.map +0 -1
  710. package/lib/families/tezos/libcore-buildSubAccounts.js +0 -214
  711. package/lib/families/tezos/libcore-buildSubAccounts.js.map +0 -1
  712. package/lib/families/tezos/libcore-buildTransaction.d.ts +0 -14
  713. package/lib/families/tezos/libcore-buildTransaction.d.ts.map +0 -1
  714. package/lib/families/tezos/libcore-buildTransaction.js +0 -225
  715. package/lib/families/tezos/libcore-buildTransaction.js.map +0 -1
  716. package/lib/families/tezos/libcore-getAccountNetworkInfo.d.ts +0 -11
  717. package/lib/families/tezos/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  718. package/lib/families/tezos/libcore-getAccountNetworkInfo.js +0 -66
  719. package/lib/families/tezos/libcore-getAccountNetworkInfo.js.map +0 -1
  720. package/lib/families/tezos/libcore-getFeesForTransaction.d.ts +0 -18
  721. package/lib/families/tezos/libcore-getFeesForTransaction.d.ts.map +0 -1
  722. package/lib/families/tezos/libcore-getFeesForTransaction.js +0 -73
  723. package/lib/families/tezos/libcore-getFeesForTransaction.js.map +0 -1
  724. package/lib/families/tezos/libcore-signOperation.d.ts +0 -4
  725. package/lib/families/tezos/libcore-signOperation.d.ts.map +0 -1
  726. package/lib/families/tezos/libcore-signOperation.js +0 -187
  727. package/lib/families/tezos/libcore-signOperation.js.map +0 -1
  728. package/lib/families/tezos/test-specifics.d.ts +0 -3
  729. package/lib/families/tezos/test-specifics.d.ts.map +0 -1
  730. package/lib/families/tezos/test-specifics.js.map +0 -1
  731. package/lib/families/tron/test-specifics.d.ts +0 -3
  732. package/lib/families/tron/test-specifics.d.ts.map +0 -1
  733. package/lib/families/tron/test-specifics.js +0 -205
  734. package/lib/families/tron/test-specifics.js.map +0 -1
  735. package/lib/generated/bridge/libcore.d.ts +0 -20
  736. package/lib/generated/bridge/libcore.d.ts.map +0 -1
  737. package/lib/generated/bridge/libcore.js +0 -16
  738. package/lib/generated/bridge/libcore.js.map +0 -1
  739. package/lib/generated/libcore-buildOperation.d.ts +0 -12
  740. package/lib/generated/libcore-buildOperation.d.ts.map +0 -1
  741. package/lib/generated/libcore-buildOperation.js +0 -16
  742. package/lib/generated/libcore-buildOperation.js.map +0 -1
  743. package/lib/generated/libcore-buildSubAccounts.d.ts +0 -8
  744. package/lib/generated/libcore-buildSubAccounts.d.ts.map +0 -1
  745. package/lib/generated/libcore-buildSubAccounts.js +0 -12
  746. package/lib/generated/libcore-buildSubAccounts.js.map +0 -1
  747. package/lib/generated/libcore-getAccountNetworkInfo.d.ts +0 -8
  748. package/lib/generated/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  749. package/lib/generated/libcore-getAccountNetworkInfo.js +0 -12
  750. package/lib/generated/libcore-getAccountNetworkInfo.js.map +0 -1
  751. package/lib/generated/libcore-getFeesForTransaction.d.ts +0 -12
  752. package/lib/generated/libcore-getFeesForTransaction.d.ts.map +0 -1
  753. package/lib/generated/libcore-getFeesForTransaction.js +0 -16
  754. package/lib/generated/libcore-getFeesForTransaction.js.map +0 -1
  755. package/lib/generated/libcore-mergeOperations.d.ts +0 -5
  756. package/lib/generated/libcore-mergeOperations.d.ts.map +0 -1
  757. package/lib/generated/libcore-mergeOperations.js +0 -10
  758. package/lib/generated/libcore-mergeOperations.js.map +0 -1
  759. package/lib/generated/libcore-postBuildAccount.d.ts +0 -16
  760. package/lib/generated/libcore-postBuildAccount.d.ts.map +0 -1
  761. package/lib/generated/libcore-postBuildAccount.js +0 -14
  762. package/lib/generated/libcore-postBuildAccount.js.map +0 -1
  763. package/lib/generated/libcore-postSyncPatch.d.ts +0 -3
  764. package/lib/generated/libcore-postSyncPatch.d.ts.map +0 -1
  765. package/lib/generated/libcore-postSyncPatch.js +0 -4
  766. package/lib/generated/libcore-postSyncPatch.js.map +0 -1
  767. package/lib/generated/test-specifics.d.ts +0 -8
  768. package/lib/generated/test-specifics.d.ts.map +0 -1
  769. package/lib/generated/test-specifics.js +0 -16
  770. package/lib/generated/test-specifics.js.map +0 -1
  771. package/lib/libcore/access.d.ts +0 -11
  772. package/lib/libcore/access.d.ts.map +0 -1
  773. package/lib/libcore/access.js +0 -229
  774. package/lib/libcore/access.js.map +0 -1
  775. package/lib/libcore/broadcast.d.ts +0 -14
  776. package/lib/libcore/broadcast.d.ts.map +0 -1
  777. package/lib/libcore/broadcast.js +0 -68
  778. package/lib/libcore/broadcast.js.map +0 -1
  779. package/lib/libcore/buildAccount/buildOperation.d.ts +0 -15
  780. package/lib/libcore/buildAccount/buildOperation.d.ts.map +0 -1
  781. package/lib/libcore/buildAccount/buildOperation.js +0 -162
  782. package/lib/libcore/buildAccount/buildOperation.js.map +0 -1
  783. package/lib/libcore/buildAccount/buildSubAccounts.d.ts +0 -12
  784. package/lib/libcore/buildAccount/buildSubAccounts.d.ts.map +0 -1
  785. package/lib/libcore/buildAccount/buildSubAccounts.js.map +0 -1
  786. package/lib/libcore/buildAccount/index.d.ts +0 -15
  787. package/lib/libcore/buildAccount/index.d.ts.map +0 -1
  788. package/lib/libcore/buildAccount/index.js +0 -339
  789. package/lib/libcore/buildAccount/index.js.map +0 -1
  790. package/lib/libcore/buildBigNumber.d.ts +0 -7
  791. package/lib/libcore/buildBigNumber.d.ts.map +0 -1
  792. package/lib/libcore/buildBigNumber.js.map +0 -1
  793. package/lib/libcore/createAccountFromDevice.d.ts +0 -23
  794. package/lib/libcore/createAccountFromDevice.d.ts.map +0 -1
  795. package/lib/libcore/createAccountFromDevice.js +0 -143
  796. package/lib/libcore/createAccountFromDevice.js.map +0 -1
  797. package/lib/libcore/errors.d.ts +0 -6
  798. package/lib/libcore/errors.d.ts.map +0 -1
  799. package/lib/libcore/errors.js +0 -27
  800. package/lib/libcore/errors.js.map +0 -1
  801. package/lib/libcore/getAccountBalanceHistory.d.ts +0 -5
  802. package/lib/libcore/getAccountBalanceHistory.d.ts.map +0 -1
  803. package/lib/libcore/getAccountBalanceHistory.js +0 -87
  804. package/lib/libcore/getAccountBalanceHistory.js.map +0 -1
  805. package/lib/libcore/getAccountNetworkInfo.d.ts +0 -6
  806. package/lib/libcore/getAccountNetworkInfo.d.ts.map +0 -1
  807. package/lib/libcore/getAccountNetworkInfo.js +0 -91
  808. package/lib/libcore/getAccountNetworkInfo.js.map +0 -1
  809. package/lib/libcore/getCoreAccount.d.ts +0 -8
  810. package/lib/libcore/getCoreAccount.d.ts.map +0 -1
  811. package/lib/libcore/getCoreAccount.js +0 -78
  812. package/lib/libcore/getCoreAccount.js.map +0 -1
  813. package/lib/libcore/getFeesForTransaction.d.ts +0 -17
  814. package/lib/libcore/getFeesForTransaction.d.ts.map +0 -1
  815. package/lib/libcore/getFeesForTransaction.js +0 -87
  816. package/lib/libcore/getFeesForTransaction.js.map +0 -1
  817. package/lib/libcore/getOrCreateAccount.d.ts +0 -11
  818. package/lib/libcore/getOrCreateAccount.d.ts.map +0 -1
  819. package/lib/libcore/getOrCreateAccount.js +0 -142
  820. package/lib/libcore/getOrCreateAccount.js.map +0 -1
  821. package/lib/libcore/getOrCreateWallet.d.ts +0 -12
  822. package/lib/libcore/getOrCreateWallet.d.ts.map +0 -1
  823. package/lib/libcore/getOrCreateWallet.js +0 -138
  824. package/lib/libcore/getOrCreateWallet.js.map +0 -1
  825. package/lib/libcore/isValidRecipient.d.ts +0 -8
  826. package/lib/libcore/isValidRecipient.d.ts.map +0 -1
  827. package/lib/libcore/isValidRecipient.js +0 -78
  828. package/lib/libcore/isValidRecipient.js.map +0 -1
  829. package/lib/libcore/nativeSegwitAppsVersionsMap.d.ts +0 -6
  830. package/lib/libcore/nativeSegwitAppsVersionsMap.d.ts.map +0 -1
  831. package/lib/libcore/nativeSegwitAppsVersionsMap.js +0 -7
  832. package/lib/libcore/nativeSegwitAppsVersionsMap.js.map +0 -1
  833. package/lib/libcore/platforms/nodejs.d.ts +0 -7
  834. package/lib/libcore/platforms/nodejs.d.ts.map +0 -1
  835. package/lib/libcore/platforms/nodejs.js +0 -613
  836. package/lib/libcore/platforms/nodejs.js.map +0 -1
  837. package/lib/libcore/platforms/react-native.d.ts +0 -5
  838. package/lib/libcore/platforms/react-native.d.ts.map +0 -1
  839. package/lib/libcore/platforms/react-native.js +0 -286
  840. package/lib/libcore/platforms/react-native.js.map +0 -1
  841. package/lib/libcore/scanAccounts.d.ts +0 -12
  842. package/lib/libcore/scanAccounts.d.ts.map +0 -1
  843. package/lib/libcore/scanAccounts.js +0 -285
  844. package/lib/libcore/scanAccounts.js.map +0 -1
  845. package/lib/libcore/signOperation.d.ts +0 -38
  846. package/lib/libcore/signOperation.d.ts.map +0 -1
  847. package/lib/libcore/signOperation.js +0 -149
  848. package/lib/libcore/signOperation.js.map +0 -1
  849. package/lib/libcore/syncAccount.d.ts +0 -18
  850. package/lib/libcore/syncAccount.d.ts.map +0 -1
  851. package/lib/libcore/syncAccount.js +0 -165
  852. package/lib/libcore/syncAccount.js.map +0 -1
  853. package/lib/libcore/types/index.d.ts +0 -185
  854. package/lib/libcore/types/index.d.ts.map +0 -1
  855. package/lib/libcore/types/index.js +0 -359
  856. package/lib/libcore/types/index.js.map +0 -1
  857. package/src/__tests__/all.libcore.ts +0 -90
  858. package/src/__tests__/test-helpers/implement-react-native-libcore/index.ts +0 -6
  859. package/src/__tests__/test-helpers/implement-react-native-libcore/specific.android.ts +0 -4
  860. package/src/__tests__/test-helpers/implement-react-native-libcore/specific.ios.ts +0 -4
  861. package/src/bridge/shared.ts +0 -38
  862. package/src/families/algorand/bridge/libcore.ts +0 -345
  863. package/src/families/algorand/buildASAOperation.ts +0 -66
  864. package/src/families/algorand/libcore-broadcast.ts +0 -18
  865. package/src/families/algorand/libcore-buildOperation.ts +0 -69
  866. package/src/families/algorand/libcore-buildSubAccounts.ts +0 -132
  867. package/src/families/algorand/libcore-buildTransaction.ts +0 -115
  868. package/src/families/algorand/libcore-getFeesForTransaction.ts +0 -25
  869. package/src/families/algorand/libcore-postBuildAccount.ts +0 -42
  870. package/src/families/algorand/libcore-signOperation.ts +0 -104
  871. package/src/families/bitcoin/bridge/libcore.ts +0 -297
  872. package/src/families/bitcoin/customAddressValidation.ts +0 -30
  873. package/src/families/bitcoin/libcore-broadcast.ts +0 -15
  874. package/src/families/bitcoin/libcore-buildOperation.ts +0 -38
  875. package/src/families/bitcoin/libcore-buildTransaction.ts +0 -118
  876. package/src/families/bitcoin/libcore-getAccountNetworkInfo.test.ts +0 -27
  877. package/src/families/bitcoin/libcore-getAccountNetworkInfo.ts +0 -50
  878. package/src/families/bitcoin/libcore-getFeesForTransaction.ts +0 -67
  879. package/src/families/bitcoin/libcore-postBuildAccount.ts +0 -70
  880. package/src/families/bitcoin/libcore-signOperation.ts +0 -227
  881. package/src/families/cosmos/bridge/libcore.ts +0 -177
  882. package/src/families/cosmos/libcore-broadcast.ts +0 -24
  883. package/src/families/cosmos/libcore-buildOperation.ts +0 -121
  884. package/src/families/cosmos/libcore-buildTransaction.ts +0 -212
  885. package/src/families/cosmos/libcore-getFeesForTransaction.ts +0 -27
  886. package/src/families/cosmos/libcore-getTransactionStatus.ts +0 -299
  887. package/src/families/cosmos/libcore-mergeOperations.ts +0 -43
  888. package/src/families/cosmos/libcore-postBuildAccount.ts +0 -177
  889. package/src/families/cosmos/libcore-signOperation.ts +0 -96
  890. package/src/families/cosmos/message.ts +0 -155
  891. package/src/families/cosmos/test-specifics.ts +0 -225
  892. package/src/families/ethereum/nft.merging.unit.test.ts +0 -78
  893. package/src/families/filecoin/customAddressValidation.ts +0 -19
  894. package/src/families/polkadot/test-specifics.ts +0 -70
  895. package/src/families/tezos/bridge/libcore.ts +0 -312
  896. package/src/families/tezos/libcore-broadcast.ts +0 -16
  897. package/src/families/tezos/libcore-buildOperation.ts +0 -52
  898. package/src/families/tezos/libcore-buildSubAccounts.ts +0 -137
  899. package/src/families/tezos/libcore-buildTransaction.ts +0 -154
  900. package/src/families/tezos/libcore-getAccountNetworkInfo.ts +0 -25
  901. package/src/families/tezos/libcore-getFeesForTransaction.ts +0 -27
  902. package/src/families/tezos/libcore-signOperation.ts +0 -122
  903. package/src/families/tezos/test-specifics.ts +0 -19
  904. package/src/families/tron/test-specifics.ts +0 -137
  905. package/src/generated/bridge/libcore.ts +0 -15
  906. package/src/generated/libcore-buildOperation.ts +0 -15
  907. package/src/generated/libcore-buildSubAccounts.ts +0 -9
  908. package/src/generated/libcore-getAccountNetworkInfo.ts +0 -9
  909. package/src/generated/libcore-getFeesForTransaction.ts +0 -15
  910. package/src/generated/libcore-mergeOperations.ts +0 -6
  911. package/src/generated/libcore-postBuildAccount.ts +0 -12
  912. package/src/generated/libcore-postSyncPatch.ts +0 -3
  913. package/src/generated/test-specifics.ts +0 -15
  914. package/src/libcore/access.ts +0 -135
  915. package/src/libcore/broadcast.ts +0 -34
  916. package/src/libcore/buildAccount/buildOperation.ts +0 -96
  917. package/src/libcore/buildAccount/buildSubAccounts.ts +0 -24
  918. package/src/libcore/buildAccount/index.ts +0 -259
  919. package/src/libcore/buildBigNumber.ts +0 -28
  920. package/src/libcore/createAccountFromDevice.ts +0 -108
  921. package/src/libcore/errors.ts +0 -20
  922. package/src/libcore/getAccountBalanceHistory.ts +0 -56
  923. package/src/libcore/getAccountNetworkInfo.ts +0 -46
  924. package/src/libcore/getCoreAccount.ts +0 -37
  925. package/src/libcore/getFeesForTransaction.ts +0 -46
  926. package/src/libcore/getOrCreateAccount.ts +0 -93
  927. package/src/libcore/getOrCreateWallet.ts +0 -91
  928. package/src/libcore/isValidRecipient.ts +0 -36
  929. package/src/libcore/nativeSegwitAppsVersionsMap.ts +0 -4
  930. package/src/libcore/platforms/nodejs.ts +0 -627
  931. package/src/libcore/platforms/react-native.ts +0 -242
  932. package/src/libcore/scanAccounts.ts +0 -280
  933. package/src/libcore/signOperation.ts +0 -141
  934. package/src/libcore/syncAccount.ts +0 -152
  935. package/src/libcore/types/index.ts +0 -645
@@ -10,7 +10,12 @@ import BigNumber from "bignumber.js";
10
10
  import { findSubAccountById } from "../../account";
11
11
  import type { Account } from "../../types";
12
12
  import { ChainAPI } from "./api";
13
- import { getMaybeTokenAccount } from "./api/chain/web3";
13
+ import {
14
+ getMaybeTokenAccount,
15
+ getMaybeVoteAccount,
16
+ getStakeAccountAddressWithSeed,
17
+ getStakeAccountMinimumBalanceForRentExemption,
18
+ } from "./api/chain/web3";
14
19
  import {
15
20
  SolanaAccountNotFunded,
16
21
  SolanaAddressOffEd25519,
@@ -19,6 +24,16 @@ import {
19
24
  SolanaRecipientAssociatedTokenAccountWillBeFunded,
20
25
  SolanaTokenRecipientIsSenderATA,
21
26
  SolanaTokenAccounNotInitialized,
27
+ SolanaInvalidValidator,
28
+ SolanaValidatorRequired,
29
+ SolanaStakeAccountRequired,
30
+ SolanaStakeAccountNotFound,
31
+ SolanaStakeAccountNothingToWithdraw,
32
+ SolanaStakeAccountIsNotDelegatable,
33
+ SolanaStakeAccountValidatorIsUnchangeable,
34
+ SolanaStakeAccountIsNotUndelegatable,
35
+ SolanaStakeNoWithdrawAuth,
36
+ SolanaStakeNoStakeAuth,
22
37
  } from "./errors";
23
38
  import {
24
39
  decodeAccountIdWithTokenAccountAddress,
@@ -29,63 +44,55 @@ import {
29
44
 
30
45
  import type {
31
46
  CommandDescriptor,
47
+ SolanaStake,
48
+ StakeCreateAccountTransaction,
49
+ StakeDelegateTransaction,
50
+ StakeSplitTransaction,
51
+ StakeUndelegateTransaction,
52
+ StakeWithdrawTransaction,
32
53
  TokenCreateATATransaction,
33
54
  TokenRecipientDescriptor,
34
55
  TokenTransferTransaction,
35
56
  Transaction,
36
57
  TransactionModel,
58
+ TransferCommand,
37
59
  TransferTransaction,
38
60
  } from "./types";
39
61
  import { assertUnreachable } from "./utils";
40
62
 
41
- type TransactionWithFeeCalculator = Transaction & {
42
- feeCalculator: Exclude<Transaction["feeCalculator"], undefined>;
43
- };
44
-
45
63
  async function deriveCommandDescriptor(
46
64
  mainAccount: Account,
47
- tx: TransactionWithFeeCalculator,
65
+ tx: Transaction,
48
66
  api: ChainAPI
49
67
  ): Promise<CommandDescriptor> {
50
- const errors: Record<string, Error> = {};
51
-
52
68
  const { model } = tx;
53
69
 
54
70
  switch (model.kind) {
55
71
  case "transfer":
72
+ return deriveTransferCommandDescriptor(mainAccount, tx, model, api);
56
73
  case "token.transfer":
57
- if (!tx.recipient) {
58
- errors.recipient = new RecipientRequired();
59
- } else if (mainAccount.freshAddress === tx.recipient) {
60
- errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
61
- } else if (!isValidBase58Address(tx.recipient)) {
62
- errors.recipient = new InvalidAddress();
63
- }
64
-
65
- if (model.uiState.memo) {
66
- const memoBytes = Buffer.from(model.uiState.memo, "utf-8");
67
- if (memoBytes.byteLength > MAX_MEMO_LENGTH) {
68
- errors.memo = errors.memo = new SolanaMemoIsTooLong(undefined, {
69
- maxLength: MAX_MEMO_LENGTH,
70
- });
71
- // LLM expects <transaction> as error key to disable continue button
72
- errors.transaction = errors.memo;
73
- }
74
- }
75
-
76
- if (Object.keys(errors).length > 0) {
77
- return toInvalidStatusCommand(errors);
78
- }
79
-
80
- return model.kind === "transfer"
81
- ? deriveTransferCommandDescriptor(mainAccount, tx, model, api)
82
- : deriveTokenTransferCommandDescriptor(mainAccount, tx, model, api);
74
+ return deriveTokenTransferCommandDescriptor(mainAccount, tx, model, api);
83
75
  case "token.createATA":
84
76
  return deriveCreateAssociatedTokenAccountCommandDescriptor(
85
77
  mainAccount,
86
78
  model,
87
79
  api
88
80
  );
81
+ case "stake.createAccount":
82
+ return deriveStakeCreateAccountCommandDescriptor(
83
+ mainAccount,
84
+ tx,
85
+ model,
86
+ api
87
+ );
88
+ case "stake.delegate":
89
+ return deriveStakeDelegateCommandDescriptor(mainAccount, model, api);
90
+ case "stake.undelegate":
91
+ return deriveStakeUndelegateCommandDescriptor(mainAccount, model, api);
92
+ case "stake.withdraw":
93
+ return deriveStakeWithdrawCommandDescriptor(mainAccount, tx, model, api);
94
+ case "stake.split":
95
+ return deriveStakeSplitCommandDescriptor(mainAccount, tx, model, api);
89
96
  default:
90
97
  return assertUnreachable(model);
91
98
  }
@@ -96,21 +103,7 @@ const prepareTransaction = async (
96
103
  tx: Transaction,
97
104
  api: ChainAPI
98
105
  ): Promise<Transaction> => {
99
- const patch: Partial<Transaction> = {};
100
- const errors: Record<string, Error> = {};
101
-
102
- const feeCalculator = tx.feeCalculator ?? (await api.getTxFeeCalculator());
103
-
104
- if (tx.feeCalculator === undefined) {
105
- patch.feeCalculator = feeCalculator;
106
- // LLM requires this field to be truthy to show fees
107
- (patch as any).networkInfo = true;
108
- }
109
-
110
- const txToDeriveFrom = {
111
- ...updateModelIfSubAccountIdPresent(tx),
112
- feeCalculator,
113
- };
106
+ const txToDeriveFrom = updateModelIfSubAccountIdPresent(tx);
114
107
 
115
108
  const commandDescriptor = await deriveCommandDescriptor(
116
109
  mainAccount,
@@ -118,48 +111,20 @@ const prepareTransaction = async (
118
111
  api
119
112
  );
120
113
 
121
- if (commandDescriptor.status === "invalid") {
122
- return toInvalidTx(
123
- tx,
124
- patch,
125
- commandDescriptor.errors,
126
- commandDescriptor.warnings
127
- );
128
- }
129
-
130
- const command = commandDescriptor.command;
131
- switch (command.kind) {
132
- case "transfer": {
133
- const totalSpend = command.amount + feeCalculator.lamportsPerSignature;
134
- if (mainAccount.balance.lt(totalSpend)) {
135
- errors.amount = new NotEnoughBalance();
136
- }
137
- break;
138
- }
139
- default: {
140
- const totalFees =
141
- feeCalculator.lamportsPerSignature + (commandDescriptor.fees ?? 0);
142
- if (mainAccount.balance.lt(totalFees)) {
143
- errors.amount = new NotEnoughBalance();
144
- }
145
- }
146
- }
147
-
148
- if (Object.keys(errors).length > 0) {
149
- return toInvalidTx(tx, patch, errors);
150
- }
151
-
152
- patch.model = {
114
+ const model: TransactionModel = {
153
115
  ...tx.model,
154
116
  commandDescriptor,
155
117
  };
156
118
 
157
- return Object.keys(patch).length > 0
158
- ? {
159
- ...tx,
160
- ...patch,
161
- }
162
- : tx;
119
+ const preparedTx: Transaction = {
120
+ ...tx,
121
+ model,
122
+ };
123
+
124
+ // LLM requires this field to be truthy to show fees
125
+ (preparedTx as any).networkInfo = true;
126
+
127
+ return preparedTx;
163
128
  };
164
129
 
165
130
  const deriveTokenTransferCommandDescriptor = async (
@@ -180,6 +145,14 @@ const deriveTokenTransferCommandDescriptor = async (
180
145
  throw new Error("subaccount not found");
181
146
  }
182
147
 
148
+ await validateRecipientCommon(mainAccount, tx, errors, warnings, api);
149
+
150
+ const memo = model.uiState.memo;
151
+
152
+ if (typeof memo === "string" && memo.length > 0) {
153
+ validateMemoCommon(memo, errors);
154
+ }
155
+
183
156
  const tokenIdParts = subAccount.token.id.split("/");
184
157
  const mintAddress = tokenIdParts[tokenIdParts.length - 1];
185
158
  const mintDecimals = subAccount.token.units[0].magnitude;
@@ -187,51 +160,57 @@ const deriveTokenTransferCommandDescriptor = async (
187
160
  const senderAssociatedTokenAccountAddress =
188
161
  decodeAccountIdWithTokenAccountAddress(subAccount.id).address;
189
162
 
190
- if (tx.recipient === senderAssociatedTokenAccountAddress) {
163
+ if (
164
+ !errors.recipient &&
165
+ tx.recipient === senderAssociatedTokenAccountAddress
166
+ ) {
191
167
  errors.recipient = new SolanaTokenRecipientIsSenderATA();
192
- return toInvalidStatusCommand(errors, warnings);
193
168
  }
194
169
 
195
- const recipientDescriptor = await getTokenRecipient(
196
- tx.recipient,
197
- mintAddress,
198
- api
199
- );
170
+ const defaultRecipientDescriptor: TokenRecipientDescriptor = {
171
+ shouldCreateAsAssociatedTokenAccount: false,
172
+ tokenAccAddress: "",
173
+ walletAddress: "",
174
+ };
200
175
 
201
- if (recipientDescriptor instanceof Error) {
202
- errors.recipient = recipientDescriptor;
203
- return toInvalidStatusCommand(errors, warnings);
176
+ const recipientDescriptorOrError = errors.recipient
177
+ ? defaultRecipientDescriptor
178
+ : await getTokenRecipient(tx.recipient, mintAddress, api);
179
+
180
+ if (!errors.recipient && recipientDescriptorOrError instanceof Error) {
181
+ errors.recipient = recipientDescriptorOrError;
204
182
  }
205
183
 
206
- const fees = recipientDescriptor.shouldCreateAsAssociatedTokenAccount
207
- ? await api.getAssocTokenAccMinNativeBalance()
208
- : 0;
184
+ const recipientDescriptor: TokenRecipientDescriptor =
185
+ recipientDescriptorOrError instanceof Error
186
+ ? defaultRecipientDescriptor
187
+ : recipientDescriptorOrError;
188
+
189
+ // TODO: check if SOL balance enough to pay fees
190
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
191
+ const assocAccRentExempt =
192
+ recipientDescriptor.shouldCreateAsAssociatedTokenAccount
193
+ ? await api.getAssocTokenAccMinNativeBalance()
194
+ : 0;
209
195
 
210
196
  if (recipientDescriptor.shouldCreateAsAssociatedTokenAccount) {
211
- warnings.recipientAssociatedTokenAccount =
197
+ warnings.recipient =
212
198
  new SolanaRecipientAssociatedTokenAccountWillBeFunded();
213
-
214
- if (!(await isAccountFunded(tx.recipient, api))) {
215
- warnings.recipient = new SolanaAccountNotFunded();
216
- }
217
199
  }
218
200
 
219
201
  if (!tx.useAllAmount && tx.amount.lte(0)) {
220
202
  errors.amount = new AmountRequired();
221
- return toInvalidStatusCommand(errors, warnings);
222
203
  }
223
204
 
224
205
  const txAmount = tx.useAllAmount
225
206
  ? subAccount.spendableBalance.toNumber()
226
207
  : tx.amount.toNumber();
227
208
 
228
- if (txAmount > subAccount.spendableBalance.toNumber()) {
209
+ if (!errors.amount && txAmount > subAccount.spendableBalance.toNumber()) {
229
210
  errors.amount = new NotEnoughBalance();
230
- return toInvalidStatusCommand(errors, warnings);
231
211
  }
232
212
 
233
213
  return {
234
- status: "valid",
235
214
  command: {
236
215
  kind: "token.transfer",
237
216
  ownerAddress: mainAccount.freshAddress,
@@ -242,8 +221,9 @@ const deriveTokenTransferCommandDescriptor = async (
242
221
  recipientDescriptor: recipientDescriptor,
243
222
  memo: model.uiState.memo,
244
223
  },
245
- fees,
224
+ fee: txFee + assocAccRentExempt,
246
225
  warnings,
226
+ errors,
247
227
  };
248
228
  };
249
229
 
@@ -309,91 +289,315 @@ async function deriveCreateAssociatedTokenAccountCommandDescriptor(
309
289
  mint
310
290
  );
311
291
 
312
- const fees = await api.getAssocTokenAccMinNativeBalance();
292
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
293
+ const assocAccRentExempt = await api.getAssocTokenAccMinNativeBalance();
313
294
 
314
295
  return {
315
- status: "valid",
316
- fees,
296
+ fee: txFee + assocAccRentExempt,
317
297
  command: {
318
298
  kind: model.kind,
319
299
  mint: mint,
320
300
  owner: mainAccount.freshAddress,
321
301
  associatedTokenAccountAddress,
322
302
  },
303
+ warnings: {},
304
+ errors: {},
323
305
  };
324
306
  }
325
307
 
326
308
  async function deriveTransferCommandDescriptor(
327
309
  mainAccount: Account,
328
- tx: TransactionWithFeeCalculator,
310
+ tx: Transaction,
329
311
  model: TransactionModel & { kind: TransferTransaction["kind"] },
330
312
  api: ChainAPI
331
313
  ): Promise<CommandDescriptor> {
332
314
  const errors: Record<string, Error> = {};
333
315
  const warnings: Record<string, Error> = {};
334
316
 
335
- if (!isEd25519Address(tx.recipient)) {
336
- warnings.recipientOffCurve = new SolanaAddressOffEd25519();
317
+ await validateRecipientCommon(mainAccount, tx, errors, warnings, api);
318
+
319
+ const memo = model.uiState.memo;
320
+
321
+ if (typeof memo === "string" && memo.length > 0) {
322
+ validateMemoCommon(memo, errors);
337
323
  }
338
324
 
339
- const recipientWalletIsUnfunded = !(await isAccountFunded(tx.recipient, api));
340
- if (recipientWalletIsUnfunded) {
341
- warnings.recipient = new SolanaAccountNotFunded();
325
+ const fee = (await api.getTxFeeCalculator()).lamportsPerSignature;
326
+
327
+ const txAmount = tx.useAllAmount
328
+ ? BigNumber.max(mainAccount.balance.minus(fee), 0)
329
+ : tx.amount;
330
+
331
+ if (tx.useAllAmount) {
332
+ if (txAmount.eq(0)) {
333
+ errors.amount = new NotEnoughBalance();
334
+ }
335
+ } else {
336
+ if (txAmount.lte(0)) {
337
+ errors.amount = new AmountRequired();
338
+ } else if (txAmount.plus(fee).gt(mainAccount.balance)) {
339
+ errors.amount = new NotEnoughBalance();
340
+ }
342
341
  }
342
+ const command: TransferCommand = {
343
+ kind: "transfer",
344
+ amount: txAmount.toNumber(),
345
+ sender: mainAccount.freshAddress,
346
+ recipient: tx.recipient,
347
+ memo: model.uiState.memo,
348
+ };
349
+
350
+ return {
351
+ command,
352
+ fee,
353
+ warnings,
354
+ errors,
355
+ };
356
+ }
357
+
358
+ async function deriveStakeCreateAccountCommandDescriptor(
359
+ mainAccount: Account,
360
+ tx: Transaction,
361
+ model: TransactionModel & { kind: StakeCreateAccountTransaction["kind"] },
362
+ api: ChainAPI
363
+ ): Promise<CommandDescriptor> {
364
+ const errors: Record<string, Error> = {};
343
365
 
344
366
  if (!tx.useAllAmount && tx.amount.lte(0)) {
345
367
  errors.amount = new AmountRequired();
346
- return toInvalidStatusCommand(errors, warnings);
347
368
  }
348
369
 
349
- const fee = tx.feeCalculator.lamportsPerSignature;
370
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
371
+ const stakeAccRentExemptAmount =
372
+ await getStakeAccountMinimumBalanceForRentExemption(api);
350
373
 
351
- const txAmount = tx.useAllAmount
374
+ const fee = txFee + stakeAccRentExemptAmount;
375
+
376
+ const amount = tx.useAllAmount
352
377
  ? BigNumber.max(mainAccount.balance.minus(fee), 0)
353
378
  : tx.amount;
354
379
 
355
- if (txAmount.plus(fee).gt(mainAccount.balance)) {
380
+ if (!errors.amount && mainAccount.balance.lt(amount.plus(fee))) {
356
381
  errors.amount = new NotEnoughBalance();
357
- return toInvalidStatusCommand(errors, warnings);
358
382
  }
359
383
 
384
+ const {
385
+ uiState: { delegate },
386
+ } = model;
387
+
388
+ await validateValidatorCommon(delegate.voteAccAddress, errors, api);
389
+
390
+ const { addr: stakeAccAddress, seed: stakeAccAddressSeed } =
391
+ await nextStakeAccAddr(mainAccount);
392
+
360
393
  return {
361
- status: "valid",
362
394
  command: {
363
- kind: "transfer",
364
- sender: mainAccount.freshAddress,
365
- recipient: tx.recipient,
366
- amount: txAmount.toNumber(),
367
- memo: model.uiState.memo,
395
+ kind: "stake.createAccount",
396
+ amount: amount.toNumber(),
397
+ stakeAccRentExemptAmount,
398
+ fromAccAddress: mainAccount.freshAddress,
399
+ stakeAccAddress,
400
+ delegate,
401
+ seed: stakeAccAddressSeed,
368
402
  },
369
- warnings: Object.keys(warnings).length > 0 ? warnings : undefined,
403
+ fee,
404
+ warnings: {},
405
+ errors,
370
406
  };
371
407
  }
372
408
 
373
- function toInvalidTx(
374
- tx: Transaction,
375
- patch: Partial<Transaction>,
376
- errors: Record<string, Error>,
377
- warnings?: Record<string, Error>
378
- ): Transaction {
409
+ async function deriveStakeDelegateCommandDescriptor(
410
+ mainAccount: Account,
411
+ model: TransactionModel & { kind: StakeDelegateTransaction["kind"] },
412
+ api: ChainAPI
413
+ ): Promise<CommandDescriptor> {
414
+ const errors: Record<string, Error> = {};
415
+
416
+ const { uiState } = model;
417
+
418
+ const stake = validateAndTryGetStakeAccount(
419
+ mainAccount,
420
+ uiState.stakeAccAddr,
421
+ errors
422
+ );
423
+
424
+ if (stake !== undefined && !stake.hasStakeAuth && !stake.hasWithdrawAuth) {
425
+ errors.stakeAccAddr = new SolanaStakeNoStakeAuth();
426
+ }
427
+
428
+ await validateValidatorCommon(uiState.voteAccAddr, errors, api);
429
+
430
+ if (!errors.voteAccAddr && stake !== undefined) {
431
+ switch (stake.activation.state) {
432
+ case "active":
433
+ case "activating":
434
+ errors.stakeAccAddr = new SolanaStakeAccountIsNotDelegatable();
435
+ break;
436
+ case "inactive":
437
+ break;
438
+ case "deactivating":
439
+ if (stake.delegation?.voteAccAddr !== uiState.voteAccAddr) {
440
+ errors.stakeAccAddr = new SolanaStakeAccountValidatorIsUnchangeable();
441
+ }
442
+ break;
443
+ default:
444
+ return assertUnreachable(stake.activation.state);
445
+ }
446
+ }
447
+
448
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
449
+
450
+ if (mainAccount.balance.lt(txFee)) {
451
+ errors.fee = new NotEnoughBalance();
452
+ }
453
+
379
454
  return {
380
- ...tx,
381
- ...patch,
382
- model: {
383
- ...tx.model,
384
- commandDescriptor: toInvalidStatusCommand(errors, warnings),
455
+ command: {
456
+ kind: "stake.delegate",
457
+ authorizedAccAddr: mainAccount.freshAddress,
458
+ stakeAccAddr: uiState.stakeAccAddr,
459
+ voteAccAddr: uiState.voteAccAddr,
385
460
  },
461
+ fee: txFee,
462
+ warnings: {},
463
+ errors,
386
464
  };
387
465
  }
388
466
 
389
- function toInvalidStatusCommand(
390
- errors: Record<string, Error>,
391
- warnings?: Record<string, Error>
392
- ) {
467
+ async function deriveStakeUndelegateCommandDescriptor(
468
+ mainAccount: Account,
469
+ model: TransactionModel & { kind: StakeUndelegateTransaction["kind"] },
470
+ api: ChainAPI
471
+ ): Promise<CommandDescriptor> {
472
+ const errors: Record<string, Error> = {};
473
+
474
+ const { uiState } = model;
475
+
476
+ const stake = validateAndTryGetStakeAccount(
477
+ mainAccount,
478
+ uiState.stakeAccAddr,
479
+ errors
480
+ );
481
+
482
+ if (stake !== undefined) {
483
+ switch (stake.activation.state) {
484
+ case "active":
485
+ case "activating":
486
+ break;
487
+ case "inactive":
488
+ case "deactivating":
489
+ errors.stakeAccAddr = new SolanaStakeAccountIsNotUndelegatable();
490
+ break;
491
+ default:
492
+ return assertUnreachable(stake.activation.state);
493
+ }
494
+
495
+ if (!errors.stakeAccAddr && !stake.hasStakeAuth && !stake.hasWithdrawAuth) {
496
+ errors.stakeAccAddr = new SolanaStakeNoStakeAuth();
497
+ }
498
+ }
499
+
500
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
501
+
502
+ if (mainAccount.balance.lt(txFee)) {
503
+ errors.fee = new NotEnoughBalance();
504
+ }
505
+
393
506
  return {
394
- status: "invalid" as const,
507
+ command: {
508
+ kind: "stake.undelegate",
509
+ authorizedAccAddr: mainAccount.freshAddress,
510
+ stakeAccAddr: uiState.stakeAccAddr,
511
+ },
512
+ fee: txFee,
513
+ warnings: {},
395
514
  errors,
396
- warnings,
515
+ };
516
+ }
517
+
518
+ async function deriveStakeWithdrawCommandDescriptor(
519
+ mainAccount: Account,
520
+ tx: Transaction,
521
+ model: TransactionModel & { kind: StakeWithdrawTransaction["kind"] },
522
+ api: ChainAPI
523
+ ): Promise<CommandDescriptor> {
524
+ const errors: Record<string, Error> = {};
525
+ const { uiState } = model;
526
+
527
+ const stake = validateAndTryGetStakeAccount(
528
+ mainAccount,
529
+ uiState.stakeAccAddr,
530
+ errors
531
+ );
532
+
533
+ if (!errors.stakeAccAddr && stake !== undefined) {
534
+ if (!stake.hasWithdrawAuth) {
535
+ errors.stakeAccAddr = new SolanaStakeNoWithdrawAuth();
536
+ } else if (stake.withdrawable <= 0) {
537
+ errors.stakeAccAddr = new SolanaStakeAccountNothingToWithdraw();
538
+ }
539
+ }
540
+
541
+ const txFee = (await api.getTxFeeCalculator()).lamportsPerSignature;
542
+
543
+ if (mainAccount.balance.lt(txFee)) {
544
+ errors.fee = new NotEnoughBalance();
545
+ }
546
+
547
+ return {
548
+ command: {
549
+ kind: "stake.withdraw",
550
+ authorizedAccAddr: mainAccount.freshAddress,
551
+ stakeAccAddr: uiState.stakeAccAddr,
552
+ amount: stake?.withdrawable ?? 0,
553
+ toAccAddr: mainAccount.freshAddress,
554
+ },
555
+ fee: txFee,
556
+ warnings: {},
557
+ errors,
558
+ };
559
+ }
560
+
561
+ async function deriveStakeSplitCommandDescriptor(
562
+ mainAccount: Account,
563
+ tx: Transaction,
564
+ model: TransactionModel & { kind: StakeSplitTransaction["kind"] },
565
+ api: ChainAPI
566
+ ): Promise<CommandDescriptor> {
567
+ const errors: Record<string, Error> = {};
568
+
569
+ // TODO: find stake account in the main acc when synced
570
+ const { uiState } = model;
571
+
572
+ // TODO: use all amount
573
+ if (tx.amount.lte(0)) {
574
+ errors.amount = new AmountRequired();
575
+ }
576
+ // TODO: else if amount > stake balance
577
+
578
+ if (!isValidBase58Address(uiState.stakeAccAddr)) {
579
+ errors.stakeAccAddr = new InvalidAddress();
580
+ }
581
+
582
+ mainAccount.solanaResources?.stakes ?? [];
583
+
584
+ const commandFees = await getStakeAccountMinimumBalanceForRentExemption(api);
585
+
586
+ const { addr: splitStakeAccAddr, seed: splitStakeAccAddrSeed } =
587
+ await nextStakeAccAddr(mainAccount);
588
+
589
+ return {
590
+ command: {
591
+ kind: "stake.split",
592
+ authorizedAccAddr: mainAccount.freshAddress,
593
+ stakeAccAddr: uiState.stakeAccAddr,
594
+ amount: tx.amount.toNumber(),
595
+ seed: splitStakeAccAddrSeed,
596
+ splitStakeAccAddr,
597
+ },
598
+ fee: commandFees,
599
+ warnings: {},
600
+ errors: {},
397
601
  };
398
602
  }
399
603
 
@@ -423,4 +627,123 @@ async function isAccountFunded(
423
627
  return balance > 0;
424
628
  }
425
629
 
630
+ async function nextStakeAccAddr(account: Account, base = "stake") {
631
+ const usedStakeAccAddrs = (account.solanaResources?.stakes ?? []).map(
632
+ (s) => s.stakeAccAddr
633
+ );
634
+
635
+ return nextStakeAccAddrRoutine(
636
+ account.freshAddress,
637
+ new Set(usedStakeAccAddrs),
638
+ base,
639
+ 0
640
+ );
641
+ }
642
+
643
+ async function nextStakeAccAddrRoutine(
644
+ fromAddress: string,
645
+ usedAddresses: Set<string>,
646
+ base: string,
647
+ idx: number
648
+ ): Promise<{
649
+ seed: string;
650
+ addr: string;
651
+ }> {
652
+ const seed = `${base}:${idx}`;
653
+ const addr = await getStakeAccountAddressWithSeed({
654
+ fromAddress,
655
+ seed,
656
+ });
657
+
658
+ return usedAddresses.has(addr)
659
+ ? nextStakeAccAddrRoutine(fromAddress, usedAddresses, base, idx + 1)
660
+ : {
661
+ seed,
662
+ addr,
663
+ };
664
+ }
665
+
666
+ async function validateRecipientCommon(
667
+ mainAccount: Account,
668
+ tx: Transaction,
669
+ errors: Record<string, Error>,
670
+ warnings: Record<string, Error>,
671
+ api: ChainAPI
672
+ ) {
673
+ if (!tx.recipient) {
674
+ errors.recipient = new RecipientRequired();
675
+ } else if (mainAccount.freshAddress === tx.recipient) {
676
+ errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
677
+ } else if (!isValidBase58Address(tx.recipient)) {
678
+ errors.recipient = new InvalidAddress();
679
+ } else {
680
+ const recipientWalletIsUnfunded = !(await isAccountFunded(
681
+ tx.recipient,
682
+ api
683
+ ));
684
+
685
+ if (recipientWalletIsUnfunded) {
686
+ warnings.recipient = new SolanaAccountNotFunded();
687
+ }
688
+ if (!isEd25519Address(tx.recipient)) {
689
+ warnings.recipientOffCurve = new SolanaAddressOffEd25519();
690
+ }
691
+ }
692
+ }
693
+
694
+ function validateMemoCommon(memo: string, errors: Record<string, Error>) {
695
+ const memoBytes = Buffer.from(memo, "utf-8");
696
+ if (memoBytes.byteLength > MAX_MEMO_LENGTH) {
697
+ errors.memo = errors.memo = new SolanaMemoIsTooLong(undefined, {
698
+ maxLength: MAX_MEMO_LENGTH,
699
+ });
700
+ // LLM expects <transaction> as error key to disable continue button
701
+ errors.transaction = errors.memo;
702
+ }
703
+ }
704
+
705
+ async function validateValidatorCommon(
706
+ addr: string,
707
+ errors: Record<string, Error>,
708
+ api: ChainAPI
709
+ ) {
710
+ if (addr.length === 0) {
711
+ errors.voteAccAddr = new SolanaValidatorRequired();
712
+ } else if (!isValidBase58Address(addr)) {
713
+ errors.voteAccAddr = new InvalidAddress();
714
+ } else {
715
+ const voteAcc = await getMaybeVoteAccount(addr, api);
716
+
717
+ if (voteAcc instanceof Error || voteAcc === undefined) {
718
+ errors.voteAccAddr = new SolanaInvalidValidator();
719
+ }
720
+ }
721
+ }
722
+
723
+ function validateAndTryGetStakeAccount(
724
+ account: Account,
725
+ stakeAccAddr: string,
726
+ errors: Record<string, Error>
727
+ ): SolanaStake | undefined {
728
+ if (stakeAccAddr.length === 0) {
729
+ errors.stakeAccAddr = new SolanaStakeAccountRequired();
730
+ } else if (!isValidBase58Address(stakeAccAddr)) {
731
+ errors.stakeAccAddr = new InvalidAddress();
732
+ }
733
+
734
+ if (!errors.stakeAccAddr) {
735
+ const stake = account.solanaResources?.stakes.find(
736
+ (stake) => stake.stakeAccAddr === stakeAccAddr
737
+ );
738
+
739
+ if (stake === undefined) {
740
+ errors.stakeAccAddr = new SolanaStakeAccountNotFound();
741
+ }
742
+
743
+ return stake;
744
+ }
745
+
746
+ return undefined;
747
+ }
748
+
426
749
  export { prepareTransaction };