@ledgerhq/live-common 21.36.2 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (931) 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 +1 -0
  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/utils.js +1 -1
  109. package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
  110. package/lib/families/celo/types.d.ts +0 -5
  111. package/lib/families/celo/types.d.ts.map +1 -1
  112. package/lib/families/celo/types.js +0 -3
  113. package/lib/families/celo/types.js.map +1 -1
  114. package/lib/families/cosmos/api/Cosmos.js +1 -1
  115. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  116. package/lib/families/cosmos/bridge.test.d.ts +2 -0
  117. package/lib/families/cosmos/bridge.test.d.ts.map +1 -0
  118. package/lib/families/cosmos/bridge.test.js +11 -0
  119. package/lib/families/cosmos/bridge.test.js.map +1 -0
  120. package/lib/families/cosmos/js-signOperation.d.ts.map +1 -1
  121. package/lib/families/cosmos/js-signOperation.js.map +1 -1
  122. package/lib/families/cosmos/js-synchronisation.d.ts.map +1 -1
  123. package/lib/families/cosmos/js-synchronisation.js +2 -1
  124. package/lib/families/cosmos/js-synchronisation.js.map +1 -1
  125. package/lib/families/cosmos/logic.d.ts +0 -9
  126. package/lib/families/cosmos/logic.d.ts.map +1 -1
  127. package/lib/families/cosmos/logic.js +5 -20
  128. package/lib/families/cosmos/logic.js.map +1 -1
  129. package/lib/families/cosmos/types.d.ts +0 -190
  130. package/lib/families/cosmos/types.d.ts.map +1 -1
  131. package/lib/families/cosmos/types.js +0 -370
  132. package/lib/families/cosmos/types.js.map +1 -1
  133. package/lib/families/crypto_org/js-buildTransaction.js +1 -1
  134. package/lib/families/crypto_org/js-buildTransaction.js.map +1 -1
  135. package/lib/families/crypto_org/js-signOperation.d.ts.map +1 -1
  136. package/lib/families/crypto_org/js-signOperation.js +54 -62
  137. package/lib/families/crypto_org/js-signOperation.js.map +1 -1
  138. package/lib/families/crypto_org/types.d.ts +0 -5
  139. package/lib/families/crypto_org/types.d.ts.map +1 -1
  140. package/lib/families/crypto_org/types.js +0 -3
  141. package/lib/families/crypto_org/types.js.map +1 -1
  142. package/lib/families/elrond/js-signOperation.d.ts.map +1 -1
  143. package/lib/families/elrond/js-signOperation.js +43 -50
  144. package/lib/families/elrond/js-signOperation.js.map +1 -1
  145. package/lib/families/elrond/types.d.ts +1 -6
  146. package/lib/families/elrond/types.d.ts.map +1 -1
  147. package/lib/families/elrond/types.js +0 -3
  148. package/lib/families/elrond/types.js.map +1 -1
  149. package/lib/families/ethereum/bridge/js.d.ts.map +1 -1
  150. package/lib/families/ethereum/bridge/js.js +6 -1
  151. package/lib/families/ethereum/bridge/js.js.map +1 -1
  152. package/lib/families/ethereum/bridge.test.d.ts +2 -0
  153. package/lib/families/ethereum/bridge.test.d.ts.map +1 -0
  154. package/lib/families/ethereum/bridge.test.js +11 -0
  155. package/lib/families/ethereum/bridge.test.js.map +1 -0
  156. package/lib/families/ethereum/modules/erc1155.js +9 -9
  157. package/lib/families/ethereum/modules/erc1155.js.map +1 -1
  158. package/lib/families/ethereum/modules/erc721.d.ts.map +1 -1
  159. package/lib/families/ethereum/modules/erc721.js +12 -16
  160. package/lib/families/ethereum/modules/erc721.js.map +1 -1
  161. package/lib/families/ethereum/nft.unit.test.d.ts +2 -0
  162. package/lib/families/ethereum/nft.unit.test.d.ts.map +1 -0
  163. package/lib/families/ethereum/{nft.merging.unit.test.js → nft.unit.test.js} +61 -6
  164. package/lib/families/ethereum/nft.unit.test.js.map +1 -0
  165. package/lib/families/ethereum/nftResolvers.d.ts +19 -0
  166. package/lib/families/ethereum/nftResolvers.d.ts.map +1 -0
  167. package/lib/families/ethereum/nftResolvers.js +121 -0
  168. package/lib/families/ethereum/nftResolvers.js.map +1 -0
  169. package/lib/families/ethereum/synchronisation.js +2 -2
  170. package/lib/families/ethereum/synchronisation.js.map +1 -1
  171. package/lib/families/ethereum/types.d.ts +0 -5
  172. package/lib/families/ethereum/types.d.ts.map +1 -1
  173. package/lib/families/ethereum/types.js +0 -3
  174. package/lib/families/ethereum/types.js.map +1 -1
  175. package/lib/families/filecoin/types.d.ts +0 -5
  176. package/lib/families/filecoin/types.d.ts.map +1 -1
  177. package/lib/families/filecoin/types.js +0 -3
  178. package/lib/families/filecoin/types.js.map +1 -1
  179. package/lib/families/neo/types.d.ts +0 -5
  180. package/lib/families/neo/types.d.ts.map +1 -1
  181. package/lib/families/neo/types.js +0 -3
  182. package/lib/families/neo/types.js.map +1 -1
  183. package/lib/families/polkadot/bridge.test.d.ts +2 -0
  184. package/lib/families/polkadot/bridge.test.d.ts.map +1 -0
  185. package/lib/families/polkadot/bridge.test.js +145 -0
  186. package/lib/families/polkadot/bridge.test.js.map +1 -0
  187. package/lib/families/polkadot/js-signOperation.d.ts.map +1 -1
  188. package/lib/families/polkadot/js-signOperation.js +54 -61
  189. package/lib/families/polkadot/js-signOperation.js.map +1 -1
  190. package/lib/families/polkadot/types.d.ts +0 -5
  191. package/lib/families/polkadot/types.d.ts.map +1 -1
  192. package/lib/families/polkadot/types.js +0 -3
  193. package/lib/families/polkadot/types.js.map +1 -1
  194. package/lib/families/ripple/bridge/js.d.ts.map +1 -1
  195. package/lib/families/ripple/bridge/js.js +299 -313
  196. package/lib/families/ripple/bridge/js.js.map +1 -1
  197. package/lib/families/ripple/bridge.test.d.ts +2 -0
  198. package/lib/families/ripple/bridge.test.d.ts.map +1 -0
  199. package/lib/{libcore/buildAccount/buildSubAccounts.js → families/ripple/bridge.test.js} +17 -20
  200. package/lib/families/ripple/bridge.test.js.map +1 -0
  201. package/lib/families/ripple/types.d.ts +0 -59
  202. package/lib/families/ripple/types.d.ts.map +1 -1
  203. package/lib/families/ripple/types.js +0 -87
  204. package/lib/families/ripple/types.js.map +1 -1
  205. package/lib/families/solana/api/cached.d.ts.map +1 -1
  206. package/lib/families/solana/api/cached.js +10 -0
  207. package/lib/families/solana/api/cached.js.map +1 -1
  208. package/lib/families/solana/api/chain/account/index.d.ts +1 -1
  209. package/lib/families/solana/api/chain/account/index.d.ts.map +1 -1
  210. package/lib/families/solana/api/chain/account/index.js +2 -1
  211. package/lib/families/solana/api/chain/account/index.js.map +1 -1
  212. package/lib/families/solana/api/chain/account/parser.d.ts +5 -0
  213. package/lib/families/solana/api/chain/account/parser.d.ts.map +1 -1
  214. package/lib/families/solana/api/chain/account/parser.js +24 -1
  215. package/lib/families/solana/api/chain/account/parser.js.map +1 -1
  216. package/lib/families/solana/api/chain/account/stake.d.ts +5 -5
  217. package/lib/families/solana/api/chain/account/token.d.ts +5 -5
  218. package/lib/families/solana/api/chain/account/vote.d.ts +252 -0
  219. package/lib/families/solana/api/chain/account/vote.d.ts.map +1 -0
  220. package/lib/families/solana/api/chain/account/vote.js +44 -0
  221. package/lib/families/solana/api/chain/account/vote.js.map +1 -0
  222. package/lib/families/solana/api/chain/index.d.ts +7 -0
  223. package/lib/families/solana/api/chain/index.d.ts.map +1 -1
  224. package/lib/families/solana/api/chain/index.js +35 -0
  225. package/lib/families/solana/api/chain/index.js.map +1 -1
  226. package/lib/families/solana/api/chain/instruction/stake/types.d.ts +7 -7
  227. package/lib/families/solana/api/chain/instruction/system/index.d.ts +15 -0
  228. package/lib/families/solana/api/chain/instruction/system/index.d.ts.map +1 -0
  229. package/lib/families/solana/api/chain/instruction/system/index.js +20 -0
  230. package/lib/families/solana/api/chain/instruction/system/index.js.map +1 -0
  231. package/lib/families/solana/api/chain/instruction/system/types.d.ts +298 -0
  232. package/lib/families/solana/api/chain/instruction/system/types.d.ts.map +1 -0
  233. package/lib/families/solana/api/chain/instruction/system/types.js +117 -0
  234. package/lib/families/solana/api/chain/instruction/system/types.js.map +1 -0
  235. package/lib/families/solana/api/chain/program/parser.d.ts +5 -0
  236. package/lib/families/solana/api/chain/program/parser.d.ts.map +1 -1
  237. package/lib/families/solana/api/chain/program/parser.js +7 -0
  238. package/lib/families/solana/api/chain/program/parser.js.map +1 -1
  239. package/lib/families/solana/api/chain/web3.d.ts +20 -1
  240. package/lib/families/solana/api/chain/web3.d.ts.map +1 -1
  241. package/lib/families/solana/api/chain/web3.js +122 -1
  242. package/lib/families/solana/api/chain/web3.js.map +1 -1
  243. package/lib/families/solana/api/logged.d.ts.map +1 -1
  244. package/lib/families/solana/api/logged.js +5 -0
  245. package/lib/families/solana/api/logged.js.map +1 -1
  246. package/lib/families/solana/bridge/bridge.d.ts.map +1 -1
  247. package/lib/families/solana/bridge/bridge.js +16 -7
  248. package/lib/families/solana/bridge/bridge.js.map +1 -1
  249. package/lib/families/solana/bridge/mock-data.d.ts +116 -11
  250. package/lib/families/solana/bridge/mock-data.d.ts.map +1 -1
  251. package/lib/families/solana/bridge/mock-data.js +19 -493
  252. package/lib/families/solana/bridge/mock-data.js.map +1 -1
  253. package/lib/families/solana/bridge/mock.d.ts.map +1 -1
  254. package/lib/families/solana/bridge/mock.js +1 -0
  255. package/lib/families/solana/bridge/mock.js.map +1 -1
  256. package/lib/families/solana/bridge.test.d.ts +2 -0
  257. package/lib/families/solana/bridge.test.d.ts.map +1 -0
  258. package/lib/families/solana/bridge.test.js +11 -0
  259. package/lib/families/solana/bridge.test.js.map +1 -0
  260. package/lib/families/solana/cli-transaction.d.ts +5 -1
  261. package/lib/families/solana/cli-transaction.d.ts.map +1 -1
  262. package/lib/families/solana/cli-transaction.js +72 -4
  263. package/lib/families/solana/cli-transaction.js.map +1 -1
  264. package/lib/families/solana/deviceTransactionConfig.d.ts +3 -3
  265. package/lib/families/solana/deviceTransactionConfig.d.ts.map +1 -1
  266. package/lib/families/solana/deviceTransactionConfig.js +128 -20
  267. package/lib/families/solana/deviceTransactionConfig.js.map +1 -1
  268. package/lib/families/solana/errors.d.ts +30 -0
  269. package/lib/families/solana/errors.d.ts.map +1 -1
  270. package/lib/families/solana/errors.js +11 -1
  271. package/lib/families/solana/errors.js.map +1 -1
  272. package/lib/families/solana/js-buildTransaction.d.ts.map +1 -1
  273. package/lib/families/solana/js-buildTransaction.js +13 -7
  274. package/lib/families/solana/js-buildTransaction.js.map +1 -1
  275. package/lib/families/solana/js-estimateMaxSpendable.d.ts.map +1 -1
  276. package/lib/families/solana/js-estimateMaxSpendable.js +26 -17
  277. package/lib/families/solana/js-estimateMaxSpendable.js.map +1 -1
  278. package/lib/families/solana/js-getTransactionStatus.d.ts +1 -1
  279. package/lib/families/solana/js-getTransactionStatus.d.ts.map +1 -1
  280. package/lib/families/solana/js-getTransactionStatus.js +36 -79
  281. package/lib/families/solana/js-getTransactionStatus.js.map +1 -1
  282. package/lib/families/solana/js-preload-data.d.ts +7 -0
  283. package/lib/families/solana/js-preload-data.d.ts.map +1 -0
  284. package/lib/families/solana/js-preload-data.js +45 -0
  285. package/lib/families/solana/js-preload-data.js.map +1 -0
  286. package/lib/families/solana/js-preload.d.ts +6 -0
  287. package/lib/families/solana/js-preload.d.ts.map +1 -0
  288. package/lib/{libcore/buildBigNumber.js → families/solana/js-preload.js} +60 -28
  289. package/lib/families/solana/js-preload.js.map +1 -0
  290. package/lib/families/solana/js-prepareTransaction.d.ts.map +1 -1
  291. package/lib/families/solana/js-prepareTransaction.js +453 -142
  292. package/lib/families/solana/js-prepareTransaction.js.map +1 -1
  293. package/lib/families/solana/js-signOperation.d.ts.map +1 -1
  294. package/lib/families/solana/js-signOperation.js +90 -68
  295. package/lib/families/solana/js-signOperation.js.map +1 -1
  296. package/lib/families/solana/js-synchronization.d.ts.map +1 -1
  297. package/lib/families/solana/js-synchronization.js +159 -57
  298. package/lib/families/solana/js-synchronization.js.map +1 -1
  299. package/lib/families/solana/logic.d.ts +16 -0
  300. package/lib/families/solana/logic.d.ts.map +1 -1
  301. package/lib/families/solana/logic.js +59 -1
  302. package/lib/families/solana/logic.js.map +1 -1
  303. package/lib/families/solana/react.d.ts +7 -0
  304. package/lib/families/solana/react.d.ts.map +1 -0
  305. package/lib/families/solana/react.js +56 -0
  306. package/lib/families/solana/react.js.map +1 -0
  307. package/lib/families/solana/serialization.d.ts +4 -0
  308. package/lib/families/solana/serialization.d.ts.map +1 -0
  309. package/lib/families/solana/serialization.js +16 -0
  310. package/lib/families/solana/serialization.js.map +1 -0
  311. package/lib/families/solana/specs.d.ts.map +1 -1
  312. package/lib/families/solana/specs.js +320 -0
  313. package/lib/families/solana/specs.js.map +1 -1
  314. package/lib/families/solana/speculos-deviceActions.d.ts +5 -0
  315. package/lib/families/solana/speculos-deviceActions.d.ts.map +1 -1
  316. package/lib/families/solana/speculos-deviceActions.js +189 -14
  317. package/lib/families/solana/speculos-deviceActions.js.map +1 -1
  318. package/lib/families/solana/test-dataset.d.ts +18 -0
  319. package/lib/families/solana/test-dataset.d.ts.map +1 -1
  320. package/lib/families/solana/test-dataset.js +694 -202
  321. package/lib/families/solana/test-dataset.js.map +1 -1
  322. package/lib/families/solana/test-specifics.d.ts +9 -0
  323. package/lib/families/solana/test-specifics.d.ts.map +1 -0
  324. package/lib/families/solana/test-specifics.js +238 -0
  325. package/lib/families/solana/test-specifics.js.map +1 -0
  326. package/lib/families/solana/transaction.d.ts.map +1 -1
  327. package/lib/families/solana/transaction.js +69 -13
  328. package/lib/families/solana/transaction.js.map +1 -1
  329. package/lib/families/solana/types.d.ts +129 -21
  330. package/lib/families/solana/types.d.ts.map +1 -1
  331. package/lib/families/solana/types.js +0 -3
  332. package/lib/families/solana/types.js.map +1 -1
  333. package/lib/families/solana/utils.d.ts +6 -0
  334. package/lib/families/solana/utils.d.ts.map +1 -1
  335. package/lib/families/solana/utils.js +76 -4
  336. package/lib/families/solana/utils.js.map +1 -1
  337. package/lib/families/solana/validator-app/index.d.ts +22 -0
  338. package/lib/families/solana/validator-app/index.d.ts.map +1 -0
  339. package/lib/families/{algorand/libcore-getFeesForTransaction.js → solana/validator-app/index.js} +45 -28
  340. package/lib/families/solana/validator-app/index.js.map +1 -0
  341. package/lib/families/stellar/api/horizon.d.ts +2 -1
  342. package/lib/families/stellar/api/horizon.d.ts.map +1 -1
  343. package/lib/families/stellar/api/horizon.js.map +1 -1
  344. package/lib/families/stellar/bridge.test.d.ts +2 -0
  345. package/lib/families/stellar/bridge.test.d.ts.map +1 -0
  346. package/lib/families/stellar/bridge.test.js +11 -0
  347. package/lib/families/stellar/bridge.test.js.map +1 -0
  348. package/lib/families/stellar/js-signOperation.d.ts.map +1 -1
  349. package/lib/families/stellar/js-signOperation.js +44 -51
  350. package/lib/families/stellar/js-signOperation.js.map +1 -1
  351. package/lib/families/stellar/test-dataset.d.ts.map +1 -1
  352. package/lib/families/stellar/test-dataset.js +2 -4
  353. package/lib/families/stellar/test-dataset.js.map +1 -1
  354. package/lib/families/stellar/types.d.ts +0 -5
  355. package/lib/families/stellar/types.d.ts.map +1 -1
  356. package/lib/families/stellar/types.js +1 -3
  357. package/lib/families/stellar/types.js.map +1 -1
  358. package/lib/families/tezos/bridge/js.d.ts.map +1 -1
  359. package/lib/families/tezos/bridge/js.js +16 -3
  360. package/lib/families/tezos/bridge/js.js.map +1 -1
  361. package/lib/families/tezos/bridge.test.d.ts +2 -0
  362. package/lib/families/tezos/bridge.test.d.ts.map +1 -0
  363. package/lib/families/tezos/{test-specifics.js → bridge.test.js} +36 -33
  364. package/lib/families/tezos/bridge.test.js.map +1 -0
  365. package/lib/families/tezos/types.d.ts +0 -86
  366. package/lib/families/tezos/types.d.ts.map +1 -1
  367. package/lib/families/tezos/types.js +0 -138
  368. package/lib/families/tezos/types.js.map +1 -1
  369. package/lib/families/tron/bridge/js.d.ts.map +1 -1
  370. package/lib/families/tron/bridge/js.js +159 -167
  371. package/lib/families/tron/bridge/js.js.map +1 -1
  372. package/lib/families/tron/types.d.ts +0 -6
  373. package/lib/families/tron/types.d.ts.map +1 -1
  374. package/lib/families/tron/types.js +0 -4
  375. package/lib/families/tron/types.js.map +1 -1
  376. package/lib/generated/cli-transaction.d.ts +5 -1
  377. package/lib/generated/cli-transaction.d.ts.map +1 -1
  378. package/lib/generated/customAddressValidation.d.ts +1 -10
  379. package/lib/generated/customAddressValidation.d.ts.map +1 -1
  380. package/lib/generated/customAddressValidation.js +1 -9
  381. package/lib/generated/customAddressValidation.js.map +1 -1
  382. package/lib/generated/speculos-deviceActions.d.ts +1 -0
  383. package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
  384. package/lib/generated/types.d.ts +0 -92
  385. package/lib/generated/types.d.ts.map +1 -1
  386. package/lib/generated/types.js +0 -34
  387. package/lib/generated/types.js.map +1 -1
  388. package/lib/mock/account.d.ts.map +1 -1
  389. package/lib/mock/account.js +7 -1
  390. package/lib/mock/account.js.map +1 -1
  391. package/lib/nft/NftMetadataProvider/index.d.ts +9 -8
  392. package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -1
  393. package/lib/nft/NftMetadataProvider/index.js +135 -69
  394. package/lib/nft/NftMetadataProvider/index.js.map +1 -1
  395. package/lib/nft/NftMetadataProvider/types.d.ts +13 -7
  396. package/lib/nft/NftMetadataProvider/types.d.ts.map +1 -1
  397. package/lib/nft/helpers.d.ts +24 -8
  398. package/lib/nft/helpers.d.ts.map +1 -1
  399. package/lib/nft/helpers.js +125 -40
  400. package/lib/nft/helpers.js.map +1 -1
  401. package/lib/nft/nftId.d.ts +7 -2
  402. package/lib/nft/nftId.d.ts.map +1 -1
  403. package/lib/nft/nftId.js +5 -4
  404. package/lib/nft/nftId.js.map +1 -1
  405. package/lib/nft/support.d.ts +2 -1
  406. package/lib/nft/support.d.ts.map +1 -1
  407. package/lib/nft/support.js +39 -1
  408. package/lib/nft/support.js.map +1 -1
  409. package/lib/reconciliation.d.ts.map +1 -1
  410. package/lib/reconciliation.js +8 -5
  411. package/lib/reconciliation.js.map +1 -1
  412. package/lib/types/account.d.ts +7 -3
  413. package/lib/types/account.d.ts.map +1 -1
  414. package/lib/types/bridge.d.ts +16 -1
  415. package/lib/types/bridge.d.ts.map +1 -1
  416. package/lib/types/nft.d.ts +28 -6
  417. package/lib/types/nft.d.ts.map +1 -1
  418. package/package.json +3 -4
  419. package/src/__tests__/test-helpers/bridge.ts +11 -7
  420. package/src/__tests__/test-helpers/libcore-setup.native.ts +0 -1
  421. package/src/__tests__/test-helpers/libcore-setup.ts +1 -7
  422. package/src/__tests__/test-helpers/setup.ts +1 -0
  423. package/src/account/formatters.ts +6 -8
  424. package/src/account/serialization.ts +46 -6
  425. package/src/account/support.ts +2 -19
  426. package/src/api/Ethereum.ts +36 -6
  427. package/src/api/Ledger.ts +1 -12
  428. package/src/api/explorerConfig/index.ts +8 -0
  429. package/src/appSupportsQuitApp.ts +1 -0
  430. package/src/apps/support.ts +1 -0
  431. package/src/bot/index.ts +1 -6
  432. package/src/bridge/impl.ts +5 -17
  433. package/src/bridge/jsHelpers.ts +219 -216
  434. package/src/cross.ts +2 -4
  435. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +6290 -0
  436. package/src/derivation.ts +1 -85
  437. package/src/env.ts +12 -23
  438. package/src/families/algorand/types.ts +2 -255
  439. package/src/{__tests__/__snapshots__/all.libcore.ts.snap → families/bitcoin/__snapshots__/bridge.test.ts.snap} +7085 -14082
  440. package/src/families/bitcoin/account.ts +0 -1
  441. package/src/families/bitcoin/bridge.test.ts +6 -0
  442. package/src/families/bitcoin/js-signOperation.ts +14 -22
  443. package/src/families/bitcoin/js-synchronisation.ts +0 -1
  444. package/src/families/bitcoin/logic.ts +2 -77
  445. package/src/families/bitcoin/networks.ts +1 -1
  446. package/src/families/bitcoin/serialization.ts +0 -4
  447. package/src/families/bitcoin/specs.ts +5 -3
  448. package/src/families/bitcoin/transaction.ts +0 -191
  449. package/src/families/bitcoin/types.ts +0 -225
  450. package/src/families/bitcoin/wallet-btc/explorer/index.ts +21 -21
  451. package/src/families/bitcoin/wallet-btc/utils.ts +1 -1
  452. package/src/families/celo/types.ts +0 -6
  453. package/src/families/cosmos/__snapshots__/bridge.test.ts.snap +1156 -0
  454. package/src/families/cosmos/api/Cosmos.ts +1 -1
  455. package/src/families/cosmos/bridge.test.ts +6 -0
  456. package/src/families/cosmos/js-signOperation.ts +8 -0
  457. package/src/families/cosmos/js-synchronisation.ts +3 -1
  458. package/src/families/cosmos/logic.ts +4 -37
  459. package/src/families/cosmos/types.ts +1 -619
  460. package/src/families/crypto_org/js-buildTransaction.ts +1 -1
  461. package/src/families/crypto_org/js-signOperation.ts +14 -19
  462. package/src/families/crypto_org/types.ts +1 -5
  463. package/src/families/elrond/js-signOperation.ts +10 -14
  464. package/src/families/elrond/types.ts +2 -6
  465. package/src/families/ethereum/__snapshots__/bridge.test.ts.snap +3263 -0
  466. package/src/families/ethereum/bridge/js.ts +5 -0
  467. package/src/families/ethereum/bridge.test.ts +6 -0
  468. package/src/families/ethereum/modules/erc1155.ts +9 -9
  469. package/src/families/ethereum/modules/erc721.ts +11 -11
  470. package/src/families/ethereum/nft.unit.test.ts +147 -0
  471. package/src/families/ethereum/nftResolvers.ts +79 -0
  472. package/src/families/ethereum/synchronisation.ts +7 -2
  473. package/src/families/ethereum/types.ts +1 -6
  474. package/src/families/filecoin/types.ts +0 -6
  475. package/src/families/neo/types.ts +1 -5
  476. package/src/families/polkadot/bridge.test.ts +81 -0
  477. package/src/families/polkadot/js-signOperation.ts +61 -61
  478. package/src/families/polkadot/types.ts +1 -5
  479. package/src/families/ripple/bridge/js.ts +257 -260
  480. package/src/families/ripple/bridge.test.ts +12 -0
  481. package/src/families/ripple/types.ts +0 -143
  482. package/src/families/solana/__snapshots__/bridge.test.ts.snap +116 -0
  483. package/src/families/solana/api/cached.ts +40 -0
  484. package/src/families/solana/api/chain/account/index.ts +5 -1
  485. package/src/families/solana/api/chain/account/parser.ts +28 -0
  486. package/src/families/solana/api/chain/account/vote.ts +63 -0
  487. package/src/families/solana/api/chain/index.ts +63 -0
  488. package/src/families/solana/api/chain/instruction/system/index.ts +30 -0
  489. package/src/families/solana/api/chain/instruction/system/types.ts +141 -0
  490. package/src/families/solana/api/chain/program/parser.ts +18 -0
  491. package/src/families/solana/api/chain/web3.ts +173 -1
  492. package/src/families/solana/api/logged.ts +5 -0
  493. package/src/families/solana/bridge/bridge.ts +27 -4
  494. package/src/families/solana/bridge/mock-data.ts +19 -588
  495. package/src/families/solana/bridge/mock.ts +1 -0
  496. package/src/families/solana/bridge.test.ts +6 -0
  497. package/src/families/solana/cli-transaction.ts +87 -3
  498. package/src/families/solana/deviceTransactionConfig.ts +180 -24
  499. package/src/families/solana/errors.ts +40 -0
  500. package/src/families/solana/js-buildTransaction.ts +19 -8
  501. package/src/families/solana/js-estimateMaxSpendable.ts +20 -7
  502. package/src/families/solana/js-getTransactionStatus.ts +34 -93
  503. package/src/families/solana/js-preload-data.ts +53 -0
  504. package/src/families/solana/js-preload.ts +66 -0
  505. package/src/families/solana/js-prepareTransaction.ts +471 -148
  506. package/src/families/solana/js-signOperation.ts +177 -74
  507. package/src/families/solana/js-synchronization.ts +195 -54
  508. package/src/families/solana/logic.ts +80 -0
  509. package/src/families/solana/react.ts +81 -0
  510. package/src/families/solana/serialization.ts +17 -0
  511. package/src/families/solana/specs.ts +411 -1
  512. package/src/families/solana/speculos-deviceActions.ts +192 -15
  513. package/src/families/solana/test-dataset.ts +707 -327
  514. package/src/families/solana/test-specifics.ts +171 -0
  515. package/src/families/solana/transaction.ts +93 -16
  516. package/src/families/solana/types.ts +158 -27
  517. package/src/families/solana/utils.ts +52 -1
  518. package/src/families/solana/validator-app/index.ts +106 -0
  519. package/src/families/stellar/__snapshots__/bridge.test.ts.snap +2570 -0
  520. package/src/families/stellar/api/horizon.ts +2 -1
  521. package/src/families/stellar/bridge.test.ts +6 -0
  522. package/src/families/stellar/js-signOperation.ts +10 -14
  523. package/src/families/stellar/test-dataset.ts +2 -4
  524. package/src/families/stellar/types.ts +0 -5
  525. package/src/families/tezos/bridge/js.ts +16 -1
  526. package/src/families/tezos/bridge.test.ts +24 -0
  527. package/src/families/tezos/types.ts +0 -224
  528. package/src/families/tron/bridge/js.ts +57 -58
  529. package/src/families/tron/types.ts +1 -6
  530. package/src/generated/customAddressValidation.ts +0 -6
  531. package/src/generated/types.ts +0 -202
  532. package/src/mock/account.ts +7 -1
  533. package/src/nft/NftMetadataProvider/index.tsx +163 -75
  534. package/src/nft/NftMetadataProvider/types.ts +31 -8
  535. package/src/nft/helpers.ts +169 -35
  536. package/src/nft/nftId.ts +13 -4
  537. package/src/nft/support.ts +14 -1
  538. package/src/reconciliation.ts +10 -5
  539. package/src/types/account.ts +7 -3
  540. package/src/types/bridge.ts +20 -0
  541. package/src/types/nft.ts +32 -9
  542. package/lib/__tests__/all.libcore.d.ts +0 -2
  543. package/lib/__tests__/all.libcore.d.ts.map +0 -1
  544. package/lib/__tests__/all.libcore.js +0 -203
  545. package/lib/__tests__/all.libcore.js.map +0 -1
  546. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.d.ts +0 -2
  547. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.d.ts.map +0 -1
  548. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.js +0 -12
  549. package/lib/__tests__/test-helpers/implement-react-native-libcore/index.js.map +0 -1
  550. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.d.ts +0 -2
  551. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.d.ts.map +0 -1
  552. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.js +0 -10
  553. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.android.js.map +0 -1
  554. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.d.ts +0 -2
  555. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.d.ts.map +0 -1
  556. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.js +0 -10
  557. package/lib/__tests__/test-helpers/implement-react-native-libcore/specific.ios.js.map +0 -1
  558. package/lib/bridge/shared.d.ts +0 -6
  559. package/lib/bridge/shared.d.ts.map +0 -1
  560. package/lib/bridge/shared.js +0 -78
  561. package/lib/bridge/shared.js.map +0 -1
  562. package/lib/families/algorand/bridge/libcore.d.ts +0 -17
  563. package/lib/families/algorand/bridge/libcore.d.ts.map +0 -1
  564. package/lib/families/algorand/bridge/libcore.js +0 -404
  565. package/lib/families/algorand/bridge/libcore.js.map +0 -1
  566. package/lib/families/algorand/buildASAOperation.d.ts +0 -8
  567. package/lib/families/algorand/buildASAOperation.d.ts.map +0 -1
  568. package/lib/families/algorand/buildASAOperation.js +0 -140
  569. package/lib/families/algorand/buildASAOperation.js.map +0 -1
  570. package/lib/families/algorand/libcore-broadcast.d.ts +0 -3
  571. package/lib/families/algorand/libcore-broadcast.d.ts.map +0 -1
  572. package/lib/families/algorand/libcore-broadcast.js +0 -63
  573. package/lib/families/algorand/libcore-broadcast.js.map +0 -1
  574. package/lib/families/algorand/libcore-buildOperation.d.ts +0 -7
  575. package/lib/families/algorand/libcore-buildOperation.d.ts.map +0 -1
  576. package/lib/families/algorand/libcore-buildOperation.js +0 -131
  577. package/lib/families/algorand/libcore-buildOperation.js.map +0 -1
  578. package/lib/families/algorand/libcore-buildSubAccounts.d.ts +0 -11
  579. package/lib/families/algorand/libcore-buildSubAccounts.d.ts.map +0 -1
  580. package/lib/families/algorand/libcore-buildSubAccounts.js +0 -221
  581. package/lib/families/algorand/libcore-buildSubAccounts.js.map +0 -1
  582. package/lib/families/algorand/libcore-buildTransaction.d.ts +0 -13
  583. package/lib/families/algorand/libcore-buildTransaction.d.ts.map +0 -1
  584. package/lib/families/algorand/libcore-buildTransaction.js +0 -144
  585. package/lib/families/algorand/libcore-buildTransaction.js.map +0 -1
  586. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts +0 -17
  587. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts.map +0 -1
  588. package/lib/families/algorand/libcore-getFeesForTransaction.js.map +0 -1
  589. package/lib/families/algorand/libcore-postBuildAccount.d.ts +0 -8
  590. package/lib/families/algorand/libcore-postBuildAccount.d.ts.map +0 -1
  591. package/lib/families/algorand/libcore-postBuildAccount.js +0 -99
  592. package/lib/families/algorand/libcore-postBuildAccount.js.map +0 -1
  593. package/lib/families/algorand/libcore-signOperation.d.ts +0 -4
  594. package/lib/families/algorand/libcore-signOperation.d.ts.map +0 -1
  595. package/lib/families/algorand/libcore-signOperation.js +0 -146
  596. package/lib/families/algorand/libcore-signOperation.js.map +0 -1
  597. package/lib/families/bitcoin/bridge/libcore.d.ts +0 -8
  598. package/lib/families/bitcoin/bridge/libcore.d.ts.map +0 -1
  599. package/lib/families/bitcoin/bridge/libcore.js +0 -333
  600. package/lib/families/bitcoin/bridge/libcore.js.map +0 -1
  601. package/lib/families/bitcoin/customAddressValidation.d.ts +0 -8
  602. package/lib/families/bitcoin/customAddressValidation.d.ts.map +0 -1
  603. package/lib/families/bitcoin/customAddressValidation.js +0 -67
  604. package/lib/families/bitcoin/customAddressValidation.js.map +0 -1
  605. package/lib/families/bitcoin/libcore-broadcast.d.ts +0 -3
  606. package/lib/families/bitcoin/libcore-broadcast.d.ts.map +0 -1
  607. package/lib/families/bitcoin/libcore-broadcast.js +0 -61
  608. package/lib/families/bitcoin/libcore-broadcast.js.map +0 -1
  609. package/lib/families/bitcoin/libcore-buildOperation.d.ts +0 -9
  610. package/lib/families/bitcoin/libcore-buildOperation.d.ts.map +0 -1
  611. package/lib/families/bitcoin/libcore-buildOperation.js +0 -74
  612. package/lib/families/bitcoin/libcore-buildOperation.js.map +0 -1
  613. package/lib/families/bitcoin/libcore-buildTransaction.d.ts +0 -14
  614. package/lib/families/bitcoin/libcore-buildTransaction.d.ts.map +0 -1
  615. package/lib/families/bitcoin/libcore-buildTransaction.js +0 -199
  616. package/lib/families/bitcoin/libcore-buildTransaction.js.map +0 -1
  617. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.d.ts +0 -12
  618. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  619. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.js +0 -87
  620. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.js.map +0 -1
  621. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.d.ts +0 -2
  622. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.d.ts.map +0 -1
  623. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.js +0 -71
  624. package/lib/families/bitcoin/libcore-getAccountNetworkInfo.test.js.map +0 -1
  625. package/lib/families/bitcoin/libcore-getFeesForTransaction.d.ts +0 -10
  626. package/lib/families/bitcoin/libcore-getFeesForTransaction.d.ts.map +0 -1
  627. package/lib/families/bitcoin/libcore-getFeesForTransaction.js +0 -110
  628. package/lib/families/bitcoin/libcore-getFeesForTransaction.js.map +0 -1
  629. package/lib/families/bitcoin/libcore-postBuildAccount.d.ts +0 -8
  630. package/lib/families/bitcoin/libcore-postBuildAccount.d.ts.map +0 -1
  631. package/lib/families/bitcoin/libcore-postBuildAccount.js +0 -108
  632. package/lib/families/bitcoin/libcore-postBuildAccount.js.map +0 -1
  633. package/lib/families/bitcoin/libcore-signOperation.d.ts +0 -4
  634. package/lib/families/bitcoin/libcore-signOperation.d.ts.map +0 -1
  635. package/lib/families/bitcoin/libcore-signOperation.js +0 -328
  636. package/lib/families/bitcoin/libcore-signOperation.js.map +0 -1
  637. package/lib/families/cosmos/bridge/libcore.d.ts +0 -8
  638. package/lib/families/cosmos/bridge/libcore.d.ts.map +0 -1
  639. package/lib/families/cosmos/bridge/libcore.js +0 -216
  640. package/lib/families/cosmos/bridge/libcore.js.map +0 -1
  641. package/lib/families/cosmos/libcore-broadcast.d.ts +0 -3
  642. package/lib/families/cosmos/libcore-broadcast.d.ts.map +0 -1
  643. package/lib/families/cosmos/libcore-broadcast.js +0 -66
  644. package/lib/families/cosmos/libcore-broadcast.js.map +0 -1
  645. package/lib/families/cosmos/libcore-buildOperation.d.ts +0 -8
  646. package/lib/families/cosmos/libcore-buildOperation.d.ts.map +0 -1
  647. package/lib/families/cosmos/libcore-buildOperation.js +0 -217
  648. package/lib/families/cosmos/libcore-buildOperation.js.map +0 -1
  649. package/lib/families/cosmos/libcore-buildTransaction.d.ts +0 -14
  650. package/lib/families/cosmos/libcore-buildTransaction.d.ts.map +0 -1
  651. package/lib/families/cosmos/libcore-buildTransaction.js +0 -275
  652. package/lib/families/cosmos/libcore-buildTransaction.js.map +0 -1
  653. package/lib/families/cosmos/libcore-getFeesForTransaction.d.ts +0 -18
  654. package/lib/families/cosmos/libcore-getFeesForTransaction.d.ts.map +0 -1
  655. package/lib/families/cosmos/libcore-getFeesForTransaction.js +0 -84
  656. package/lib/families/cosmos/libcore-getFeesForTransaction.js.map +0 -1
  657. package/lib/families/cosmos/libcore-getTransactionStatus.d.ts +0 -5
  658. package/lib/families/cosmos/libcore-getTransactionStatus.d.ts.map +0 -1
  659. package/lib/families/cosmos/libcore-getTransactionStatus.js +0 -272
  660. package/lib/families/cosmos/libcore-getTransactionStatus.js.map +0 -1
  661. package/lib/families/cosmos/libcore-mergeOperations.d.ts +0 -4
  662. package/lib/families/cosmos/libcore-mergeOperations.d.ts.map +0 -1
  663. package/lib/families/cosmos/libcore-mergeOperations.js +0 -49
  664. package/lib/families/cosmos/libcore-mergeOperations.js.map +0 -1
  665. package/lib/families/cosmos/libcore-postBuildAccount.d.ts +0 -8
  666. package/lib/families/cosmos/libcore-postBuildAccount.d.ts.map +0 -1
  667. package/lib/families/cosmos/libcore-postBuildAccount.js +0 -313
  668. package/lib/families/cosmos/libcore-postBuildAccount.js.map +0 -1
  669. package/lib/families/cosmos/libcore-signOperation.d.ts +0 -4
  670. package/lib/families/cosmos/libcore-signOperation.d.ts.map +0 -1
  671. package/lib/families/cosmos/libcore-signOperation.js +0 -142
  672. package/lib/families/cosmos/libcore-signOperation.js.map +0 -1
  673. package/lib/families/cosmos/message.d.ts +0 -5
  674. package/lib/families/cosmos/message.d.ts.map +0 -1
  675. package/lib/families/cosmos/message.js +0 -233
  676. package/lib/families/cosmos/message.js.map +0 -1
  677. package/lib/families/cosmos/test-specifics.d.ts +0 -3
  678. package/lib/families/cosmos/test-specifics.d.ts.map +0 -1
  679. package/lib/families/cosmos/test-specifics.js +0 -307
  680. package/lib/families/cosmos/test-specifics.js.map +0 -1
  681. package/lib/families/ethereum/nft.merging.unit.test.d.ts +0 -2
  682. package/lib/families/ethereum/nft.merging.unit.test.d.ts.map +0 -1
  683. package/lib/families/ethereum/nft.merging.unit.test.js.map +0 -1
  684. package/lib/families/filecoin/customAddressValidation.d.ts +0 -8
  685. package/lib/families/filecoin/customAddressValidation.d.ts.map +0 -1
  686. package/lib/families/filecoin/customAddressValidation.js +0 -50
  687. package/lib/families/filecoin/customAddressValidation.js.map +0 -1
  688. package/lib/families/polkadot/test-specifics.d.ts +0 -3
  689. package/lib/families/polkadot/test-specifics.d.ts.map +0 -1
  690. package/lib/families/polkadot/test-specifics.js +0 -91
  691. package/lib/families/polkadot/test-specifics.js.map +0 -1
  692. package/lib/families/tezos/bridge/libcore.d.ts +0 -14
  693. package/lib/families/tezos/bridge/libcore.d.ts.map +0 -1
  694. package/lib/families/tezos/bridge/libcore.js +0 -336
  695. package/lib/families/tezos/bridge/libcore.js.map +0 -1
  696. package/lib/families/tezos/libcore-broadcast.d.ts +0 -3
  697. package/lib/families/tezos/libcore-broadcast.d.ts.map +0 -1
  698. package/lib/families/tezos/libcore-broadcast.js +0 -61
  699. package/lib/families/tezos/libcore-broadcast.js.map +0 -1
  700. package/lib/families/tezos/libcore-buildOperation.d.ts +0 -7
  701. package/lib/families/tezos/libcore-buildOperation.d.ts.map +0 -1
  702. package/lib/families/tezos/libcore-buildOperation.js +0 -93
  703. package/lib/families/tezos/libcore-buildOperation.js.map +0 -1
  704. package/lib/families/tezos/libcore-buildSubAccounts.d.ts +0 -11
  705. package/lib/families/tezos/libcore-buildSubAccounts.d.ts.map +0 -1
  706. package/lib/families/tezos/libcore-buildSubAccounts.js +0 -214
  707. package/lib/families/tezos/libcore-buildSubAccounts.js.map +0 -1
  708. package/lib/families/tezos/libcore-buildTransaction.d.ts +0 -14
  709. package/lib/families/tezos/libcore-buildTransaction.d.ts.map +0 -1
  710. package/lib/families/tezos/libcore-buildTransaction.js +0 -225
  711. package/lib/families/tezos/libcore-buildTransaction.js.map +0 -1
  712. package/lib/families/tezos/libcore-getAccountNetworkInfo.d.ts +0 -11
  713. package/lib/families/tezos/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  714. package/lib/families/tezos/libcore-getAccountNetworkInfo.js +0 -66
  715. package/lib/families/tezos/libcore-getAccountNetworkInfo.js.map +0 -1
  716. package/lib/families/tezos/libcore-getFeesForTransaction.d.ts +0 -18
  717. package/lib/families/tezos/libcore-getFeesForTransaction.d.ts.map +0 -1
  718. package/lib/families/tezos/libcore-getFeesForTransaction.js +0 -73
  719. package/lib/families/tezos/libcore-getFeesForTransaction.js.map +0 -1
  720. package/lib/families/tezos/libcore-signOperation.d.ts +0 -4
  721. package/lib/families/tezos/libcore-signOperation.d.ts.map +0 -1
  722. package/lib/families/tezos/libcore-signOperation.js +0 -187
  723. package/lib/families/tezos/libcore-signOperation.js.map +0 -1
  724. package/lib/families/tezos/test-specifics.d.ts +0 -3
  725. package/lib/families/tezos/test-specifics.d.ts.map +0 -1
  726. package/lib/families/tezos/test-specifics.js.map +0 -1
  727. package/lib/families/tron/test-specifics.d.ts +0 -3
  728. package/lib/families/tron/test-specifics.d.ts.map +0 -1
  729. package/lib/families/tron/test-specifics.js +0 -205
  730. package/lib/families/tron/test-specifics.js.map +0 -1
  731. package/lib/generated/bridge/libcore.d.ts +0 -20
  732. package/lib/generated/bridge/libcore.d.ts.map +0 -1
  733. package/lib/generated/bridge/libcore.js +0 -16
  734. package/lib/generated/bridge/libcore.js.map +0 -1
  735. package/lib/generated/libcore-buildOperation.d.ts +0 -12
  736. package/lib/generated/libcore-buildOperation.d.ts.map +0 -1
  737. package/lib/generated/libcore-buildOperation.js +0 -16
  738. package/lib/generated/libcore-buildOperation.js.map +0 -1
  739. package/lib/generated/libcore-buildSubAccounts.d.ts +0 -8
  740. package/lib/generated/libcore-buildSubAccounts.d.ts.map +0 -1
  741. package/lib/generated/libcore-buildSubAccounts.js +0 -12
  742. package/lib/generated/libcore-buildSubAccounts.js.map +0 -1
  743. package/lib/generated/libcore-getAccountNetworkInfo.d.ts +0 -8
  744. package/lib/generated/libcore-getAccountNetworkInfo.d.ts.map +0 -1
  745. package/lib/generated/libcore-getAccountNetworkInfo.js +0 -12
  746. package/lib/generated/libcore-getAccountNetworkInfo.js.map +0 -1
  747. package/lib/generated/libcore-getFeesForTransaction.d.ts +0 -12
  748. package/lib/generated/libcore-getFeesForTransaction.d.ts.map +0 -1
  749. package/lib/generated/libcore-getFeesForTransaction.js +0 -16
  750. package/lib/generated/libcore-getFeesForTransaction.js.map +0 -1
  751. package/lib/generated/libcore-mergeOperations.d.ts +0 -5
  752. package/lib/generated/libcore-mergeOperations.d.ts.map +0 -1
  753. package/lib/generated/libcore-mergeOperations.js +0 -10
  754. package/lib/generated/libcore-mergeOperations.js.map +0 -1
  755. package/lib/generated/libcore-postBuildAccount.d.ts +0 -16
  756. package/lib/generated/libcore-postBuildAccount.d.ts.map +0 -1
  757. package/lib/generated/libcore-postBuildAccount.js +0 -14
  758. package/lib/generated/libcore-postBuildAccount.js.map +0 -1
  759. package/lib/generated/libcore-postSyncPatch.d.ts +0 -3
  760. package/lib/generated/libcore-postSyncPatch.d.ts.map +0 -1
  761. package/lib/generated/libcore-postSyncPatch.js +0 -4
  762. package/lib/generated/libcore-postSyncPatch.js.map +0 -1
  763. package/lib/generated/test-specifics.d.ts +0 -8
  764. package/lib/generated/test-specifics.d.ts.map +0 -1
  765. package/lib/generated/test-specifics.js +0 -16
  766. package/lib/generated/test-specifics.js.map +0 -1
  767. package/lib/libcore/access.d.ts +0 -11
  768. package/lib/libcore/access.d.ts.map +0 -1
  769. package/lib/libcore/access.js +0 -229
  770. package/lib/libcore/access.js.map +0 -1
  771. package/lib/libcore/broadcast.d.ts +0 -14
  772. package/lib/libcore/broadcast.d.ts.map +0 -1
  773. package/lib/libcore/broadcast.js +0 -68
  774. package/lib/libcore/broadcast.js.map +0 -1
  775. package/lib/libcore/buildAccount/buildOperation.d.ts +0 -15
  776. package/lib/libcore/buildAccount/buildOperation.d.ts.map +0 -1
  777. package/lib/libcore/buildAccount/buildOperation.js +0 -162
  778. package/lib/libcore/buildAccount/buildOperation.js.map +0 -1
  779. package/lib/libcore/buildAccount/buildSubAccounts.d.ts +0 -12
  780. package/lib/libcore/buildAccount/buildSubAccounts.d.ts.map +0 -1
  781. package/lib/libcore/buildAccount/buildSubAccounts.js.map +0 -1
  782. package/lib/libcore/buildAccount/index.d.ts +0 -15
  783. package/lib/libcore/buildAccount/index.d.ts.map +0 -1
  784. package/lib/libcore/buildAccount/index.js +0 -339
  785. package/lib/libcore/buildAccount/index.js.map +0 -1
  786. package/lib/libcore/buildBigNumber.d.ts +0 -7
  787. package/lib/libcore/buildBigNumber.d.ts.map +0 -1
  788. package/lib/libcore/buildBigNumber.js.map +0 -1
  789. package/lib/libcore/createAccountFromDevice.d.ts +0 -23
  790. package/lib/libcore/createAccountFromDevice.d.ts.map +0 -1
  791. package/lib/libcore/createAccountFromDevice.js +0 -143
  792. package/lib/libcore/createAccountFromDevice.js.map +0 -1
  793. package/lib/libcore/errors.d.ts +0 -6
  794. package/lib/libcore/errors.d.ts.map +0 -1
  795. package/lib/libcore/errors.js +0 -27
  796. package/lib/libcore/errors.js.map +0 -1
  797. package/lib/libcore/getAccountBalanceHistory.d.ts +0 -5
  798. package/lib/libcore/getAccountBalanceHistory.d.ts.map +0 -1
  799. package/lib/libcore/getAccountBalanceHistory.js +0 -87
  800. package/lib/libcore/getAccountBalanceHistory.js.map +0 -1
  801. package/lib/libcore/getAccountNetworkInfo.d.ts +0 -6
  802. package/lib/libcore/getAccountNetworkInfo.d.ts.map +0 -1
  803. package/lib/libcore/getAccountNetworkInfo.js +0 -91
  804. package/lib/libcore/getAccountNetworkInfo.js.map +0 -1
  805. package/lib/libcore/getCoreAccount.d.ts +0 -8
  806. package/lib/libcore/getCoreAccount.d.ts.map +0 -1
  807. package/lib/libcore/getCoreAccount.js +0 -78
  808. package/lib/libcore/getCoreAccount.js.map +0 -1
  809. package/lib/libcore/getFeesForTransaction.d.ts +0 -17
  810. package/lib/libcore/getFeesForTransaction.d.ts.map +0 -1
  811. package/lib/libcore/getFeesForTransaction.js +0 -87
  812. package/lib/libcore/getFeesForTransaction.js.map +0 -1
  813. package/lib/libcore/getOrCreateAccount.d.ts +0 -11
  814. package/lib/libcore/getOrCreateAccount.d.ts.map +0 -1
  815. package/lib/libcore/getOrCreateAccount.js +0 -142
  816. package/lib/libcore/getOrCreateAccount.js.map +0 -1
  817. package/lib/libcore/getOrCreateWallet.d.ts +0 -12
  818. package/lib/libcore/getOrCreateWallet.d.ts.map +0 -1
  819. package/lib/libcore/getOrCreateWallet.js +0 -138
  820. package/lib/libcore/getOrCreateWallet.js.map +0 -1
  821. package/lib/libcore/isValidRecipient.d.ts +0 -8
  822. package/lib/libcore/isValidRecipient.d.ts.map +0 -1
  823. package/lib/libcore/isValidRecipient.js +0 -78
  824. package/lib/libcore/isValidRecipient.js.map +0 -1
  825. package/lib/libcore/nativeSegwitAppsVersionsMap.d.ts +0 -6
  826. package/lib/libcore/nativeSegwitAppsVersionsMap.d.ts.map +0 -1
  827. package/lib/libcore/nativeSegwitAppsVersionsMap.js +0 -7
  828. package/lib/libcore/nativeSegwitAppsVersionsMap.js.map +0 -1
  829. package/lib/libcore/platforms/nodejs.d.ts +0 -7
  830. package/lib/libcore/platforms/nodejs.d.ts.map +0 -1
  831. package/lib/libcore/platforms/nodejs.js +0 -613
  832. package/lib/libcore/platforms/nodejs.js.map +0 -1
  833. package/lib/libcore/platforms/react-native.d.ts +0 -5
  834. package/lib/libcore/platforms/react-native.d.ts.map +0 -1
  835. package/lib/libcore/platforms/react-native.js +0 -286
  836. package/lib/libcore/platforms/react-native.js.map +0 -1
  837. package/lib/libcore/scanAccounts.d.ts +0 -12
  838. package/lib/libcore/scanAccounts.d.ts.map +0 -1
  839. package/lib/libcore/scanAccounts.js +0 -285
  840. package/lib/libcore/scanAccounts.js.map +0 -1
  841. package/lib/libcore/signOperation.d.ts +0 -38
  842. package/lib/libcore/signOperation.d.ts.map +0 -1
  843. package/lib/libcore/signOperation.js +0 -149
  844. package/lib/libcore/signOperation.js.map +0 -1
  845. package/lib/libcore/syncAccount.d.ts +0 -18
  846. package/lib/libcore/syncAccount.d.ts.map +0 -1
  847. package/lib/libcore/syncAccount.js +0 -165
  848. package/lib/libcore/syncAccount.js.map +0 -1
  849. package/lib/libcore/types/index.d.ts +0 -185
  850. package/lib/libcore/types/index.d.ts.map +0 -1
  851. package/lib/libcore/types/index.js +0 -359
  852. package/lib/libcore/types/index.js.map +0 -1
  853. package/src/__tests__/all.libcore.ts +0 -90
  854. package/src/__tests__/test-helpers/implement-react-native-libcore/index.ts +0 -6
  855. package/src/__tests__/test-helpers/implement-react-native-libcore/specific.android.ts +0 -4
  856. package/src/__tests__/test-helpers/implement-react-native-libcore/specific.ios.ts +0 -4
  857. package/src/bridge/shared.ts +0 -38
  858. package/src/families/algorand/bridge/libcore.ts +0 -345
  859. package/src/families/algorand/buildASAOperation.ts +0 -66
  860. package/src/families/algorand/libcore-broadcast.ts +0 -18
  861. package/src/families/algorand/libcore-buildOperation.ts +0 -69
  862. package/src/families/algorand/libcore-buildSubAccounts.ts +0 -132
  863. package/src/families/algorand/libcore-buildTransaction.ts +0 -115
  864. package/src/families/algorand/libcore-getFeesForTransaction.ts +0 -25
  865. package/src/families/algorand/libcore-postBuildAccount.ts +0 -42
  866. package/src/families/algorand/libcore-signOperation.ts +0 -104
  867. package/src/families/bitcoin/bridge/libcore.ts +0 -297
  868. package/src/families/bitcoin/customAddressValidation.ts +0 -30
  869. package/src/families/bitcoin/libcore-broadcast.ts +0 -15
  870. package/src/families/bitcoin/libcore-buildOperation.ts +0 -38
  871. package/src/families/bitcoin/libcore-buildTransaction.ts +0 -118
  872. package/src/families/bitcoin/libcore-getAccountNetworkInfo.test.ts +0 -27
  873. package/src/families/bitcoin/libcore-getAccountNetworkInfo.ts +0 -50
  874. package/src/families/bitcoin/libcore-getFeesForTransaction.ts +0 -67
  875. package/src/families/bitcoin/libcore-postBuildAccount.ts +0 -70
  876. package/src/families/bitcoin/libcore-signOperation.ts +0 -227
  877. package/src/families/cosmos/bridge/libcore.ts +0 -177
  878. package/src/families/cosmos/libcore-broadcast.ts +0 -24
  879. package/src/families/cosmos/libcore-buildOperation.ts +0 -121
  880. package/src/families/cosmos/libcore-buildTransaction.ts +0 -212
  881. package/src/families/cosmos/libcore-getFeesForTransaction.ts +0 -27
  882. package/src/families/cosmos/libcore-getTransactionStatus.ts +0 -299
  883. package/src/families/cosmos/libcore-mergeOperations.ts +0 -43
  884. package/src/families/cosmos/libcore-postBuildAccount.ts +0 -177
  885. package/src/families/cosmos/libcore-signOperation.ts +0 -96
  886. package/src/families/cosmos/message.ts +0 -155
  887. package/src/families/cosmos/test-specifics.ts +0 -225
  888. package/src/families/ethereum/nft.merging.unit.test.ts +0 -78
  889. package/src/families/filecoin/customAddressValidation.ts +0 -19
  890. package/src/families/polkadot/test-specifics.ts +0 -70
  891. package/src/families/tezos/bridge/libcore.ts +0 -312
  892. package/src/families/tezos/libcore-broadcast.ts +0 -16
  893. package/src/families/tezos/libcore-buildOperation.ts +0 -52
  894. package/src/families/tezos/libcore-buildSubAccounts.ts +0 -137
  895. package/src/families/tezos/libcore-buildTransaction.ts +0 -154
  896. package/src/families/tezos/libcore-getAccountNetworkInfo.ts +0 -25
  897. package/src/families/tezos/libcore-getFeesForTransaction.ts +0 -27
  898. package/src/families/tezos/libcore-signOperation.ts +0 -122
  899. package/src/families/tezos/test-specifics.ts +0 -19
  900. package/src/families/tron/test-specifics.ts +0 -137
  901. package/src/generated/bridge/libcore.ts +0 -15
  902. package/src/generated/libcore-buildOperation.ts +0 -15
  903. package/src/generated/libcore-buildSubAccounts.ts +0 -9
  904. package/src/generated/libcore-getAccountNetworkInfo.ts +0 -9
  905. package/src/generated/libcore-getFeesForTransaction.ts +0 -15
  906. package/src/generated/libcore-mergeOperations.ts +0 -6
  907. package/src/generated/libcore-postBuildAccount.ts +0 -12
  908. package/src/generated/libcore-postSyncPatch.ts +0 -3
  909. package/src/generated/test-specifics.ts +0 -15
  910. package/src/libcore/access.ts +0 -135
  911. package/src/libcore/broadcast.ts +0 -34
  912. package/src/libcore/buildAccount/buildOperation.ts +0 -96
  913. package/src/libcore/buildAccount/buildSubAccounts.ts +0 -24
  914. package/src/libcore/buildAccount/index.ts +0 -259
  915. package/src/libcore/buildBigNumber.ts +0 -28
  916. package/src/libcore/createAccountFromDevice.ts +0 -108
  917. package/src/libcore/errors.ts +0 -20
  918. package/src/libcore/getAccountBalanceHistory.ts +0 -56
  919. package/src/libcore/getAccountNetworkInfo.ts +0 -46
  920. package/src/libcore/getCoreAccount.ts +0 -37
  921. package/src/libcore/getFeesForTransaction.ts +0 -46
  922. package/src/libcore/getOrCreateAccount.ts +0 -93
  923. package/src/libcore/getOrCreateWallet.ts +0 -91
  924. package/src/libcore/isValidRecipient.ts +0 -36
  925. package/src/libcore/nativeSegwitAppsVersionsMap.ts +0 -4
  926. package/src/libcore/platforms/nodejs.ts +0 -627
  927. package/src/libcore/platforms/react-native.ts +0 -242
  928. package/src/libcore/scanAccounts.ts +0 -280
  929. package/src/libcore/signOperation.ts +0 -141
  930. package/src/libcore/syncAccount.ts +0 -152
  931. 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 };