@ledgerhq/coin-tezos 6.6.0 → 6.7.0-nightly.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 (336) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +4 -30
  3. package/CHANGELOG.md +25 -0
  4. package/jest.integ.config.js +1 -0
  5. package/lib/api/index.d.ts.map +1 -1
  6. package/lib/api/index.integ.test.js +6 -0
  7. package/lib/api/index.integ.test.js.map +1 -1
  8. package/lib/api/index.js +221 -40
  9. package/lib/api/index.js.map +1 -1
  10. package/lib/api/index.test.js +84 -10
  11. package/lib/api/index.test.js.map +1 -1
  12. package/lib/api/types.d.ts +7 -6
  13. package/lib/api/types.d.ts.map +1 -1
  14. package/lib/config.d.ts +4 -3
  15. package/lib/config.d.ts.map +1 -1
  16. package/lib/config.js.map +1 -1
  17. package/lib/index.d.ts +1 -1
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/index.js +1 -3
  20. package/lib/index.js.map +1 -1
  21. package/lib/logic/craftTransaction.d.ts.map +1 -1
  22. package/lib/logic/craftTransaction.js +7 -0
  23. package/lib/logic/craftTransaction.js.map +1 -1
  24. package/lib/logic/craftTransaction.test.js +1 -0
  25. package/lib/logic/craftTransaction.test.js.map +1 -1
  26. package/lib/logic/estimateFees.d.ts.map +1 -1
  27. package/lib/logic/estimateFees.integ.test.js +8 -2
  28. package/lib/logic/estimateFees.integ.test.js.map +1 -1
  29. package/lib/logic/estimateFees.js +119 -45
  30. package/lib/logic/estimateFees.js.map +1 -1
  31. package/lib/logic/getBalance.js +1 -1
  32. package/lib/logic/getBalance.js.map +1 -1
  33. package/lib/logic/getStakes.d.ts +3 -0
  34. package/lib/logic/getStakes.d.ts.map +1 -0
  35. package/lib/logic/getStakes.js +26 -0
  36. package/lib/logic/getStakes.js.map +1 -0
  37. package/lib/logic/getStakes.test.d.ts +2 -0
  38. package/lib/logic/getStakes.test.d.ts.map +1 -0
  39. package/lib/logic/getStakes.test.js +133 -0
  40. package/lib/logic/getStakes.test.js.map +1 -0
  41. package/lib/logic/index.d.ts +2 -0
  42. package/lib/logic/index.d.ts.map +1 -1
  43. package/lib/logic/index.js +5 -1
  44. package/lib/logic/index.js.map +1 -1
  45. package/lib/logic/listOperations.d.ts.map +1 -1
  46. package/lib/logic/listOperations.js +69 -11
  47. package/lib/logic/listOperations.js.map +1 -1
  48. package/lib/logic/listOperations.test.js +14 -10
  49. package/lib/logic/listOperations.test.js.map +1 -1
  50. package/lib/logic/validateIntent.d.ts +3 -0
  51. package/lib/logic/validateIntent.d.ts.map +1 -0
  52. package/lib/logic/validateIntent.js +179 -0
  53. package/lib/logic/validateIntent.js.map +1 -0
  54. package/lib/logic/validateIntent.test.d.ts +2 -0
  55. package/lib/logic/validateIntent.test.d.ts.map +1 -0
  56. package/lib/logic/validateIntent.test.js +261 -0
  57. package/lib/logic/validateIntent.test.js.map +1 -0
  58. package/{lib-es/bridge → lib}/transaction.d.ts +1 -1
  59. package/lib/transaction.d.ts.map +1 -0
  60. package/lib/{bridge/transaction.js → transaction.js} +3 -3
  61. package/lib/transaction.js.map +1 -0
  62. package/lib/types/bridge.d.ts +3 -0
  63. package/lib/types/bridge.d.ts.map +1 -1
  64. package/lib/types/bridge.fixture.d.ts.map +1 -1
  65. package/lib/types/bridge.fixture.js +1 -0
  66. package/lib/types/bridge.fixture.js.map +1 -1
  67. package/lib/types/bridge.js.map +1 -1
  68. package/lib/utils.d.ts +50 -0
  69. package/lib/utils.d.ts.map +1 -0
  70. package/lib/utils.js +111 -0
  71. package/lib/utils.js.map +1 -0
  72. package/lib-es/api/index.d.ts.map +1 -1
  73. package/lib-es/api/index.integ.test.js +6 -0
  74. package/lib-es/api/index.integ.test.js.map +1 -1
  75. package/lib-es/api/index.js +222 -41
  76. package/lib-es/api/index.js.map +1 -1
  77. package/lib-es/api/index.test.js +84 -10
  78. package/lib-es/api/index.test.js.map +1 -1
  79. package/lib-es/api/types.d.ts +7 -6
  80. package/lib-es/api/types.d.ts.map +1 -1
  81. package/lib-es/config.d.ts +4 -3
  82. package/lib-es/config.d.ts.map +1 -1
  83. package/lib-es/config.js.map +1 -1
  84. package/lib-es/index.d.ts +1 -1
  85. package/lib-es/index.d.ts.map +1 -1
  86. package/lib-es/index.js +1 -1
  87. package/lib-es/index.js.map +1 -1
  88. package/lib-es/logic/craftTransaction.d.ts.map +1 -1
  89. package/lib-es/logic/craftTransaction.js +7 -0
  90. package/lib-es/logic/craftTransaction.js.map +1 -1
  91. package/lib-es/logic/craftTransaction.test.js +1 -0
  92. package/lib-es/logic/craftTransaction.test.js.map +1 -1
  93. package/lib-es/logic/estimateFees.d.ts.map +1 -1
  94. package/lib-es/logic/estimateFees.integ.test.js +8 -2
  95. package/lib-es/logic/estimateFees.integ.test.js.map +1 -1
  96. package/lib-es/logic/estimateFees.js +119 -45
  97. package/lib-es/logic/estimateFees.js.map +1 -1
  98. package/lib-es/logic/getBalance.js +1 -1
  99. package/lib-es/logic/getBalance.js.map +1 -1
  100. package/lib-es/logic/getStakes.d.ts +3 -0
  101. package/lib-es/logic/getStakes.d.ts.map +1 -0
  102. package/lib-es/logic/getStakes.js +20 -0
  103. package/lib-es/logic/getStakes.js.map +1 -0
  104. package/lib-es/logic/getStakes.test.d.ts +2 -0
  105. package/lib-es/logic/getStakes.test.d.ts.map +1 -0
  106. package/lib-es/logic/getStakes.test.js +128 -0
  107. package/lib-es/logic/getStakes.test.js.map +1 -0
  108. package/lib-es/logic/index.d.ts +2 -0
  109. package/lib-es/logic/index.d.ts.map +1 -1
  110. package/lib-es/logic/index.js +2 -0
  111. package/lib-es/logic/index.js.map +1 -1
  112. package/lib-es/logic/listOperations.d.ts.map +1 -1
  113. package/lib-es/logic/listOperations.js +69 -11
  114. package/lib-es/logic/listOperations.js.map +1 -1
  115. package/lib-es/logic/listOperations.test.js +14 -10
  116. package/lib-es/logic/listOperations.test.js.map +1 -1
  117. package/lib-es/logic/validateIntent.d.ts +3 -0
  118. package/lib-es/logic/validateIntent.d.ts.map +1 -0
  119. package/lib-es/logic/validateIntent.js +173 -0
  120. package/lib-es/logic/validateIntent.js.map +1 -0
  121. package/lib-es/logic/validateIntent.test.d.ts +2 -0
  122. package/lib-es/logic/validateIntent.test.d.ts.map +1 -0
  123. package/lib-es/logic/validateIntent.test.js +233 -0
  124. package/lib-es/logic/validateIntent.test.js.map +1 -0
  125. package/{lib/bridge → lib-es}/transaction.d.ts +1 -1
  126. package/lib-es/transaction.d.ts.map +1 -0
  127. package/lib-es/{bridge/transaction.js → transaction.js} +3 -3
  128. package/lib-es/transaction.js.map +1 -0
  129. package/lib-es/types/bridge.d.ts +3 -0
  130. package/lib-es/types/bridge.d.ts.map +1 -1
  131. package/lib-es/types/bridge.fixture.d.ts.map +1 -1
  132. package/lib-es/types/bridge.fixture.js +1 -0
  133. package/lib-es/types/bridge.fixture.js.map +1 -1
  134. package/lib-es/types/bridge.js.map +1 -1
  135. package/lib-es/utils.d.ts +50 -0
  136. package/lib-es/utils.d.ts.map +1 -0
  137. package/lib-es/utils.js +100 -0
  138. package/lib-es/utils.js.map +1 -0
  139. package/package.json +9 -12
  140. package/src/api/index.integ.test.ts +8 -1
  141. package/src/api/index.test.ts +93 -16
  142. package/src/api/index.ts +248 -55
  143. package/src/api/types.ts +11 -7
  144. package/src/config.ts +9 -2
  145. package/src/index.ts +1 -2
  146. package/src/logic/craftTransaction.test.ts +1 -0
  147. package/src/logic/craftTransaction.ts +8 -0
  148. package/src/logic/estimateFees.integ.test.ts +8 -2
  149. package/src/logic/estimateFees.ts +140 -49
  150. package/src/logic/getBalance.ts +1 -1
  151. package/src/logic/getStakes.test.ts +145 -0
  152. package/src/logic/getStakes.ts +20 -0
  153. package/src/logic/index.ts +2 -0
  154. package/src/logic/listOperations.test.ts +64 -54
  155. package/src/logic/listOperations.ts +70 -10
  156. package/src/logic/validateIntent.test.ts +274 -0
  157. package/src/logic/validateIntent.ts +207 -0
  158. package/src/{bridge/transaction.ts → transaction.ts} +4 -4
  159. package/src/types/bridge.fixture.ts +1 -0
  160. package/src/types/bridge.ts +6 -1
  161. package/src/utils.ts +111 -0
  162. package/lib/bridge/broadcast.d.ts +0 -4
  163. package/lib/bridge/broadcast.d.ts.map +0 -1
  164. package/lib/bridge/broadcast.js +0 -11
  165. package/lib/bridge/broadcast.js.map +0 -1
  166. package/lib/bridge/broadcast.test.d.ts +0 -2
  167. package/lib/bridge/broadcast.test.d.ts.map +0 -1
  168. package/lib/bridge/broadcast.test.js +0 -36
  169. package/lib/bridge/broadcast.test.js.map +0 -1
  170. package/lib/bridge/buildOptimisticOperation.d.ts +0 -4
  171. package/lib/bridge/buildOptimisticOperation.d.ts.map +0 -1
  172. package/lib/bridge/buildOptimisticOperation.js +0 -28
  173. package/lib/bridge/buildOptimisticOperation.js.map +0 -1
  174. package/lib/bridge/createTransaction.d.ts +0 -4
  175. package/lib/bridge/createTransaction.d.ts.map +0 -1
  176. package/lib/bridge/createTransaction.js +0 -24
  177. package/lib/bridge/createTransaction.js.map +0 -1
  178. package/lib/bridge/estimateMaxSpendable.d.ts +0 -5
  179. package/lib/bridge/estimateMaxSpendable.d.ts.map +0 -1
  180. package/lib/bridge/estimateMaxSpendable.js +0 -30
  181. package/lib/bridge/estimateMaxSpendable.js.map +0 -1
  182. package/lib/bridge/getFeesForTransaction.d.ts +0 -21
  183. package/lib/bridge/getFeesForTransaction.d.ts.map +0 -1
  184. package/lib/bridge/getFeesForTransaction.js +0 -39
  185. package/lib/bridge/getFeesForTransaction.js.map +0 -1
  186. package/lib/bridge/getTransactionStatus.d.ts +0 -4
  187. package/lib/bridge/getTransactionStatus.d.ts.map +0 -1
  188. package/lib/bridge/getTransactionStatus.js +0 -108
  189. package/lib/bridge/getTransactionStatus.js.map +0 -1
  190. package/lib/bridge/getTransactionStatus.test.d.ts +0 -2
  191. package/lib/bridge/getTransactionStatus.test.d.ts.map +0 -1
  192. package/lib/bridge/getTransactionStatus.test.js +0 -107
  193. package/lib/bridge/getTransactionStatus.test.js.map +0 -1
  194. package/lib/bridge/index.d.ts +0 -10
  195. package/lib/bridge/index.d.ts.map +0 -1
  196. package/lib/bridge/index.js +0 -59
  197. package/lib/bridge/index.js.map +0 -1
  198. package/lib/bridge/logic.d.ts +0 -10
  199. package/lib/bridge/logic.d.ts.map +0 -1
  200. package/lib/bridge/logic.js +0 -155
  201. package/lib/bridge/logic.js.map +0 -1
  202. package/lib/bridge/preload.d.ts +0 -9
  203. package/lib/bridge/preload.d.ts.map +0 -1
  204. package/lib/bridge/preload.js +0 -23
  205. package/lib/bridge/preload.js.map +0 -1
  206. package/lib/bridge/prepareTransaction.d.ts +0 -5
  207. package/lib/bridge/prepareTransaction.d.ts.map +0 -1
  208. package/lib/bridge/prepareTransaction.integ.test.d.ts +0 -2
  209. package/lib/bridge/prepareTransaction.integ.test.d.ts.map +0 -1
  210. package/lib/bridge/prepareTransaction.integ.test.js +0 -34
  211. package/lib/bridge/prepareTransaction.integ.test.js.map +0 -1
  212. package/lib/bridge/prepareTransaction.js +0 -57
  213. package/lib/bridge/prepareTransaction.js.map +0 -1
  214. package/lib/bridge/prepareTransaction.test.d.ts +0 -2
  215. package/lib/bridge/prepareTransaction.test.d.ts.map +0 -1
  216. package/lib/bridge/prepareTransaction.test.js +0 -178
  217. package/lib/bridge/prepareTransaction.test.js.map +0 -1
  218. package/lib/bridge/serialization.d.ts +0 -7
  219. package/lib/bridge/serialization.d.ts.map +0 -1
  220. package/lib/bridge/serialization.js +0 -26
  221. package/lib/bridge/serialization.js.map +0 -1
  222. package/lib/bridge/signOperation.d.ts +0 -16
  223. package/lib/bridge/signOperation.d.ts.map +0 -1
  224. package/lib/bridge/signOperation.js +0 -88
  225. package/lib/bridge/signOperation.js.map +0 -1
  226. package/lib/bridge/signOperation.test.d.ts +0 -2
  227. package/lib/bridge/signOperation.test.d.ts.map +0 -1
  228. package/lib/bridge/signOperation.test.js +0 -283
  229. package/lib/bridge/signOperation.test.js.map +0 -1
  230. package/lib/bridge/synchronization.d.ts +0 -5
  231. package/lib/bridge/synchronization.d.ts.map +0 -1
  232. package/lib/bridge/synchronization.integ.test.d.ts +0 -2
  233. package/lib/bridge/synchronization.integ.test.d.ts.map +0 -1
  234. package/lib/bridge/synchronization.integ.test.js +0 -32
  235. package/lib/bridge/synchronization.integ.test.js.map +0 -1
  236. package/lib/bridge/synchronization.js +0 -100
  237. package/lib/bridge/synchronization.js.map +0 -1
  238. package/lib/bridge/transaction.d.ts.map +0 -1
  239. package/lib/bridge/transaction.js.map +0 -1
  240. package/lib-es/bridge/broadcast.d.ts +0 -4
  241. package/lib-es/bridge/broadcast.d.ts.map +0 -1
  242. package/lib-es/bridge/broadcast.js +0 -7
  243. package/lib-es/bridge/broadcast.js.map +0 -1
  244. package/lib-es/bridge/broadcast.test.d.ts +0 -2
  245. package/lib-es/bridge/broadcast.test.d.ts.map +0 -1
  246. package/lib-es/bridge/broadcast.test.js +0 -31
  247. package/lib-es/bridge/broadcast.test.js.map +0 -1
  248. package/lib-es/bridge/buildOptimisticOperation.d.ts +0 -4
  249. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +0 -1
  250. package/lib-es/bridge/buildOptimisticOperation.js +0 -21
  251. package/lib-es/bridge/buildOptimisticOperation.js.map +0 -1
  252. package/lib-es/bridge/createTransaction.d.ts +0 -4
  253. package/lib-es/bridge/createTransaction.d.ts.map +0 -1
  254. package/lib-es/bridge/createTransaction.js +0 -17
  255. package/lib-es/bridge/createTransaction.js.map +0 -1
  256. package/lib-es/bridge/estimateMaxSpendable.d.ts +0 -5
  257. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +0 -1
  258. package/lib-es/bridge/estimateMaxSpendable.js +0 -23
  259. package/lib-es/bridge/estimateMaxSpendable.js.map +0 -1
  260. package/lib-es/bridge/getFeesForTransaction.d.ts +0 -21
  261. package/lib-es/bridge/getFeesForTransaction.d.ts.map +0 -1
  262. package/lib-es/bridge/getFeesForTransaction.js +0 -33
  263. package/lib-es/bridge/getFeesForTransaction.js.map +0 -1
  264. package/lib-es/bridge/getTransactionStatus.d.ts +0 -4
  265. package/lib-es/bridge/getTransactionStatus.d.ts.map +0 -1
  266. package/lib-es/bridge/getTransactionStatus.js +0 -101
  267. package/lib-es/bridge/getTransactionStatus.js.map +0 -1
  268. package/lib-es/bridge/getTransactionStatus.test.d.ts +0 -2
  269. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +0 -1
  270. package/lib-es/bridge/getTransactionStatus.test.js +0 -102
  271. package/lib-es/bridge/getTransactionStatus.test.js.map +0 -1
  272. package/lib-es/bridge/index.d.ts +0 -10
  273. package/lib-es/bridge/index.d.ts.map +0 -1
  274. package/lib-es/bridge/index.js +0 -53
  275. package/lib-es/bridge/index.js.map +0 -1
  276. package/lib-es/bridge/logic.d.ts +0 -10
  277. package/lib-es/bridge/logic.d.ts.map +0 -1
  278. package/lib-es/bridge/logic.js +0 -145
  279. package/lib-es/bridge/logic.js.map +0 -1
  280. package/lib-es/bridge/preload.d.ts +0 -9
  281. package/lib-es/bridge/preload.d.ts.map +0 -1
  282. package/lib-es/bridge/preload.js +0 -17
  283. package/lib-es/bridge/preload.js.map +0 -1
  284. package/lib-es/bridge/prepareTransaction.d.ts +0 -5
  285. package/lib-es/bridge/prepareTransaction.d.ts.map +0 -1
  286. package/lib-es/bridge/prepareTransaction.integ.test.d.ts +0 -2
  287. package/lib-es/bridge/prepareTransaction.integ.test.d.ts.map +0 -1
  288. package/lib-es/bridge/prepareTransaction.integ.test.js +0 -29
  289. package/lib-es/bridge/prepareTransaction.integ.test.js.map +0 -1
  290. package/lib-es/bridge/prepareTransaction.js +0 -50
  291. package/lib-es/bridge/prepareTransaction.js.map +0 -1
  292. package/lib-es/bridge/prepareTransaction.test.d.ts +0 -2
  293. package/lib-es/bridge/prepareTransaction.test.d.ts.map +0 -1
  294. package/lib-es/bridge/prepareTransaction.test.js +0 -173
  295. package/lib-es/bridge/prepareTransaction.test.js.map +0 -1
  296. package/lib-es/bridge/serialization.d.ts +0 -7
  297. package/lib-es/bridge/serialization.d.ts.map +0 -1
  298. package/lib-es/bridge/serialization.js +0 -20
  299. package/lib-es/bridge/serialization.js.map +0 -1
  300. package/lib-es/bridge/signOperation.d.ts +0 -16
  301. package/lib-es/bridge/signOperation.d.ts.map +0 -1
  302. package/lib-es/bridge/signOperation.js +0 -83
  303. package/lib-es/bridge/signOperation.js.map +0 -1
  304. package/lib-es/bridge/signOperation.test.d.ts +0 -2
  305. package/lib-es/bridge/signOperation.test.d.ts.map +0 -1
  306. package/lib-es/bridge/signOperation.test.js +0 -255
  307. package/lib-es/bridge/signOperation.test.js.map +0 -1
  308. package/lib-es/bridge/synchronization.d.ts +0 -5
  309. package/lib-es/bridge/synchronization.d.ts.map +0 -1
  310. package/lib-es/bridge/synchronization.integ.test.d.ts +0 -2
  311. package/lib-es/bridge/synchronization.integ.test.d.ts.map +0 -1
  312. package/lib-es/bridge/synchronization.integ.test.js +0 -27
  313. package/lib-es/bridge/synchronization.integ.test.js.map +0 -1
  314. package/lib-es/bridge/synchronization.js +0 -70
  315. package/lib-es/bridge/synchronization.js.map +0 -1
  316. package/lib-es/bridge/transaction.d.ts.map +0 -1
  317. package/lib-es/bridge/transaction.js.map +0 -1
  318. package/src/bridge/broadcast.test.ts +0 -36
  319. package/src/bridge/broadcast.ts +0 -13
  320. package/src/bridge/buildOptimisticOperation.ts +0 -28
  321. package/src/bridge/createTransaction.ts +0 -19
  322. package/src/bridge/estimateMaxSpendable.ts +0 -37
  323. package/src/bridge/getFeesForTransaction.ts +0 -49
  324. package/src/bridge/getTransactionStatus.test.ts +0 -124
  325. package/src/bridge/getTransactionStatus.ts +0 -123
  326. package/src/bridge/index.ts +0 -74
  327. package/src/bridge/logic.ts +0 -171
  328. package/src/bridge/preload.ts +0 -18
  329. package/src/bridge/prepareTransaction.integ.test.ts +0 -35
  330. package/src/bridge/prepareTransaction.test.ts +0 -205
  331. package/src/bridge/prepareTransaction.ts +0 -69
  332. package/src/bridge/serialization.ts +0 -27
  333. package/src/bridge/signOperation.test.ts +0 -284
  334. package/src/bridge/signOperation.ts +0 -130
  335. package/src/bridge/synchronization.integ.test.ts +0 -33
  336. package/src/bridge/synchronization.ts +0 -100
@@ -0,0 +1,100 @@
1
+ import { validatePublicKey, ValidationResult, b58Encode, PrefixV2 } from "@taquito/utils";
2
+ import { DerivationType } from "@taquito/ledger-signer";
3
+ import { compressPublicKey } from "@taquito/ledger-signer/dist/lib/utils";
4
+ import coinConfig from "./config";
5
+ /**
6
+ * Dust margin in mutez to prevent transaction failures on send max operations
7
+ * This ensures a small safety buffer remains in the account after send max
8
+ * Based on production behavior where ~281-287 mutez typically remain
9
+ * Increased to 500 to handle edge cases and fee estimation variations
10
+ */
11
+ export const DUST_MARGIN_MUTEZ = 500;
12
+ /**
13
+ * Suggested fee returned by Taquito for a minimal amount pre-estimation (mutez)
14
+ * Used as a stable fallback for send-max when RPC estimation is unavailable.
15
+ */
16
+ export const MIN_SUGGESTED_FEE_SMALL_TRANSFER = 489;
17
+ /**
18
+ * Typical operation size (bytes) for a simple XTZ transfer used to approximate
19
+ * the increased fee component when computing send-max in fallback mode.
20
+ * Chosen to match Taquito’s behavior closely in integration tests.
21
+ */
22
+ export const OP_SIZE_XTZ_TRANSFER = 154;
23
+ /**
24
+ * Helper function to map generic staking intents to Tezos operation modes
25
+ */
26
+ export function mapIntentTypeToTezosMode(intentType) {
27
+ switch (intentType) {
28
+ case "stake":
29
+ case "delegate":
30
+ return "delegate";
31
+ case "unstake":
32
+ case "undelegate":
33
+ return "undelegate";
34
+ default:
35
+ return "send";
36
+ }
37
+ }
38
+ /**
39
+ * Creates a mock signer for Taquito operations (estimation and crafting)
40
+ */
41
+ export function createMockSigner(publicKeyHash, publicKey) {
42
+ return {
43
+ publicKeyHash: async () => publicKeyHash,
44
+ publicKey: async () => publicKey,
45
+ sign: () => Promise.reject(new Error("unsupported")),
46
+ secretKey: () => Promise.reject(new Error("unsupported")),
47
+ };
48
+ }
49
+ /**
50
+ * Normalize a Tezos public key to base58 format (edpk/sppk/p2pk) based on the
51
+ * sender address prefix (tz1/tz2/tz3). Accepts either an already base58-encoded
52
+ * key or a hex key returned by the Ledger app. Returns undefined if input is
53
+ * empty or cannot be parsed.
54
+ */
55
+ export function normalizePublicKeyForAddress(maybeKey, address) {
56
+ if (!maybeKey)
57
+ return undefined;
58
+ // If it's already a valid base58 public key, keep it
59
+ if (validatePublicKey(maybeKey) === ValidationResult.VALID)
60
+ return maybeKey;
61
+ // Attempt to convert hex → base58 according to address curve
62
+ try {
63
+ const pkHex = maybeKey.trim().toLowerCase();
64
+ if (pkHex === "")
65
+ return undefined;
66
+ const keyBuf = Buffer.from(pkHex, "hex");
67
+ // Choose curve/prefix from address tz1/tz2/tz3
68
+ // default are values for tz1 and fallbacks to it
69
+ let derivationType = DerivationType.ED25519;
70
+ let prefix = PrefixV2.Ed25519PublicKey;
71
+ if (address.startsWith("tz2")) {
72
+ derivationType = DerivationType.SECP256K1;
73
+ prefix = PrefixV2.Secp256k1PublicKey;
74
+ }
75
+ else if (address.startsWith("tz3")) {
76
+ derivationType = DerivationType.P256;
77
+ prefix = PrefixV2.P256PublicKey;
78
+ }
79
+ return b58Encode(compressPublicKey(keyBuf, derivationType), prefix);
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ }
85
+ /**
86
+ * Creates default fallback estimation values
87
+ */
88
+ export function createFallbackEstimation() {
89
+ const config = coinConfig.getCoinConfig();
90
+ return {
91
+ fees: BigInt(config.fees.minEstimatedFees),
92
+ gasLimit: BigInt(config.fees.minGasLimit),
93
+ storageLimit: BigInt(config.fees.minStorageLimit),
94
+ estimatedFees: BigInt(config.fees.minEstimatedFees),
95
+ };
96
+ }
97
+ export function hasEmptyBalance(account) {
98
+ return (account.type === "user" && account.balance === 0) || account.type === "empty";
99
+ }
100
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-tezos",
3
- "version": "6.6.0",
3
+ "version": "6.7.0-nightly.1",
4
4
  "description": "Tezos Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -56,8 +56,8 @@
56
56
  "default": "./lib-es/test/bot-specs.js"
57
57
  },
58
58
  "./transaction": {
59
- "require": "./lib/bridge/transaction.js",
60
- "default": "./lib-es/bridge/transaction.js"
59
+ "require": "./lib/transaction.js",
60
+ "default": "./lib-es/transaction.js"
61
61
  },
62
62
  "./*": {
63
63
  "require": "./lib/*.js",
@@ -72,24 +72,20 @@
72
72
  "@taquito/taquito": "^23.0.0-RC.0",
73
73
  "@taquito/utils": "^23.0.0-RC.0",
74
74
  "bignumber.js": "^9.1.2",
75
- "@noble/hashes": "1.8.0",
76
- "bs58check": "^3.0.1",
77
75
  "invariant": "^2.2.4",
78
76
  "lodash": "^4.17.21",
79
77
  "rxjs": "^7.8.1",
80
- "@ledgerhq/coin-framework": "^6.6.0",
81
- "@ledgerhq/cryptoassets": "^13.30.0",
78
+ "@ledgerhq/coin-framework": "^6.7.0-nightly.1",
79
+ "@ledgerhq/cryptoassets": "^13.31.0-nightly.1",
82
80
  "@ledgerhq/devices": "8.6.1",
83
81
  "@ledgerhq/errors": "^6.26.0",
84
- "@ledgerhq/live-network": "^2.0.19",
82
+ "@ledgerhq/live-network": "^2.0.20-nightly.0",
85
83
  "@ledgerhq/logs": "^6.13.0",
86
- "@ledgerhq/types-cryptoassets": "^7.28.0",
87
- "@ledgerhq/types-live": "^6.86.0"
84
+ "@ledgerhq/types-live": "^6.87.0-nightly.1"
88
85
  },
89
86
  "devDependencies": {
90
87
  "@faker-js/faker": "^8.4.1",
91
88
  "@taquito/local-forging": "^23.0.0-RC.0",
92
- "@types/bs58check": "^2.1.2",
93
89
  "@types/invariant": "^2.2.37",
94
90
  "@types/jest": "^29.5.12",
95
91
  "@types/lodash": "^4.17.4",
@@ -97,7 +93,8 @@
97
93
  "msw": "^2.7.3",
98
94
  "ts-jest": "^29.1.4",
99
95
  "typescript": "^5.4.5",
100
- "@ledgerhq/disable-network-setup": "^0.0.0"
96
+ "@ledgerhq/disable-network-setup": "^0.0.0",
97
+ "@ledgerhq/types-cryptoassets": "^7.29.0-nightly.0"
101
98
  },
102
99
  "overrides": {
103
100
  "@taquito/ledger-signer": {
@@ -1,6 +1,7 @@
1
1
  import { localForger } from "@taquito/local-forging";
2
2
  import { createApi } from ".";
3
3
  import type { TezosApi } from "./types";
4
+ import { SendTransactionIntent } from "@ledgerhq/coin-framework/api/types";
4
5
 
5
6
  /**
6
7
  * https://teztnets.com/ghostnet-about
@@ -39,6 +40,7 @@ describe("Tezos Api", () => {
39
40
 
40
41
  // When
41
42
  const result = await module.estimateFees({
43
+ intentType: "transaction",
42
44
  asset: { type: "native" },
43
45
  type: "send",
44
46
  sender: address,
@@ -73,13 +75,14 @@ describe("Tezos Api", () => {
73
75
  ])("does not fail when providing a %s address with pub key", async (_, sender, pubKey) => {
74
76
  // When
75
77
  const result = await module.estimateFees({
78
+ intentType: "transaction",
76
79
  asset: { type: "native" },
77
80
  type: "send",
78
81
  sender: "tz3DvEBHrtFkq9pTXqt6yavnf4sPe2jut2XH",
79
82
  senderPublicKey: pubKey,
80
83
  recipient: sender,
81
84
  amount: BigInt(100),
82
- });
85
+ } as SendTransactionIntent);
83
86
 
84
87
  // Then
85
88
  expect(result.value).toBeGreaterThanOrEqual(BigInt(0));
@@ -91,6 +94,7 @@ describe("Tezos Api", () => {
91
94
  it("fails when using an unsupported address type", async () => {
92
95
  await expect(
93
96
  module.estimateFees({
97
+ intentType: "transaction",
94
98
  asset: { type: "native" },
95
99
  type: "send",
96
100
  sender: address,
@@ -172,6 +176,7 @@ describe("Tezos Api", () => {
172
176
  const amount = BigInt(10);
173
177
  // When
174
178
  const { transaction: encodedTransaction } = await module.craftTransaction({
179
+ intentType: "transaction",
175
180
  asset: { type: "native" },
176
181
  type,
177
182
  sender: address,
@@ -196,6 +201,7 @@ describe("Tezos Api", () => {
196
201
 
197
202
  it("should use estimated fees when user does not provide them for crafting a transaction", async () => {
198
203
  const { transaction: encodedTransaction } = await module.craftTransaction({
204
+ intentType: "transaction",
199
205
  asset: { type: "native" },
200
206
  type: "send",
201
207
  sender: address,
@@ -213,6 +219,7 @@ describe("Tezos Api", () => {
213
219
  async (customFees: bigint) => {
214
220
  const { transaction: encodedTransaction } = await module.craftTransaction(
215
221
  {
222
+ intentType: "transaction",
216
223
  asset: { type: "native" },
217
224
  type: "send",
218
225
  sender: address,
@@ -2,7 +2,7 @@ import type { Operation } from "@ledgerhq/coin-framework/api/types";
2
2
  import type { APIAccount } from "../network/types";
3
3
  import networkApi from "../network/tzkt";
4
4
  import { createApi } from "./index";
5
- import type { TezosTransactionIntent } from "./types";
5
+ import { TransactionIntent } from "@ledgerhq/coin-framework/api/types";
6
6
 
7
7
  const DEFAULT_ESTIMATED_FEES = 300n;
8
8
  const DEFAULT_GAS_LIMIT = 30n;
@@ -24,11 +24,18 @@ jest.mock("../logic", () => ({
24
24
  rawEncode: () => Promise.resolve("tz1heMGVHQnx7ALDcDKqez8fan64Eyicw4DJ"),
25
25
  }));
26
26
 
27
- jest
28
- .spyOn(networkApi, "getAccountByAddress")
29
- .mockImplementation((_adress: string) =>
30
- Promise.resolve({ type: "user", balance: 1000 } as APIAccount),
31
- );
27
+ jest.spyOn(networkApi, "getAccountByAddress").mockResolvedValue({
28
+ type: "user",
29
+ balance: 1000,
30
+ revealed: true,
31
+ address: "tz1test",
32
+ publicKey: "edpktest",
33
+ counter: 0,
34
+ delegationLevel: 0,
35
+ delegationTime: "2021-01-01T00:00:00Z",
36
+ numTransactions: 0,
37
+ firstActivityTime: "2021-01-01T00:00:00Z",
38
+ } as APIAccount);
32
39
 
33
40
  const api = createApi({
34
41
  baker: {
@@ -94,12 +101,28 @@ describe("Testing craftTransaction function", () => {
94
101
  beforeEach(() => jest.clearAllMocks());
95
102
 
96
103
  it("should use estimated fees when user does not provide them for crafting a transaction ", async () => {
97
- logicEstimateFees.mockResolvedValue({ estimatedFees: DEFAULT_ESTIMATED_FEES });
98
- await api.craftTransaction({ type: "send", sender: {} } as TezosTransactionIntent);
104
+ logicEstimateFees.mockResolvedValue({
105
+ estimatedFees: DEFAULT_ESTIMATED_FEES,
106
+ gasLimit: DEFAULT_GAS_LIMIT,
107
+ storageLimit: DEFAULT_STORAGE_LIMIT,
108
+ });
109
+ await api.craftTransaction({
110
+ intentType: "transaction",
111
+ type: "send",
112
+ sender: "tz1test",
113
+ recipient: "tz1recipient",
114
+ amount: 1000n,
115
+ } as TransactionIntent);
99
116
  expect(logicEstimateFees).toHaveBeenCalledTimes(1);
100
117
  expect(logicCraftTransactionMock).toHaveBeenCalledWith(
101
- expect.any(Object),
102
- expect.objectContaining({ fee: { fees: DEFAULT_ESTIMATED_FEES.toString() } }),
118
+ expect.objectContaining({ address: "tz1test" }),
119
+ expect.objectContaining({
120
+ fee: expect.objectContaining({
121
+ fees: DEFAULT_ESTIMATED_FEES.toString(),
122
+ gasLimit: DEFAULT_GAS_LIMIT.toString(),
123
+ storageLimit: DEFAULT_STORAGE_LIMIT.toString(),
124
+ }),
125
+ }),
103
126
  );
104
127
  });
105
128
 
@@ -110,10 +133,23 @@ describe("Testing craftTransaction function", () => {
110
133
  estimatedFees: DEFAULT_ESTIMATED_FEES,
111
134
  gasLimit: DEFAULT_GAS_LIMIT,
112
135
  storageLimit: DEFAULT_STORAGE_LIMIT,
136
+ parameters: {
137
+ gasLimit: DEFAULT_GAS_LIMIT,
138
+ storageLimit: DEFAULT_STORAGE_LIMIT,
139
+ },
113
140
  });
114
- await api.craftTransaction({ type: "send", sender: {} } as TezosTransactionIntent, {
115
- value: customFees,
116
- });
141
+ await api.craftTransaction(
142
+ {
143
+ intentType: "transaction",
144
+ type: "send",
145
+ sender: "tz1test",
146
+ recipient: "tz1recipient",
147
+ amount: 1000n,
148
+ } as TransactionIntent,
149
+ {
150
+ value: customFees,
151
+ },
152
+ );
117
153
  expect(logicEstimateFees).toHaveBeenCalledTimes(1);
118
154
  expect(logicCraftTransactionMock).toHaveBeenCalledWith(
119
155
  expect.any(Object),
@@ -138,7 +174,13 @@ describe("Testing estimateFees function", () => {
138
174
  gasLimit: DEFAULT_GAS_LIMIT,
139
175
  storageLimit: DEFAULT_STORAGE_LIMIT,
140
176
  });
141
- const result = await api.estimateFees({ type: "send", sender: {} } as TezosTransactionIntent);
177
+ const result = await api.estimateFees({
178
+ intentType: "transaction",
179
+ type: "send",
180
+ sender: "tz1test",
181
+ recipient: "tz1recipient",
182
+ amount: 1000n,
183
+ } as TransactionIntent);
142
184
  expect(result).toEqual({
143
185
  value: DEFAULT_ESTIMATED_FEES,
144
186
  parameters: {
@@ -149,9 +191,44 @@ describe("Testing estimateFees function", () => {
149
191
  });
150
192
 
151
193
  it("should throw taquito errors", async () => {
152
- logicEstimateFees.mockResolvedValue({ taquitoError: "test" });
194
+ logicEstimateFees.mockResolvedValue({
195
+ estimatedFees: DEFAULT_ESTIMATED_FEES,
196
+ gasLimit: DEFAULT_GAS_LIMIT,
197
+ storageLimit: DEFAULT_STORAGE_LIMIT,
198
+ taquitoError: "test",
199
+ });
153
200
  await expect(
154
- api.estimateFees({ type: "send", sender: {} } as TezosTransactionIntent),
201
+ api.estimateFees({
202
+ intentType: "transaction",
203
+ type: "send",
204
+ sender: "tz1test",
205
+ recipient: "tz1recipient",
206
+ amount: 1000n,
207
+ } as TransactionIntent),
155
208
  ).rejects.toThrow("Fees estimation failed: test");
156
209
  });
210
+
211
+ it("should not throw for delegate.unchanged errors", async () => {
212
+ logicEstimateFees.mockResolvedValue({
213
+ estimatedFees: DEFAULT_ESTIMATED_FEES,
214
+ gasLimit: DEFAULT_GAS_LIMIT,
215
+ storageLimit: DEFAULT_STORAGE_LIMIT,
216
+ taquitoError: "proto.022-PsRiotum.delegate.unchanged",
217
+ });
218
+ const result = await api.estimateFees({
219
+ intentType: "staking",
220
+ type: "delegate",
221
+ sender: "tz1test",
222
+ recipient: "tz1validator",
223
+ amount: 0n,
224
+ } as TransactionIntent);
225
+
226
+ expect(result).toEqual({
227
+ value: DEFAULT_ESTIMATED_FEES,
228
+ parameters: {
229
+ gasLimit: DEFAULT_GAS_LIMIT,
230
+ storageLimit: DEFAULT_STORAGE_LIMIT,
231
+ },
232
+ });
233
+ });
157
234
  });