@ledgerhq/live-common 23.0.0-next.0 → 23.0.0-next.3

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 (249) hide show
  1. package/lib/__tests__/test-helpers/setup.js +2 -0
  2. package/lib/__tests__/test-helpers/setup.js.map +1 -1
  3. package/lib/account/pending.d.ts +2 -1
  4. package/lib/account/pending.d.ts.map +1 -1
  5. package/lib/account/serialization.d.ts +3 -1
  6. package/lib/account/serialization.d.ts.map +1 -1
  7. package/lib/account/serialization.js +12 -3
  8. package/lib/account/serialization.js.map +1 -1
  9. package/lib/cross.d.ts.map +1 -1
  10. package/lib/cross.js +2 -1
  11. package/lib/cross.js.map +1 -1
  12. package/lib/derivation.d.ts +4 -0
  13. package/lib/derivation.d.ts.map +1 -1
  14. package/lib/derivation.js +18 -2
  15. package/lib/derivation.js.map +1 -1
  16. package/lib/env.d.ts +15 -5
  17. package/lib/env.d.ts.map +1 -1
  18. package/lib/env.js +10 -0
  19. package/lib/env.js.map +1 -1
  20. package/lib/env.react.d.ts +1 -1
  21. package/lib/env.react.d.ts.map +1 -1
  22. package/lib/errors.d.ts +1 -0
  23. package/lib/errors.d.ts.map +1 -1
  24. package/lib/errors.js +1 -0
  25. package/lib/errors.js.map +1 -1
  26. package/lib/families/algorand/js-synchronization.d.ts +2 -2
  27. package/lib/families/bitcoin/exchange.d.ts +1 -1
  28. package/lib/families/bitcoin/js-synchronisation.d.ts +2 -2
  29. package/lib/families/cardano/api/api-types.d.ts +38 -0
  30. package/lib/families/cardano/api/api-types.d.ts.map +1 -0
  31. package/lib/families/cardano/api/api-types.js +3 -0
  32. package/lib/families/cardano/api/api-types.js.map +1 -0
  33. package/lib/families/cardano/api/getNetworkInfo.d.ts +4 -0
  34. package/lib/families/cardano/api/getNetworkInfo.d.ts.map +1 -0
  35. package/lib/families/cardano/api/getNetworkInfo.js +83 -0
  36. package/lib/families/cardano/api/getNetworkInfo.js.map +1 -0
  37. package/lib/families/cardano/api/getTransactions.d.ts +10 -0
  38. package/lib/families/cardano/api/getTransactions.d.ts.map +1 -0
  39. package/lib/families/cardano/api/getTransactions.js +257 -0
  40. package/lib/families/cardano/api/getTransactions.js.map +1 -0
  41. package/lib/families/cardano/api/submitTransaction.d.ts +7 -0
  42. package/lib/families/cardano/api/submitTransaction.d.ts.map +1 -0
  43. package/lib/families/cardano/api/submitTransaction.js +69 -0
  44. package/lib/families/cardano/api/submitTransaction.js.map +1 -0
  45. package/lib/families/cardano/bridge/js.d.ts +8 -0
  46. package/lib/families/cardano/bridge/js.d.ts.map +1 -0
  47. package/lib/families/cardano/bridge/js.js +69 -0
  48. package/lib/families/cardano/bridge/js.js.map +1 -0
  49. package/lib/families/cardano/bridge.test.d.ts +2 -0
  50. package/lib/families/cardano/bridge.test.d.ts.map +1 -0
  51. package/lib/families/cardano/bridge.test.js +11 -0
  52. package/lib/families/cardano/bridge.test.js.map +1 -0
  53. package/lib/families/cardano/buildSubAccounts.d.ts +25 -0
  54. package/lib/families/cardano/buildSubAccounts.d.ts.map +1 -0
  55. package/lib/families/cardano/buildSubAccounts.js +176 -0
  56. package/lib/families/cardano/buildSubAccounts.js.map +1 -0
  57. package/lib/families/cardano/cli-transaction.d.ts +19 -0
  58. package/lib/families/cardano/cli-transaction.d.ts.map +1 -0
  59. package/lib/families/cardano/cli-transaction.js +70 -0
  60. package/lib/families/cardano/cli-transaction.js.map +1 -0
  61. package/lib/families/cardano/constants.d.ts +8 -0
  62. package/lib/families/cardano/constants.d.ts.map +1 -0
  63. package/lib/families/cardano/constants.js +12 -0
  64. package/lib/families/cardano/constants.js.map +1 -0
  65. package/lib/families/cardano/datasets/rawAccount.1.d.ts +3 -0
  66. package/lib/families/cardano/datasets/rawAccount.1.d.ts.map +1 -0
  67. package/lib/families/cardano/datasets/rawAccount.1.js +27 -0
  68. package/lib/families/cardano/datasets/rawAccount.1.js.map +1 -0
  69. package/lib/families/cardano/datasets/scanAccounts.d.ts +5 -0
  70. package/lib/families/cardano/datasets/scanAccounts.d.ts.map +1 -0
  71. package/lib/families/cardano/datasets/scanAccounts.js +10 -0
  72. package/lib/families/cardano/datasets/scanAccounts.js.map +1 -0
  73. package/lib/families/cardano/errors.d.ts +7 -0
  74. package/lib/families/cardano/errors.d.ts.map +1 -0
  75. package/lib/families/cardano/errors.js +9 -0
  76. package/lib/families/cardano/errors.js.map +1 -0
  77. package/lib/families/cardano/hw-getAddress.d.ts +4 -0
  78. package/lib/families/cardano/hw-getAddress.d.ts.map +1 -0
  79. package/lib/families/cardano/hw-getAddress.js +126 -0
  80. package/lib/families/cardano/hw-getAddress.js.map +1 -0
  81. package/lib/families/cardano/js-broadcast.d.ts +8 -0
  82. package/lib/families/cardano/js-broadcast.d.ts.map +1 -0
  83. package/lib/families/cardano/js-broadcast.js +65 -0
  84. package/lib/families/cardano/js-broadcast.js.map +1 -0
  85. package/lib/families/cardano/js-buildTransaction.d.ts +12 -0
  86. package/lib/families/cardano/js-buildTransaction.d.ts.map +1 -0
  87. package/lib/families/cardano/js-buildTransaction.js +253 -0
  88. package/lib/families/cardano/js-buildTransaction.js.map +1 -0
  89. package/lib/families/cardano/js-estimateMaxSpendable.d.ts +15 -0
  90. package/lib/families/cardano/js-estimateMaxSpendable.d.ts.map +1 -0
  91. package/lib/families/cardano/js-estimateMaxSpendable.js +99 -0
  92. package/lib/families/cardano/js-estimateMaxSpendable.js.map +1 -0
  93. package/lib/families/cardano/js-getFeesForTransaction.d.ts +15 -0
  94. package/lib/families/cardano/js-getFeesForTransaction.d.ts.map +1 -0
  95. package/lib/families/cardano/js-getFeesForTransaction.js +61 -0
  96. package/lib/families/cardano/js-getFeesForTransaction.js.map +1 -0
  97. package/lib/families/cardano/js-getTransactionStatus.d.ts +5 -0
  98. package/lib/families/cardano/js-getTransactionStatus.d.ts.map +1 -0
  99. package/lib/families/cardano/js-getTransactionStatus.js +156 -0
  100. package/lib/families/cardano/js-getTransactionStatus.js.map +1 -0
  101. package/lib/families/cardano/js-signOperation.d.ts +13 -0
  102. package/lib/families/cardano/js-signOperation.d.ts.map +1 -0
  103. package/lib/families/cardano/js-signOperation.js +274 -0
  104. package/lib/families/cardano/js-signOperation.js.map +1 -0
  105. package/lib/families/cardano/js-synchronisation.d.ts +11 -0
  106. package/lib/families/cardano/js-synchronisation.d.ts.map +1 -0
  107. package/lib/families/cardano/js-synchronisation.js +247 -0
  108. package/lib/families/cardano/js-synchronisation.js.map +1 -0
  109. package/lib/families/cardano/js-transaction.d.ts +23 -0
  110. package/lib/families/cardano/js-transaction.d.ts.map +1 -0
  111. package/lib/families/cardano/js-transaction.js +112 -0
  112. package/lib/families/cardano/js-transaction.js.map +1 -0
  113. package/lib/families/cardano/logic.d.ts +92 -0
  114. package/lib/families/cardano/logic.d.ts.map +1 -0
  115. package/lib/families/cardano/logic.js +371 -0
  116. package/lib/families/cardano/logic.js.map +1 -0
  117. package/lib/families/cardano/networks.d.ts +3 -0
  118. package/lib/families/cardano/networks.d.ts.map +1 -0
  119. package/lib/families/cardano/networks.js +34 -0
  120. package/lib/families/cardano/networks.js.map +1 -0
  121. package/lib/families/cardano/postSyncPatch.d.ts +7 -0
  122. package/lib/families/cardano/postSyncPatch.d.ts.map +1 -0
  123. package/lib/families/cardano/postSyncPatch.js +37 -0
  124. package/lib/families/cardano/postSyncPatch.js.map +1 -0
  125. package/lib/families/cardano/serialization.d.ts +4 -0
  126. package/lib/families/cardano/serialization.d.ts.map +1 -0
  127. package/lib/families/cardano/serialization.js +121 -0
  128. package/lib/families/cardano/serialization.js.map +1 -0
  129. package/lib/families/cardano/specs.d.ts +7 -0
  130. package/lib/families/cardano/specs.d.ts.map +1 -0
  131. package/lib/families/cardano/specs.js +83 -0
  132. package/lib/families/cardano/specs.js.map +1 -0
  133. package/lib/families/cardano/speculos-deviceActions.d.ts +7 -0
  134. package/lib/families/cardano/speculos-deviceActions.d.ts.map +1 -0
  135. package/lib/families/cardano/speculos-deviceActions.js +69 -0
  136. package/lib/families/cardano/speculos-deviceActions.js.map +1 -0
  137. package/lib/families/cardano/test-dataset.d.ts +5 -0
  138. package/lib/families/cardano/test-dataset.d.ts.map +1 -0
  139. package/lib/families/cardano/test-dataset.js +42 -0
  140. package/lib/families/cardano/test-dataset.js.map +1 -0
  141. package/lib/families/cardano/transaction.d.ts +12 -0
  142. package/lib/families/cardano/transaction.d.ts.map +1 -0
  143. package/lib/families/cardano/transaction.js +47 -0
  144. package/lib/families/cardano/transaction.js.map +1 -0
  145. package/lib/families/cardano/types.d.ts +152 -0
  146. package/lib/families/cardano/types.d.ts.map +1 -0
  147. package/lib/families/cardano/types.js +18 -0
  148. package/lib/families/cardano/types.js.map +1 -0
  149. package/lib/families/celo/js-synchronisation.d.ts +2 -2
  150. package/lib/families/cosmos/js-synchronisation.d.ts +2 -2
  151. package/lib/families/cosmos/test-dataset.d.ts.map +1 -1
  152. package/lib/families/cosmos/test-dataset.js +1 -1
  153. package/lib/families/cosmos/test-dataset.js.map +1 -1
  154. package/lib/families/crypto_org/js-synchronisation.d.ts +2 -2
  155. package/lib/families/elrond/js-synchronisation.d.ts +2 -2
  156. package/lib/families/hedera/js-synchronisation.d.ts +2 -2
  157. package/lib/families/polkadot/js-synchronisation.d.ts +2 -2
  158. package/lib/families/ripple/js-synchronization.d.ts +2 -2
  159. package/lib/families/stellar/js-synchronization.d.ts +2 -2
  160. package/lib/generated/bridge/js.d.ts +4 -0
  161. package/lib/generated/bridge/js.d.ts.map +1 -1
  162. package/lib/generated/bridge/js.js +30 -28
  163. package/lib/generated/bridge/js.js.map +1 -1
  164. package/lib/generated/cli-transaction.d.ts +15 -0
  165. package/lib/generated/cli-transaction.d.ts.map +1 -1
  166. package/lib/generated/cli-transaction.js +28 -26
  167. package/lib/generated/cli-transaction.js.map +1 -1
  168. package/lib/generated/exchange.d.ts +1 -1
  169. package/lib/generated/hw-getAddress.d.ts +1 -0
  170. package/lib/generated/hw-getAddress.d.ts.map +1 -1
  171. package/lib/generated/hw-getAddress.js +30 -28
  172. package/lib/generated/hw-getAddress.js.map +1 -1
  173. package/lib/generated/specs.d.ts +3 -0
  174. package/lib/generated/specs.d.ts.map +1 -1
  175. package/lib/generated/specs.js +28 -26
  176. package/lib/generated/specs.js.map +1 -1
  177. package/lib/generated/speculos-deviceActions.d.ts +3 -0
  178. package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
  179. package/lib/generated/speculos-deviceActions.js +28 -26
  180. package/lib/generated/speculos-deviceActions.js.map +1 -1
  181. package/lib/generated/test-dataset.d.ts +1 -0
  182. package/lib/generated/test-dataset.d.ts.map +1 -1
  183. package/lib/generated/test-dataset.js +26 -24
  184. package/lib/generated/test-dataset.js.map +1 -1
  185. package/lib/generated/transaction.d.ts +5 -0
  186. package/lib/generated/transaction.d.ts.map +1 -1
  187. package/lib/generated/transaction.js +30 -28
  188. package/lib/generated/transaction.js.map +1 -1
  189. package/lib/generated/types.d.ts +4 -2
  190. package/lib/generated/types.d.ts.map +1 -1
  191. package/lib/hw/actions/startExchange.d.ts.map +1 -1
  192. package/lib/hw/actions/startExchange.js +3 -2
  193. package/lib/hw/actions/startExchange.js.map +1 -1
  194. package/lib/reconciliation.d.ts.map +1 -1
  195. package/lib/reconciliation.js +6 -0
  196. package/lib/reconciliation.js.map +1 -1
  197. package/lib/types/account.d.ts +3 -0
  198. package/lib/types/account.d.ts.map +1 -1
  199. package/package.json +4 -1
  200. package/src/__tests__/test-helpers/setup.ts +2 -0
  201. package/src/account/serialization.ts +15 -0
  202. package/src/cross.ts +2 -1
  203. package/src/derivation.ts +10 -0
  204. package/src/env.ts +10 -0
  205. package/src/errors.ts +1 -0
  206. package/src/families/cardano/__snapshots__/bridge.test.ts.snap +1667 -0
  207. package/src/families/cardano/api/api-types.ts +33 -0
  208. package/src/families/cardano/api/getNetworkInfo.ts +38 -0
  209. package/src/families/cardano/api/getTransactions.ts +240 -0
  210. package/src/families/cardano/api/submitTransaction.ts +27 -0
  211. package/src/families/cardano/bridge/js.ts +35 -0
  212. package/src/families/cardano/bridge.test.ts +6 -0
  213. package/src/families/cardano/buildSubAccounts.ts +182 -0
  214. package/src/families/cardano/cli-transaction.ts +78 -0
  215. package/src/families/cardano/constants.ts +12 -0
  216. package/src/families/cardano/datasets/rawAccount.1.ts +28 -0
  217. package/src/families/cardano/datasets/scanAccounts.ts +23 -0
  218. package/src/families/cardano/errors.ts +8 -0
  219. package/src/families/cardano/hw-getAddress.ts +61 -0
  220. package/src/families/cardano/js-broadcast.ts +25 -0
  221. package/src/families/cardano/js-buildTransaction.ts +293 -0
  222. package/src/families/cardano/js-estimateMaxSpendable.ts +60 -0
  223. package/src/families/cardano/js-getFeesForTransaction.ts +25 -0
  224. package/src/families/cardano/js-getTransactionStatus.ts +123 -0
  225. package/src/families/cardano/js-signOperation.ts +265 -0
  226. package/src/families/cardano/js-synchronisation.ts +255 -0
  227. package/src/families/cardano/js-transaction.ts +69 -0
  228. package/src/families/cardano/logic.ts +450 -0
  229. package/src/families/cardano/networks.ts +33 -0
  230. package/src/families/cardano/postSyncPatch.ts +45 -0
  231. package/src/families/cardano/serialization.ts +179 -0
  232. package/src/families/cardano/specs.ts +96 -0
  233. package/src/families/cardano/speculos-deviceActions.ts +66 -0
  234. package/src/families/cardano/test-dataset.ts +41 -0
  235. package/src/families/cardano/transaction.ts +55 -0
  236. package/src/families/cardano/types.ts +178 -0
  237. package/src/families/cosmos/__snapshots__/bridge.test.ts.snap +134 -6
  238. package/src/families/cosmos/test-dataset.ts +2 -0
  239. package/src/generated/bridge/js.ts +3 -0
  240. package/src/generated/cli-transaction.ts +3 -0
  241. package/src/generated/hw-getAddress.ts +3 -0
  242. package/src/generated/specs.ts +3 -0
  243. package/src/generated/speculos-deviceActions.ts +3 -0
  244. package/src/generated/test-dataset.ts +3 -0
  245. package/src/generated/transaction.ts +3 -0
  246. package/src/generated/types.ts +4 -0
  247. package/src/hw/actions/startExchange.ts +3 -2
  248. package/src/reconciliation.ts +10 -0
  249. package/src/types/account.ts +6 -0
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __values = (this && this.__values) || function(o) {
19
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
20
+ if (m) return m.call(o);
21
+ if (o && typeof o.length === "number") return {
22
+ next: function () {
23
+ if (o && i >= o.length) o = void 0;
24
+ return { value: o && o[i++], done: !o };
25
+ }
26
+ };
27
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ exports.__esModule = true;
33
+ exports.buildSubAccounts = exports.decodeTokenCurrencyId = exports.decodeTokenAssetId = exports.getTokenAssetId = void 0;
34
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
35
+ var operation_1 = require("../../operation");
36
+ var logic_1 = require("./logic");
37
+ var typhonjs_1 = require("@stricahq/typhonjs");
38
+ var cryptoassets_1 = require("@ledgerhq/cryptoassets");
39
+ var account_1 = require("../../account");
40
+ var lodash_1 = require("lodash");
41
+ var jsHelpers_1 = require("../../bridge/jsHelpers");
42
+ var getTokenAssetId = function (_a) {
43
+ var policyId = _a.policyId, assetName = _a.assetName;
44
+ return "".concat(policyId).concat(assetName);
45
+ };
46
+ exports.getTokenAssetId = getTokenAssetId;
47
+ var decodeTokenAssetId = function (id) {
48
+ var policyId = id.slice(0, 56);
49
+ var assetName = id.slice(56);
50
+ return { policyId: policyId, assetName: assetName };
51
+ };
52
+ exports.decodeTokenAssetId = decodeTokenAssetId;
53
+ var encodeTokenCurrencyId = function (parentCurrency, assetId) { return "".concat(parentCurrency.id, "/native/").concat(assetId); };
54
+ var decodeTokenCurrencyId = function (id) {
55
+ var _a = __read(id.split("/"), 3), parentCurrencyId = _a[0], type = _a[1], assetId = _a[2];
56
+ return {
57
+ parentCurrencyId: parentCurrencyId,
58
+ type: type,
59
+ assetId: assetId
60
+ };
61
+ };
62
+ exports.decodeTokenCurrencyId = decodeTokenCurrencyId;
63
+ /**
64
+ * @returns operations of tokens that are defined in ledgerjs cryptoassets
65
+ */
66
+ var mapTxToTokenAccountOperation = function (_a) {
67
+ var parentAccountId = _a.parentAccountId, parentCurrency = _a.parentCurrency, newTransactions = _a.newTransactions, accountCredentialsMap = _a.accountCredentialsMap;
68
+ var operations = [];
69
+ newTransactions.forEach(function (tx) {
70
+ var accountChange = (0, logic_1.getAccountChange)(tx, accountCredentialsMap);
71
+ accountChange.tokens.forEach(function (token) {
72
+ var assetId = (0, exports.getTokenAssetId)({
73
+ policyId: token.policyId,
74
+ assetName: token.assetName
75
+ });
76
+ var tokenCurrencyId = encodeTokenCurrencyId(parentCurrency, assetId);
77
+ var tokenCurrency = (0, cryptoassets_1.findTokenById)(tokenCurrencyId);
78
+ // skip the unsupported tokens by ledger-live
79
+ if (tokenCurrency === null || tokenCurrency === undefined) {
80
+ return;
81
+ }
82
+ var tokenAccountId = (0, account_1.encodeTokenAccountId)(parentAccountId, tokenCurrency);
83
+ var tokenOperationType = token.amount.lt(0) ? "OUT" : "IN";
84
+ var memo = (0, logic_1.getMemoFromTx)(tx);
85
+ var operation = {
86
+ accountId: tokenAccountId,
87
+ id: (0, operation_1.encodeOperationId)(tokenAccountId, tx.hash, tokenOperationType),
88
+ hash: tx.hash,
89
+ type: tokenOperationType,
90
+ fee: new bignumber_js_1["default"](tx.fees),
91
+ value: token.amount.absoluteValue(),
92
+ senders: tx.inputs.map(function (i) {
93
+ return (0, logic_1.isHexString)(i.address)
94
+ ? typhonjs_1.utils.getAddressFromHex(i.address).getBech32()
95
+ : i.address;
96
+ }),
97
+ recipients: tx.outputs.map(function (o) {
98
+ return (0, logic_1.isHexString)(o.address)
99
+ ? typhonjs_1.utils.getAddressFromHex(o.address).getBech32()
100
+ : o.address;
101
+ }),
102
+ blockHeight: tx.blockHeight,
103
+ date: new Date(tx.timestamp),
104
+ extra: {
105
+ memo: memo
106
+ },
107
+ blockHash: undefined
108
+ };
109
+ operations.push(operation);
110
+ });
111
+ });
112
+ return operations;
113
+ };
114
+ function buildSubAccounts(_a) {
115
+ var e_1, _b;
116
+ var _c;
117
+ var initialAccount = _a.initialAccount, parentAccountId = _a.parentAccountId, parentCurrency = _a.parentCurrency, newTransactions = _a.newTransactions, tokens = _a.tokens, accountCredentialsMap = _a.accountCredentialsMap;
118
+ var tokenAccountsById = {};
119
+ if (initialAccount && initialAccount.subAccounts) {
120
+ try {
121
+ for (var _d = __values(initialAccount.subAccounts), _e = _d.next(); !_e.done; _e = _d.next()) {
122
+ var existingAccount = _e.value;
123
+ if (existingAccount.type === "TokenAccount") {
124
+ tokenAccountsById[existingAccount.id] = existingAccount;
125
+ }
126
+ }
127
+ }
128
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
129
+ finally {
130
+ try {
131
+ if (_e && !_e.done && (_b = _d["return"])) _b.call(_d);
132
+ }
133
+ finally { if (e_1) throw e_1.error; }
134
+ }
135
+ }
136
+ var tokenOperations = mapTxToTokenAccountOperation({
137
+ parentAccountId: parentAccountId,
138
+ parentCurrency: parentCurrency,
139
+ newTransactions: newTransactions,
140
+ accountCredentialsMap: accountCredentialsMap
141
+ });
142
+ var tokenOperationsByAccId = (0, lodash_1.groupBy)(tokenOperations, function (o) { return o.accountId; });
143
+ var tokensBalanceByAssetId = (0, lodash_1.keyBy)(tokens, function (t) { return (0, exports.getTokenAssetId)(t); });
144
+ for (var tokenAccountId in tokenOperationsByAccId) {
145
+ var initialTokenAccount = tokenAccountsById[tokenAccountId];
146
+ var oldOperations = (initialTokenAccount === null || initialTokenAccount === void 0 ? void 0 : initialTokenAccount.operations) || [];
147
+ var newOperations = tokenOperationsByAccId[tokenAccountId] || [];
148
+ var operations = (0, jsHelpers_1.mergeOps)(oldOperations, newOperations);
149
+ var tokenCurrency = (0, account_1.decodeTokenAccountId)(tokenAccountId).token;
150
+ if (tokenCurrency) {
151
+ var accountBalance = ((_c = tokensBalanceByAssetId[tokenCurrency.contractAddress]) === null || _c === void 0 ? void 0 : _c.amount) ||
152
+ new bignumber_js_1["default"](0);
153
+ var tokenAccount = {
154
+ type: "TokenAccount",
155
+ id: tokenAccountId,
156
+ parentId: parentAccountId,
157
+ token: tokenCurrency,
158
+ balance: accountBalance,
159
+ spendableBalance: accountBalance,
160
+ creationDate: operations.length > 0
161
+ ? operations[operations.length - 1].date
162
+ : new Date(),
163
+ operationsCount: operations.length,
164
+ operations: operations,
165
+ pendingOperations: [],
166
+ starred: false,
167
+ balanceHistoryCache: account_1.emptyHistoryCache,
168
+ swapHistory: []
169
+ };
170
+ tokenAccountsById[tokenAccountId] = tokenAccount;
171
+ }
172
+ }
173
+ return Object.values(tokenAccountsById);
174
+ }
175
+ exports.buildSubAccounts = buildSubAccounts;
176
+ //# sourceMappingURL=buildSubAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSubAccounts.js","sourceRoot":"","sources":["../../../src/families/cardano/buildSubAccounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AccountLike, Account } from "../../types";
2
+ import { TokenAccount } from "../solana/api/chain/account/token";
3
+ import { Transaction } from "./types";
4
+ declare function inferAccounts(account: Account, opts: Record<string, any>): Account[] | TokenAccount[];
5
+ declare function inferTransactions(transactions: Array<{
6
+ account: AccountLike;
7
+ transaction: Transaction;
8
+ }>, opts: Record<string, any>): Transaction[];
9
+ declare const _default: {
10
+ options: {
11
+ name: string;
12
+ type: StringConstructor;
13
+ desc: string;
14
+ }[];
15
+ inferAccounts: typeof inferAccounts;
16
+ inferTransactions: typeof inferTransactions;
17
+ };
18
+ export default _default;
19
+ //# sourceMappingURL=cli-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-transaction.d.ts","sourceRoot":"","sources":["../../../src/families/cardano/cli-transaction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAetC,iBAAS,aAAa,CACpB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,EAAE,GAAG,YAAY,EAAE,CA2B5B;AAED,iBAAS,iBAAiB,CACxB,YAAY,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,EACvE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,WAAW,EAAE,CAgBf;;;;;;;;;;AAED,wBAIE"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ exports.__esModule = true;
17
+ var invariant_1 = __importDefault(require("invariant"));
18
+ var flatMap_1 = __importDefault(require("lodash/flatMap"));
19
+ var account_1 = require("../../account");
20
+ var options = [
21
+ {
22
+ name: "mode",
23
+ type: String,
24
+ desc: "mode of transaction: send"
25
+ },
26
+ {
27
+ name: "token",
28
+ type: String,
29
+ desc: "uses subAccount(TokenAccount) of the account"
30
+ },
31
+ ];
32
+ function inferAccounts(account, opts) {
33
+ (0, invariant_1["default"])(account.currency.family === "cardano", "cardano family");
34
+ if (!opts.token) {
35
+ var accounts = [account];
36
+ return accounts;
37
+ }
38
+ return opts.token.map(function (token) {
39
+ var subAccounts = account.subAccounts || [];
40
+ var subAccount = subAccounts.find(function (a) {
41
+ var currency = (0, account_1.getAccountCurrency)(a);
42
+ return token.toLowerCase() === currency.id.toLowerCase();
43
+ });
44
+ if (!subAccount) {
45
+ throw new Error("token account '" +
46
+ token +
47
+ "' not found. Available: " +
48
+ subAccounts.map(function (t) { return t.id; }).join("\n"));
49
+ }
50
+ return subAccount;
51
+ });
52
+ }
53
+ function inferTransactions(transactions, opts) {
54
+ return (0, flatMap_1["default"])(transactions, function (_a) {
55
+ var transaction = _a.transaction, account = _a.account;
56
+ if (transaction.family !== "cardano") {
57
+ throw new Error("transaction is not of type cardano");
58
+ }
59
+ if (account.type === "Account" && !account.cardanoResources) {
60
+ throw new Error("unactivated account");
61
+ }
62
+ return __assign(__assign({}, transaction), { mode: opts.mode || "send", subAccountId: account.type === "TokenAccount" ? account.id : undefined });
63
+ });
64
+ }
65
+ exports["default"] = {
66
+ options: options,
67
+ inferAccounts: inferAccounts,
68
+ inferTransactions: inferTransactions
69
+ };
70
+ //# sourceMappingURL=cli-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-transaction.js","sourceRoot":"","sources":["../../../src/families/cardano/cli-transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAkC;AAClC,2DAAqC;AACrC,yCAAmD;AAKnD,IAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,2BAA2B;KAClC;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,8CAA8C;KACrD;CACF,CAAC;AAEF,SAAS,aAAa,CACpB,OAAgB,EAChB,IAAyB;IAEzB,IAAA,sBAAS,EAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAEnE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACf,IAAM,QAAQ,GAAc,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,KAAK;QAC1B,IAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAE9C,IAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC;YACpC,IAAM,QAAQ,GAAG,IAAA,4BAAkB,EAAC,CAAC,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CACb,iBAAiB;gBACf,KAAK;gBACL,0BAA0B;gBAC1B,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1C,CAAC;SACH;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,YAAuE,EACvE,IAAyB;IAEzB,OAAO,IAAA,oBAAO,EAAC,YAAY,EAAE,UAAC,EAAwB;YAAtB,WAAW,iBAAA,EAAE,OAAO,aAAA;QAClD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SACxC;QAED,6BACK,WAAW,KACd,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,EACzB,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IACtE;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qBAAe;IACb,OAAO,SAAA;IACP,aAAa,eAAA;IACb,iBAAiB,mBAAA;CAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const STAKING_ADDRESS_INDEX = 0;
2
+ export declare const TTL_GAP = 7200;
3
+ export declare const CARDANO_PURPOSE = 1852;
4
+ export declare const CARDANO_COIN_TYPE = 1815;
5
+ export declare const MEMO_LABEL = 674;
6
+ export declare const CARDANO_API_ENDPOINT: any;
7
+ export declare const CARDANO_TESTNET_API_ENDPOINT: any;
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/families/cardano/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,eAAO,MAAM,oBAAoB,KAAiC,CAAC;AACnE,eAAO,MAAM,4BAA4B,KAExC,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.CARDANO_TESTNET_API_ENDPOINT = exports.CARDANO_API_ENDPOINT = exports.MEMO_LABEL = exports.CARDANO_COIN_TYPE = exports.CARDANO_PURPOSE = exports.TTL_GAP = exports.STAKING_ADDRESS_INDEX = void 0;
4
+ var env_1 = require("../../env");
5
+ exports.STAKING_ADDRESS_INDEX = 0;
6
+ exports.TTL_GAP = 7200;
7
+ exports.CARDANO_PURPOSE = 1852;
8
+ exports.CARDANO_COIN_TYPE = 1815;
9
+ exports.MEMO_LABEL = 674;
10
+ exports.CARDANO_API_ENDPOINT = (0, env_1.getEnv)("CARDANO_API_ENDPOINT");
11
+ exports.CARDANO_TESTNET_API_ENDPOINT = (0, env_1.getEnv)("CARDANO_TESTNET_API_ENDPOINT");
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/families/cardano/constants.ts"],"names":[],"mappings":";;;AAAA,iCAAmC;AAEtB,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,OAAO,GAAG,IAAI,CAAC;AACf,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,UAAU,GAAG,GAAG,CAAC;AAEjB,QAAA,oBAAoB,GAAG,IAAA,YAAM,EAAC,sBAAsB,CAAC,CAAC;AACtD,QAAA,4BAA4B,GAAG,IAAA,YAAM,EAChD,8BAA8B,CAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AccountRaw } from "../../../types";
2
+ export declare const cardanoRawAccount1: AccountRaw;
3
+ //# sourceMappingURL=rawAccount.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawAccount.1.d.ts","sourceRoot":"","sources":["../../../../src/families/cardano/datasets/rawAccount.1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,kBAAkB,EAAE,UAyBhC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.cardanoRawAccount1 = void 0;
4
+ exports.cardanoRawAccount1 = {
5
+ id: "js:2:cardano_testnet:a902bc61a79256e1d5858d2ba49cab7011a26ad49580daace7412e255e818b1c1eba2defa321ff2937deba397f639f5bbabb0f0064516301fa4d08663c83f5b2:",
6
+ seedIdentifier: "a902bc61a79256e1d5858d2ba49cab7011a26ad49580daace7412e255e818b1c1eba2defa321ff2937deba397f639f5bbabb0f0064516301fa4d08663c83f5b2",
7
+ name: "Cardano (Testnet) legacy a902bc61...3c83f5b2",
8
+ derivationMode: "",
9
+ index: 0,
10
+ freshAddress: "addr_test1qqllvql2yldah5rsfafafmxu80lx6stlc965ad8fecr8pfz3krjmh2m86v92yu0my7rqydx3h5erqwty82kwgjuc4els8n93zs",
11
+ freshAddressPath: "1852'/1815'/0'/0/2",
12
+ freshAddresses: [
13
+ {
14
+ address: "addr_test1qqllvql2yldah5rsfafafmxu80lx6stlc965ad8fecr8pfz3krjmh2m86v92yu0my7rqydx3h5erqwty82kwgjuc4els8n93zs",
15
+ derivationPath: "1852'/1815'/0'/0/2"
16
+ },
17
+ ],
18
+ blockHeight: 0,
19
+ operations: [],
20
+ pendingOperations: [],
21
+ currencyId: "cardano_testnet",
22
+ unitMagnitude: 6,
23
+ lastSyncDate: "",
24
+ balance: "1021211139",
25
+ xpub: "a902bc61a79256e1d5858d2ba49cab7011a26ad49580daace7412e255e818b1c1eba2defa321ff2937deba397f639f5bbabb0f0064516301fa4d08663c83f5b2"
26
+ };
27
+ //# sourceMappingURL=rawAccount.1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawAccount.1.js","sourceRoot":"","sources":["../../../../src/families/cardano/datasets/rawAccount.1.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAe;IAC5C,EAAE,EAAE,wJAAwJ;IAC5J,cAAc,EACZ,kIAAkI;IACpI,IAAI,EAAE,8CAA8C;IACpD,cAAc,EAAE,EAAE;IAClB,KAAK,EAAE,CAAC;IACR,YAAY,EACV,8GAA8G;IAChH,gBAAgB,EAAE,oBAAoB;IACtC,cAAc,EAAE;QACd;YACE,OAAO,EACL,8GAA8G;YAChH,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,iBAAiB;IAC7B,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,kIAAkI;CACzI,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const cardanoScanAccounts: {
2
+ name: string;
3
+ apdus: string;
4
+ }[];
5
+ //# sourceMappingURL=scanAccounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanAccounts.d.ts","sourceRoot":"","sources":["../../../../src/families/cardano/datasets/scanAccounts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB;;;GAsB/B,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.cardanoScanAccounts = void 0;
4
+ exports.cardanoScanAccounts = [
5
+ {
6
+ name: "cardano_testnet seed 1",
7
+ apdus: "\n => d700000000\n <= 040001009000\n => d71101002d0000058000073c8000071780000000000000000000000022058000073c80000717800000000000000200000000\n <= 0021a6a622d47969ef0b2b89ef7c2e8428f955bae3e52f211e651ccffd51b0e5bbab67d30aa271fb27860234d1bd323039643aace44b98ae7f9000\n => d700000000\n <= 040001009000\n => d71000000d038000073c8000071780000000\n <= a902bc61a79256e1d5858d2ba49cab7011a26ad49580daace7412e255e818b1c1eba2defa321ff2937deba397f639f5bbabb0f0064516301fa4d08663c83f5b29000\n => d700000000\n <= 040001009000\n => d71101002d0000058000073c8000071780000001000000000000000022058000073c80000717800000010000000200000000\n <= 00be054dfb05c79aa40b7bc23e7f35ab3044b2bb71a9640493268977e754e385cba6808c0bb1742f67e569f03643f4bbbce3c1db3655dc09199000\n => d700000000\n <= 040001009000\n => d71000000d038000073c8000071780000001\n <= c909babb895030f654d6c3d4434c0f230c4eb76a5efef6d893462de29b08744ac2687891f45bb164e052076ea432f0dfc4279c458d665cd64dfa6744d435a0039000\n "
8
+ },
9
+ ];
10
+ //# sourceMappingURL=scanAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanAccounts.js","sourceRoot":"","sources":["../../../../src/families/cardano/datasets/scanAccounts.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG;IACjC;QACE,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,k9BAiBR;KACA;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Cardano error thrown when transaction amount is less then minUtxo
3
+ */
4
+ export declare const CardanoMinAmountError: (message?: string | undefined, fields?: {
5
+ [key: string]: any;
6
+ } | undefined) => void;
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/families/cardano/errors.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,qBAAqB;;sBAEjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.CardanoMinAmountError = void 0;
4
+ var errors_1 = require("@ledgerhq/errors");
5
+ /**
6
+ * Cardano error thrown when transaction amount is less then minUtxo
7
+ */
8
+ exports.CardanoMinAmountError = (0, errors_1.createCustomErrorClass)("CardanoMinAmountError");
9
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/families/cardano/errors.ts"],"names":[],"mappings":";;;AAAA,2CAA0D;AAE1D;;GAEG;AACU,QAAA,qBAAqB,GAAG,IAAA,+BAAsB,EACzD,uBAAuB,CACxB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Resolver } from "../../hw/getAddress/types";
2
+ declare const resolver: Resolver;
3
+ export default resolver;
4
+ //# sourceMappingURL=hw-getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.d.ts","sourceRoot":"","sources":["../../../src/families/cardano/hw-getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAa1D,QAAA,MAAM,QAAQ,EAAE,QA6Cf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (_) try {
41
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ exports.__esModule = true;
62
+ var ledgerjs_hw_app_cardano_1 = __importStar(require("@cardano-foundation/ledgerjs-hw-app-cardano"));
63
+ var utils_1 = require("@cardano-foundation/ledgerjs-hw-app-cardano/dist/utils");
64
+ var logic_1 = require("./logic");
65
+ var types_1 = require("./types");
66
+ var constants_1 = require("./constants");
67
+ var typhonjs_1 = require("@stricahq/typhonjs");
68
+ var networks_1 = require("./networks");
69
+ var resolver = function (transport, _a) {
70
+ var path = _a.path, verify = _a.verify, currency = _a.currency;
71
+ return __awaiter(void 0, void 0, void 0, function () {
72
+ var spendingPath, stakingPathString, networkParams, network, ada, r, address;
73
+ return __generator(this, function (_b) {
74
+ switch (_b.label) {
75
+ case 0:
76
+ spendingPath = (0, logic_1.getBipPathFromString)(path);
77
+ stakingPathString = (0, logic_1.getBipPathString)({
78
+ account: spendingPath.account,
79
+ chain: types_1.StakeChain.stake,
80
+ index: constants_1.STAKING_ADDRESS_INDEX
81
+ });
82
+ networkParams = (0, networks_1.getNetworkParameters)(currency.id);
83
+ network = networkParams.networkId === ledgerjs_hw_app_cardano_1.Networks.Mainnet.networkId
84
+ ? ledgerjs_hw_app_cardano_1.Networks.Mainnet
85
+ : ledgerjs_hw_app_cardano_1.Networks.Testnet;
86
+ ada = new ledgerjs_hw_app_cardano_1["default"](transport);
87
+ return [4 /*yield*/, ada.deriveAddress({
88
+ network: network,
89
+ address: {
90
+ type: ledgerjs_hw_app_cardano_1.AddressType.BASE_PAYMENT_KEY_STAKE_KEY,
91
+ params: {
92
+ spendingPath: (0, utils_1.str_to_path)(path),
93
+ stakingPath: (0, utils_1.str_to_path)(stakingPathString)
94
+ }
95
+ }
96
+ })];
97
+ case 1:
98
+ r = _b.sent();
99
+ if (!verify) return [3 /*break*/, 3];
100
+ return [4 /*yield*/, ada.showAddress({
101
+ network: network,
102
+ address: {
103
+ type: ledgerjs_hw_app_cardano_1.AddressType.BASE_PAYMENT_KEY_STAKE_KEY,
104
+ params: {
105
+ spendingPath: (0, utils_1.str_to_path)(path),
106
+ stakingPath: (0, utils_1.str_to_path)(stakingPathString)
107
+ }
108
+ }
109
+ })];
110
+ case 2:
111
+ _b.sent();
112
+ _b.label = 3;
113
+ case 3:
114
+ address = typhonjs_1.utils.getAddressFromHex(r.addressHex);
115
+ return [2 /*return*/, {
116
+ address: address.getBech32(),
117
+ // Here, we use publicKey hash, as cardano app doesn't export the public key
118
+ publicKey: address.paymentCredential.hash,
119
+ path: path
120
+ }];
121
+ }
122
+ });
123
+ });
124
+ };
125
+ exports["default"] = resolver;
126
+ //# sourceMappingURL=hw-getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../../../src/families/cardano/hw-getAddress.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qGAGqD;AACrD,gFAAqF;AACrF,iCAAiE;AACjE,iCAAqC;AACrC,yCAAoD;AACpD,+CAA0D;AAE1D,uCAAkD;AAElD,IAAM,QAAQ,GAAa,UAAO,SAAS,EAAE,EAA0B;QAAxB,IAAI,UAAA,EAAE,MAAM,YAAA,EAAE,QAAQ,cAAA;;;;;;oBAC7D,YAAY,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;oBAC1C,iBAAiB,GAAG,IAAA,wBAAgB,EAAC;wBACzC,OAAO,EAAE,YAAY,CAAC,OAAO;wBAC7B,KAAK,EAAE,kBAAU,CAAC,KAAK;wBACvB,KAAK,EAAE,iCAAqB;qBAC7B,CAAC,CAAC;oBACG,aAAa,GAAG,IAAA,+BAAoB,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClD,OAAO,GACX,aAAa,CAAC,SAAS,KAAK,kCAAQ,CAAC,OAAO,CAAC,SAAS;wBACpD,CAAC,CAAC,kCAAQ,CAAC,OAAO;wBAClB,CAAC,CAAC,kCAAQ,CAAC,OAAO,CAAC;oBAEjB,GAAG,GAAG,IAAI,oCAAG,CAAC,SAAS,CAAC,CAAC;oBACrB,qBAAM,GAAG,CAAC,aAAa,CAAC;4BAChC,OAAO,SAAA;4BACP,OAAO,EAAE;gCACP,IAAI,EAAE,qCAAW,CAAC,0BAA0B;gCAC5C,MAAM,EAAE;oCACN,YAAY,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;oCAC/B,WAAW,EAAE,IAAA,mBAAW,EAAC,iBAAiB,CAAC;iCAC5C;6BACF;yBACF,CAAC,EAAA;;oBATI,CAAC,GAAG,SASR;yBACE,MAAM,EAAN,wBAAM;oBACR,qBAAM,GAAG,CAAC,WAAW,CAAC;4BACpB,OAAO,SAAA;4BACP,OAAO,EAAE;gCACP,IAAI,EAAE,qCAAW,CAAC,0BAA0B;gCAC5C,MAAM,EAAE;oCACN,YAAY,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;oCAC/B,WAAW,EAAE,IAAA,mBAAW,EAAC,iBAAiB,CAAC;iCAC5C;6BACF;yBACF,CAAC,EAAA;;oBATF,SASE,CAAC;;;oBAEC,OAAO,GAAG,gBAAW,CAAC,iBAAiB,CAC3C,CAAC,CAAC,UAAU,CACgB,CAAC;oBAC/B,sBAAO;4BACL,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;4BAC5B,4EAA4E;4BAC5E,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI;4BACzC,IAAI,MAAA;yBACL,EAAC;;;;CACH,CAAC;AAEF,qBAAe,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BroadcastFnSignature } from "../../types";
2
+ /**
3
+ * Broadcast the signed transaction
4
+ * @param {signature: string, operation: string} signedOperation
5
+ */
6
+ declare const broadcast: BroadcastFnSignature;
7
+ export default broadcast;
8
+ //# sourceMappingURL=js-broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-broadcast.d.ts","sourceRoot":"","sources":["../../../src/families/cardano/js-broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD;;;GAGG;AACH,QAAA,MAAM,SAAS,EAAE,oBAchB,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,65 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ exports.__esModule = true;
39
+ var operation_1 = require("../../operation");
40
+ var submitTransaction_1 = require("./api/submitTransaction");
41
+ /**
42
+ * Broadcast the signed transaction
43
+ * @param {signature: string, operation: string} signedOperation
44
+ */
45
+ var broadcast = function (_a) {
46
+ var signedOperation = _a.signedOperation, account = _a.account;
47
+ return __awaiter(void 0, void 0, void 0, function () {
48
+ var signedTx, pendingTransaction;
49
+ return __generator(this, function (_b) {
50
+ switch (_b.label) {
51
+ case 0:
52
+ signedTx = signedOperation.signature;
53
+ return [4 /*yield*/, (0, submitTransaction_1.submitTransaction)({
54
+ transaction: signedTx,
55
+ currency: account.currency
56
+ })];
57
+ case 1:
58
+ pendingTransaction = _b.sent();
59
+ return [2 /*return*/, (0, operation_1.patchOperationWithHash)(signedOperation.operation, pendingTransaction.hash)];
60
+ }
61
+ });
62
+ });
63
+ };
64
+ exports["default"] = broadcast;
65
+ //# sourceMappingURL=js-broadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-broadcast.js","sourceRoot":"","sources":["../../../src/families/cardano/js-broadcast.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAAyD;AACzD,6DAA4D;AAE5D;;;GAGG;AACH,IAAM,SAAS,GAAyB,UAAO,EAG9C;QAFC,eAAe,qBAAA,EACf,OAAO,aAAA;;;;;;oBAED,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC;oBAChB,qBAAM,IAAA,qCAAiB,EAAC;4BACjD,WAAW,EAAE,QAAQ;4BACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC3B,CAAC,EAAA;;oBAHI,kBAAkB,GAAG,SAGzB;oBAEF,sBAAO,IAAA,kCAAsB,EAC3B,eAAe,CAAC,SAAS,EACzB,kBAAkB,CAAC,IAAI,CACxB,EAAC;;;;CACH,CAAC;AAEF,qBAAe,SAAS,CAAC"}