@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,166 @@
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 { AccountAwaitingSendPendingOperations, AmountRequired, NotEnoughBalance, FeeNotLoaded, InvalidAddressBecauseDestinationIsAlsoSource, NotEnoughSpendableBalance, NotEnoughBalanceBecauseDestinationNotCreated, RecipientRequired, InvalidAddress, } from "@ledgerhq/errors";
11
+ import { BigNumber } from "bignumber.js";
12
+ import { findSubAccountById } from "@ledgerhq/coin-framework/account/index";
13
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
14
+ import { isAddressValid, isAccountMultiSign, isMemoValid, getRecipientAccount } from "./logic";
15
+ import { BASE_RESERVE, MIN_BALANCE } from "./network";
16
+ import { StellarWrongMemoFormat, StellarAssetRequired, StellarAssetNotAccepted, StellarAssetNotFound, StellarNotEnoughNativeBalance, StellarFeeSmallerThanRecommended, StellarFeeSmallerThanBase, StellarNotEnoughNativeBalanceToAddTrustline, StellarMuxedAccountNotExist, StellarSourceHasMultiSign, } from "./errors";
17
+ export const getTransactionStatus = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
18
+ var _a, _b;
19
+ const errors = {};
20
+ const warnings = {};
21
+ const useAllAmount = !!transaction.useAllAmount;
22
+ const destinationNotExistMessage = new NotEnoughBalanceBecauseDestinationNotCreated("", {
23
+ minimalAmount: `${MIN_BALANCE} XLM`,
24
+ });
25
+ if (account.pendingOperations.length > 0) {
26
+ throw new AccountAwaitingSendPendingOperations();
27
+ }
28
+ if (!transaction.fees || !transaction.baseReserve) {
29
+ errors.fees = new FeeNotLoaded();
30
+ }
31
+ const estimatedFees = !transaction.fees ? new BigNumber(0) : transaction.fees;
32
+ const baseReserve = !transaction.baseReserve ? new BigNumber(0) : transaction.baseReserve;
33
+ const isAssetPayment = transaction.subAccountId && transaction.assetCode && transaction.assetIssuer;
34
+ const nativeBalance = account.balance;
35
+ const nativeAmountAvailable = account.spendableBalance.minus(estimatedFees);
36
+ let amount = new BigNumber(0);
37
+ let maxAmount = new BigNumber(0);
38
+ let totalSpent = new BigNumber(0);
39
+ // Enough native balance to cover transaction (with required reserve + fees)
40
+ if (!errors.amount && nativeAmountAvailable.lt(0)) {
41
+ errors.amount = new StellarNotEnoughNativeBalance();
42
+ }
43
+ // Entered fee is smaller than base fee
44
+ if (estimatedFees.lt(((_a = transaction.networkInfo) === null || _a === void 0 ? void 0 : _a.baseFee) || 0)) {
45
+ errors.transaction = new StellarFeeSmallerThanBase();
46
+ // Entered fee is smaller than recommended
47
+ }
48
+ else if (estimatedFees.lt(((_b = transaction.networkInfo) === null || _b === void 0 ? void 0 : _b.fees) || 0)) {
49
+ warnings.transaction = new StellarFeeSmallerThanRecommended();
50
+ }
51
+ // Operation specific checks
52
+ if (transaction.mode === "changeTrust") {
53
+ // Check asset provided
54
+ if (!transaction.assetCode || !transaction.assetIssuer) {
55
+ // This is unlikely
56
+ errors.transaction = new StellarAssetRequired("");
57
+ }
58
+ // Has enough native balance to add new trustline
59
+ if (nativeAmountAvailable.minus(BASE_RESERVE).lt(0)) {
60
+ errors.amount = new StellarNotEnoughNativeBalanceToAddTrustline();
61
+ }
62
+ }
63
+ else {
64
+ // Payment
65
+ // Check recipient address
66
+ if (!transaction.recipient) {
67
+ errors.recipient = new RecipientRequired("");
68
+ }
69
+ else if (!isAddressValid(transaction.recipient)) {
70
+ errors.recipient = new InvalidAddress("", {
71
+ currencyName: account.currency.name,
72
+ });
73
+ }
74
+ else if (account.freshAddress === transaction.recipient) {
75
+ errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
76
+ }
77
+ const recipientAccount = yield getRecipientAccount({
78
+ account: account,
79
+ recipient: transaction.recipient,
80
+ });
81
+ // Check recipient account
82
+ if (!(recipientAccount === null || recipientAccount === void 0 ? void 0 : recipientAccount.id) && !errors.recipient && !warnings.recipient) {
83
+ if (recipientAccount === null || recipientAccount === void 0 ? void 0 : recipientAccount.isMuxedAccount) {
84
+ errors.recipient = new StellarMuxedAccountNotExist();
85
+ }
86
+ else {
87
+ if (isAssetPayment) {
88
+ errors.recipient = destinationNotExistMessage;
89
+ }
90
+ else {
91
+ warnings.recipient = destinationNotExistMessage;
92
+ }
93
+ }
94
+ }
95
+ // Asset payment
96
+ if (isAssetPayment) {
97
+ const asset = findSubAccountById(account, transaction.subAccountId || "");
98
+ if (asset === null) {
99
+ // This is unlikely
100
+ throw new StellarAssetNotFound();
101
+ }
102
+ // Check recipient account accepts asset
103
+ if ((recipientAccount === null || recipientAccount === void 0 ? void 0 : recipientAccount.id) &&
104
+ !errors.recipient &&
105
+ !warnings.recipient &&
106
+ !recipientAccount.assetIds.includes(`${transaction.assetCode}:${transaction.assetIssuer}`)) {
107
+ errors.recipient = new StellarAssetNotAccepted("", {
108
+ assetCode: transaction.assetCode,
109
+ });
110
+ }
111
+ const assetBalance = (asset === null || asset === void 0 ? void 0 : asset.balance) || new BigNumber(0);
112
+ maxAmount = (asset === null || asset === void 0 ? void 0 : asset.spendableBalance) || assetBalance;
113
+ amount = useAllAmount ? maxAmount : transaction.amount;
114
+ totalSpent = amount;
115
+ if (!errors.amount && amount.gt(assetBalance)) {
116
+ errors.amount = new NotEnoughBalance();
117
+ }
118
+ }
119
+ else {
120
+ // Native payment
121
+ maxAmount = nativeAmountAvailable;
122
+ amount = useAllAmount ? maxAmount : transaction.amount || 0;
123
+ if (amount.gt(maxAmount)) {
124
+ errors.amount = new NotEnoughBalance();
125
+ }
126
+ totalSpent = useAllAmount ? nativeAmountAvailable : transaction.amount.plus(estimatedFees);
127
+ // Need to send at least 1 XLM to create an account
128
+ if (!errors.recipient && !(recipientAccount === null || recipientAccount === void 0 ? void 0 : recipientAccount.id) && !errors.amount && amount.lt(10000000)) {
129
+ errors.amount = destinationNotExistMessage;
130
+ }
131
+ if (totalSpent.gt(nativeBalance.minus(baseReserve))) {
132
+ errors.amount = new NotEnoughSpendableBalance(undefined, {
133
+ minimumAmount: formatCurrencyUnit(account.currency.units[0], baseReserve, {
134
+ disableRounding: true,
135
+ showCode: true,
136
+ }),
137
+ });
138
+ }
139
+ if (!errors.recipient && !errors.amount && (amount.lt(0) || totalSpent.gt(nativeBalance))) {
140
+ errors.amount = new NotEnoughBalance();
141
+ totalSpent = new BigNumber(0);
142
+ amount = new BigNumber(0);
143
+ }
144
+ }
145
+ if (!errors.amount && amount.eq(0)) {
146
+ errors.amount = new AmountRequired();
147
+ }
148
+ }
149
+ if (yield isAccountMultiSign(account)) {
150
+ errors.recipient = new StellarSourceHasMultiSign();
151
+ }
152
+ if (transaction.memoType &&
153
+ transaction.memoValue &&
154
+ !isMemoValid(transaction.memoType, transaction.memoValue)) {
155
+ errors.transaction = new StellarWrongMemoFormat();
156
+ }
157
+ return {
158
+ errors,
159
+ warnings,
160
+ estimatedFees,
161
+ amount,
162
+ totalSpent,
163
+ };
164
+ });
165
+ export default getTransactionStatus;
166
+ //# sourceMappingURL=getTransactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import { StellarSigner } from "./types/signer";
4
+ declare function resolver(signerContext: SignerContext<StellarSigner>): GetAddressFn;
5
+ export default resolver;
6
+ //# sourceMappingURL=hw-getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.d.ts","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,iBAAS,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,YAAY,CAe3E;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,26 @@
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 { StrKey } from "@stellar/stellar-sdk";
11
+ function resolver(signerContext) {
12
+ return (deviceId_1, _a) => __awaiter(this, [deviceId_1, _a], void 0, function* (deviceId, { path, verify }) {
13
+ const rawPublicKey = yield signerContext(deviceId, (signer) => __awaiter(this, void 0, void 0, function* () {
14
+ const { rawPublicKey } = yield signer.getPublicKey(path, verify);
15
+ return rawPublicKey;
16
+ }));
17
+ const publicKey = StrKey.encodeEd25519PublicKey(rawPublicKey);
18
+ return {
19
+ path,
20
+ address: publicKey,
21
+ publicKey: rawPublicKey.toString("hex"),
22
+ };
23
+ });
24
+ }
25
+ export default resolver;
26
+ //# sourceMappingURL=hw-getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":";;;;;;;;;AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,SAAS,QAAQ,CAAC,aAA2C;IAC3D,OAAO,iBAA8D,EAAE,sDAAzD,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB;QACjE,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAM,MAAM,EAAC,EAAE;YAChE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,OAAO,YAAY,CAAC;QACtB,CAAC,CAAA,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAE9D,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;SACxC,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import type { CacheRes } from "@ledgerhq/live-network/cache";
3
+ import type { Account, OperationType } from "@ledgerhq/types-live";
4
+ import { Horizon } from "@stellar/stellar-sdk";
5
+ import type { BalanceAsset, RawOperation, StellarOperation, Transaction, TransactionRaw } from "./types";
6
+ export declare const STELLAR_BURN_ADDRESS = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
7
+ export declare function getAccountSpendableBalance(balance: BigNumber, account: Horizon.ServerApi.AccountRecord): Promise<BigNumber>;
8
+ export declare function getAmountValue(account: Account, transaction: Transaction, fees: BigNumber): BigNumber;
9
+ export declare function getBalanceId(balance: BalanceAsset): string | null;
10
+ export declare function getReservedBalance(account: Horizon.ServerApi.AccountRecord): BigNumber;
11
+ export declare function getOperationType(operation: RawOperation, addr: string): OperationType;
12
+ export declare function getAssetCodeIssuer(tr: Transaction | TransactionRaw): string[];
13
+ export declare function formatOperation(rawOperation: RawOperation, accountId: string, addr: string): Promise<StellarOperation>;
14
+ export declare function isMemoValid(memoType: string, memoValue: string): boolean;
15
+ export declare function isAccountMultiSign(account: Account): Promise<boolean>;
16
+ /**
17
+ * Returns true if address is valid, false if it's invalid (can't parse or wrong checksum)
18
+ *
19
+ * @param {*} address
20
+ */
21
+ export declare function isAddressValid(address: string): boolean;
22
+ export declare const getRecipientAccount: CacheRes<Array<{
23
+ account: Account;
24
+ recipient: string;
25
+ }>, {
26
+ id: string | null;
27
+ isMuxedAccount: boolean;
28
+ assetIds: string[];
29
+ } | null>;
30
+ export declare function recipientAccount(address?: string): Promise<{
31
+ id: string | null;
32
+ isMuxedAccount: boolean;
33
+ assetIds: string[];
34
+ } | null>;
35
+ export declare function rawOperationsToOperations(operations: RawOperation[], addr: string, accountId: string): Promise<StellarOperation[]>;
36
+ //# sourceMappingURL=logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EACL,OAAO,EAKR,MAAM,sBAAsB,CAAC;AAY9B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,oBAAoB,6DAA6D,CAAC;AAQ/F,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,GACvC,OAAO,CAAC,SAAS,CAAC,CAIpB;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,SAAS,GACd,SAAS,CAWX;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAYjE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAetF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAiCrF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,GAAG,cAAc,GAAG,MAAM,EAAE,CAO7E;AAkBD,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CA+C3B;AAiCD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CA0BxE;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAWvD;AAED,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CACxC,KAAK,CAAC;IACJ,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,EACF;IACE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,IAAI,CAQT,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,IAAI,CAAC,CA2BR;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwB7B"}
@@ -0,0 +1,274 @@
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 { BigNumber } from "bignumber.js";
11
+ import { makeLRUCache } from "@ledgerhq/live-network/cache";
12
+ import { StrKey, MuxedAccount, } from "@stellar/stellar-sdk";
13
+ import { findSubAccountById } from "@ledgerhq/coin-framework/account/helpers";
14
+ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
15
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
16
+ import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
17
+ import { BASE_RESERVE, BASE_RESERVE_MIN_COUNT, fetchBaseFee, fetchSigners, loadAccount, } from "./network";
18
+ export const STELLAR_BURN_ADDRESS = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF";
19
+ const currency = getCryptoCurrencyById("stellar");
20
+ const getMinimumBalance = (account) => {
21
+ return parseCurrencyUnit(currency.units[0], getReservedBalance(account).toString());
22
+ };
23
+ export function getAccountSpendableBalance(balance, account) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const minimumBalance = getMinimumBalance(account);
26
+ const { recommendedFee } = yield fetchBaseFee();
27
+ return BigNumber.max(balance.minus(minimumBalance).minus(recommendedFee), 0);
28
+ });
29
+ }
30
+ export function getAmountValue(account, transaction, fees) {
31
+ // Asset
32
+ if (transaction.subAccountId) {
33
+ const asset = findSubAccountById(account, transaction.subAccountId);
34
+ return transaction.useAllAmount ? new BigNumber(asset.spendableBalance) : transaction.amount;
35
+ }
36
+ // Native
37
+ return transaction.useAllAmount && transaction.networkInfo
38
+ ? BigNumber.max(account.spendableBalance.minus(fees), 0)
39
+ : transaction.amount;
40
+ }
41
+ export function getBalanceId(balance) {
42
+ switch (balance.asset_type) {
43
+ case "native":
44
+ return "native";
45
+ case "liquidity_pool_shares":
46
+ return balance.liquidity_pool_id || null;
47
+ case "credit_alphanum4":
48
+ case "credit_alphanum12":
49
+ return `${balance.asset_code}:${balance.asset_issuer}`;
50
+ default:
51
+ return null;
52
+ }
53
+ }
54
+ export function getReservedBalance(account) {
55
+ var _a;
56
+ const numOfSponsoringEntries = Number(account.num_sponsoring);
57
+ const numOfSponsoredEntries = Number(account.num_sponsored);
58
+ const nativeAsset = (_a = account.balances) === null || _a === void 0 ? void 0 : _a.find(b => b.asset_type === "native");
59
+ const amountInOffers = new BigNumber((nativeAsset === null || nativeAsset === void 0 ? void 0 : nativeAsset.selling_liabilities) || 0);
60
+ const numOfEntries = new BigNumber(account.subentry_count || 0);
61
+ return new BigNumber(BASE_RESERVE_MIN_COUNT)
62
+ .plus(numOfEntries)
63
+ .plus(numOfSponsoringEntries)
64
+ .minus(numOfSponsoredEntries)
65
+ .times(BASE_RESERVE)
66
+ .plus(amountInOffers);
67
+ }
68
+ export function getOperationType(operation, addr) {
69
+ switch (operation.type) {
70
+ case "create_account":
71
+ return operation.funder === addr ? "OUT" : "IN";
72
+ case "payment":
73
+ if (operation.from === addr && operation.to !== addr) {
74
+ return "OUT";
75
+ }
76
+ return "IN";
77
+ case "path_payment_strict_send":
78
+ if (operation.to === addr)
79
+ return "IN";
80
+ return "OUT";
81
+ case "path_payment_strict_receive":
82
+ return "IN";
83
+ case "change_trust":
84
+ if (new BigNumber(operation.limit).eq(0)) {
85
+ return "OPT_OUT";
86
+ }
87
+ return "OPT_IN";
88
+ default:
89
+ if (operation.source_account === addr) {
90
+ return "OUT";
91
+ }
92
+ return "IN";
93
+ }
94
+ }
95
+ export function getAssetCodeIssuer(tr) {
96
+ if (tr.subAccountId) {
97
+ const assetString = tr.subAccountId.split("+")[1];
98
+ return assetString.split(":");
99
+ }
100
+ return [tr.assetCode || "", tr.assetIssuer || ""];
101
+ }
102
+ function getRecipients(operation) {
103
+ switch (operation.type) {
104
+ case "create_account":
105
+ return [operation.account];
106
+ case "payment":
107
+ return [operation.to_muxed || operation.to];
108
+ case "path_payment_strict_send":
109
+ return [operation.to];
110
+ default:
111
+ return [];
112
+ }
113
+ }
114
+ export function formatOperation(rawOperation, accountId, addr) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const transaction = yield rawOperation.transaction();
117
+ const type = getOperationType(rawOperation, addr);
118
+ const value = getValue(rawOperation, transaction, type);
119
+ const recipients = getRecipients(rawOperation);
120
+ const memo = transaction.memo
121
+ ? transaction.memo_type === "hash" || transaction.memo_type === "return"
122
+ ? Buffer.from(transaction.memo, "base64").toString("hex")
123
+ : transaction.memo
124
+ : null;
125
+ const operation = {
126
+ id: encodeOperationId(accountId, rawOperation.transaction_hash, type),
127
+ accountId,
128
+ fee: new BigNumber(transaction.fee_charged),
129
+ value: (rawOperation === null || rawOperation === void 0 ? void 0 : rawOperation.asset_code) ? new BigNumber(transaction.fee_charged) : value,
130
+ // Using type NONE to hide asset operations from the main account (show them
131
+ // only on sub-account)
132
+ type: (rawOperation === null || rawOperation === void 0 ? void 0 : rawOperation.asset_code) && !["OPT_IN", "OPT_OUT"].includes(type) ? "NONE" : type,
133
+ hash: rawOperation.transaction_hash,
134
+ blockHeight: transaction.ledger_attr,
135
+ date: new Date(rawOperation.created_at),
136
+ senders: [rawOperation.source_account],
137
+ recipients,
138
+ transactionSequenceNumber: Number(transaction.source_account_sequence),
139
+ hasFailed: !rawOperation.transaction_successful,
140
+ blockHash: null,
141
+ extra: {
142
+ ledgerOpType: type,
143
+ },
144
+ };
145
+ if (rawOperation.paging_token) {
146
+ operation.extra.pagingToken = rawOperation.paging_token;
147
+ }
148
+ if (rawOperation.asset_code) {
149
+ operation.extra.assetCode = rawOperation.asset_code;
150
+ operation.extra.assetAmount = rawOperation.asset_code ? value.toString() : undefined;
151
+ }
152
+ if (rawOperation.asset_issuer) {
153
+ operation.extra.assetIssuer = rawOperation.asset_issuer;
154
+ }
155
+ if (memo) {
156
+ operation.extra.memo = memo;
157
+ }
158
+ return operation;
159
+ });
160
+ }
161
+ function getValue(operation, transaction, type) {
162
+ let value = new BigNumber(0);
163
+ if (!operation.transaction_successful) {
164
+ return type === "IN" ? value : new BigNumber(transaction.fee_charged || 0);
165
+ }
166
+ switch (operation.type) {
167
+ case "create_account":
168
+ value = parseCurrencyUnit(currency.units[0], operation.starting_balance);
169
+ if (type === "OUT") {
170
+ value = value.plus(transaction.fee_charged);
171
+ }
172
+ return value;
173
+ case "payment":
174
+ case "path_payment_strict_send":
175
+ case "path_payment_strict_receive":
176
+ return parseCurrencyUnit(currency.units[0], operation.amount);
177
+ default:
178
+ return type !== "IN" ? new BigNumber(transaction.fee_charged) : value;
179
+ }
180
+ }
181
+ export function isMemoValid(memoType, memoValue) {
182
+ switch (memoType) {
183
+ case "MEMO_TEXT":
184
+ if (memoValue.length > 28) {
185
+ return false;
186
+ }
187
+ break;
188
+ case "MEMO_ID":
189
+ if (new BigNumber(memoValue.toString()).isNaN()) {
190
+ return false;
191
+ }
192
+ break;
193
+ case "MEMO_HASH":
194
+ case "MEMO_RETURN":
195
+ if (!memoValue.length || memoValue.length !== 64) {
196
+ return false;
197
+ }
198
+ break;
199
+ }
200
+ return true;
201
+ }
202
+ export function isAccountMultiSign(account) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ const signers = yield fetchSigners(account);
205
+ return signers.length > 1;
206
+ });
207
+ }
208
+ /**
209
+ * Returns true if address is valid, false if it's invalid (can't parse or wrong checksum)
210
+ *
211
+ * @param {*} address
212
+ */
213
+ export function isAddressValid(address) {
214
+ if (!address)
215
+ return false;
216
+ // FIXME Workaround for burn address, see https://ledgerhq.atlassian.net/browse/LIVE-4014
217
+ if (address === STELLAR_BURN_ADDRESS)
218
+ return false;
219
+ try {
220
+ return StrKey.isValidEd25519PublicKey(address) || StrKey.isValidMed25519PublicKey(address);
221
+ }
222
+ catch (err) {
223
+ return false;
224
+ }
225
+ }
226
+ export const getRecipientAccount = makeLRUCache((_a) => __awaiter(void 0, [_a], void 0, function* ({ recipient }) { return yield recipientAccount(recipient); }), extract => extract.recipient, {
227
+ max: 300,
228
+ ttl: 5 * 60,
229
+ });
230
+ export function recipientAccount(address) {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ if (!address) {
233
+ return null;
234
+ }
235
+ let accountAddress = address;
236
+ const isMuxedAccount = StrKey.isValidMed25519PublicKey(address);
237
+ if (isMuxedAccount) {
238
+ const muxedAccount = MuxedAccount.fromAddress(address, "0");
239
+ accountAddress = muxedAccount.baseAccount().accountId();
240
+ }
241
+ const account = yield loadAccount(accountAddress);
242
+ if (!account) {
243
+ return null;
244
+ }
245
+ return {
246
+ id: account.id,
247
+ isMuxedAccount,
248
+ assetIds: account.balances.reduce((allAssets, balance) => {
249
+ return [...allAssets, getBalanceId(balance)];
250
+ }, []),
251
+ };
252
+ });
253
+ }
254
+ export function rawOperationsToOperations(operations, addr, accountId) {
255
+ const supportedOperationTypes = [
256
+ "create_account",
257
+ "payment",
258
+ "path_payment_strict_send",
259
+ "path_payment_strict_receive",
260
+ "change_trust",
261
+ ];
262
+ return Promise.all(operations
263
+ .filter(operation => {
264
+ return (operation.from === addr ||
265
+ operation.to === addr ||
266
+ operation.funder === addr ||
267
+ operation.account === addr ||
268
+ operation.trustor === addr ||
269
+ operation.source_account === addr);
270
+ })
271
+ .filter(operation => supportedOperationTypes.includes(operation.type))
272
+ .map(operation => formatOperation(operation, accountId, addr)));
273
+ }
274
+ //# sourceMappingURL=logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /// <reference types="node" />
2
+ import type { Account, Operation } from "@ledgerhq/types-live";
3
+ import { BigNumber } from "bignumber.js";
4
+ import { AccountRecord, Account as StellarSdkAccount, TransactionBuilder } from "@stellar/stellar-sdk";
5
+ import { type BalanceAsset, type NetworkInfo, type Signer, NetworkCongestionLevel } from "../types";
6
+ export declare const BASE_RESERVE = 0.5;
7
+ export declare const BASE_RESERVE_MIN_COUNT = 2;
8
+ export declare const MIN_BALANCE = 1;
9
+ export declare function fetchBaseFee(): Promise<{
10
+ baseFee: number;
11
+ recommendedFee: number;
12
+ networkCongestionLevel: NetworkCongestionLevel;
13
+ }>;
14
+ /**
15
+ * Get all account-related data
16
+ *
17
+ * @async
18
+ * @param {string} addr
19
+ */
20
+ export declare function fetchAccount(addr: string): Promise<{
21
+ blockHeight: number;
22
+ balance: BigNumber;
23
+ spendableBalance: BigNumber;
24
+ assets: BalanceAsset[];
25
+ }>;
26
+ /**
27
+ * Fetch all operations for a single account from indexer
28
+ *
29
+ * @param {string} accountId
30
+ * @param {string} addr
31
+ * @param {string} order - "desc" or "asc" order of returned records
32
+ * @param {string} cursor - point to start fetching records
33
+ *
34
+ * @return {Operation[]}
35
+ */
36
+ export declare function fetchOperations({ accountId, addr, order, cursor, }: {
37
+ accountId: string;
38
+ addr: string;
39
+ order: "asc" | "desc";
40
+ cursor: string;
41
+ }): Promise<Operation[]>;
42
+ export declare function fetchAccountNetworkInfo(account: Account): Promise<NetworkInfo>;
43
+ export declare function fetchSequence(account: Account): Promise<BigNumber>;
44
+ export declare function fetchSigners(account: Account): Promise<Signer[]>;
45
+ export declare function broadcastTransaction(signedTransaction: string): Promise<string>;
46
+ export declare function buildPaymentOperation({ destination, amount, assetCode, assetIssuer, }: {
47
+ destination: string;
48
+ amount: BigNumber;
49
+ assetCode: string | undefined;
50
+ assetIssuer: string | undefined;
51
+ }): {
52
+ sourceAccount(value?: import("@stellar/stellar-sdk").xdr.MuxedAccount | null | undefined): import("@stellar/stellar-sdk").xdr.MuxedAccount | null;
53
+ body(value?: import("@stellar/stellar-sdk").xdr.OperationBody | undefined): import("@stellar/stellar-sdk").xdr.OperationBody;
54
+ toXDR(format?: "raw" | undefined): Buffer;
55
+ toXDR(format: "base64" | "hex"): string;
56
+ };
57
+ export declare function buildCreateAccountOperation(destination: string, amount: BigNumber): {
58
+ sourceAccount(value?: import("@stellar/stellar-sdk").xdr.MuxedAccount | null | undefined): import("@stellar/stellar-sdk").xdr.MuxedAccount | null;
59
+ body(value?: import("@stellar/stellar-sdk").xdr.OperationBody | undefined): import("@stellar/stellar-sdk").xdr.OperationBody;
60
+ toXDR(format?: "raw" | undefined): Buffer;
61
+ toXDR(format: "base64" | "hex"): string;
62
+ };
63
+ export declare function buildChangeTrustOperation(assetCode: string, assetIssuer: string): {
64
+ sourceAccount(value?: import("@stellar/stellar-sdk").xdr.MuxedAccount | null | undefined): import("@stellar/stellar-sdk").xdr.MuxedAccount | null;
65
+ body(value?: import("@stellar/stellar-sdk").xdr.OperationBody | undefined): import("@stellar/stellar-sdk").xdr.OperationBody;
66
+ toXDR(format?: "raw" | undefined): Buffer;
67
+ toXDR(format: "base64" | "hex"): string;
68
+ };
69
+ export declare function buildTransactionBuilder(source: StellarSdkAccount, fee: BigNumber): TransactionBuilder;
70
+ export declare function loadAccount(addr: string): Promise<AccountRecord | null>;
71
+ //# sourceMappingURL=horizon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizon.d.ts","sourceRoot":"","sources":["../../src/network/horizon.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAEL,aAAa,EAOb,OAAO,IAAI,iBAAiB,EAE5B,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,KAAK,MAAM,EACX,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAiBlB,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,WAAW,IAAI,CAAC;AAuC7B,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,sBAAsB,CAAC;CAChD,CAAC,CAsCD;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC;IACnB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB,CAAC,CA6BD;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,KAAK,EACL,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6DvB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBpF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAGxE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOtE;AAED,wBAAsB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrF;AAED,wBAAgB,qBAAqB,CAAC,EACpC,WAAW,EACX,MAAM,EACN,SAAS,EACT,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;;;;;EAUA;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;;;;;EAMjF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;EAI/E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,SAAS,sBAMhF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAU7E"}