@ledgerhq/coin-xrp 6.1.3 → 6.1.4-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 (190) hide show
  1. package/.unimportedrc.json +3 -1
  2. package/CHANGELOG.md +8 -0
  3. package/jest.config.js +2 -5
  4. package/lib/api/index.d.ts +2 -11
  5. package/lib/api/index.d.ts.map +1 -1
  6. package/lib/api/index.integ.test.js +24 -7
  7. package/lib/api/index.integ.test.js.map +1 -1
  8. package/lib/api/index.js +15 -5
  9. package/lib/api/index.js.map +1 -1
  10. package/lib/api/index.test.js +18 -9
  11. package/lib/api/index.test.js.map +1 -1
  12. package/lib/index.d.ts +0 -1
  13. package/lib/index.d.ts.map +1 -1
  14. package/lib/index.js +0 -3
  15. package/lib/index.js.map +1 -1
  16. package/lib/logic/combine.d.ts.map +1 -1
  17. package/lib/logic/combine.js +8 -3
  18. package/lib/logic/combine.js.map +1 -1
  19. package/lib/logic/getBalance.d.ts.map +1 -1
  20. package/lib/logic/getBalance.js +13 -1
  21. package/lib/logic/getBalance.js.map +1 -1
  22. package/lib/logic/getBalance.test.js +14 -1
  23. package/lib/logic/getBalance.test.js.map +1 -1
  24. package/lib/logic/getTransactionStatus.d.ts +3 -0
  25. package/lib/logic/getTransactionStatus.d.ts.map +1 -0
  26. package/lib/{bridge → logic}/getTransactionStatus.js +15 -19
  27. package/lib/logic/getTransactionStatus.js.map +1 -0
  28. package/lib/logic/getTransactionStatus.test.d.ts +2 -0
  29. package/lib/logic/getTransactionStatus.test.d.ts.map +1 -0
  30. package/lib/logic/getTransactionStatus.test.js +184 -0
  31. package/lib/logic/getTransactionStatus.test.js.map +1 -0
  32. package/lib/logic/index.d.ts +2 -1
  33. package/lib/logic/index.d.ts.map +1 -1
  34. package/lib/logic/index.js +3 -2
  35. package/lib/logic/index.js.map +1 -1
  36. package/lib/logic/utils.d.ts +0 -1
  37. package/lib/logic/utils.d.ts.map +1 -1
  38. package/lib/logic/utils.js +14 -10
  39. package/lib/logic/utils.js.map +1 -1
  40. package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
  41. package/lib/test/bridgeDatasetTest.js +7 -7
  42. package/lib/test/bridgeDatasetTest.js.map +1 -1
  43. package/lib/{bridge/transaction.d.ts → transaction.d.ts} +1 -1
  44. package/lib/transaction.d.ts.map +1 -0
  45. package/lib/transaction.js.map +1 -0
  46. package/lib/types/model.d.ts +7 -0
  47. package/lib/types/model.d.ts.map +1 -1
  48. package/lib-es/api/index.d.ts +2 -11
  49. package/lib-es/api/index.d.ts.map +1 -1
  50. package/lib-es/api/index.integ.test.js +24 -7
  51. package/lib-es/api/index.integ.test.js.map +1 -1
  52. package/lib-es/api/index.js +16 -6
  53. package/lib-es/api/index.js.map +1 -1
  54. package/lib-es/api/index.test.js +18 -9
  55. package/lib-es/api/index.test.js.map +1 -1
  56. package/lib-es/index.d.ts +0 -1
  57. package/lib-es/index.d.ts.map +1 -1
  58. package/lib-es/index.js +0 -1
  59. package/lib-es/index.js.map +1 -1
  60. package/lib-es/logic/combine.d.ts.map +1 -1
  61. package/lib-es/logic/combine.js +8 -3
  62. package/lib-es/logic/combine.js.map +1 -1
  63. package/lib-es/logic/getBalance.d.ts.map +1 -1
  64. package/lib-es/logic/getBalance.js +14 -2
  65. package/lib-es/logic/getBalance.js.map +1 -1
  66. package/lib-es/logic/getBalance.test.js +14 -1
  67. package/lib-es/logic/getBalance.test.js.map +1 -1
  68. package/lib-es/logic/getTransactionStatus.d.ts +3 -0
  69. package/lib-es/logic/getTransactionStatus.d.ts.map +1 -0
  70. package/lib-es/{bridge → logic}/getTransactionStatus.js +13 -14
  71. package/lib-es/logic/getTransactionStatus.js.map +1 -0
  72. package/lib-es/logic/getTransactionStatus.test.d.ts +2 -0
  73. package/lib-es/logic/getTransactionStatus.test.d.ts.map +1 -0
  74. package/lib-es/logic/getTransactionStatus.test.js +159 -0
  75. package/lib-es/logic/getTransactionStatus.test.js.map +1 -0
  76. package/lib-es/logic/index.d.ts +2 -1
  77. package/lib-es/logic/index.d.ts.map +1 -1
  78. package/lib-es/logic/index.js +2 -1
  79. package/lib-es/logic/index.js.map +1 -1
  80. package/lib-es/logic/utils.d.ts +0 -1
  81. package/lib-es/logic/utils.d.ts.map +1 -1
  82. package/lib-es/logic/utils.js +13 -8
  83. package/lib-es/logic/utils.js.map +1 -1
  84. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
  85. package/lib-es/test/bridgeDatasetTest.js +7 -7
  86. package/lib-es/test/bridgeDatasetTest.js.map +1 -1
  87. package/lib-es/{bridge/transaction.d.ts → transaction.d.ts} +1 -1
  88. package/lib-es/transaction.d.ts.map +1 -0
  89. package/lib-es/transaction.js.map +1 -0
  90. package/lib-es/types/model.d.ts +7 -0
  91. package/lib-es/types/model.d.ts.map +1 -1
  92. package/package.json +7 -8
  93. package/src/api/index.integ.test.ts +24 -8
  94. package/src/api/index.test.ts +23 -22
  95. package/src/api/index.ts +28 -19
  96. package/src/index.ts +0 -1
  97. package/src/logic/combine.ts +10 -3
  98. package/src/logic/getBalance.test.ts +14 -1
  99. package/src/logic/getBalance.ts +18 -2
  100. package/src/logic/getTransactionStatus.test.ts +215 -0
  101. package/src/{bridge → logic}/getTransactionStatus.ts +18 -21
  102. package/src/logic/index.ts +2 -6
  103. package/src/logic/utils.ts +24 -8
  104. package/src/test/bridgeDatasetTest.ts +8 -7
  105. package/src/{bridge/transaction.ts → transaction.ts} +1 -1
  106. package/src/types/model.ts +11 -0
  107. package/lib/bridge/broadcast.d.ts +0 -4
  108. package/lib/bridge/broadcast.d.ts.map +0 -1
  109. package/lib/bridge/broadcast.js +0 -11
  110. package/lib/bridge/broadcast.js.map +0 -1
  111. package/lib/bridge/createTransaction.d.ts +0 -4
  112. package/lib/bridge/createTransaction.d.ts.map +0 -1
  113. package/lib/bridge/createTransaction.js +0 -18
  114. package/lib/bridge/createTransaction.js.map +0 -1
  115. package/lib/bridge/estimateMaxSpendable.d.ts +0 -4
  116. package/lib/bridge/estimateMaxSpendable.d.ts.map +0 -1
  117. package/lib/bridge/estimateMaxSpendable.js +0 -26
  118. package/lib/bridge/estimateMaxSpendable.js.map +0 -1
  119. package/lib/bridge/getTransactionStatus.d.ts +0 -4
  120. package/lib/bridge/getTransactionStatus.d.ts.map +0 -1
  121. package/lib/bridge/getTransactionStatus.js.map +0 -1
  122. package/lib/bridge/index.d.ts +0 -11
  123. package/lib/bridge/index.d.ts.map +0 -1
  124. package/lib/bridge/index.js +0 -47
  125. package/lib/bridge/index.js.map +0 -1
  126. package/lib/bridge/prepareTransaction.d.ts +0 -4
  127. package/lib/bridge/prepareTransaction.d.ts.map +0 -1
  128. package/lib/bridge/prepareTransaction.js +0 -14
  129. package/lib/bridge/prepareTransaction.js.map +0 -1
  130. package/lib/bridge/signOperation.d.ts +0 -5
  131. package/lib/bridge/signOperation.d.ts.map +0 -1
  132. package/lib/bridge/signOperation.js +0 -76
  133. package/lib/bridge/signOperation.js.map +0 -1
  134. package/lib/bridge/synchronization.d.ts +0 -3
  135. package/lib/bridge/synchronization.d.ts.map +0 -1
  136. package/lib/bridge/synchronization.js +0 -85
  137. package/lib/bridge/synchronization.js.map +0 -1
  138. package/lib/bridge/synchronization.test.d.ts +0 -2
  139. package/lib/bridge/synchronization.test.d.ts.map +0 -1
  140. package/lib/bridge/synchronization.test.js +0 -140
  141. package/lib/bridge/synchronization.test.js.map +0 -1
  142. package/lib/bridge/transaction.d.ts.map +0 -1
  143. package/lib/bridge/transaction.js.map +0 -1
  144. package/lib-es/bridge/broadcast.d.ts +0 -4
  145. package/lib-es/bridge/broadcast.d.ts.map +0 -1
  146. package/lib-es/bridge/broadcast.js +0 -7
  147. package/lib-es/bridge/broadcast.js.map +0 -1
  148. package/lib-es/bridge/createTransaction.d.ts +0 -4
  149. package/lib-es/bridge/createTransaction.d.ts.map +0 -1
  150. package/lib-es/bridge/createTransaction.js +0 -11
  151. package/lib-es/bridge/createTransaction.js.map +0 -1
  152. package/lib-es/bridge/estimateMaxSpendable.d.ts +0 -4
  153. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +0 -1
  154. package/lib-es/bridge/estimateMaxSpendable.js +0 -19
  155. package/lib-es/bridge/estimateMaxSpendable.js.map +0 -1
  156. package/lib-es/bridge/getTransactionStatus.d.ts +0 -4
  157. package/lib-es/bridge/getTransactionStatus.d.ts.map +0 -1
  158. package/lib-es/bridge/getTransactionStatus.js.map +0 -1
  159. package/lib-es/bridge/index.d.ts +0 -11
  160. package/lib-es/bridge/index.d.ts.map +0 -1
  161. package/lib-es/bridge/index.js +0 -41
  162. package/lib-es/bridge/index.js.map +0 -1
  163. package/lib-es/bridge/prepareTransaction.d.ts +0 -4
  164. package/lib-es/bridge/prepareTransaction.d.ts.map +0 -1
  165. package/lib-es/bridge/prepareTransaction.js +0 -10
  166. package/lib-es/bridge/prepareTransaction.js.map +0 -1
  167. package/lib-es/bridge/signOperation.d.ts +0 -5
  168. package/lib-es/bridge/signOperation.d.ts.map +0 -1
  169. package/lib-es/bridge/signOperation.js +0 -72
  170. package/lib-es/bridge/signOperation.js.map +0 -1
  171. package/lib-es/bridge/synchronization.d.ts +0 -3
  172. package/lib-es/bridge/synchronization.d.ts.map +0 -1
  173. package/lib-es/bridge/synchronization.js +0 -78
  174. package/lib-es/bridge/synchronization.js.map +0 -1
  175. package/lib-es/bridge/synchronization.test.d.ts +0 -2
  176. package/lib-es/bridge/synchronization.test.d.ts.map +0 -1
  177. package/lib-es/bridge/synchronization.test.js +0 -135
  178. package/lib-es/bridge/synchronization.test.js.map +0 -1
  179. package/lib-es/bridge/transaction.d.ts.map +0 -1
  180. package/lib-es/bridge/transaction.js.map +0 -1
  181. package/src/bridge/broadcast.ts +0 -11
  182. package/src/bridge/createTransaction.ts +0 -13
  183. package/src/bridge/estimateMaxSpendable.ts +0 -25
  184. package/src/bridge/index.ts +0 -59
  185. package/src/bridge/prepareTransaction.ts +0 -18
  186. package/src/bridge/signOperation.ts +0 -100
  187. package/src/bridge/synchronization.test.ts +0 -153
  188. package/src/bridge/synchronization.ts +0 -108
  189. /package/lib/{bridge/transaction.js → transaction.js} +0 -0
  190. /package/lib-es/{bridge/transaction.js → transaction.js} +0 -0
@@ -0,0 +1,215 @@
1
+ import { getTransactionStatus } from "./getTransactionStatus";
2
+ import * as logic from "./index";
3
+
4
+ const mockGetServerInfos = jest.fn();
5
+ const mockCachedRecipientIsNew = jest.fn();
6
+
7
+ jest.mock("../network", () => ({
8
+ getServerInfos: () => mockGetServerInfos(),
9
+ }));
10
+
11
+ jest.spyOn(logic, "cachedRecipientIsNew").mockImplementation(addr => {
12
+ if (addr === RECIPIENT_NEW) {
13
+ return Promise.resolve(true);
14
+ }
15
+ return Promise.resolve(false);
16
+ });
17
+
18
+ const reserveBase = 10_000_000n; // 10 XRP (drops)
19
+
20
+ const SENDER = "rPSCfmnX3t9jQJG5RNcZtSaP5UhExZDue4";
21
+ const RECIPIENT = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe";
22
+ const RECIPIENT_NEW = "rDKsbvy9uaNpPtvVFraJyNGfjvTw8xivgK";
23
+
24
+ const account = {
25
+ address: SENDER,
26
+ balance: 50_000_000n,
27
+ currencyUnit: {
28
+ code: "XRP",
29
+ magnitude: 6,
30
+ name: "XRP",
31
+ symbol: "XRP",
32
+ },
33
+ currencyName: "XRP",
34
+ };
35
+
36
+ describe("getTransactionStatus", () => {
37
+ afterEach(() => {
38
+ mockGetServerInfos.mockReset();
39
+ mockCachedRecipientIsNew.mockReset();
40
+ });
41
+
42
+ it("returns no errors on valid transaction", async () => {
43
+ mockGetServerInfos.mockResolvedValue({
44
+ info: {
45
+ validated_ledger: {
46
+ reserve_base_xrp: reserveBase / 1_000_000n, // XRP value, not drops
47
+ },
48
+ },
49
+ });
50
+
51
+ mockCachedRecipientIsNew.mockResolvedValue(false);
52
+
53
+ const result = await getTransactionStatus(
54
+ account as any,
55
+ {
56
+ amount: 20_000_000n,
57
+ fee: 10_000n,
58
+ recipient: RECIPIENT,
59
+ } as any,
60
+ );
61
+
62
+ expect(result.errors).toEqual({});
63
+ expect(result.warnings).toEqual({});
64
+ expect(result.totalSpent).toBe(20_010_000n);
65
+ });
66
+
67
+ it("throws FeeTooHigh warning when fee is >10% of amount", async () => {
68
+ mockGetServerInfos.mockResolvedValue({
69
+ info: {
70
+ validated_ledger: {
71
+ reserve_base_xrp: reserveBase / 1_000_000n,
72
+ },
73
+ },
74
+ });
75
+
76
+ const result = await getTransactionStatus(
77
+ account as any,
78
+ {
79
+ amount: 1_000_000n,
80
+ fee: 200_000n, // 20%
81
+ recipient: RECIPIENT,
82
+ } as any,
83
+ );
84
+
85
+ expect(result.warnings.feeTooHigh).toBeInstanceOf(Error);
86
+ expect(result.errors).toEqual({});
87
+ });
88
+
89
+ it("errors when fee is missing", async () => {
90
+ mockGetServerInfos.mockResolvedValue({
91
+ info: {
92
+ validated_ledger: {
93
+ reserve_base_xrp: reserveBase / 1_000_000n,
94
+ },
95
+ },
96
+ });
97
+
98
+ const result = await getTransactionStatus(
99
+ account as any,
100
+ {
101
+ amount: 10_000_000n,
102
+ recipient: RECIPIENT,
103
+ } as any,
104
+ );
105
+
106
+ expect(result.errors.fee?.name).toBe("FeeNotLoaded");
107
+ });
108
+
109
+ it("errors if recipient is same as sender", async () => {
110
+ mockGetServerInfos.mockResolvedValue({
111
+ info: {
112
+ validated_ledger: {
113
+ reserve_base_xrp: reserveBase / 1_000_000n,
114
+ },
115
+ },
116
+ });
117
+
118
+ const result = await getTransactionStatus(
119
+ account as any,
120
+ {
121
+ amount: 10_000_000n,
122
+ fee: 10_000n,
123
+ recipient: SENDER,
124
+ } as any,
125
+ );
126
+
127
+ expect(result.errors.recipient?.name).toBe("InvalidAddressBecauseDestinationIsAlsoSource");
128
+ });
129
+
130
+ it("errors if recipient is new and amount is too low", async () => {
131
+ mockGetServerInfos.mockResolvedValue({
132
+ info: {
133
+ validated_ledger: {
134
+ reserve_base_xrp: reserveBase / 1_000_000n,
135
+ },
136
+ },
137
+ });
138
+
139
+ mockCachedRecipientIsNew.mockResolvedValue(true);
140
+
141
+ const result = await getTransactionStatus(
142
+ account as any,
143
+ {
144
+ amount: 5_000_000n,
145
+ fee: 10_000n,
146
+ recipient: RECIPIENT_NEW,
147
+ } as any,
148
+ );
149
+
150
+ expect(result.errors.amount?.name).toBe("NotEnoughBalanceBecauseDestinationNotCreated");
151
+ });
152
+
153
+ it("errors if amount is zero", async () => {
154
+ mockGetServerInfos.mockResolvedValue({
155
+ info: {
156
+ validated_ledger: {
157
+ reserve_base_xrp: reserveBase / 1_000_000n,
158
+ },
159
+ },
160
+ });
161
+
162
+ const result = await getTransactionStatus(
163
+ account as any,
164
+ {
165
+ amount: 0n,
166
+ fee: 10_000n,
167
+ recipient: RECIPIENT,
168
+ } as any,
169
+ );
170
+
171
+ expect(result.errors.amount?.name).toBe("AmountRequired");
172
+ });
173
+
174
+ it("errors if recipient is invalid", async () => {
175
+ mockGetServerInfos.mockResolvedValue({
176
+ info: {
177
+ validated_ledger: {
178
+ reserve_base_xrp: reserveBase / 1_000_000n,
179
+ },
180
+ },
181
+ });
182
+
183
+ const result = await getTransactionStatus(
184
+ account as any,
185
+ {
186
+ amount: 1_000_000n,
187
+ fee: 10_000n,
188
+ recipient: "not-an-address",
189
+ } as any,
190
+ );
191
+
192
+ expect(result.errors.recipient?.name).toBe("InvalidAddress");
193
+ });
194
+
195
+ it("errors if recipient is missing", async () => {
196
+ mockGetServerInfos.mockResolvedValue({
197
+ info: {
198
+ validated_ledger: {
199
+ reserve_base_xrp: reserveBase / 1_000_000n,
200
+ },
201
+ },
202
+ });
203
+
204
+ const result = await getTransactionStatus(
205
+ account as any,
206
+ {
207
+ amount: 1_000_000n,
208
+ fee: 10_000n,
209
+ recipient: "",
210
+ } as any,
211
+ );
212
+
213
+ expect(result.errors.recipient?.name).toBe("RecipientRequired");
214
+ });
215
+ });
@@ -9,40 +9,37 @@ import {
9
9
  NotEnoughSpendableBalance,
10
10
  RecipientRequired,
11
11
  } from "@ledgerhq/errors";
12
- import BigNumber from "bignumber.js";
13
12
  import { isValidClassicAddress } from "ripple-address-codec";
14
- import { Account, AccountBridge } from "@ledgerhq/types-live";
15
13
  import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
16
14
  import { getServerInfos } from "../network";
17
- import { cachedRecipientIsNew, parseAPIValue } from "../logic";
18
- import { Transaction, TransactionStatus } from "../types";
15
+ import { cachedRecipientIsNew, parseAPIValue } from ".";
16
+ import { Transaction, TransactionValidation, Account } from "@ledgerhq/coin-framework/api/types";
19
17
 
20
- export const getTransactionStatus: AccountBridge<
21
- Transaction,
22
- Account,
23
- TransactionStatus
24
- >["getTransactionStatus"] = async (account, transaction) => {
18
+ export const getTransactionStatus = async (
19
+ account: Account,
20
+ transaction: Transaction,
21
+ ): Promise<TransactionValidation> => {
25
22
  const errors: Record<string, Error> = {};
26
23
  const warnings: Record<string, Error> = {};
27
24
  const serverInfos = await getServerInfos();
28
25
  const reserveBaseXRP = parseAPIValue(
29
26
  serverInfos.info.validated_ledger.reserve_base_xrp.toString(),
30
27
  );
31
- const estimatedFees = new BigNumber(transaction.fee || 0);
32
- const totalSpent = new BigNumber(transaction.amount).plus(estimatedFees);
33
- const amount = new BigNumber(transaction.amount);
28
+ const estimatedFees = transaction.fee || 0n;
29
+ const totalSpent = transaction.amount + estimatedFees;
30
+ const amount = transaction.amount;
34
31
 
35
- if (amount.gt(0) && estimatedFees.times(10).gt(amount)) {
32
+ if (amount > 0 && estimatedFees * 10n > amount) {
36
33
  warnings.feeTooHigh = new FeeTooHigh();
37
34
  }
38
35
 
39
36
  if (!transaction.fee) {
40
37
  errors.fee = new FeeNotLoaded();
41
- } else if (transaction.fee.eq(0)) {
38
+ } else if (transaction.fee == 0n) {
42
39
  errors.fee = new FeeRequired();
43
- } else if (totalSpent.gt(account.balance.minus(reserveBaseXRP))) {
40
+ } else if (totalSpent > account.balance - BigInt(reserveBaseXRP.toString())) {
44
41
  errors.amount = new NotEnoughSpendableBalance("", {
45
- minimumAmount: formatCurrencyUnit(account.currency.units[0], reserveBaseXRP, {
42
+ minimumAmount: formatCurrencyUnit(account.currencyUnit, reserveBaseXRP, {
46
43
  disableRounding: true,
47
44
  useGrouping: false,
48
45
  showCode: true,
@@ -51,10 +48,10 @@ export const getTransactionStatus: AccountBridge<
51
48
  } else if (
52
49
  transaction.recipient &&
53
50
  (await cachedRecipientIsNew(transaction.recipient)) &&
54
- transaction.amount.lt(reserveBaseXRP)
51
+ transaction.amount < BigInt(reserveBaseXRP.toString())
55
52
  ) {
56
53
  errors.amount = new NotEnoughBalanceBecauseDestinationNotCreated("", {
57
- minimalAmount: formatCurrencyUnit(account.currency.units[0], reserveBaseXRP, {
54
+ minimalAmount: formatCurrencyUnit(account.currencyUnit, reserveBaseXRP, {
58
55
  disableRounding: true,
59
56
  useGrouping: false,
60
57
  showCode: true,
@@ -64,15 +61,15 @@ export const getTransactionStatus: AccountBridge<
64
61
 
65
62
  if (!transaction.recipient) {
66
63
  errors.recipient = new RecipientRequired("");
67
- } else if (account.freshAddress === transaction.recipient) {
64
+ } else if (account.address === transaction.recipient) {
68
65
  errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
69
66
  } else if (!isValidClassicAddress(transaction.recipient)) {
70
67
  errors.recipient = new InvalidAddress("", {
71
- currencyName: account.currency.name,
68
+ currencyName: account.currencyName,
72
69
  });
73
70
  }
74
71
 
75
- if (!errors.amount && amount.eq(0)) {
72
+ if (!errors.amount && amount == 0n) {
76
73
  errors.amount = new AmountRequired();
77
74
  }
78
75
 
@@ -6,11 +6,7 @@ export { estimateFees } from "./estimateFees";
6
6
  export { getBalance } from "./getBalance";
7
7
  export { lastBlock } from "./lastBlock";
8
8
  export { listOperations } from "./listOperations";
9
- export {
10
- RIPPLE_EPOCH,
11
- cachedRecipientIsNew,
12
- getNextValidSequence,
13
- removeCachedRecipientIsNew,
14
- } from "./utils";
9
+ export { getTransactionStatus } from "./getTransactionStatus";
10
+ export { RIPPLE_EPOCH, cachedRecipientIsNew, getNextValidSequence } from "./utils";
15
11
 
16
12
  export { parseAPIValue } from "./common";
@@ -22,6 +22,15 @@ function isRecipientValid(recipient: string): boolean {
22
22
  return isValidClassicAddress(recipient);
23
23
  }
24
24
 
25
+ // --- 10-Seconds Cache Implementation ---
26
+ type CacheEntry = {
27
+ value: boolean;
28
+ expiresAt: number;
29
+ };
30
+
31
+ const recipientCache = new Map<string, CacheEntry>();
32
+ const TTL = 10 * 1000; // 10 seconds
33
+
25
34
  const recipientIsNew = async (recipient: string): Promise<boolean> => {
26
35
  if (!isRecipientValid(recipient)) return false;
27
36
 
@@ -29,12 +38,19 @@ const recipientIsNew = async (recipient: string): Promise<boolean> => {
29
38
  return info.isNewAccount;
30
39
  };
31
40
 
32
- const cacheRecipientsNew: Record<string, boolean> = {};
33
- export const cachedRecipientIsNew = async (recipient: string) => {
34
- if (recipient in cacheRecipientsNew) return cacheRecipientsNew[recipient];
35
- cacheRecipientsNew[recipient] = await recipientIsNew(recipient);
36
- return cacheRecipientsNew[recipient];
37
- };
38
- export const removeCachedRecipientIsNew = (recipient: string) => {
39
- delete cacheRecipientsNew[recipient];
41
+ export const cachedRecipientIsNew = async (recipient: string): Promise<boolean> => {
42
+ const now = Date.now();
43
+ const cached = recipientCache.get(recipient);
44
+
45
+ if (cached && now < cached.expiresAt) {
46
+ return cached.value;
47
+ }
48
+
49
+ const isNew = await recipientIsNew(recipient);
50
+ recipientCache.set(recipient, {
51
+ value: isNew,
52
+ expiresAt: now + TTL,
53
+ });
54
+
55
+ return isNew;
40
56
  };
@@ -1,7 +1,7 @@
1
1
  import BigNumber from "bignumber.js";
2
2
  import { DatasetTest } from "@ledgerhq/types-live";
3
3
  import { InvalidAddressBecauseDestinationIsAlsoSource } from "@ledgerhq/errors";
4
- import { fromTransactionRaw } from "../bridge/transaction";
4
+ import { fromTransactionRaw } from "../transaction";
5
5
  import { Transaction } from "../types";
6
6
 
7
7
  export const newAddress1 = "rZvBc5e2YR1A9otS3r9DyGh3NDP8XLLp4";
@@ -97,18 +97,19 @@ export const dataset: DatasetTest<Transaction> = {
97
97
  recipient: "rageXHB6Q4VbvvWdTzKANwjeCT4HXFCKX7",
98
98
  amount: "10000000",
99
99
  tag: null,
100
- fee: "1",
100
+ fee: "10", // NOTE: fee is not customizable, this field is ignored
101
101
  feeCustomUnit: null,
102
102
  networkInfo: null,
103
103
  }),
104
104
  expectedStatus: {
105
105
  amount: new BigNumber("10000000"),
106
- estimatedFees: new BigNumber("1"),
106
+ estimatedFees: new BigNumber("10"), // NOTE: hardcoded fee
107
+
107
108
  errors: {
108
109
  recipient: new InvalidAddressBecauseDestinationIsAlsoSource(),
109
110
  },
110
111
  warnings: {},
111
- totalSpent: new BigNumber("10000001"),
112
+ totalSpent: new BigNumber("10000010"), // NOTE: amount + hardcoded fee
112
113
  },
113
114
  },
114
115
  {
@@ -118,16 +119,16 @@ export const dataset: DatasetTest<Transaction> = {
118
119
  recipient: "rB6pwovsyrFWhPYUsjj9V3CHck985QjiXi",
119
120
  amount: "10000000",
120
121
  tag: 12345,
121
- fee: "1",
122
+ fee: "10", // NOTE: fee is not customizable, this field is ignored
122
123
  feeCustomUnit: null,
123
124
  networkInfo: null,
124
125
  }),
125
126
  expectedStatus: {
126
127
  amount: new BigNumber("10000000"),
127
- estimatedFees: new BigNumber("1"),
128
+ estimatedFees: new BigNumber("10"), // NOTE: hardcoded fee
128
129
  errors: {},
129
130
  warnings: {},
130
- totalSpent: new BigNumber("10000001"),
131
+ totalSpent: new BigNumber("10000010"), // NOTE: amount + hardcoded fee
131
132
  },
132
133
  },
133
134
  ],
@@ -1,5 +1,5 @@
1
1
  import { BigNumber } from "bignumber.js";
2
- import type { Transaction, TransactionRaw } from "../types";
2
+ import type { Transaction, TransactionRaw } from "./types";
3
3
  import { formatTransactionStatus } from "@ledgerhq/coin-framework/formatters";
4
4
  import {
5
5
  fromTransactionCommonRaw,
@@ -1,3 +1,5 @@
1
+ import { TypedMapMemo } from "@ledgerhq/coin-framework/api/types";
2
+
1
3
  export type AccountInfo = {
2
4
  isNewAccount: boolean;
3
5
  balance: string;
@@ -11,7 +13,16 @@ export type XrpMemo = {
11
13
  type?: string;
12
14
  };
13
15
 
16
+ export type XrpMemoKind = "destinationTag" | "memo";
17
+
18
+ export type XrpMemoValueMap = {
19
+ destinationTag: string;
20
+ memos: string[];
21
+ };
22
+ export type XrpMapMemo = TypedMapMemo<XrpMemoValueMap>;
23
+
14
24
  type Order = "asc" | "desc";
25
+
15
26
  export type ListOperationsOptions = {
16
27
  // pagination:
17
28
  limit?: number;
@@ -1,4 +0,0 @@
1
- import { AccountBridge } from "@ledgerhq/types-live";
2
- import { Transaction } from "../types";
3
- export declare const broadcast: AccountBridge<Transaction>["broadcast"];
4
- //# sourceMappingURL=broadcast.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/bridge/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAK7D,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.broadcast = void 0;
4
- const operation_1 = require("@ledgerhq/coin-framework/operation");
5
- const logic_1 = require("../logic");
6
- const broadcast = async ({ signedOperation: { signature, operation }, }) => {
7
- const hash = await (0, logic_1.broadcast)(signature);
8
- return (0, operation_1.patchOperationWithHash)(operation, hash);
9
- };
10
- exports.broadcast = broadcast;
11
- //# sourceMappingURL=broadcast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/bridge/broadcast.ts"],"names":[],"mappings":";;;AACA,kEAA4E;AAC5E,oCAAuD;AAGhD,MAAM,SAAS,GAA4C,KAAK,EAAE,EACvE,eAAe,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAC1C,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAc,EAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,IAAA,kCAAsB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,SAAS,aAKpB"}
@@ -1,4 +0,0 @@
1
- import { Transaction } from "../types";
2
- import { AccountBridge } from "@ledgerhq/types-live";
3
- export declare const createTransaction: AccountBridge<Transaction>["createTransaction"];
4
- //# sourceMappingURL=createTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/createTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAQ5E,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createTransaction = void 0;
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const createTransaction = () => ({
9
- family: "xrp",
10
- amount: new bignumber_js_1.default(0),
11
- recipient: "",
12
- fee: null,
13
- tag: undefined,
14
- networkInfo: null,
15
- feeCustomUnit: null,
16
- });
17
- exports.createTransaction = createTransaction;
18
- //# sourceMappingURL=createTransaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTransaction.js","sourceRoot":"","sources":["../../src/bridge/createTransaction.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAI9B,MAAM,iBAAiB,GAAoD,GAAG,EAAE,CAAC,CAAC;IACvF,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,EAAE;IACb,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,SAAS;IACd,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AARU,QAAA,iBAAiB,qBAQ3B"}
@@ -1,4 +0,0 @@
1
- import { AccountBridge } from "@ledgerhq/types-live";
2
- import { Transaction } from "../types";
3
- export declare const estimateMaxSpendable: AccountBridge<Transaction>["estimateMaxSpendable"];
4
- //# sourceMappingURL=estimateMaxSpendable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"estimateMaxSpendable.d.ts","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAenF,CAAC"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.estimateMaxSpendable = void 0;
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const index_1 = require("@ledgerhq/coin-framework/account/index");
9
- const abandonseed_1 = require("@ledgerhq/cryptoassets/abandonseed");
10
- const getTransactionStatus_1 = require("./getTransactionStatus");
11
- const prepareTransaction_1 = require("./prepareTransaction");
12
- const createTransaction_1 = require("./createTransaction");
13
- const estimateMaxSpendable = async ({ account, parentAccount, transaction, }) => {
14
- const mainAccount = (0, index_1.getMainAccount)(account, parentAccount);
15
- const newTransaction = await (0, prepareTransaction_1.prepareTransaction)(mainAccount, {
16
- ...(0, createTransaction_1.createTransaction)(account),
17
- ...transaction,
18
- recipient: transaction?.recipient || (0, abandonseed_1.getAbandonSeedAddress)("ripple"),
19
- // public testing seed abandonx11,about
20
- amount: new bignumber_js_1.default(0),
21
- });
22
- const status = await (0, getTransactionStatus_1.getTransactionStatus)(mainAccount, newTransaction);
23
- return bignumber_js_1.default.max(0, account.spendableBalance.minus(status.estimatedFees));
24
- };
25
- exports.estimateMaxSpendable = estimateMaxSpendable;
26
- //# sourceMappingURL=estimateMaxSpendable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"estimateMaxSpendable.js","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAErC,kEAAwE;AACxE,oEAA2E;AAC3E,iEAA8D;AAC9D,6DAA0D;AAC1D,2DAAwD;AAGjD,MAAM,oBAAoB,GAAuD,KAAK,EAAE,EAC7F,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAkB,EAAC,WAAW,EAAE;QAC3D,GAAG,IAAA,qCAAiB,EAAC,OAAO,CAAC;QAC7B,GAAG,WAAW;QACd,SAAS,EAAE,WAAW,EAAE,SAAS,IAAI,IAAA,mCAAqB,EAAC,QAAQ,CAAC;QACpE,uCAAuC;QACvC,MAAM,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,IAAA,2CAAoB,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACvE,OAAO,sBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B"}
@@ -1,4 +0,0 @@
1
- import { Account, AccountBridge } from "@ledgerhq/types-live";
2
- import { Transaction, TransactionStatus } from "../types";
3
- export declare const getTransactionStatus: AccountBridge<Transaction, Account, TransactionStatus>["getTransactionStatus"];
4
- //# sourceMappingURL=getTransactionStatus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE1D,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAC9C,WAAW,EACX,OAAO,EACP,iBAAiB,CAClB,CAAC,sBAAsB,CA8DvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { CoinConfig } from "@ledgerhq/coin-framework/config";
2
- import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
- import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
4
- import { type XrpCoinConfig } from "../config";
5
- import { XrpSigner } from "../types";
6
- import type { Transaction } from "../types";
7
- export declare function createBridges(signerContext: SignerContext<XrpSigner>, coinConfig: CoinConfig<XrpCoinConfig>): {
8
- currencyBridge: CurrencyBridge;
9
- accountBridge: AccountBridge<Transaction>;
10
- };
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,EACvC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC;;;EAiCtC"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createBridges = createBridges;
7
- const getAddressWrapper_1 = __importDefault(require("@ledgerhq/coin-framework/bridge/getAddressWrapper"));
8
- const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
9
- const config_1 = __importDefault(require("../config"));
10
- const signer_1 = __importDefault(require("../signer"));
11
- const broadcast_1 = require("./broadcast");
12
- const createTransaction_1 = require("./createTransaction");
13
- const estimateMaxSpendable_1 = require("./estimateMaxSpendable");
14
- const getTransactionStatus_1 = require("./getTransactionStatus");
15
- const prepareTransaction_1 = require("./prepareTransaction");
16
- const signOperation_1 = require("./signOperation");
17
- const synchronization_1 = require("./synchronization");
18
- function createBridges(signerContext, coinConfig) {
19
- config_1.default.setCoinConfig(coinConfig);
20
- const getAddress = (0, signer_1.default)(signerContext);
21
- const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({ getAccountShape: synchronization_1.getAccountShape, getAddressFn: getAddress });
22
- const currencyBridge = {
23
- preload: () => Promise.resolve({}),
24
- hydrate: () => { },
25
- scanAccounts,
26
- };
27
- const receive = (0, jsHelpers_1.makeAccountBridgeReceive)((0, getAddressWrapper_1.default)(getAddress));
28
- const signOperation = (0, signOperation_1.buildSignOperation)(signerContext);
29
- const sync = (0, jsHelpers_1.makeSync)({ getAccountShape: synchronization_1.getAccountShape });
30
- const accountBridge = {
31
- createTransaction: createTransaction_1.createTransaction,
32
- updateTransaction: (jsHelpers_1.updateTransaction),
33
- prepareTransaction: prepareTransaction_1.prepareTransaction,
34
- getTransactionStatus: getTransactionStatus_1.getTransactionStatus,
35
- estimateMaxSpendable: estimateMaxSpendable_1.estimateMaxSpendable,
36
- sync,
37
- receive,
38
- signOperation,
39
- broadcast: broadcast_1.broadcast,
40
- getSerializedAddressParameters: jsHelpers_1.getSerializedAddressParameters,
41
- };
42
- return {
43
- currencyBridge,
44
- accountBridge,
45
- };
46
- }
47
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;AAuBA,sCAmCC;AA1DD,0GAAkF;AAClF,yEAMmD;AAInD,uDAA8D;AAC9D,uDAAiC;AAGjC,2CAAwC;AACxC,2DAAwD;AACxD,iEAA8D;AAC9D,iEAA8D;AAC9D,6DAA0D;AAC1D,mDAAqD;AACrD,uDAAoD;AAEpD,SAAgB,aAAa,CAC3B,aAAuC,EACvC,UAAqC;IAErC,gBAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC,EAAE,eAAe,EAAf,iCAAe,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IACrF,MAAM,cAAc,GAAmB;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,YAAY;KACb,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,IAAA,kCAAkB,EAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,EAAE,eAAe,EAAf,iCAAe,EAAE,CAAC,CAAC;IAC3C,MAAM,aAAa,GAA+B;QAChD,iBAAiB,EAAjB,qCAAiB;QACjB,iBAAiB,EAAE,CAAA,6BAA8B,CAAA;QACjD,kBAAkB,EAAlB,uCAAkB;QAClB,oBAAoB,EAApB,2CAAoB;QACpB,oBAAoB,EAApB,2CAAoB;QACpB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,SAAS,EAAT,qBAAS;QACT,8BAA8B,EAA9B,0CAA8B;KAC/B,CAAC;IAEF,OAAO;QACL,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import { AccountBridge } from "@ledgerhq/types-live";
2
- import { Transaction } from "../types";
3
- export declare const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"];
4
- //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAa/E,CAAC"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareTransaction = void 0;
4
- const logic_1 = require("../logic");
5
- const prepareTransaction = async (_account, transaction) => {
6
- const { networkInfo } = await (0, logic_1.estimateFees)(transaction.networkInfo);
7
- const fee = transaction.fee || networkInfo.serverFee;
8
- if (transaction.networkInfo !== networkInfo || transaction.fee !== fee) {
9
- return { ...transaction, networkInfo, fee };
10
- }
11
- return transaction;
12
- };
13
- exports.prepareTransaction = prepareTransaction;
14
- //# sourceMappingURL=prepareTransaction.js.map