@ledgerhq/coin-stellar 0.2.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 (233) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +35 -0
  4. package/CHANGELOG.md +13 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/bridge/bridge.integration.test.d.ts +4 -0
  8. package/lib/bridge/bridge.integration.test.d.ts.map +1 -0
  9. package/lib/bridge/bridge.integration.test.js +317 -0
  10. package/lib/bridge/bridge.integration.test.js.map +1 -0
  11. package/lib/bridge/index.d.ts +10 -0
  12. package/lib/bridge/index.d.ts.map +1 -0
  13. package/lib/bridge/index.js +72 -0
  14. package/lib/bridge/index.js.map +1 -0
  15. package/lib/broadcast.d.ts +9 -0
  16. package/lib/broadcast.d.ts.map +1 -0
  17. package/lib/broadcast.js +26 -0
  18. package/lib/broadcast.js.map +1 -0
  19. package/lib/buildOptimisticOperation.d.ts +4 -0
  20. package/lib/buildOptimisticOperation.d.ts.map +1 -0
  21. package/lib/buildOptimisticOperation.js +72 -0
  22. package/lib/buildOptimisticOperation.js.map +1 -0
  23. package/lib/buildTransaction.d.ts +10 -0
  24. package/lib/buildTransaction.d.ts.map +1 -0
  25. package/lib/buildTransaction.js +97 -0
  26. package/lib/buildTransaction.js.map +1 -0
  27. package/lib/cli.d.ts +38 -0
  28. package/lib/cli.d.ts.map +1 -0
  29. package/lib/cli.js +83 -0
  30. package/lib/cli.js.map +1 -0
  31. package/lib/config.d.ts +5 -0
  32. package/lib/config.d.ts.map +1 -0
  33. package/lib/config.js +17 -0
  34. package/lib/config.js.map +1 -0
  35. package/lib/createTransaction.d.ts +10 -0
  36. package/lib/createTransaction.d.ts.map +1 -0
  37. package/lib/createTransaction.js +26 -0
  38. package/lib/createTransaction.js.map +1 -0
  39. package/lib/deviceTransactionConfig.d.ts +24 -0
  40. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  41. package/lib/deviceTransactionConfig.js +41 -0
  42. package/lib/deviceTransactionConfig.js.map +1 -0
  43. package/lib/errors.d.ts +37 -0
  44. package/lib/errors.d.ts.map +1 -0
  45. package/lib/errors.js +17 -0
  46. package/lib/errors.js.map +1 -0
  47. package/lib/estimateMaxSpendable.d.ts +5 -0
  48. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  49. package/lib/estimateMaxSpendable.js +32 -0
  50. package/lib/estimateMaxSpendable.js.map +1 -0
  51. package/lib/getTransactionStatus.d.ts +5 -0
  52. package/lib/getTransactionStatus.d.ts.map +1 -0
  53. package/lib/getTransactionStatus.js +170 -0
  54. package/lib/getTransactionStatus.js.map +1 -0
  55. package/lib/hw-getAddress.d.ts +6 -0
  56. package/lib/hw-getAddress.d.ts.map +1 -0
  57. package/lib/hw-getAddress.js +28 -0
  58. package/lib/hw-getAddress.js.map +1 -0
  59. package/lib/logic.d.ts +36 -0
  60. package/lib/logic.d.ts.map +1 -0
  61. package/lib/logic.js +289 -0
  62. package/lib/logic.js.map +1 -0
  63. package/lib/network/horizon.d.ts +71 -0
  64. package/lib/network/horizon.d.ts.map +1 -0
  65. package/lib/network/horizon.js +300 -0
  66. package/lib/network/horizon.js.map +1 -0
  67. package/lib/network/index.d.ts +2 -0
  68. package/lib/network/index.d.ts.map +1 -0
  69. package/lib/network/index.js +20 -0
  70. package/lib/network/index.js.map +1 -0
  71. package/lib/prepareTransaction.d.ts +5 -0
  72. package/lib/prepareTransaction.d.ts.map +1 -0
  73. package/lib/prepareTransaction.js +41 -0
  74. package/lib/prepareTransaction.js.map +1 -0
  75. package/lib/signOperation.d.ts +6 -0
  76. package/lib/signOperation.d.ts.map +1 -0
  77. package/lib/signOperation.js +56 -0
  78. package/lib/signOperation.js.map +1 -0
  79. package/lib/specs.d.ts +7 -0
  80. package/lib/specs.d.ts.map +1 -0
  81. package/lib/specs.js +234 -0
  82. package/lib/specs.js.map +1 -0
  83. package/lib/speculos-deviceActions.d.ts +4 -0
  84. package/lib/speculos-deviceActions.d.ts.map +1 -0
  85. package/lib/speculos-deviceActions.js +99 -0
  86. package/lib/speculos-deviceActions.js.map +1 -0
  87. package/lib/synchronization.d.ts +4 -0
  88. package/lib/synchronization.d.ts.map +1 -0
  89. package/lib/synchronization.js +73 -0
  90. package/lib/synchronization.js.map +1 -0
  91. package/lib/tokens.d.ts +12 -0
  92. package/lib/tokens.d.ts.map +1 -0
  93. package/lib/tokens.js +58 -0
  94. package/lib/tokens.js.map +1 -0
  95. package/lib/transaction.d.ts +15 -0
  96. package/lib/transaction.d.ts.map +1 -0
  97. package/lib/transaction.js +63 -0
  98. package/lib/transaction.js.map +1 -0
  99. package/lib/types/index.d.ts +89 -0
  100. package/lib/types/index.d.ts.map +1 -0
  101. package/lib/types/index.js +26 -0
  102. package/lib/types/index.js.map +1 -0
  103. package/lib/types/signer.d.ts +10 -0
  104. package/lib/types/signer.d.ts.map +1 -0
  105. package/lib/types/signer.js +3 -0
  106. package/lib/types/signer.js.map +1 -0
  107. package/lib-es/bridge/bridge.integration.test.d.ts +4 -0
  108. package/lib-es/bridge/bridge.integration.test.d.ts.map +1 -0
  109. package/lib-es/bridge/bridge.integration.test.js +311 -0
  110. package/lib-es/bridge/bridge.integration.test.js.map +1 -0
  111. package/lib-es/bridge/index.d.ts +10 -0
  112. package/lib-es/bridge/index.d.ts.map +1 -0
  113. package/lib-es/bridge/index.js +65 -0
  114. package/lib-es/bridge/index.js.map +1 -0
  115. package/lib-es/broadcast.d.ts +9 -0
  116. package/lib-es/broadcast.d.ts.map +1 -0
  117. package/lib-es/broadcast.js +22 -0
  118. package/lib-es/broadcast.js.map +1 -0
  119. package/lib-es/buildOptimisticOperation.d.ts +4 -0
  120. package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
  121. package/lib-es/buildOptimisticOperation.js +65 -0
  122. package/lib-es/buildOptimisticOperation.js.map +1 -0
  123. package/lib-es/buildTransaction.d.ts +10 -0
  124. package/lib-es/buildTransaction.d.ts.map +1 -0
  125. package/lib-es/buildTransaction.js +90 -0
  126. package/lib-es/buildTransaction.js.map +1 -0
  127. package/lib-es/cli.d.ts +38 -0
  128. package/lib-es/cli.d.ts.map +1 -0
  129. package/lib-es/cli.js +77 -0
  130. package/lib-es/cli.js.map +1 -0
  131. package/lib-es/config.d.ts +5 -0
  132. package/lib-es/config.d.ts.map +1 -0
  133. package/lib-es/config.js +12 -0
  134. package/lib-es/config.js.map +1 -0
  135. package/lib-es/createTransaction.d.ts +10 -0
  136. package/lib-es/createTransaction.d.ts.map +1 -0
  137. package/lib-es/createTransaction.js +22 -0
  138. package/lib-es/createTransaction.js.map +1 -0
  139. package/lib-es/deviceTransactionConfig.d.ts +24 -0
  140. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  141. package/lib-es/deviceTransactionConfig.js +39 -0
  142. package/lib-es/deviceTransactionConfig.js.map +1 -0
  143. package/lib-es/errors.d.ts +37 -0
  144. package/lib-es/errors.d.ts.map +1 -0
  145. package/lib-es/errors.js +14 -0
  146. package/lib-es/errors.js.map +1 -0
  147. package/lib-es/estimateMaxSpendable.d.ts +5 -0
  148. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  149. package/lib-es/estimateMaxSpendable.js +25 -0
  150. package/lib-es/estimateMaxSpendable.js.map +1 -0
  151. package/lib-es/getTransactionStatus.d.ts +5 -0
  152. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  153. package/lib-es/getTransactionStatus.js +166 -0
  154. package/lib-es/getTransactionStatus.js.map +1 -0
  155. package/lib-es/hw-getAddress.d.ts +6 -0
  156. package/lib-es/hw-getAddress.d.ts.map +1 -0
  157. package/lib-es/hw-getAddress.js +26 -0
  158. package/lib-es/hw-getAddress.js.map +1 -0
  159. package/lib-es/logic.d.ts +36 -0
  160. package/lib-es/logic.d.ts.map +1 -0
  161. package/lib-es/logic.js +274 -0
  162. package/lib-es/logic.js.map +1 -0
  163. package/lib-es/network/horizon.d.ts +71 -0
  164. package/lib-es/network/horizon.d.ts.map +1 -0
  165. package/lib-es/network/horizon.js +285 -0
  166. package/lib-es/network/horizon.js.map +1 -0
  167. package/lib-es/network/index.d.ts +2 -0
  168. package/lib-es/network/index.d.ts.map +1 -0
  169. package/lib-es/network/index.js +2 -0
  170. package/lib-es/network/index.js.map +1 -0
  171. package/lib-es/prepareTransaction.d.ts +5 -0
  172. package/lib-es/prepareTransaction.d.ts.map +1 -0
  173. package/lib-es/prepareTransaction.js +34 -0
  174. package/lib-es/prepareTransaction.js.map +1 -0
  175. package/lib-es/signOperation.d.ts +6 -0
  176. package/lib-es/signOperation.d.ts.map +1 -0
  177. package/lib-es/signOperation.js +52 -0
  178. package/lib-es/signOperation.js.map +1 -0
  179. package/lib-es/specs.d.ts +7 -0
  180. package/lib-es/specs.d.ts.map +1 -0
  181. package/lib-es/specs.js +229 -0
  182. package/lib-es/specs.js.map +1 -0
  183. package/lib-es/speculos-deviceActions.d.ts +4 -0
  184. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  185. package/lib-es/speculos-deviceActions.js +96 -0
  186. package/lib-es/speculos-deviceActions.js.map +1 -0
  187. package/lib-es/synchronization.d.ts +4 -0
  188. package/lib-es/synchronization.d.ts.map +1 -0
  189. package/lib-es/synchronization.js +69 -0
  190. package/lib-es/synchronization.js.map +1 -0
  191. package/lib-es/tokens.d.ts +12 -0
  192. package/lib-es/tokens.d.ts.map +1 -0
  193. package/lib-es/tokens.js +50 -0
  194. package/lib-es/tokens.js.map +1 -0
  195. package/lib-es/transaction.d.ts +15 -0
  196. package/lib-es/transaction.d.ts.map +1 -0
  197. package/lib-es/transaction.js +59 -0
  198. package/lib-es/transaction.js.map +1 -0
  199. package/lib-es/types/index.d.ts +89 -0
  200. package/lib-es/types/index.d.ts.map +1 -0
  201. package/lib-es/types/index.js +9 -0
  202. package/lib-es/types/index.js.map +1 -0
  203. package/lib-es/types/signer.d.ts +10 -0
  204. package/lib-es/types/signer.d.ts.map +1 -0
  205. package/lib-es/types/signer.js +2 -0
  206. package/lib-es/types/signer.js.map +1 -0
  207. package/package.json +80 -0
  208. package/src/bridge/bridge.integration.test.ts +373 -0
  209. package/src/bridge/index.ts +77 -0
  210. package/src/broadcast.ts +20 -0
  211. package/src/buildOptimisticOperation.ts +63 -0
  212. package/src/buildTransaction.ts +106 -0
  213. package/src/cli.ts +107 -0
  214. package/src/config.ts +18 -0
  215. package/src/createTransaction.ts +25 -0
  216. package/src/deviceTransactionConfig.ts +75 -0
  217. package/src/errors.ts +20 -0
  218. package/src/estimateMaxSpendable.ts +29 -0
  219. package/src/getTransactionStatus.ts +207 -0
  220. package/src/hw-getAddress.ts +24 -0
  221. package/src/logic.ts +371 -0
  222. package/src/network/horizon.ts +352 -0
  223. package/src/network/index.ts +17 -0
  224. package/src/prepareTransaction.ts +35 -0
  225. package/src/signOperation.ts +58 -0
  226. package/src/specs.ts +290 -0
  227. package/src/speculos-deviceActions.ts +117 -0
  228. package/src/synchronization.ts +80 -0
  229. package/src/tokens.ts +98 -0
  230. package/src/transaction.ts +99 -0
  231. package/src/types/index.ts +112 -0
  232. package/src/types/signer.ts +9 -0
  233. package/tsconfig.json +13 -0
@@ -0,0 +1,300 @@
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.loadAccount = exports.buildTransactionBuilder = exports.buildChangeTrustOperation = exports.buildCreateAccountOperation = exports.buildPaymentOperation = exports.broadcastTransaction = exports.fetchSigners = exports.fetchSequence = exports.fetchAccountNetworkInfo = exports.fetchOperations = exports.fetchAccount = exports.fetchBaseFee = exports.MIN_BALANCE = exports.BASE_RESERVE_MIN_COUNT = exports.BASE_RESERVE = void 0;
13
+ const errors_1 = require("@ledgerhq/errors");
14
+ const bignumber_js_1 = require("bignumber.js");
15
+ const stellar_sdk_1 = require("@stellar/stellar-sdk");
16
+ const logs_1 = require("@ledgerhq/logs");
17
+ const live_env_1 = require("@ledgerhq/live-env");
18
+ const types_1 = require("../types");
19
+ const currencies_1 = require("@ledgerhq/cryptoassets/currencies");
20
+ const logic_1 = require("../logic");
21
+ const currencies_2 = require("@ledgerhq/coin-framework/currencies");
22
+ const LIMIT = (0, live_env_1.getEnv)("API_STELLAR_HORIZON_FETCH_LIMIT");
23
+ const FALLBACK_BASE_FEE = 100;
24
+ const TRESHOLD_LOW = 0.5;
25
+ const TRESHOLD_MEDIUM = 0.75;
26
+ const currency = (0, currencies_1.getCryptoCurrencyById)("stellar");
27
+ const server = new stellar_sdk_1.Horizon.Server((0, live_env_1.getEnv)("API_STELLAR_HORIZON"));
28
+ // Constants
29
+ exports.BASE_RESERVE = 0.5;
30
+ exports.BASE_RESERVE_MIN_COUNT = 2;
31
+ exports.MIN_BALANCE = 1;
32
+ // Due to the inconsistency between the axios version (1.6.5) used by `stellar-sdk`
33
+ // and the version (0.26.1) used by `@ledgerhq/live-network/network`, it is not possible to use the interceptors
34
+ // provided by `@ledgerhq/live-network/network`.
35
+ stellar_sdk_1.Horizon.AxiosClient.interceptors.request.use(config => {
36
+ if (!(0, live_env_1.getEnv)("ENABLE_NETWORK_LOGS")) {
37
+ return config;
38
+ }
39
+ const { url, method, data } = config;
40
+ (0, logs_1.log)("network", `${method} ${url}`, { data });
41
+ return config;
42
+ });
43
+ stellar_sdk_1.Horizon.AxiosClient.interceptors.response.use(response => {
44
+ var _a, _b, _c;
45
+ if ((0, live_env_1.getEnv)("ENABLE_NETWORK_LOGS")) {
46
+ const { url, method } = response.config;
47
+ (0, logs_1.log)("network-success", `${response.status} ${method} ${url}`, { data: response.data });
48
+ }
49
+ // FIXME: workaround for the Stellar SDK not using the correct URL: the "next" URL
50
+ // included in server responses points to the node itself instead of our reverse proxy...
51
+ // (https://github.com/stellar/js-stellar-sdk/issues/637)
52
+ const next_href = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a._links) === null || _b === void 0 ? void 0 : _b.next) === null || _c === void 0 ? void 0 : _c.href;
53
+ if (next_href) {
54
+ const next = new URL(next_href);
55
+ next.host = new URL((0, live_env_1.getEnv)("API_STELLAR_HORIZON")).host;
56
+ response.data._links.next.href = next.toString();
57
+ }
58
+ return response;
59
+ });
60
+ function getFormattedAmount(amount) {
61
+ return amount.div(new bignumber_js_1.BigNumber(10).pow(currency.units[0].magnitude)).toString(10);
62
+ }
63
+ function fetchBaseFee() {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ // For tests
66
+ if ((0, live_env_1.getEnv)("API_STELLAR_HORIZON_STATIC_FEE")) {
67
+ return {
68
+ baseFee: 100,
69
+ recommendedFee: 100,
70
+ networkCongestionLevel: types_1.NetworkCongestionLevel.LOW,
71
+ };
72
+ }
73
+ const baseFee = new bignumber_js_1.BigNumber(stellar_sdk_1.BASE_FEE).toNumber() || FALLBACK_BASE_FEE;
74
+ let recommendedFee = baseFee;
75
+ let networkCongestionLevel = types_1.NetworkCongestionLevel.MEDIUM;
76
+ try {
77
+ const feeStats = yield server.feeStats();
78
+ const ledgerCapacityUsage = feeStats.ledger_capacity_usage;
79
+ recommendedFee = new bignumber_js_1.BigNumber(feeStats.fee_charged.mode).toNumber();
80
+ if (new bignumber_js_1.BigNumber(ledgerCapacityUsage).toNumber() > TRESHOLD_LOW &&
81
+ new bignumber_js_1.BigNumber(ledgerCapacityUsage).toNumber() <= TRESHOLD_MEDIUM) {
82
+ networkCongestionLevel = types_1.NetworkCongestionLevel.MEDIUM;
83
+ }
84
+ else if (new bignumber_js_1.BigNumber(ledgerCapacityUsage).toNumber() > TRESHOLD_MEDIUM) {
85
+ networkCongestionLevel = types_1.NetworkCongestionLevel.HIGH;
86
+ }
87
+ else {
88
+ networkCongestionLevel = types_1.NetworkCongestionLevel.LOW;
89
+ }
90
+ }
91
+ catch (e) {
92
+ // do nothing, will use defaults
93
+ }
94
+ return {
95
+ baseFee,
96
+ recommendedFee,
97
+ networkCongestionLevel,
98
+ };
99
+ });
100
+ }
101
+ exports.fetchBaseFee = fetchBaseFee;
102
+ /**
103
+ * Get all account-related data
104
+ *
105
+ * @async
106
+ * @param {string} addr
107
+ */
108
+ function fetchAccount(addr) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ var _a, _b, _c;
111
+ let account = {};
112
+ let assets = [];
113
+ let balance = "0";
114
+ try {
115
+ account = yield server.accounts().accountId(addr).call();
116
+ balance =
117
+ ((_b = (_a = account.balances) === null || _a === void 0 ? void 0 : _a.find(balance => {
118
+ return balance.asset_type === "native";
119
+ })) === null || _b === void 0 ? void 0 : _b.balance) || "0";
120
+ // Getting all non-native (XLM) assets on the account
121
+ assets = (_c = account.balances) === null || _c === void 0 ? void 0 : _c.filter(balance => {
122
+ return balance.asset_type !== "native";
123
+ });
124
+ }
125
+ catch (e) {
126
+ balance = "0";
127
+ }
128
+ const formattedBalance = (0, currencies_2.parseCurrencyUnit)(currency.units[0], balance);
129
+ const spendableBalance = yield (0, logic_1.getAccountSpendableBalance)(formattedBalance, account);
130
+ return {
131
+ blockHeight: account.sequence ? new bignumber_js_1.BigNumber(account.sequence).toNumber() : 0,
132
+ balance: formattedBalance,
133
+ spendableBalance,
134
+ assets,
135
+ };
136
+ });
137
+ }
138
+ exports.fetchAccount = fetchAccount;
139
+ /**
140
+ * Fetch all operations for a single account from indexer
141
+ *
142
+ * @param {string} accountId
143
+ * @param {string} addr
144
+ * @param {string} order - "desc" or "asc" order of returned records
145
+ * @param {string} cursor - point to start fetching records
146
+ *
147
+ * @return {Operation[]}
148
+ */
149
+ function fetchOperations(_a) {
150
+ return __awaiter(this, arguments, void 0, function* ({ accountId, addr, order, cursor, }) {
151
+ if (!addr) {
152
+ return [];
153
+ }
154
+ let operations = [];
155
+ try {
156
+ let rawOperations = yield server
157
+ .operations()
158
+ .forAccount(addr)
159
+ .limit(LIMIT)
160
+ .order(order)
161
+ .cursor(cursor)
162
+ .includeFailed(true)
163
+ .join("transactions")
164
+ .call();
165
+ if (!rawOperations || !rawOperations.records.length) {
166
+ return [];
167
+ }
168
+ operations = operations.concat(yield (0, logic_1.rawOperationsToOperations)(rawOperations.records, addr, accountId));
169
+ while (rawOperations.records.length > 0) {
170
+ rawOperations = yield rawOperations.next();
171
+ operations = operations.concat(yield (0, logic_1.rawOperationsToOperations)(rawOperations.records, addr, accountId));
172
+ }
173
+ return operations;
174
+ }
175
+ catch (e) {
176
+ // FIXME: terrible hacks, because Stellar SDK fails to cast network failures to typed errors in react-native...
177
+ // (https://github.com/stellar/js-stellar-sdk/issues/638)
178
+ const errorMsg = e ? String(e) : "";
179
+ if (e instanceof stellar_sdk_1.NotFoundError || errorMsg.match(/status code 404/)) {
180
+ return [];
181
+ }
182
+ if (errorMsg.match(/status code 4[0-9]{2}/)) {
183
+ throw new errors_1.LedgerAPI4xx();
184
+ }
185
+ if (errorMsg.match(/status code 5[0-9]{2}/)) {
186
+ throw new errors_1.LedgerAPI5xx();
187
+ }
188
+ if (e instanceof stellar_sdk_1.NetworkError ||
189
+ errorMsg.match(/ECONNRESET|ECONNREFUSED|ENOTFOUND|EPIPE|ETIMEDOUT/) ||
190
+ errorMsg.match(/undefined is not an object/)) {
191
+ throw new errors_1.NetworkDown();
192
+ }
193
+ throw e;
194
+ }
195
+ });
196
+ }
197
+ exports.fetchOperations = fetchOperations;
198
+ function fetchAccountNetworkInfo(account) {
199
+ return __awaiter(this, void 0, void 0, function* () {
200
+ try {
201
+ const extendedAccount = yield server.accounts().accountId(account.freshAddress).call();
202
+ const baseReserve = (0, logic_1.getReservedBalance)(extendedAccount);
203
+ const { recommendedFee, networkCongestionLevel, baseFee } = yield fetchBaseFee();
204
+ return {
205
+ family: "stellar",
206
+ fees: new bignumber_js_1.BigNumber(recommendedFee.toString()),
207
+ baseFee: new bignumber_js_1.BigNumber(baseFee.toString()),
208
+ baseReserve,
209
+ networkCongestionLevel,
210
+ };
211
+ }
212
+ catch (error) {
213
+ return {
214
+ family: "stellar",
215
+ fees: new bignumber_js_1.BigNumber(0),
216
+ baseFee: new bignumber_js_1.BigNumber(0),
217
+ baseReserve: new bignumber_js_1.BigNumber(0),
218
+ };
219
+ }
220
+ });
221
+ }
222
+ exports.fetchAccountNetworkInfo = fetchAccountNetworkInfo;
223
+ function fetchSequence(account) {
224
+ return __awaiter(this, void 0, void 0, function* () {
225
+ const extendedAccount = yield loadAccount(account.freshAddress);
226
+ return extendedAccount ? new bignumber_js_1.BigNumber(extendedAccount.sequence) : new bignumber_js_1.BigNumber(0);
227
+ });
228
+ }
229
+ exports.fetchSequence = fetchSequence;
230
+ function fetchSigners(account) {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ try {
233
+ const extendedAccount = yield server.accounts().accountId(account.freshAddress).call();
234
+ return extendedAccount.signers;
235
+ }
236
+ catch (error) {
237
+ return [];
238
+ }
239
+ });
240
+ }
241
+ exports.fetchSigners = fetchSigners;
242
+ function broadcastTransaction(signedTransaction) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ const transaction = new stellar_sdk_1.Transaction(signedTransaction, stellar_sdk_1.Networks.PUBLIC);
245
+ const res = yield server.submitTransaction(transaction, {
246
+ skipMemoRequiredCheck: true,
247
+ });
248
+ return res.hash;
249
+ });
250
+ }
251
+ exports.broadcastTransaction = broadcastTransaction;
252
+ function buildPaymentOperation({ destination, amount, assetCode, assetIssuer, }) {
253
+ const formattedAmount = getFormattedAmount(amount);
254
+ // Non-native assets should always have asset code and asset issuer. If an
255
+ // asset doesn't have both, we assume it is native asset.
256
+ const asset = assetCode && assetIssuer ? new stellar_sdk_1.Asset(assetCode, assetIssuer) : stellar_sdk_1.Asset.native();
257
+ return stellar_sdk_1.Operation.payment({
258
+ destination: destination,
259
+ amount: formattedAmount,
260
+ asset,
261
+ });
262
+ }
263
+ exports.buildPaymentOperation = buildPaymentOperation;
264
+ function buildCreateAccountOperation(destination, amount) {
265
+ const formattedAmount = getFormattedAmount(amount);
266
+ return stellar_sdk_1.Operation.createAccount({
267
+ destination: destination,
268
+ startingBalance: formattedAmount,
269
+ });
270
+ }
271
+ exports.buildCreateAccountOperation = buildCreateAccountOperation;
272
+ function buildChangeTrustOperation(assetCode, assetIssuer) {
273
+ return stellar_sdk_1.Operation.changeTrust({
274
+ asset: new stellar_sdk_1.Asset(assetCode, assetIssuer),
275
+ });
276
+ }
277
+ exports.buildChangeTrustOperation = buildChangeTrustOperation;
278
+ function buildTransactionBuilder(source, fee) {
279
+ const formattedFee = fee.toString();
280
+ return new stellar_sdk_1.TransactionBuilder(source, {
281
+ fee: formattedFee,
282
+ networkPassphrase: stellar_sdk_1.Networks.PUBLIC,
283
+ });
284
+ }
285
+ exports.buildTransactionBuilder = buildTransactionBuilder;
286
+ function loadAccount(addr) {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ if (!addr || !addr.length) {
289
+ return null;
290
+ }
291
+ try {
292
+ return yield server.loadAccount(addr);
293
+ }
294
+ catch (e) {
295
+ return null;
296
+ }
297
+ });
298
+ }
299
+ exports.loadAccount = loadAccount;
300
+ //# sourceMappingURL=horizon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizon.js","sourceRoot":"","sources":["../../src/network/horizon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { fetchAccount, fetchOperations, fetchBaseFee, fetchSequence, fetchSigners, fetchAccountNetworkInfo, broadcastTransaction, buildPaymentOperation, buildCreateAccountOperation, buildChangeTrustOperation, buildTransactionBuilder, loadAccount, BASE_RESERVE, BASE_RESERVE_MIN_COUNT, MIN_BALANCE, } from "./horizon";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,WAAW,GACZ,MAAM,WAAW,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MIN_BALANCE = exports.BASE_RESERVE_MIN_COUNT = exports.BASE_RESERVE = exports.loadAccount = exports.buildTransactionBuilder = exports.buildChangeTrustOperation = exports.buildCreateAccountOperation = exports.buildPaymentOperation = exports.broadcastTransaction = exports.fetchAccountNetworkInfo = exports.fetchSigners = exports.fetchSequence = exports.fetchBaseFee = exports.fetchOperations = exports.fetchAccount = void 0;
4
+ var horizon_1 = require("./horizon");
5
+ Object.defineProperty(exports, "fetchAccount", { enumerable: true, get: function () { return horizon_1.fetchAccount; } });
6
+ Object.defineProperty(exports, "fetchOperations", { enumerable: true, get: function () { return horizon_1.fetchOperations; } });
7
+ Object.defineProperty(exports, "fetchBaseFee", { enumerable: true, get: function () { return horizon_1.fetchBaseFee; } });
8
+ Object.defineProperty(exports, "fetchSequence", { enumerable: true, get: function () { return horizon_1.fetchSequence; } });
9
+ Object.defineProperty(exports, "fetchSigners", { enumerable: true, get: function () { return horizon_1.fetchSigners; } });
10
+ Object.defineProperty(exports, "fetchAccountNetworkInfo", { enumerable: true, get: function () { return horizon_1.fetchAccountNetworkInfo; } });
11
+ Object.defineProperty(exports, "broadcastTransaction", { enumerable: true, get: function () { return horizon_1.broadcastTransaction; } });
12
+ Object.defineProperty(exports, "buildPaymentOperation", { enumerable: true, get: function () { return horizon_1.buildPaymentOperation; } });
13
+ Object.defineProperty(exports, "buildCreateAccountOperation", { enumerable: true, get: function () { return horizon_1.buildCreateAccountOperation; } });
14
+ Object.defineProperty(exports, "buildChangeTrustOperation", { enumerable: true, get: function () { return horizon_1.buildChangeTrustOperation; } });
15
+ Object.defineProperty(exports, "buildTransactionBuilder", { enumerable: true, get: function () { return horizon_1.buildTransactionBuilder; } });
16
+ Object.defineProperty(exports, "loadAccount", { enumerable: true, get: function () { return horizon_1.loadAccount; } });
17
+ Object.defineProperty(exports, "BASE_RESERVE", { enumerable: true, get: function () { return horizon_1.BASE_RESERVE; } });
18
+ Object.defineProperty(exports, "BASE_RESERVE_MIN_COUNT", { enumerable: true, get: function () { return horizon_1.BASE_RESERVE_MIN_COUNT; } });
19
+ Object.defineProperty(exports, "MIN_BALANCE", { enumerable: true, get: function () { return horizon_1.MIN_BALANCE; } });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":";;;AAAA,qCAgBmB;AAfjB,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,kHAAA,uBAAuB,OAAA;AACvB,+GAAA,oBAAoB,OAAA;AACpB,gHAAA,qBAAqB,OAAA;AACrB,sHAAA,2BAA2B,OAAA;AAC3B,oHAAA,yBAAyB,OAAA;AACzB,kHAAA,uBAAuB,OAAA;AACvB,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,iHAAA,sBAAsB,OAAA;AACtB,sGAAA,WAAW,OAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AccountBridge } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "./types";
3
+ export declare const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"];
4
+ export default prepareTransaction;
5
+ //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAyB/E,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,41 @@
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.prepareTransaction = void 0;
16
+ const invariant_1 = __importDefault(require("invariant"));
17
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
18
+ const network_1 = require("./network");
19
+ const logic_1 = require("./logic");
20
+ const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const networkInfo = transaction.networkInfo || (yield (0, network_1.fetchAccountNetworkInfo)(account));
22
+ (0, invariant_1.default)(networkInfo.family === "stellar", "stellar networkInfo expected");
23
+ const fees = transaction.fees || networkInfo.fees;
24
+ const baseReserve = transaction.baseReserve || networkInfo.baseReserve;
25
+ const [assetCode, assetIssuer] = (0, logic_1.getAssetCodeIssuer)(transaction);
26
+ if (transaction.networkInfo !== networkInfo ||
27
+ transaction.fees !== fees ||
28
+ transaction.baseReserve !== baseReserve) {
29
+ return (0, jsHelpers_1.defaultUpdateTransaction)(transaction, {
30
+ networkInfo,
31
+ fees,
32
+ baseReserve,
33
+ assetCode,
34
+ assetIssuer,
35
+ });
36
+ }
37
+ return (0, jsHelpers_1.defaultUpdateTransaction)(transaction, { assetCode, assetIssuer });
38
+ });
39
+ exports.prepareTransaction = prepareTransaction;
40
+ exports.default = exports.prepareTransaction;
41
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAElC,yEAAqF;AACrF,uCAAoD;AACpD,mCAA6C;AAGtC,MAAM,kBAAkB,GAAqD,CAClF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,CAAC,MAAM,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC,CAAC;IACxF,IAAA,mBAAS,EAAC,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;IAClD,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC;IACvE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IAEjE,IACE,WAAW,CAAC,WAAW,KAAK,WAAW;QACvC,WAAW,CAAC,IAAI,KAAK,IAAI;QACzB,WAAW,CAAC,WAAW,KAAK,WAAW,EACvC,CAAC;QACD,OAAO,IAAA,oCAAwB,EAAC,WAAW,EAAE;YAC3C,WAAW;YACX,IAAI;YACJ,WAAW;YACX,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,oCAAwB,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAA,CAAC;AAzBW,QAAA,kBAAkB,sBAyB7B;AAEF,kBAAe,0BAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Account, AccountBridge } from "@ledgerhq/types-live";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import type { Transaction } from "./types";
4
+ import { StellarSigner } from "./types/signer";
5
+ export declare function buildSignOperation(signerContext: SignerContext<StellarSigner>): AccountBridge<Transaction, Account>["signOperation"];
6
+ //# sourceMappingURL=signOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAC1C,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,CA8CtD"}
@@ -0,0 +1,56 @@
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.buildSignOperation = void 0;
13
+ const rxjs_1 = require("rxjs");
14
+ const errors_1 = require("@ledgerhq/errors");
15
+ const buildTransaction_1 = require("./buildTransaction");
16
+ const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
17
+ function buildSignOperation(signerContext) {
18
+ return function signOperation({ account, deviceId, transaction }) {
19
+ return new rxjs_1.Observable(obs => {
20
+ let cancelled = false;
21
+ function main() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ obs.next({ type: "device-signature-requested" });
24
+ if (cancelled) {
25
+ return;
26
+ }
27
+ if (!transaction.fees) {
28
+ throw new errors_1.FeeNotLoaded();
29
+ }
30
+ const unsigned = yield (0, buildTransaction_1.buildTransaction)(account, transaction);
31
+ const unsignedPayload = Buffer.from(unsigned.signatureBase());
32
+ // Sign by device
33
+ const { signature } = yield signerContext(deviceId, signer => signer.signTransaction(account.freshAddressPath, unsignedPayload));
34
+ unsigned.addSignature(account.freshAddress, signature.toString("base64"));
35
+ obs.next({
36
+ type: "device-signature-granted",
37
+ });
38
+ const operation = yield (0, buildOptimisticOperation_1.buildOptimisticOperation)(account, transaction);
39
+ obs.next({
40
+ type: "signed",
41
+ signedOperation: {
42
+ operation,
43
+ signature: unsigned.toXDR(),
44
+ },
45
+ });
46
+ });
47
+ }
48
+ main().then(() => obs.complete(), err => obs.error(err));
49
+ return () => {
50
+ cancelled = true;
51
+ };
52
+ });
53
+ };
54
+ }
55
+ exports.buildSignOperation = buildSignOperation;
56
+ //# sourceMappingURL=signOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAkC;AAClC,6CAAgD;AAIhD,yDAAsD;AACtD,yEAAsE;AAGtE,SAAgB,kBAAkB,CAChC,aAA2C;IAE3C,OAAO,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;QAC9D,OAAO,IAAI,iBAAU,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,SAAe,IAAI;;oBACjB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;oBAEjD,IAAI,SAAS,EAAE,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;wBACtB,MAAM,IAAI,qBAAY,EAAE,CAAC;oBAC3B,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,IAAA,mCAAgB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;oBAC9D,MAAM,eAAe,GAAW,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;oBACtE,iBAAiB;oBACjB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAC3D,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAClE,CAAC;oBACF,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC1E,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,0BAA0B;qBACjC,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,IAAA,mDAAwB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;oBACvE,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,QAAQ;wBACd,eAAe,EAAE;4BACf,SAAS;4BACT,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE;yBAC5B;qBACF,CAAC,CAAC;gBACL,CAAC;aAAA;YAED,IAAI,EAAE,CAAC,IAAI,CACT,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EACpB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CACtB,CAAC;YAEF,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAhDD,gDAgDC"}
package/lib/specs.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { AppSpec } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "./types";
3
+ declare const _default: {
4
+ stellar: AppSpec<Transaction>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../src/specs.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;;;;AAmR3C,wBAEE"}