@ledgerhq/coin-tezos 0.4.0-nightly.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 (325) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +39 -0
  4. package/CHANGELOG.md +12 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +6 -0
  7. package/lib/api/bakers.d.ts +14 -0
  8. package/lib/api/bakers.d.ts.map +1 -0
  9. package/lib/api/bakers.integration.test.d.ts +2 -0
  10. package/lib/api/bakers.integration.test.d.ts.map +1 -0
  11. package/lib/api/bakers.integration.test.js +61 -0
  12. package/lib/api/bakers.integration.test.js.map +1 -0
  13. package/lib/api/bakers.js +141 -0
  14. package/lib/api/bakers.js.map +1 -0
  15. package/lib/api/bakers.test.d.ts +2 -0
  16. package/lib/api/bakers.test.d.ts.map +1 -0
  17. package/lib/api/bakers.test.js +146 -0
  18. package/lib/api/bakers.test.js.map +1 -0
  19. package/lib/api/bakers.whitelist-default.d.ts +4 -0
  20. package/lib/api/bakers.whitelist-default.d.ts.map +1 -0
  21. package/lib/api/bakers.whitelist-default.js +34 -0
  22. package/lib/api/bakers.whitelist-default.js.map +1 -0
  23. package/lib/api/index.d.ts +3 -0
  24. package/lib/api/index.d.ts.map +1 -0
  25. package/lib/api/index.js +19 -0
  26. package/lib/api/index.js.map +1 -0
  27. package/lib/api/tzkt.d.ts +81 -0
  28. package/lib/api/tzkt.d.ts.map +1 -0
  29. package/lib/api/tzkt.js +52 -0
  30. package/lib/api/tzkt.js.map +1 -0
  31. package/lib/bridge/broadcast.d.ts +6 -0
  32. package/lib/bridge/broadcast.d.ts.map +1 -0
  33. package/lib/bridge/broadcast.js +22 -0
  34. package/lib/bridge/broadcast.js.map +1 -0
  35. package/lib/bridge/broadcast.test.d.ts +2 -0
  36. package/lib/bridge/broadcast.test.d.ts.map +1 -0
  37. package/lib/bridge/broadcast.test.js +40 -0
  38. package/lib/bridge/broadcast.test.js.map +1 -0
  39. package/lib/bridge/createTransaction.d.ts +3 -0
  40. package/lib/bridge/createTransaction.d.ts.map +1 -0
  41. package/lib/bridge/createTransaction.js +23 -0
  42. package/lib/bridge/createTransaction.js.map +1 -0
  43. package/lib/bridge/deviceTransactionConfig.d.ts +19 -0
  44. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
  45. package/lib/bridge/deviceTransactionConfig.js +44 -0
  46. package/lib/bridge/deviceTransactionConfig.js.map +1 -0
  47. package/lib/bridge/estimateMaxSpendable.d.ts +10 -0
  48. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  49. package/lib/bridge/estimateMaxSpendable.js +29 -0
  50. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  51. package/lib/bridge/getAccountShape.d.ts +5 -0
  52. package/lib/bridge/getAccountShape.d.ts.map +1 -0
  53. package/lib/bridge/getAccountShape.js +253 -0
  54. package/lib/bridge/getAccountShape.js.map +1 -0
  55. package/lib/bridge/getAccountShape.test.d.ts +2 -0
  56. package/lib/bridge/getAccountShape.test.d.ts.map +1 -0
  57. package/lib/bridge/getAccountShape.test.js +33 -0
  58. package/lib/bridge/getAccountShape.test.js.map +1 -0
  59. package/lib/bridge/index.d.ts +8 -0
  60. package/lib/bridge/index.d.ts.map +1 -0
  61. package/lib/bridge/index.js +58 -0
  62. package/lib/bridge/index.js.map +1 -0
  63. package/lib/bridge/preload.d.ts +9 -0
  64. package/lib/bridge/preload.d.ts.map +1 -0
  65. package/lib/bridge/preload.js +32 -0
  66. package/lib/bridge/preload.js.map +1 -0
  67. package/lib/bridge/prepareTransaction.d.ts +9 -0
  68. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  69. package/lib/bridge/prepareTransaction.js +157 -0
  70. package/lib/bridge/prepareTransaction.js.map +1 -0
  71. package/lib/bridge/serialization.d.ts +7 -0
  72. package/lib/bridge/serialization.d.ts.map +1 -0
  73. package/lib/bridge/serialization.js +27 -0
  74. package/lib/bridge/serialization.js.map +1 -0
  75. package/lib/bridge/signOperation.d.ts +19 -0
  76. package/lib/bridge/signOperation.d.ts.map +1 -0
  77. package/lib/bridge/signOperation.js +147 -0
  78. package/lib/bridge/signOperation.js.map +1 -0
  79. package/lib/bridge/signOperation.test.d.ts +2 -0
  80. package/lib/bridge/signOperation.test.d.ts.map +1 -0
  81. package/lib/bridge/signOperation.test.js +223 -0
  82. package/lib/bridge/signOperation.test.js.map +1 -0
  83. package/lib/bridge/transaction.d.ts +15 -0
  84. package/lib/bridge/transaction.d.ts.map +1 -0
  85. package/lib/bridge/transaction.js +52 -0
  86. package/lib/bridge/transaction.js.map +1 -0
  87. package/lib/bridge/transactionStatus.d.ts +3 -0
  88. package/lib/bridge/transactionStatus.d.ts.map +1 -0
  89. package/lib/bridge/transactionStatus.js +114 -0
  90. package/lib/bridge/transactionStatus.js.map +1 -0
  91. package/lib/datasets/tezos.scanAccounts.1.d.ts +7 -0
  92. package/lib/datasets/tezos.scanAccounts.1.d.ts.map +1 -0
  93. package/lib/datasets/tezos.scanAccounts.1.js +38 -0
  94. package/lib/datasets/tezos.scanAccounts.1.js.map +1 -0
  95. package/lib/index.d.ts +3 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/index.js +21 -0
  98. package/lib/index.js.map +1 -0
  99. package/lib/signer/getAddress.d.ts +6 -0
  100. package/lib/signer/getAddress.d.ts.map +1 -0
  101. package/lib/signer/getAddress.js +19 -0
  102. package/lib/signer/getAddress.js.map +1 -0
  103. package/lib/signer/index.d.ts +6 -0
  104. package/lib/signer/index.d.ts.map +1 -0
  105. package/lib/signer/index.js +11 -0
  106. package/lib/signer/index.js.map +1 -0
  107. package/lib/test/bot-deviceActions.d.ts +4 -0
  108. package/lib/test/bot-deviceActions.d.ts.map +1 -0
  109. package/lib/test/bot-deviceActions.js +74 -0
  110. package/lib/test/bot-deviceActions.js.map +1 -0
  111. package/lib/test/bot-specs.d.ts +7 -0
  112. package/lib/test/bot-specs.d.ts.map +1 -0
  113. package/lib/test/bot-specs.js +154 -0
  114. package/lib/test/bot-specs.js.map +1 -0
  115. package/lib/test/bridgeDatasetTest.d.ts +5 -0
  116. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  117. package/lib/test/bridgeDatasetTest.js +99 -0
  118. package/lib/test/bridgeDatasetTest.js.map +1 -0
  119. package/lib/test/cli.d.ts +78 -0
  120. package/lib/test/cli.d.ts.map +1 -0
  121. package/lib/test/cli.js +97 -0
  122. package/lib/test/cli.js.map +1 -0
  123. package/lib/test/index.d.ts +2 -0
  124. package/lib/test/index.d.ts.map +1 -0
  125. package/lib/test/index.js +18 -0
  126. package/lib/test/index.js.map +1 -0
  127. package/lib/types/errors.d.ts +4 -0
  128. package/lib/types/errors.d.ts.map +1 -0
  129. package/lib/types/errors.js +6 -0
  130. package/lib/types/errors.js.map +1 -0
  131. package/lib/types/index.d.ts +4 -0
  132. package/lib/types/index.d.ts.map +1 -0
  133. package/lib/types/index.js +20 -0
  134. package/lib/types/index.js.map +1 -0
  135. package/lib/types/model.d.ts +92 -0
  136. package/lib/types/model.d.ts.map +1 -0
  137. package/lib/types/model.fixture.d.ts +5 -0
  138. package/lib/types/model.fixture.d.ts.map +1 -0
  139. package/lib/types/model.fixture.js +85 -0
  140. package/lib/types/model.fixture.js.map +1 -0
  141. package/lib/types/model.js +8 -0
  142. package/lib/types/model.js.map +1 -0
  143. package/lib/types/signer.d.ts +37 -0
  144. package/lib/types/signer.d.ts.map +1 -0
  145. package/lib/types/signer.js +3 -0
  146. package/lib/types/signer.js.map +1 -0
  147. package/lib-es/api/bakers.d.ts +14 -0
  148. package/lib-es/api/bakers.d.ts.map +1 -0
  149. package/lib-es/api/bakers.integration.test.d.ts +2 -0
  150. package/lib-es/api/bakers.integration.test.d.ts.map +1 -0
  151. package/lib-es/api/bakers.integration.test.js +56 -0
  152. package/lib-es/api/bakers.integration.test.js.map +1 -0
  153. package/lib-es/api/bakers.js +125 -0
  154. package/lib-es/api/bakers.js.map +1 -0
  155. package/lib-es/api/bakers.test.d.ts +2 -0
  156. package/lib-es/api/bakers.test.d.ts.map +1 -0
  157. package/lib-es/api/bakers.test.js +141 -0
  158. package/lib-es/api/bakers.test.js.map +1 -0
  159. package/lib-es/api/bakers.whitelist-default.d.ts +4 -0
  160. package/lib-es/api/bakers.whitelist-default.d.ts.map +1 -0
  161. package/lib-es/api/bakers.whitelist-default.js +31 -0
  162. package/lib-es/api/bakers.whitelist-default.js.map +1 -0
  163. package/lib-es/api/index.d.ts +3 -0
  164. package/lib-es/api/index.d.ts.map +1 -0
  165. package/lib-es/api/index.js +3 -0
  166. package/lib-es/api/index.js.map +1 -0
  167. package/lib-es/api/tzkt.d.ts +81 -0
  168. package/lib-es/api/tzkt.d.ts.map +1 -0
  169. package/lib-es/api/tzkt.js +47 -0
  170. package/lib-es/api/tzkt.js.map +1 -0
  171. package/lib-es/bridge/broadcast.d.ts +6 -0
  172. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  173. package/lib-es/bridge/broadcast.js +20 -0
  174. package/lib-es/bridge/broadcast.js.map +1 -0
  175. package/lib-es/bridge/broadcast.test.d.ts +2 -0
  176. package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
  177. package/lib-es/bridge/broadcast.test.js +35 -0
  178. package/lib-es/bridge/broadcast.test.js.map +1 -0
  179. package/lib-es/bridge/createTransaction.d.ts +3 -0
  180. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  181. package/lib-es/bridge/createTransaction.js +17 -0
  182. package/lib-es/bridge/createTransaction.js.map +1 -0
  183. package/lib-es/bridge/deviceTransactionConfig.d.ts +19 -0
  184. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
  185. package/lib-es/bridge/deviceTransactionConfig.js +42 -0
  186. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
  187. package/lib-es/bridge/estimateMaxSpendable.d.ts +10 -0
  188. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  189. package/lib-es/bridge/estimateMaxSpendable.js +24 -0
  190. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  191. package/lib-es/bridge/getAccountShape.d.ts +5 -0
  192. package/lib-es/bridge/getAccountShape.d.ts.map +1 -0
  193. package/lib-es/bridge/getAccountShape.js +245 -0
  194. package/lib-es/bridge/getAccountShape.js.map +1 -0
  195. package/lib-es/bridge/getAccountShape.test.d.ts +2 -0
  196. package/lib-es/bridge/getAccountShape.test.d.ts.map +1 -0
  197. package/lib-es/bridge/getAccountShape.test.js +31 -0
  198. package/lib-es/bridge/getAccountShape.test.js.map +1 -0
  199. package/lib-es/bridge/index.d.ts +8 -0
  200. package/lib-es/bridge/index.d.ts.map +1 -0
  201. package/lib-es/bridge/index.js +51 -0
  202. package/lib-es/bridge/index.js.map +1 -0
  203. package/lib-es/bridge/preload.d.ts +9 -0
  204. package/lib-es/bridge/preload.d.ts.map +1 -0
  205. package/lib-es/bridge/preload.js +26 -0
  206. package/lib-es/bridge/preload.js.map +1 -0
  207. package/lib-es/bridge/prepareTransaction.d.ts +9 -0
  208. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  209. package/lib-es/bridge/prepareTransaction.js +150 -0
  210. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  211. package/lib-es/bridge/serialization.d.ts +7 -0
  212. package/lib-es/bridge/serialization.d.ts.map +1 -0
  213. package/lib-es/bridge/serialization.js +20 -0
  214. package/lib-es/bridge/serialization.js.map +1 -0
  215. package/lib-es/bridge/signOperation.d.ts +19 -0
  216. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  217. package/lib-es/bridge/signOperation.js +143 -0
  218. package/lib-es/bridge/signOperation.js.map +1 -0
  219. package/lib-es/bridge/signOperation.test.d.ts +2 -0
  220. package/lib-es/bridge/signOperation.test.d.ts.map +1 -0
  221. package/lib-es/bridge/signOperation.test.js +195 -0
  222. package/lib-es/bridge/signOperation.test.js.map +1 -0
  223. package/lib-es/bridge/transaction.d.ts +15 -0
  224. package/lib-es/bridge/transaction.d.ts.map +1 -0
  225. package/lib-es/bridge/transaction.js +46 -0
  226. package/lib-es/bridge/transaction.js.map +1 -0
  227. package/lib-es/bridge/transactionStatus.d.ts +3 -0
  228. package/lib-es/bridge/transactionStatus.d.ts.map +1 -0
  229. package/lib-es/bridge/transactionStatus.js +107 -0
  230. package/lib-es/bridge/transactionStatus.js.map +1 -0
  231. package/lib-es/datasets/tezos.scanAccounts.1.d.ts +7 -0
  232. package/lib-es/datasets/tezos.scanAccounts.1.d.ts.map +1 -0
  233. package/lib-es/datasets/tezos.scanAccounts.1.js +36 -0
  234. package/lib-es/datasets/tezos.scanAccounts.1.js.map +1 -0
  235. package/lib-es/index.d.ts +3 -0
  236. package/lib-es/index.d.ts.map +1 -0
  237. package/lib-es/index.js +3 -0
  238. package/lib-es/index.js.map +1 -0
  239. package/lib-es/signer/getAddress.d.ts +6 -0
  240. package/lib-es/signer/getAddress.d.ts.map +1 -0
  241. package/lib-es/signer/getAddress.js +17 -0
  242. package/lib-es/signer/getAddress.js.map +1 -0
  243. package/lib-es/signer/index.d.ts +6 -0
  244. package/lib-es/signer/index.d.ts.map +1 -0
  245. package/lib-es/signer/index.js +6 -0
  246. package/lib-es/signer/index.js.map +1 -0
  247. package/lib-es/test/bot-deviceActions.d.ts +4 -0
  248. package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
  249. package/lib-es/test/bot-deviceActions.js +71 -0
  250. package/lib-es/test/bot-deviceActions.js.map +1 -0
  251. package/lib-es/test/bot-specs.d.ts +7 -0
  252. package/lib-es/test/bot-specs.d.ts.map +1 -0
  253. package/lib-es/test/bot-specs.js +149 -0
  254. package/lib-es/test/bot-specs.js.map +1 -0
  255. package/lib-es/test/bridgeDatasetTest.d.ts +5 -0
  256. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  257. package/lib-es/test/bridgeDatasetTest.js +93 -0
  258. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  259. package/lib-es/test/cli.d.ts +78 -0
  260. package/lib-es/test/cli.d.ts.map +1 -0
  261. package/lib-es/test/cli.js +91 -0
  262. package/lib-es/test/cli.js.map +1 -0
  263. package/lib-es/test/index.d.ts +2 -0
  264. package/lib-es/test/index.d.ts.map +1 -0
  265. package/lib-es/test/index.js +2 -0
  266. package/lib-es/test/index.js.map +1 -0
  267. package/lib-es/types/errors.d.ts +4 -0
  268. package/lib-es/types/errors.d.ts.map +1 -0
  269. package/lib-es/types/errors.js +3 -0
  270. package/lib-es/types/errors.js.map +1 -0
  271. package/lib-es/types/index.d.ts +4 -0
  272. package/lib-es/types/index.d.ts.map +1 -0
  273. package/lib-es/types/index.js +4 -0
  274. package/lib-es/types/index.js.map +1 -0
  275. package/lib-es/types/model.d.ts +92 -0
  276. package/lib-es/types/model.d.ts.map +1 -0
  277. package/lib-es/types/model.fixture.d.ts +5 -0
  278. package/lib-es/types/model.fixture.d.ts.map +1 -0
  279. package/lib-es/types/model.fixture.js +76 -0
  280. package/lib-es/types/model.fixture.js.map +1 -0
  281. package/lib-es/types/model.js +4 -0
  282. package/lib-es/types/model.js.map +1 -0
  283. package/lib-es/types/signer.d.ts +37 -0
  284. package/lib-es/types/signer.d.ts.map +1 -0
  285. package/lib-es/types/signer.js +2 -0
  286. package/lib-es/types/signer.js.map +1 -0
  287. package/package.json +116 -0
  288. package/src/README.md +29 -0
  289. package/src/api/bakers.integration.test.ts +61 -0
  290. package/src/api/bakers.test.ts +140 -0
  291. package/src/api/bakers.ts +139 -0
  292. package/src/api/bakers.whitelist-default.ts +33 -0
  293. package/src/api/index.ts +2 -0
  294. package/src/api/tzkt.ts +112 -0
  295. package/src/bridge/broadcast.test.ts +30 -0
  296. package/src/bridge/broadcast.ts +18 -0
  297. package/src/bridge/createTransaction.ts +18 -0
  298. package/src/bridge/deviceTransactionConfig.ts +74 -0
  299. package/src/bridge/estimateMaxSpendable.ts +32 -0
  300. package/src/bridge/getAccountShape.test.ts +22 -0
  301. package/src/bridge/getAccountShape.ts +289 -0
  302. package/src/bridge/index.ts +65 -0
  303. package/src/bridge/preload.ts +18 -0
  304. package/src/bridge/prepareTransaction.ts +160 -0
  305. package/src/bridge/serialization.ts +27 -0
  306. package/src/bridge/signOperation.test.ts +211 -0
  307. package/src/bridge/signOperation.ts +213 -0
  308. package/src/bridge/transaction.ts +94 -0
  309. package/src/bridge/transactionStatus.ts +130 -0
  310. package/src/datasets/tezos.scanAccounts.1.ts +35 -0
  311. package/src/index.ts +3 -0
  312. package/src/signer/getAddress.ts +13 -0
  313. package/src/signer/index.ts +7 -0
  314. package/src/test/bot-deviceActions.ts +79 -0
  315. package/src/test/bot-specs.ts +152 -0
  316. package/src/test/bridgeDatasetTest.ts +132 -0
  317. package/src/test/cli.ts +137 -0
  318. package/src/test/index.ts +1 -0
  319. package/src/types/errors.ts +5 -0
  320. package/src/types/index.ts +3 -0
  321. package/src/types/model.fixture.ts +89 -0
  322. package/src/types/model.ts +123 -0
  323. package/src/types/signer.ts +48 -0
  324. package/tsconfig.json +13 -0
  325. package/types/@taquito/ledger-signer/index.d.ts +3 -0
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.fetchAllTransactions = exports.getAccountShape = void 0;
16
+ const bignumber_js_1 = require("bignumber.js");
17
+ const invariant_1 = __importDefault(require("invariant"));
18
+ const bs58check_1 = __importDefault(require("bs58check"));
19
+ const blake2b_1 = __importDefault(require("blake2b"));
20
+ const logs_1 = require("@ledgerhq/logs");
21
+ const live_env_1 = require("@ledgerhq/live-env");
22
+ const index_1 = require("@ledgerhq/coin-framework/account/index");
23
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
24
+ const operation_1 = require("@ledgerhq/coin-framework/operation");
25
+ const tzkt_1 = __importDefault(require("../api/tzkt"));
26
+ function reconciliatePublicKey(publicKey, initialAccount) {
27
+ if (publicKey)
28
+ return publicKey;
29
+ if (initialAccount) {
30
+ const { xpubOrAddress } = (0, index_1.decodeAccountId)(initialAccount.id);
31
+ return xpubOrAddress;
32
+ }
33
+ throw new Error("publicKey wasn't properly restored");
34
+ }
35
+ const encodeAddress = (publicKey) => {
36
+ const curve = 0;
37
+ const curveData = {
38
+ pkB58Prefix: Buffer.from([13, 15, 37, 217]),
39
+ pkhB58Prefix: Buffer.from([6, 161, 159]),
40
+ compressPublicKey: (publicKey, curve) => {
41
+ publicKey = publicKey.slice(0);
42
+ publicKey[0] = curve;
43
+ return publicKey;
44
+ },
45
+ };
46
+ const publicKeyBuf = curveData.compressPublicKey(publicKey, curve);
47
+ const key = publicKeyBuf.slice(1);
48
+ const keyHashSize = 20;
49
+ // eslint-disable-next-line prefer-const
50
+ const hash = Buffer.alloc(keyHashSize);
51
+ const blakHash = (0, blake2b_1.default)(keyHashSize);
52
+ blakHash.update(key);
53
+ blakHash.digest(hash);
54
+ const address = bs58check_1.default.encode(Buffer.concat([curveData.pkhB58Prefix, hash]));
55
+ return address;
56
+ };
57
+ function isStringHex(s) {
58
+ for (let i = 0; i < s.length; i += 2) {
59
+ const ss = s.slice(i, i + 2);
60
+ const x = parseInt(ss, 16);
61
+ if (Number.isNaN(x)) {
62
+ return false;
63
+ }
64
+ }
65
+ return true;
66
+ }
67
+ const getAccountShape = (infoInput) => __awaiter(void 0, void 0, void 0, function* () {
68
+ const { initialAccount, rest, currency, derivationMode } = infoInput;
69
+ const publicKey = reconciliatePublicKey(rest === null || rest === void 0 ? void 0 : rest.publicKey, initialAccount);
70
+ (0, invariant_1.default)(isStringHex(publicKey), `Invalid public key (${publicKey}). Please reimport your Tezos accounts`);
71
+ const hex = Buffer.from(publicKey, "hex");
72
+ const address = encodeAddress(hex);
73
+ const accountId = (0, index_1.encodeAccountId)({
74
+ type: "js",
75
+ version: "2",
76
+ currencyId: currency.id,
77
+ xpubOrAddress: publicKey,
78
+ derivationMode,
79
+ });
80
+ const initialStableOperations = (initialAccount && initialAccount.id === accountId ? initialAccount.operations : []);
81
+ // fetch transactions, incrementally if possible
82
+ const mostRecentStableOperation = initialStableOperations[0];
83
+ const lastId = initialAccount && (0, index_1.areAllOperationsLoaded)(initialAccount) && mostRecentStableOperation
84
+ ? mostRecentStableOperation.extra.id || undefined
85
+ : undefined;
86
+ const apiAccountPromise = tzkt_1.default.getAccountByAddress(address);
87
+ const blocksCountPromise = tzkt_1.default.getBlockCount();
88
+ const [apiAccount, blockHeight] = yield Promise.all([apiAccountPromise, blocksCountPromise]);
89
+ if (apiAccount.type === "empty") {
90
+ return {
91
+ id: accountId,
92
+ xpub: publicKey,
93
+ freshAddress: address,
94
+ blockHeight,
95
+ lastSyncDate: new Date(),
96
+ tezosResources: {
97
+ revealed: false,
98
+ counter: 0,
99
+ },
100
+ };
101
+ }
102
+ const fullySupported = apiAccount.type === "user";
103
+ const apiOperations = fullySupported ? yield (0, exports.fetchAllTransactions)(address, lastId) : [];
104
+ const { revealed, counter } = apiAccount;
105
+ const tezosResources = {
106
+ revealed,
107
+ counter,
108
+ };
109
+ const balance = new bignumber_js_1.BigNumber(apiAccount.balance);
110
+ const subAccounts = [];
111
+ const newOps = apiOperations
112
+ .map(txToOp({ address, accountId }))
113
+ .filter(Boolean); // force cast because `filter(Boolean)` remove undefined and null value
114
+ const operations = (0, jsHelpers_1.mergeOps)(initialStableOperations, newOps);
115
+ const accountShape = {
116
+ id: accountId,
117
+ xpub: publicKey,
118
+ freshAddress: address,
119
+ operations,
120
+ balance,
121
+ subAccounts,
122
+ spendableBalance: balance,
123
+ blockHeight,
124
+ lastSyncDate: new Date(),
125
+ tezosResources,
126
+ };
127
+ return accountShape;
128
+ });
129
+ exports.getAccountShape = getAccountShape;
130
+ const txToOp = ({ address, accountId }) => (tx) => {
131
+ var _a, _b, _c, _d;
132
+ let type;
133
+ let maybeValue;
134
+ let senders = [];
135
+ let recipients = [];
136
+ const hasFailed = tx.status ? tx.status !== "applied" : false;
137
+ switch (tx.type) {
138
+ case "transaction": {
139
+ const initiator = (_a = tx.initiator) === null || _a === void 0 ? void 0 : _a.address;
140
+ const from = (_b = tx.sender) === null || _b === void 0 ? void 0 : _b.address;
141
+ const to = (_c = tx.target) === null || _c === void 0 ? void 0 : _c.address;
142
+ if (from !== address && to !== address && initiator !== address) {
143
+ // failsafe for a case that shouldn't happen.
144
+ console.warn("found tx is unrelated to account! " + tx.hash);
145
+ return null;
146
+ }
147
+ senders = [from || initiator || ""];
148
+ recipients = [to || ""];
149
+ if ((from === address && to === address) || // self tx
150
+ (from !== address && to !== address) // initiator but not in from/to
151
+ ) {
152
+ // we just pay fees in that case
153
+ type = "FEES";
154
+ }
155
+ else {
156
+ type = to === address ? "IN" : "OUT";
157
+ if (!hasFailed) {
158
+ maybeValue = new bignumber_js_1.BigNumber(tx.amount || 0);
159
+ if (maybeValue.eq(0)) {
160
+ type = "FEES";
161
+ }
162
+ }
163
+ }
164
+ break;
165
+ }
166
+ case "delegation":
167
+ type = tx.newDelegate ? "DELEGATE" : "UNDELEGATE";
168
+ senders = [address];
169
+ // convention was to use recipient for the new delegation address or "" if undelegation
170
+ recipients = [tx.newDelegate ? tx.newDelegate.address : ""];
171
+ break;
172
+ case "reveal":
173
+ type = "REVEAL";
174
+ senders = [address];
175
+ recipients = [address];
176
+ break;
177
+ case "migration":
178
+ type = tx.balanceChange < 0 ? "OUT" : "IN";
179
+ maybeValue = new bignumber_js_1.BigNumber(Math.abs(tx.balanceChange || 0));
180
+ senders = [address];
181
+ recipients = [address];
182
+ break;
183
+ case "origination":
184
+ type = "CREATE";
185
+ maybeValue = new bignumber_js_1.BigNumber(tx.contractBalance || 0);
186
+ senders = [address];
187
+ recipients = [((_d = tx.originatedContract) === null || _d === void 0 ? void 0 : _d.address) || ""];
188
+ break;
189
+ case "activation":
190
+ type = "IN";
191
+ senders = [address];
192
+ recipients = [address];
193
+ maybeValue = new bignumber_js_1.BigNumber(tx.balance || 0);
194
+ break;
195
+ // TODO more type of tx
196
+ default:
197
+ console.warn("unsupported tx:", tx);
198
+ return null;
199
+ }
200
+ let { hash } = tx;
201
+ const { id, allocationFee, bakerFee, storageFee, level: blockHeight, block: blockHash, timestamp, } = tx;
202
+ if (!hash) {
203
+ // in migration case, there is no hash...
204
+ hash = "";
205
+ }
206
+ let value = maybeValue || new bignumber_js_1.BigNumber(0);
207
+ if (type === "IN" && value.eq(0)) {
208
+ return; // not interesting op
209
+ }
210
+ let fee = new bignumber_js_1.BigNumber(bakerFee || 0);
211
+ if (!hasFailed) {
212
+ fee = fee.plus(allocationFee || 0).plus(storageFee || 0);
213
+ }
214
+ if (type !== "IN") {
215
+ value = value.plus(fee);
216
+ }
217
+ return {
218
+ id: (0, operation_1.encodeOperationId)(accountId, hash, type),
219
+ hash,
220
+ type,
221
+ value,
222
+ fee,
223
+ senders,
224
+ recipients,
225
+ blockHeight,
226
+ blockHash,
227
+ accountId,
228
+ date: new Date(timestamp),
229
+ extra: { id },
230
+ hasFailed,
231
+ };
232
+ };
233
+ const fetchAllTransactions = (address, lastId) => __awaiter(void 0, void 0, void 0, function* () {
234
+ let txs = [];
235
+ let maxIteration = (0, live_env_1.getEnv)("TEZOS_MAX_TX_QUERIES");
236
+ do {
237
+ const r = yield tzkt_1.default.getAccountOperations(address, { lastId, sort: 0 });
238
+ if (r.length === 0)
239
+ return txs;
240
+ txs = txs.concat(r);
241
+ const last = txs[txs.length - 1];
242
+ if (!last)
243
+ return txs;
244
+ lastId = last.id;
245
+ if (!lastId) {
246
+ (0, logs_1.log)("tezos", "id missing!");
247
+ return txs;
248
+ }
249
+ } while (--maxIteration);
250
+ return txs;
251
+ });
252
+ exports.fetchAllTransactions = fetchAllTransactions;
253
+ //# sourceMappingURL=getAccountShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAccountShape.js","sourceRoot":"","sources":["../../src/bridge/getAccountShape.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAyC;AACzC,0DAAkC;AAClC,0DAAkC;AAClC,sDAA8B;AAC9B,yCAAqC;AACrC,iDAA4C;AAE5C,kEAIgD;AAChD,yEAAsF;AACtF,kEAAuE;AACvE,uDAAqD;AAGrD,SAAS,qBAAqB,CAC5B,SAA6B,EAC7B,cAAmC;IAEnC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,cAAc,EAAE;QAClB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uBAAe,EAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC;KACtB;IACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,MAAM,SAAS,GAAG;QAChB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3C,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,iBAAiB,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YACtD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;IACF,MAAM,YAAY,GAAG,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,wCAAwC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,mBAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,CAAS;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,MAAM,eAAe,GAAoB,CAAM,SAAS,EAAC,EAAE;IAChE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACrE,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzE,IAAA,mBAAS,EACP,WAAW,CAAC,SAAS,CAAC,EACtB,uBAAuB,SAAS,wCAAwC,CACzE,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC;QAChC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,aAAa,EAAE,SAAS;QACxB,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,CAC9B,cAAc,IAAI,cAAc,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAC;IAEtB,gDAAgD;IAChD,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,MAAM,GACV,cAAc,IAAI,IAAA,8BAAsB,EAAC,cAAc,CAAC,IAAI,yBAAyB;QACnF,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS;QACjD,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,iBAAiB,GAAG,cAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,cAAG,CAAC,aAAa,EAAE,CAAC;IAE/C,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE7F,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;QAC/B,OAAO;YACL,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,OAAO;YACrB,WAAW;YACX,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,cAAc,EAAE;gBACd,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,CAAC;aACX;SACF,CAAC;KACH;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC;IAElD,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,IAAA,4BAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAEzC,MAAM,cAAc,GAAG;QACrB,QAAQ;QACR,OAAO;KACR,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,wBAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAmB,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,aAAa;SACzB,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACnC,MAAM,CAAC,OAAO,CAAgC,CAAC,CAAC,uEAAuE;IAE1H,MAAM,UAAU,GAAG,IAAA,oBAAQ,EAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG;QACnB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,OAAO;QACrB,UAAU;QACV,OAAO;QACP,WAAW;QACX,gBAAgB,EAAE,OAAO;QACzB,WAAW;QACX,YAAY,EAAE,IAAI,IAAI,EAAE;QACxB,cAAc;KACf,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAA,CAAC;AAnFW,QAAA,eAAe,mBAmF1B;AAEF,MAAM,MAAM,GACV,CAAC,EAAE,OAAO,EAAE,SAAS,EAA0C,EAAE,EAAE,CACnE,CAAC,EAAgB,EAAqC,EAAE;;IACtD,IAAI,IAAmB,CAAC;IACxB,IAAI,UAAU,CAAC;IACf,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9D,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,aAAa,CAAC,CAAC;YAClB,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,SAAS,0CAAE,OAAO,CAAC;YACxC,MAAM,IAAI,GAAG,MAAA,EAAE,CAAC,MAAM,0CAAE,OAAO,CAAC;YAChC,MAAM,EAAE,GAAG,MAAA,EAAE,CAAC,MAAM,0CAAE,OAAO,CAAC;YAC9B,IAAI,IAAI,KAAK,OAAO,IAAI,EAAE,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,EAAE;gBAC/D,6CAA6C;gBAC7C,OAAO,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;aACb;YACD,OAAO,GAAG,CAAC,IAAI,IAAI,SAAS,IAAI,EAAE,CAAC,CAAC;YACpC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACxB,IACE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,UAAU;gBAClD,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC,+BAA+B;cACpE;gBACA,gCAAgC;gBAChC,IAAI,GAAG,MAAM,CAAC;aACf;iBAAM;gBACL,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE;oBACd,UAAU,GAAG,IAAI,wBAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBAC3C,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wBACpB,IAAI,GAAG,MAAM,CAAC;qBACf;iBACF;aACF;YACD,MAAM;SACP;QACD,KAAK,YAAY;YACf,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;YAClD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,uFAAuF;YACvF,UAAU,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,QAAQ,CAAC;YAChB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,WAAW;YACd,IAAI,GAAG,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,UAAU,GAAG,IAAI,wBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,aAAa;YAChB,IAAI,GAAG,QAAQ,CAAC;YAChB,UAAU,GAAG,IAAI,wBAAS,CAAC,EAAE,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;YACpD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,UAAU,GAAG,CAAC,CAAA,MAAA,EAAE,CAAC,kBAAkB,0CAAE,OAAO,KAAI,EAAE,CAAC,CAAC;YACpD,MAAM;QACR,KAAK,YAAY;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,UAAU,GAAG,IAAI,wBAAS,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YAC5C,MAAM;QACR,uBAAuB;QACvB;YACE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;KACf;IAED,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,EACJ,EAAE,EACF,aAAa,EACb,QAAQ,EACR,UAAU,EACV,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,SAAS,EAChB,SAAS,GACV,GAAG,EAAE,CAAC;IAEP,IAAI,CAAC,IAAI,EAAE;QACT,yCAAyC;QACzC,IAAI,GAAG,EAAE,CAAC;KACX;IAED,IAAI,KAAK,GAAG,UAAU,IAAI,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAChC,OAAO,CAAC,qBAAqB;KAC9B;IAED,IAAI,GAAG,GAAG,IAAI,wBAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IAEvC,IAAI,CAAC,SAAS,EAAE;QACd,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;KAC1D;IAED,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzB;IAED,OAAO;QACL,EAAE,EAAE,IAAA,6BAAiB,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;QAC5C,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG;QACH,OAAO;QACP,UAAU;QACV,WAAW;QACX,SAAS;QACT,SAAS;QACT,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QACzB,KAAK,EAAE,EAAE,EAAE,EAAE;QACb,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AAEG,MAAM,oBAAoB,GAAG,CAClC,OAAe,EACf,MAAe,EACU,EAAE;IAC3B,IAAI,GAAG,GAAmB,EAAE,CAAC;IAC7B,IAAI,YAAY,GAAG,IAAA,iBAAM,EAAC,sBAAsB,CAAC,CAAC;IAClD,GAAG;QACD,MAAM,CAAC,GAAG,MAAM,cAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAC/B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,EAAE;YACX,IAAA,UAAG,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC5B,OAAO,GAAG,CAAC;SACZ;KACF,QAAQ,EAAE,YAAY,EAAE;IACzB,OAAO,GAAG,CAAC;AACb,CAAC,CAAA,CAAC;AAnBW,QAAA,oBAAoB,wBAmB/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getAccountShape.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAccountShape.test.d.ts","sourceRoot":"","sources":["../../src/bridge/getAccountShape.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const live_env_1 = require("@ledgerhq/live-env");
13
+ const getAccountShape_1 = require("./getAccountShape");
14
+ jest.setTimeout(2 * 60 * 1000);
15
+ describe("TEZOS_MAX_TX_QUERIES", () => {
16
+ const bigAccount = "tz1boBHAVpwcvKkNFAQHYr7mjxAz1PpVgKq7";
17
+ test("default have more than 100 txs", () => __awaiter(void 0, void 0, void 0, function* () {
18
+ const txs = yield (0, getAccountShape_1.fetchAllTransactions)(bigAccount);
19
+ expect(txs.length).toBeGreaterThan(100);
20
+ }));
21
+ test("lowering it to 1 will only fetch a few txs", () => __awaiter(void 0, void 0, void 0, function* () {
22
+ const cur = (0, live_env_1.getEnv)("TEZOS_MAX_TX_QUERIES");
23
+ (0, live_env_1.setEnv)("TEZOS_MAX_TX_QUERIES", 1);
24
+ try {
25
+ const txs = yield (0, getAccountShape_1.fetchAllTransactions)(bigAccount);
26
+ expect(txs.length).toBeLessThanOrEqual(100);
27
+ }
28
+ finally {
29
+ (0, live_env_1.setEnv)("TEZOS_MAX_TX_QUERIES", cur);
30
+ }
31
+ }));
32
+ });
33
+ //# sourceMappingURL=getAccountShape.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAccountShape.test.js","sourceRoot":"","sources":["../../src/bridge/getAccountShape.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iDAAoD;AACpD,uDAAyD;AAEzD,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAE/B,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,MAAM,UAAU,GAAG,sCAAsC,CAAC;IAC1D,IAAI,CAAC,gCAAgC,EAAE,GAAS,EAAE;QAChD,MAAM,GAAG,GAAG,MAAM,IAAA,sCAAoB,EAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAA,CAAC,CAAC;IACH,IAAI,CAAC,4CAA4C,EAAE,GAAS,EAAE;QAC5D,MAAM,GAAG,GAAG,IAAA,iBAAM,EAAC,sBAAsB,CAAC,CAAC;QAC3C,IAAA,iBAAM,EAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAA,sCAAoB,EAAC,UAAU,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;SAC7C;gBAAS;YACR,IAAA,iBAAM,EAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;SACrC;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CurrencyBridge, AccountBridge } from "@ledgerhq/types-live";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import type { TezosSigner, Transaction } from "../types";
4
+ export declare function createBridges(signerContext: SignerContext<TezosSigner>): {
5
+ currencyBridge: CurrencyBridge;
6
+ accountBridge: AccountBridge<Transaction>;
7
+ };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQ1E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkDzD,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC;;;EAKtE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createBridges = void 0;
7
+ const getAddressWrapper_1 = __importDefault(require("@ledgerhq/coin-framework/bridge/getAddressWrapper"));
8
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
9
+ const signer_1 = __importDefault(require("../signer"));
10
+ const getAccountShape_1 = require("./getAccountShape");
11
+ const signOperation_1 = __importDefault(require("./signOperation"));
12
+ const serialization_1 = require("./serialization");
13
+ const preload_1 = require("./preload");
14
+ const transactionStatus_1 = require("./transactionStatus");
15
+ const prepareTransaction_1 = __importDefault(require("./prepareTransaction"));
16
+ const estimateMaxSpendable_1 = __importDefault(require("./estimateMaxSpendable"));
17
+ const createTransaction_1 = __importDefault(require("./createTransaction"));
18
+ const broadcast_1 = __importDefault(require("./broadcast"));
19
+ function buildCurrencyBridge(signerContext) {
20
+ const getAddress = (0, signer_1.default)(signerContext);
21
+ const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({
22
+ getAccountShape: getAccountShape_1.getAccountShape,
23
+ getAddressFn: (0, getAddressWrapper_1.default)(getAddress),
24
+ });
25
+ return {
26
+ getPreloadStrategy: preload_1.getPreloadStrategy,
27
+ preload: preload_1.preload,
28
+ hydrate: preload_1.hydrate,
29
+ scanAccounts,
30
+ };
31
+ }
32
+ function buildAccountBridge(signerContext) {
33
+ const getAddress = (0, signer_1.default)(signerContext);
34
+ const receive = (0, jsHelpers_1.makeAccountBridgeReceive)((0, getAddressWrapper_1.default)(getAddress));
35
+ const signOperation = (0, signOperation_1.default)(signerContext);
36
+ const sync = (0, jsHelpers_1.makeSync)({ getAccountShape: getAccountShape_1.getAccountShape });
37
+ return {
38
+ estimateMaxSpendable: estimateMaxSpendable_1.default,
39
+ createTransaction: createTransaction_1.default,
40
+ updateTransaction: jsHelpers_1.defaultUpdateTransaction,
41
+ getTransactionStatus: transactionStatus_1.getTransactionStatus,
42
+ prepareTransaction: prepareTransaction_1.default,
43
+ sync,
44
+ receive,
45
+ signOperation,
46
+ broadcast: broadcast_1.default,
47
+ assignFromAccountRaw: serialization_1.assignFromAccountRaw,
48
+ assignToAccountRaw: serialization_1.assignToAccountRaw,
49
+ };
50
+ }
51
+ function createBridges(signerContext) {
52
+ return {
53
+ currencyBridge: buildCurrencyBridge(signerContext),
54
+ accountBridge: buildAccountBridge(signerContext),
55
+ };
56
+ }
57
+ exports.createBridges = createBridges;
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;;AACA,0GAAkF;AAClF,yEAKmD;AAGnD,uDAAyC;AACzC,uDAAoD;AACpD,oEAAiD;AACjD,mDAA2E;AAC3E,uCAAiE;AACjE,2DAA2D;AAC3D,8EAAsD;AACtD,kFAA0D;AAC1D,4EAAoD;AACpD,4DAAoC;AAEpC,SAAS,mBAAmB,CAAC,aAAyC;IACpE,MAAM,UAAU,GAAG,IAAA,gBAAgB,EAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC;QACpC,eAAe,EAAf,iCAAe;QACf,YAAY,EAAE,IAAA,2BAAiB,EAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,kBAAkB,EAAlB,4BAAkB;QAClB,OAAO,EAAP,iBAAO;QACP,OAAO,EAAP,iBAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,aAAyC;IACnE,MAAM,UAAU,GAAG,IAAA,gBAAgB,EAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,IAAA,uBAAkB,EAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,EAAE,eAAe,EAAf,iCAAe,EAAE,CAAC,CAAC;IAE3C,OAAO;QACL,oBAAoB,EAApB,8BAAoB;QACpB,iBAAiB,EAAjB,2BAAiB;QACjB,iBAAiB,EAAE,oCAAwB;QAC3C,oBAAoB,EAApB,wCAAoB;QACpB,kBAAkB,EAAlB,4BAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,SAAS,EAAT,mBAAS;QACT,oBAAoB,EAApB,oCAAoB;QACpB,kBAAkB,EAAlB,kCAAkB;KACnB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,aAAyC;IACrE,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC;AALD,sCAKC"}
@@ -0,0 +1,9 @@
1
+ import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
2
+ export declare const getPreloadStrategy: (_currency: CryptoCurrency) => {
3
+ preloadMaxAge: number;
4
+ };
5
+ export declare const preload: () => Promise<{
6
+ bakers: import("..").Baker[];
7
+ }>;
8
+ export declare const hydrate: (data: any) => void;
9
+ //# sourceMappingURL=preload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,eAAO,MAAM,kBAAkB,cAAe,cAAc;;CAE1D,CAAC;AAEH,eAAO,MAAM,OAAO;;EAGnB,CAAC;AAEF,eAAO,MAAM,OAAO,SAAU,GAAG,SAKhC,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.hydrate = exports.preload = exports.getPreloadStrategy = void 0;
13
+ const bakers_1 = require("../api/bakers");
14
+ const getPreloadStrategy = (_currency) => ({
15
+ preloadMaxAge: 30 * 1000,
16
+ });
17
+ exports.getPreloadStrategy = getPreloadStrategy;
18
+ const preload = () => __awaiter(void 0, void 0, void 0, function* () {
19
+ const bakers = yield (0, bakers_1.fetchAllBakers)();
20
+ return { bakers };
21
+ });
22
+ exports.preload = preload;
23
+ const hydrate = (data) => {
24
+ if (!data || typeof data !== "object")
25
+ return;
26
+ const { bakers } = data;
27
+ if (!bakers || typeof bakers !== "object" || !Array.isArray(bakers))
28
+ return;
29
+ (0, bakers_1.hydrateBakers)(bakers);
30
+ };
31
+ exports.hydrate = hydrate;
32
+ //# sourceMappingURL=preload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,0CAA8D;AAEvD,MAAM,kBAAkB,GAAG,CAAC,SAAyB,EAAE,EAAE,CAAC,CAAC;IAChE,aAAa,EAAE,EAAE,GAAG,IAAI;CACzB,CAAC,CAAC;AAFU,QAAA,kBAAkB,sBAE5B;AAEI,MAAM,OAAO,GAAG,GAAS,EAAE;IAChC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,GAAE,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC,CAAA,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEK,MAAM,OAAO,GAAG,CAAC,IAAS,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO;IAC5E,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;AACxB,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB"}
@@ -0,0 +1,9 @@
1
+ import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import { TezosAccount, Transaction } from "../types";
3
+ export declare const validateRecipient: (currency: CryptoCurrency, recipient: string) => Promise<{
4
+ recipientError: Error | null;
5
+ recipientWarning: null;
6
+ }>;
7
+ declare const prepareTransaction: (account: TezosAccount, transaction: Transaction) => Promise<Transaction>;
8
+ export default prepareTransaction;
9
+ //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMrD,eAAO,MAAM,iBAAiB,aAAc,cAAc,aAAa,MAAM;;;EAW5E,CAAC;AAEF,QAAA,MAAM,kBAAkB,YACb,YAAY,eACR,WAAW,KACvB,QAAQ,WAAW,CA8HrB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.validateRecipient = void 0;
16
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
+ const taquito_1 = require("@taquito/taquito");
18
+ const ledger_signer_1 = require("@taquito/ledger-signer");
19
+ const utils_1 = require("@taquito/ledger-signer/dist/lib/utils");
20
+ const utils_2 = require("@taquito/utils");
21
+ const errors_1 = require("@ledgerhq/errors");
22
+ const logs_1 = require("@ledgerhq/logs");
23
+ const live_env_1 = require("@ledgerhq/live-env");
24
+ function bnEq(a, b) {
25
+ return !a && !b ? true : !a || !b ? false : a.eq(b);
26
+ }
27
+ const validateRecipient = (currency, recipient) => {
28
+ let recipientError = null;
29
+ const recipientWarning = null;
30
+ if (!recipient) {
31
+ recipientError = new errors_1.RecipientRequired("");
32
+ }
33
+ else if ((0, utils_2.validateAddress)(recipient) !== utils_2.ValidationResult.VALID) {
34
+ recipientError = new errors_1.InvalidAddress(undefined, {
35
+ currencyName: currency.name,
36
+ });
37
+ }
38
+ return Promise.resolve({ recipientError, recipientWarning });
39
+ };
40
+ exports.validateRecipient = validateRecipient;
41
+ const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
42
+ const { tezosResources } = account;
43
+ if (!tezosResources)
44
+ throw new Error("tezosResources is missing");
45
+ if (account.balance.lte(0)) {
46
+ return Promise.resolve(transaction);
47
+ }
48
+ // basic check to confirm the transaction is "complete"
49
+ if (transaction.mode !== "undelegate") {
50
+ if (!transaction.recipient) {
51
+ return Promise.resolve(transaction);
52
+ }
53
+ const { recipientError } = yield (0, exports.validateRecipient)(account.currency, transaction.recipient);
54
+ if (recipientError) {
55
+ return Promise.resolve(transaction);
56
+ }
57
+ }
58
+ const encodedPubKey = (0, utils_2.b58cencode)((0, utils_1.compressPublicKey)(Buffer.from(account.xpub || "", "hex"), ledger_signer_1.DerivationType.ED25519), utils_2.prefix[utils_2.Prefix.EDPK]);
59
+ const tezos = new taquito_1.TezosToolkit((0, live_env_1.getEnv)("API_TEZOS_NODE"));
60
+ tezos.setProvider({
61
+ signer: {
62
+ publicKeyHash: () => __awaiter(void 0, void 0, void 0, function* () { return account.freshAddress; }),
63
+ publicKey: () => __awaiter(void 0, void 0, void 0, function* () { return encodedPubKey; }),
64
+ sign: () => Promise.reject(new Error("unsupported")),
65
+ secretKey: () => Promise.reject(new Error("unsupported")),
66
+ },
67
+ });
68
+ const tx = Object.assign(Object.assign({}, transaction), { taquitoError: null });
69
+ let amount = transaction.amount;
70
+ if (transaction.useAllAmount) {
71
+ amount = new bignumber_js_1.default(1); // send max do a pre-estimation with minimum amount (taquito refuses 0)
72
+ }
73
+ try {
74
+ let estimate;
75
+ switch (transaction.mode) {
76
+ case "send":
77
+ estimate = yield tezos.estimate.transfer({
78
+ mutez: true,
79
+ to: transaction.recipient,
80
+ amount: amount.toNumber(),
81
+ storageLimit: taquito_1.DEFAULT_STORAGE_LIMIT.ORIGINATION, // https://github.com/TezTech/eztz/blob/master/PROTO_003_FEES.md for originating an account
82
+ });
83
+ break;
84
+ case "delegate":
85
+ estimate = yield tezos.estimate.setDelegate({
86
+ source: account.freshAddress,
87
+ delegate: transaction.recipient,
88
+ });
89
+ break;
90
+ case "undelegate":
91
+ estimate = yield tezos.estimate.setDelegate({
92
+ source: account.freshAddress,
93
+ });
94
+ break;
95
+ default:
96
+ throw new Error("unsupported mode=" + transaction.mode);
97
+ }
98
+ if (tx.useAllAmount) {
99
+ const totalFees = estimate.suggestedFeeMutez + estimate.burnFeeMutez;
100
+ const maxAmount = account.balance
101
+ .minus(totalFees + (tezosResources.revealed ? 0 : taquito_1.DEFAULT_FEE.REVEAL))
102
+ .toNumber();
103
+ // from https://github.com/ecadlabs/taquito/blob/a70c64c4b105381bb9f1d04c9c70e8ef26e9241c/integration-tests/contract-empty-implicit-account-into-new-implicit-account.spec.ts#L33
104
+ // Temporary fix, see https://gitlab.com/tezos/tezos/-/issues/1754
105
+ // we need to increase the gasLimit and fee returned by the estimation
106
+ const gasBuffer = 500;
107
+ const MINIMAL_FEE_PER_GAS_MUTEZ = 0.1;
108
+ const increasedFee = (gasBuffer, opSize) => {
109
+ return gasBuffer * MINIMAL_FEE_PER_GAS_MUTEZ + opSize;
110
+ };
111
+ const incr = increasedFee(gasBuffer, Number(estimate.opSize));
112
+ tx.fees = new bignumber_js_1.default(estimate.suggestedFeeMutez + incr);
113
+ tx.gasLimit = new bignumber_js_1.default(estimate.gasLimit + gasBuffer);
114
+ tx.amount = maxAmount - incr > 0 ? new bignumber_js_1.default(maxAmount - incr) : new bignumber_js_1.default(0);
115
+ }
116
+ else {
117
+ tx.fees = new bignumber_js_1.default(estimate.suggestedFeeMutez);
118
+ tx.gasLimit = new bignumber_js_1.default(estimate.gasLimit);
119
+ tx.storageLimit = new bignumber_js_1.default(estimate.storageLimit);
120
+ }
121
+ tx.storageLimit = new bignumber_js_1.default(estimate.storageLimit);
122
+ tx.estimatedFees = tx.fees;
123
+ if (!tezosResources.revealed) {
124
+ tx.estimatedFees = tx.estimatedFees.plus(taquito_1.DEFAULT_FEE.REVEAL);
125
+ }
126
+ }
127
+ catch (e) {
128
+ if (typeof e !== "object" || !e)
129
+ throw e;
130
+ if ("id" in e) {
131
+ tx.taquitoError = e.id;
132
+ (0, logs_1.log)("taquito-error", "taquito got error " + tx.taquitoError);
133
+ }
134
+ else if ("status" in e) {
135
+ // in case of http 400, log & ignore (more case to handle)
136
+ (0, logs_1.log)("taquito-network-error", String(e.message || ""), {
137
+ transaction: tx,
138
+ });
139
+ throw e;
140
+ }
141
+ else {
142
+ throw e;
143
+ }
144
+ }
145
+ // nothing changed
146
+ if (bnEq(tx.estimatedFees, transaction.estimatedFees) &&
147
+ bnEq(tx.fees, transaction.fees) &&
148
+ bnEq(tx.gasLimit, transaction.gasLimit) &&
149
+ bnEq(tx.storageLimit, transaction.storageLimit) &&
150
+ bnEq(tx.amount, transaction.amount) &&
151
+ tx.taquitoError === transaction.taquitoError) {
152
+ return transaction;
153
+ }
154
+ return tx;
155
+ });
156
+ exports.default = prepareTransaction;
157
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TezosResources, TezosResourcesRaw } from "../types";
2
+ import { Account, AccountRaw } from "@ledgerhq/types-live";
3
+ export declare function toTezosResourcesRaw(r: TezosResources): TezosResourcesRaw;
4
+ export declare function fromTezosResourcesRaw(r: TezosResourcesRaw): TezosResources;
5
+ export declare function assignToAccountRaw(account: Account, accountRaw: AccountRaw): void;
6
+ export declare function assignFromAccountRaw(accountRaw: AccountRaw, account: Account): void;
7
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/bridge/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiC,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,iBAAiB,CAGxE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAG1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,QAO1E;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,QAI5E"}