@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,285 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { LedgerAPI4xx, LedgerAPI5xx, NetworkDown } from "@ledgerhq/errors";
11
+ import { BigNumber } from "bignumber.js";
12
+ import { NetworkError, NotFoundError, Horizon, BASE_FEE, Asset, Operation as StellarSdkOperation, Transaction as StellarSdkTransaction, TransactionBuilder, Networks, } from "@stellar/stellar-sdk";
13
+ import { log } from "@ledgerhq/logs";
14
+ import { getEnv } from "@ledgerhq/live-env";
15
+ import { NetworkCongestionLevel, } from "../types";
16
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
17
+ import { getAccountSpendableBalance, getReservedBalance, rawOperationsToOperations, } from "../logic";
18
+ import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
19
+ const LIMIT = getEnv("API_STELLAR_HORIZON_FETCH_LIMIT");
20
+ const FALLBACK_BASE_FEE = 100;
21
+ const TRESHOLD_LOW = 0.5;
22
+ const TRESHOLD_MEDIUM = 0.75;
23
+ const currency = getCryptoCurrencyById("stellar");
24
+ const server = new Horizon.Server(getEnv("API_STELLAR_HORIZON"));
25
+ // Constants
26
+ export const BASE_RESERVE = 0.5;
27
+ export const BASE_RESERVE_MIN_COUNT = 2;
28
+ export const MIN_BALANCE = 1;
29
+ // Due to the inconsistency between the axios version (1.6.5) used by `stellar-sdk`
30
+ // and the version (0.26.1) used by `@ledgerhq/live-network/network`, it is not possible to use the interceptors
31
+ // provided by `@ledgerhq/live-network/network`.
32
+ Horizon.AxiosClient.interceptors.request.use(config => {
33
+ if (!getEnv("ENABLE_NETWORK_LOGS")) {
34
+ return config;
35
+ }
36
+ const { url, method, data } = config;
37
+ log("network", `${method} ${url}`, { data });
38
+ return config;
39
+ });
40
+ Horizon.AxiosClient.interceptors.response.use(response => {
41
+ var _a, _b, _c;
42
+ if (getEnv("ENABLE_NETWORK_LOGS")) {
43
+ const { url, method } = response.config;
44
+ log("network-success", `${response.status} ${method} ${url}`, { data: response.data });
45
+ }
46
+ // FIXME: workaround for the Stellar SDK not using the correct URL: the "next" URL
47
+ // included in server responses points to the node itself instead of our reverse proxy...
48
+ // (https://github.com/stellar/js-stellar-sdk/issues/637)
49
+ 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;
50
+ if (next_href) {
51
+ const next = new URL(next_href);
52
+ next.host = new URL(getEnv("API_STELLAR_HORIZON")).host;
53
+ response.data._links.next.href = next.toString();
54
+ }
55
+ return response;
56
+ });
57
+ function getFormattedAmount(amount) {
58
+ return amount.div(new BigNumber(10).pow(currency.units[0].magnitude)).toString(10);
59
+ }
60
+ export function fetchBaseFee() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ // For tests
63
+ if (getEnv("API_STELLAR_HORIZON_STATIC_FEE")) {
64
+ return {
65
+ baseFee: 100,
66
+ recommendedFee: 100,
67
+ networkCongestionLevel: NetworkCongestionLevel.LOW,
68
+ };
69
+ }
70
+ const baseFee = new BigNumber(BASE_FEE).toNumber() || FALLBACK_BASE_FEE;
71
+ let recommendedFee = baseFee;
72
+ let networkCongestionLevel = NetworkCongestionLevel.MEDIUM;
73
+ try {
74
+ const feeStats = yield server.feeStats();
75
+ const ledgerCapacityUsage = feeStats.ledger_capacity_usage;
76
+ recommendedFee = new BigNumber(feeStats.fee_charged.mode).toNumber();
77
+ if (new BigNumber(ledgerCapacityUsage).toNumber() > TRESHOLD_LOW &&
78
+ new BigNumber(ledgerCapacityUsage).toNumber() <= TRESHOLD_MEDIUM) {
79
+ networkCongestionLevel = NetworkCongestionLevel.MEDIUM;
80
+ }
81
+ else if (new BigNumber(ledgerCapacityUsage).toNumber() > TRESHOLD_MEDIUM) {
82
+ networkCongestionLevel = NetworkCongestionLevel.HIGH;
83
+ }
84
+ else {
85
+ networkCongestionLevel = NetworkCongestionLevel.LOW;
86
+ }
87
+ }
88
+ catch (e) {
89
+ // do nothing, will use defaults
90
+ }
91
+ return {
92
+ baseFee,
93
+ recommendedFee,
94
+ networkCongestionLevel,
95
+ };
96
+ });
97
+ }
98
+ /**
99
+ * Get all account-related data
100
+ *
101
+ * @async
102
+ * @param {string} addr
103
+ */
104
+ export function fetchAccount(addr) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ var _a, _b, _c;
107
+ let account = {};
108
+ let assets = [];
109
+ let balance = "0";
110
+ try {
111
+ account = yield server.accounts().accountId(addr).call();
112
+ balance =
113
+ ((_b = (_a = account.balances) === null || _a === void 0 ? void 0 : _a.find(balance => {
114
+ return balance.asset_type === "native";
115
+ })) === null || _b === void 0 ? void 0 : _b.balance) || "0";
116
+ // Getting all non-native (XLM) assets on the account
117
+ assets = (_c = account.balances) === null || _c === void 0 ? void 0 : _c.filter(balance => {
118
+ return balance.asset_type !== "native";
119
+ });
120
+ }
121
+ catch (e) {
122
+ balance = "0";
123
+ }
124
+ const formattedBalance = parseCurrencyUnit(currency.units[0], balance);
125
+ const spendableBalance = yield getAccountSpendableBalance(formattedBalance, account);
126
+ return {
127
+ blockHeight: account.sequence ? new BigNumber(account.sequence).toNumber() : 0,
128
+ balance: formattedBalance,
129
+ spendableBalance,
130
+ assets,
131
+ };
132
+ });
133
+ }
134
+ /**
135
+ * Fetch all operations for a single account from indexer
136
+ *
137
+ * @param {string} accountId
138
+ * @param {string} addr
139
+ * @param {string} order - "desc" or "asc" order of returned records
140
+ * @param {string} cursor - point to start fetching records
141
+ *
142
+ * @return {Operation[]}
143
+ */
144
+ export function fetchOperations(_a) {
145
+ return __awaiter(this, arguments, void 0, function* ({ accountId, addr, order, cursor, }) {
146
+ if (!addr) {
147
+ return [];
148
+ }
149
+ let operations = [];
150
+ try {
151
+ let rawOperations = yield server
152
+ .operations()
153
+ .forAccount(addr)
154
+ .limit(LIMIT)
155
+ .order(order)
156
+ .cursor(cursor)
157
+ .includeFailed(true)
158
+ .join("transactions")
159
+ .call();
160
+ if (!rawOperations || !rawOperations.records.length) {
161
+ return [];
162
+ }
163
+ operations = operations.concat(yield rawOperationsToOperations(rawOperations.records, addr, accountId));
164
+ while (rawOperations.records.length > 0) {
165
+ rawOperations = yield rawOperations.next();
166
+ operations = operations.concat(yield rawOperationsToOperations(rawOperations.records, addr, accountId));
167
+ }
168
+ return operations;
169
+ }
170
+ catch (e) {
171
+ // FIXME: terrible hacks, because Stellar SDK fails to cast network failures to typed errors in react-native...
172
+ // (https://github.com/stellar/js-stellar-sdk/issues/638)
173
+ const errorMsg = e ? String(e) : "";
174
+ if (e instanceof NotFoundError || errorMsg.match(/status code 404/)) {
175
+ return [];
176
+ }
177
+ if (errorMsg.match(/status code 4[0-9]{2}/)) {
178
+ throw new LedgerAPI4xx();
179
+ }
180
+ if (errorMsg.match(/status code 5[0-9]{2}/)) {
181
+ throw new LedgerAPI5xx();
182
+ }
183
+ if (e instanceof NetworkError ||
184
+ errorMsg.match(/ECONNRESET|ECONNREFUSED|ENOTFOUND|EPIPE|ETIMEDOUT/) ||
185
+ errorMsg.match(/undefined is not an object/)) {
186
+ throw new NetworkDown();
187
+ }
188
+ throw e;
189
+ }
190
+ });
191
+ }
192
+ export function fetchAccountNetworkInfo(account) {
193
+ return __awaiter(this, void 0, void 0, function* () {
194
+ try {
195
+ const extendedAccount = yield server.accounts().accountId(account.freshAddress).call();
196
+ const baseReserve = getReservedBalance(extendedAccount);
197
+ const { recommendedFee, networkCongestionLevel, baseFee } = yield fetchBaseFee();
198
+ return {
199
+ family: "stellar",
200
+ fees: new BigNumber(recommendedFee.toString()),
201
+ baseFee: new BigNumber(baseFee.toString()),
202
+ baseReserve,
203
+ networkCongestionLevel,
204
+ };
205
+ }
206
+ catch (error) {
207
+ return {
208
+ family: "stellar",
209
+ fees: new BigNumber(0),
210
+ baseFee: new BigNumber(0),
211
+ baseReserve: new BigNumber(0),
212
+ };
213
+ }
214
+ });
215
+ }
216
+ export function fetchSequence(account) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ const extendedAccount = yield loadAccount(account.freshAddress);
219
+ return extendedAccount ? new BigNumber(extendedAccount.sequence) : new BigNumber(0);
220
+ });
221
+ }
222
+ export function fetchSigners(account) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ try {
225
+ const extendedAccount = yield server.accounts().accountId(account.freshAddress).call();
226
+ return extendedAccount.signers;
227
+ }
228
+ catch (error) {
229
+ return [];
230
+ }
231
+ });
232
+ }
233
+ export function broadcastTransaction(signedTransaction) {
234
+ return __awaiter(this, void 0, void 0, function* () {
235
+ const transaction = new StellarSdkTransaction(signedTransaction, Networks.PUBLIC);
236
+ const res = yield server.submitTransaction(transaction, {
237
+ skipMemoRequiredCheck: true,
238
+ });
239
+ return res.hash;
240
+ });
241
+ }
242
+ export function buildPaymentOperation({ destination, amount, assetCode, assetIssuer, }) {
243
+ const formattedAmount = getFormattedAmount(amount);
244
+ // Non-native assets should always have asset code and asset issuer. If an
245
+ // asset doesn't have both, we assume it is native asset.
246
+ const asset = assetCode && assetIssuer ? new Asset(assetCode, assetIssuer) : Asset.native();
247
+ return StellarSdkOperation.payment({
248
+ destination: destination,
249
+ amount: formattedAmount,
250
+ asset,
251
+ });
252
+ }
253
+ export function buildCreateAccountOperation(destination, amount) {
254
+ const formattedAmount = getFormattedAmount(amount);
255
+ return StellarSdkOperation.createAccount({
256
+ destination: destination,
257
+ startingBalance: formattedAmount,
258
+ });
259
+ }
260
+ export function buildChangeTrustOperation(assetCode, assetIssuer) {
261
+ return StellarSdkOperation.changeTrust({
262
+ asset: new Asset(assetCode, assetIssuer),
263
+ });
264
+ }
265
+ export function buildTransactionBuilder(source, fee) {
266
+ const formattedFee = fee.toString();
267
+ return new TransactionBuilder(source, {
268
+ fee: formattedFee,
269
+ networkPassphrase: Networks.PUBLIC,
270
+ });
271
+ }
272
+ export function loadAccount(addr) {
273
+ return __awaiter(this, void 0, void 0, function* () {
274
+ if (!addr || !addr.length) {
275
+ return null;
276
+ }
277
+ try {
278
+ return yield server.loadAccount(addr);
279
+ }
280
+ catch (e) {
281
+ return null;
282
+ }
283
+ });
284
+ }
285
+ //# 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,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.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","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,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,34 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import invariant from "invariant";
11
+ import { defaultUpdateTransaction } from "@ledgerhq/coin-framework/bridge/jsHelpers";
12
+ import { fetchAccountNetworkInfo } from "./network";
13
+ import { getAssetCodeIssuer } from "./logic";
14
+ export const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
15
+ const networkInfo = transaction.networkInfo || (yield fetchAccountNetworkInfo(account));
16
+ invariant(networkInfo.family === "stellar", "stellar networkInfo expected");
17
+ const fees = transaction.fees || networkInfo.fees;
18
+ const baseReserve = transaction.baseReserve || networkInfo.baseReserve;
19
+ const [assetCode, assetIssuer] = getAssetCodeIssuer(transaction);
20
+ if (transaction.networkInfo !== networkInfo ||
21
+ transaction.fees !== fees ||
22
+ transaction.baseReserve !== baseReserve) {
23
+ return defaultUpdateTransaction(transaction, {
24
+ networkInfo,
25
+ fees,
26
+ baseReserve,
27
+ assetCode,
28
+ assetIssuer,
29
+ });
30
+ }
31
+ return defaultUpdateTransaction(transaction, { assetCode, assetIssuer });
32
+ });
33
+ export default prepareTransaction;
34
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,CAAC,MAAM,kBAAkB,GAAqD,CAClF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,SAAS,CAAC,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,kBAAkB,CAAC,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,wBAAwB,CAAC,WAAW,EAAE;YAC3C,WAAW;YACX,IAAI;YACJ,WAAW;YACX,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,wBAAwB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAA,CAAC;AAEF,eAAe,kBAAkB,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,52 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Observable } from "rxjs";
11
+ import { FeeNotLoaded } from "@ledgerhq/errors";
12
+ import { buildTransaction } from "./buildTransaction";
13
+ import { buildOptimisticOperation } from "./buildOptimisticOperation";
14
+ export function buildSignOperation(signerContext) {
15
+ return function signOperation({ account, deviceId, transaction }) {
16
+ return new Observable(obs => {
17
+ let cancelled = false;
18
+ function main() {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ obs.next({ type: "device-signature-requested" });
21
+ if (cancelled) {
22
+ return;
23
+ }
24
+ if (!transaction.fees) {
25
+ throw new FeeNotLoaded();
26
+ }
27
+ const unsigned = yield buildTransaction(account, transaction);
28
+ const unsignedPayload = Buffer.from(unsigned.signatureBase());
29
+ // Sign by device
30
+ const { signature } = yield signerContext(deviceId, signer => signer.signTransaction(account.freshAddressPath, unsignedPayload));
31
+ unsigned.addSignature(account.freshAddress, signature.toString("base64"));
32
+ obs.next({
33
+ type: "device-signature-granted",
34
+ });
35
+ const operation = yield buildOptimisticOperation(account, transaction);
36
+ obs.next({
37
+ type: "signed",
38
+ signedOperation: {
39
+ operation,
40
+ signature: unsigned.toXDR(),
41
+ },
42
+ });
43
+ });
44
+ }
45
+ main().then(() => obs.complete(), err => obs.error(err));
46
+ return () => {
47
+ cancelled = true;
48
+ };
49
+ });
50
+ };
51
+ }
52
+ //# sourceMappingURL=signOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,MAAM,UAAU,kBAAkB,CAChC,aAA2C;IAE3C,OAAO,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;QAC9D,OAAO,IAAI,UAAU,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,YAAY,EAAE,CAAC;oBAC3B,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,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,wBAAwB,CAAC,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"}
@@ -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"}