@wallfree-dev/stellar 0.13.42

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 (71) hide show
  1. package/LICENSE.md +7 -0
  2. package/index.d.ts +1 -0
  3. package/index.js +18 -0
  4. package/index.js.map +1 -0
  5. package/package.json +65 -0
  6. package/readme.md +121 -0
  7. package/v1/block-explorer/StellarBlockExplorer.d.ts +9 -0
  8. package/v1/block-explorer/StellarBlockExplorer.js +72 -0
  9. package/v1/block-explorer/StellarBlockExplorer.js.map +1 -0
  10. package/v1/data/StellarAddress.d.ts +8 -0
  11. package/v1/data/StellarAddress.js +27 -0
  12. package/v1/data/StellarAddress.js.map +1 -0
  13. package/v1/index.d.ts +14 -0
  14. package/v1/index.js +13 -0
  15. package/v1/index.js.map +1 -0
  16. package/v1/module/StellarAssets.d.ts +3 -0
  17. package/v1/module/StellarAssets.js +47 -0
  18. package/v1/module/StellarAssets.js.map +1 -0
  19. package/v1/module/StellarModule.d.ts +14 -0
  20. package/v1/module/StellarModule.js +124 -0
  21. package/v1/module/StellarModule.js.map +1 -0
  22. package/v1/module.d.ts +3 -0
  23. package/v1/module.js +24 -0
  24. package/v1/module.js.map +1 -0
  25. package/v1/protocol/StellarProtocol.d.ts +65 -0
  26. package/v1/protocol/StellarProtocol.js +956 -0
  27. package/v1/protocol/StellarProtocol.js.map +1 -0
  28. package/v1/protocol/stellarAssets/StellarAsset.d.ts +18 -0
  29. package/v1/protocol/stellarAssets/StellarAsset.js +498 -0
  30. package/v1/protocol/stellarAssets/StellarAsset.js.map +1 -0
  31. package/v1/serializer/v3/schemas/converter/transaction-converter.d.ts +7 -0
  32. package/v1/serializer/v3/schemas/converter/transaction-converter.js +42 -0
  33. package/v1/serializer/v3/schemas/converter/transaction-converter.js.map +1 -0
  34. package/v1/serializer/v3/schemas/definitions/transaction-sign-request-stellar.d.ts +4 -0
  35. package/v1/serializer/v3/schemas/definitions/transaction-sign-request-stellar.js +3 -0
  36. package/v1/serializer/v3/schemas/definitions/transaction-sign-request-stellar.js.map +1 -0
  37. package/v1/serializer/v3/schemas/definitions/transaction-sign-response-stellar.d.ts +3 -0
  38. package/v1/serializer/v3/schemas/definitions/transaction-sign-response-stellar.js +3 -0
  39. package/v1/serializer/v3/schemas/definitions/transaction-sign-response-stellar.js.map +1 -0
  40. package/v1/serializer/v3/schemas/generated/transaction-sign-request-stellar.json +29 -0
  41. package/v1/serializer/v3/schemas/generated/transaction-sign-response-stellar.json +19 -0
  42. package/v1/serializer/v3/serializer-companion.d.ts +14 -0
  43. package/v1/serializer/v3/serializer-companion.js +168 -0
  44. package/v1/serializer/v3/serializer-companion.js.map +1 -0
  45. package/v1/serializer/v3/validators/transaction-validator.d.ts +7 -0
  46. package/v1/serializer/v3/validators/transaction-validator.js +89 -0
  47. package/v1/serializer/v3/validators/transaction-validator.js.map +1 -0
  48. package/v1/serializer/v3/validators/validators.d.ts +6 -0
  49. package/v1/serializer/v3/validators/validators.js +91 -0
  50. package/v1/serializer/v3/validators/validators.js.map +1 -0
  51. package/v1/types/crypto.d.ts +2 -0
  52. package/v1/types/crypto.js +3 -0
  53. package/v1/types/crypto.js.map +1 -0
  54. package/v1/types/protocol.d.ts +42 -0
  55. package/v1/types/protocol.js +22 -0
  56. package/v1/types/protocol.js.map +1 -0
  57. package/v1/types/transaction.d.ts +10 -0
  58. package/v1/types/transaction.js +6 -0
  59. package/v1/types/transaction.js.map +1 -0
  60. package/v1/utils/convert.d.ts +3 -0
  61. package/v1/utils/convert.js +32 -0
  62. package/v1/utils/convert.js.map +1 -0
  63. package/v1/utils/key.d.ts +3 -0
  64. package/v1/utils/key.js +37 -0
  65. package/v1/utils/key.js.map +1 -0
  66. package/v1/utils/signature.d.ts +2 -0
  67. package/v1/utils/signature.js +22 -0
  68. package/v1/utils/signature.js.map +1 -0
  69. package/v1/utils/transaction.d.ts +3 -0
  70. package/v1/utils/transaction.js +22 -0
  71. package/v1/utils/transaction.js.map +1 -0
@@ -0,0 +1,956 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.createStellarProtocolOptions = exports.STELLAR_MAINNET_PROTOCOL_NETWORK = exports.createStellarProtocol = exports.StellarProtocolImpl = void 0;
54
+ var coinlib_core_1 = require("@wallfree-dev/coinlib-core");
55
+ var index_1 = __importDefault(require("@wallfree-dev/coinlib-core/dependencies/src/axios-0.19.0/index"));
56
+ var errors_1 = require("@wallfree-dev/coinlib-core/errors");
57
+ var module_kit_1 = require("@wallfree-dev/module-kit");
58
+ var stellar_sdk_1 = require("@stellar/stellar-sdk");
59
+ var bignumber_1 = __importDefault(require("@wallfree-dev/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
60
+ var protocol_1 = require("../types/protocol");
61
+ var StellarAddress_1 = require("../data/StellarAddress");
62
+ var StellarProtocolImpl = /** @class */ (function () {
63
+ function StellarProtocolImpl(options) {
64
+ if (options === void 0) { options = {}; }
65
+ this.units = {
66
+ XLM: {
67
+ symbol: { value: 'XLM', market: 'xlm' },
68
+ decimals: 7
69
+ }
70
+ };
71
+ this.feeDefaults = {
72
+ low: (0, module_kit_1.newAmount)(stellar_sdk_1.BASE_FEE, 'blockchain'),
73
+ medium: (0, module_kit_1.newAmount)(stellar_sdk_1.BASE_FEE, 'blockchain'),
74
+ high: (0, module_kit_1.newAmount)(stellar_sdk_1.BASE_FEE, 'blockchain')
75
+ };
76
+ this.metadata = {
77
+ identifier: coinlib_core_1.MainProtocolSymbols.STELLAR,
78
+ name: 'Stellar',
79
+ units: this.units,
80
+ mainUnit: 'XLM',
81
+ fee: {
82
+ defaults: this.feeDefaults,
83
+ mainUnit: 'XLM',
84
+ units: {
85
+ XLM: {
86
+ symbol: {
87
+ value: 'XLM',
88
+ market: 'xlm'
89
+ },
90
+ decimals: 7
91
+ }
92
+ }
93
+ },
94
+ account: {
95
+ standardDerivationPath: "m/44h/148h/0h",
96
+ address: {
97
+ isCaseSensitive: false,
98
+ placeholder: 'GABC...',
99
+ regex: '^G[0-9A-Z]{55}$'
100
+ }
101
+ },
102
+ transaction: {
103
+ arbitraryData: {
104
+ inner: { name: 'memo' }
105
+ }
106
+ }
107
+ };
108
+ this.cryptoConfiguration = {
109
+ algorithm: 'ed25519'
110
+ };
111
+ this.options = createStellarProtocolOptions(options.network);
112
+ this.server = new stellar_sdk_1.Horizon.Server(this.options.network.rpcUrl);
113
+ }
114
+ StellarProtocolImpl.prototype.getMultisigStatus = function (publicKey) {
115
+ return __awaiter(this, void 0, void 0, function () {
116
+ var address, account, error_1;
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
120
+ case 1:
121
+ address = _a.sent();
122
+ _a.label = 2;
123
+ case 2:
124
+ _a.trys.push([2, 4, , 5]);
125
+ return [4 /*yield*/, this.server.loadAccount(address)];
126
+ case 3:
127
+ account = _a.sent();
128
+ return [2 /*return*/, account.signers.length > 1];
129
+ case 4:
130
+ error_1 = _a.sent();
131
+ return [2 /*return*/, false];
132
+ case 5: return [2 /*return*/];
133
+ }
134
+ });
135
+ });
136
+ };
137
+ StellarProtocolImpl.prototype.getSigners = function (publicKey) {
138
+ return __awaiter(this, void 0, void 0, function () {
139
+ var address, account, error_2;
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
143
+ case 1:
144
+ address = _a.sent();
145
+ _a.label = 2;
146
+ case 2:
147
+ _a.trys.push([2, 4, , 5]);
148
+ return [4 /*yield*/, this.server.loadAccount(address)];
149
+ case 3:
150
+ account = _a.sent();
151
+ return [2 /*return*/, account.signers];
152
+ case 4:
153
+ error_2 = _a.sent();
154
+ throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error_2);
155
+ case 5: return [2 /*return*/];
156
+ }
157
+ });
158
+ });
159
+ };
160
+ StellarProtocolImpl.prototype.getThresholds = function (publicKey) {
161
+ return __awaiter(this, void 0, void 0, function () {
162
+ var address, account, error_3;
163
+ return __generator(this, function (_a) {
164
+ switch (_a.label) {
165
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
166
+ case 1:
167
+ address = _a.sent();
168
+ _a.label = 2;
169
+ case 2:
170
+ _a.trys.push([2, 4, , 5]);
171
+ return [4 /*yield*/, this.server.loadAccount(address)];
172
+ case 3:
173
+ account = _a.sent();
174
+ return [2 /*return*/, account.thresholds];
175
+ case 4:
176
+ error_3 = _a.sent();
177
+ throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error_3);
178
+ case 5: return [2 /*return*/];
179
+ }
180
+ });
181
+ });
182
+ };
183
+ StellarProtocolImpl.prototype.getThresholdReachedStatus = function (transaction) {
184
+ return __awaiter(this, void 0, void 0, function () {
185
+ var tx, sourceAccountId, account, signers, thresholds, requiredThreshold, totalWeight, _i, _a, sig, _b, signers_1, signer, keypair, hint, threshold, error_4;
186
+ return __generator(this, function (_c) {
187
+ switch (_c.label) {
188
+ case 0:
189
+ _c.trys.push([0, 2, , 3]);
190
+ tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC);
191
+ sourceAccountId = tx.source;
192
+ return [4 /*yield*/, this.server.loadAccount(sourceAccountId)];
193
+ case 1:
194
+ account = _c.sent();
195
+ signers = account.signers;
196
+ thresholds = account.thresholds;
197
+ requiredThreshold = tx.operations.some(function (op) { return ['setOptions', 'accountMerge'].includes(op.type); })
198
+ ? thresholds.high_threshold
199
+ : tx.operations.some(function (op) {
200
+ return [
201
+ 'createAccount',
202
+ 'payment',
203
+ 'pathPaymentStrictReceive',
204
+ 'pathPaymentStrictSend',
205
+ 'manageSellOffer',
206
+ 'manageBuyOffer',
207
+ 'createPassiveSellOffer',
208
+ 'changeTrust',
209
+ 'manageData',
210
+ 'createClaimableBalance',
211
+ 'beginSponsoringFutureReserves',
212
+ 'endSponsoringFutureReserves',
213
+ 'revokeSponsorship',
214
+ 'clawback',
215
+ 'clawbackClaimableBalance',
216
+ 'liquidityPoolDeposit',
217
+ 'liquidityPoolWithdraw',
218
+ 'invokeHostFunction',
219
+ 'extendFootprintTtl',
220
+ 'restoreFootprint'
221
+ ].includes(op.type);
222
+ })
223
+ ? thresholds.med_threshold
224
+ : thresholds.low_threshold;
225
+ totalWeight = 0;
226
+ for (_i = 0, _a = tx.signatures; _i < _a.length; _i++) {
227
+ sig = _a[_i];
228
+ for (_b = 0, signers_1 = signers; _b < signers_1.length; _b++) {
229
+ signer = signers_1[_b];
230
+ keypair = stellar_sdk_1.Keypair.fromPublicKey(signer.key);
231
+ hint = keypair.signatureHint();
232
+ if (hint.equals(sig.hint())) {
233
+ totalWeight += signer.weight;
234
+ }
235
+ }
236
+ }
237
+ threshold = {
238
+ thresholdRequired: requiredThreshold,
239
+ currentThreshold: totalWeight
240
+ };
241
+ return [2 /*return*/, threshold];
242
+ case 2:
243
+ error_4 = _c.sent();
244
+ return [2 /*return*/, {
245
+ thresholdRequired: 0,
246
+ currentThreshold: 0
247
+ }];
248
+ case 3: return [2 /*return*/];
249
+ }
250
+ });
251
+ });
252
+ };
253
+ StellarProtocolImpl.prototype.adjustSigner = function (masterPublicky, signerPublicKey, weight, lowThreshold, medThreshold, highThreshold) {
254
+ return __awaiter(this, void 0, void 0, function () {
255
+ var masterAddress, signerAddress, account, signers, txBuilder, masterWeight;
256
+ return __generator(this, function (_a) {
257
+ switch (_a.label) {
258
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(masterPublicky)];
259
+ case 1:
260
+ masterAddress = _a.sent();
261
+ return [4 /*yield*/, this.getAddressFromPublicKey(signerPublicKey)];
262
+ case 2:
263
+ signerAddress = _a.sent();
264
+ return [4 /*yield*/, this.server.loadAccount(masterAddress)];
265
+ case 3:
266
+ account = _a.sent();
267
+ signers = account.signers;
268
+ txBuilder = new stellar_sdk_1.TransactionBuilder(account, {
269
+ fee: stellar_sdk_1.BASE_FEE,
270
+ networkPassphrase: stellar_sdk_1.Networks.PUBLIC
271
+ });
272
+ if (signers.length === 1) {
273
+ masterWeight = weight;
274
+ txBuilder
275
+ .addOperation(stellar_sdk_1.Operation.setOptions({
276
+ masterWeight: masterWeight,
277
+ lowThreshold: lowThreshold,
278
+ medThreshold: medThreshold,
279
+ highThreshold: highThreshold,
280
+ signer: {
281
+ ed25519PublicKey: signerAddress,
282
+ weight: weight
283
+ }
284
+ }))
285
+ .setTimeout(600);
286
+ }
287
+ else {
288
+ txBuilder
289
+ .addOperation(stellar_sdk_1.Operation.setOptions({
290
+ lowThreshold: lowThreshold,
291
+ medThreshold: medThreshold,
292
+ highThreshold: highThreshold,
293
+ signer: {
294
+ ed25519PublicKey: signerAddress,
295
+ weight: weight
296
+ }
297
+ }))
298
+ .setTimeout(600);
299
+ }
300
+ return [2 /*return*/, (0, module_kit_1.newUnsignedTransaction)({
301
+ transaction: txBuilder.build().toXDR()
302
+ })];
303
+ }
304
+ });
305
+ });
306
+ };
307
+ StellarProtocolImpl.prototype.getTransactionsForPublicKey = function (publicKey, limit, cursor) {
308
+ return __awaiter(this, void 0, void 0, function () {
309
+ var address;
310
+ return __generator(this, function (_a) {
311
+ switch (_a.label) {
312
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
313
+ case 1:
314
+ address = _a.sent();
315
+ return [2 /*return*/, this.getTransactionsForAddress(address, limit, cursor)];
316
+ }
317
+ });
318
+ });
319
+ };
320
+ StellarProtocolImpl.prototype.getTransactionsForAddress = function (address, limit, cursor) {
321
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
322
+ return __awaiter(this, void 0, void 0, function () {
323
+ var endpoint, url, response, data, paymentTransactions, transactions, error_5;
324
+ var _this = this;
325
+ return __generator(this, function (_l) {
326
+ switch (_l.label) {
327
+ case 0:
328
+ _l.trys.push([0, 2, , 3]);
329
+ endpoint = (_a = cursor === null || cursor === void 0 ? void 0 : cursor.next) !== null && _a !== void 0 ? _a : "/accounts/".concat(address, "/payments?limit=").concat(limit, "&order=desc&join=transactions");
330
+ url = "".concat(this.options.network.rpcUrl).concat(endpoint);
331
+ return [4 /*yield*/, index_1.default.get(url)];
332
+ case 1:
333
+ response = _l.sent();
334
+ data = response.data;
335
+ paymentTransactions = (_c = (_b = data._embedded) === null || _b === void 0 ? void 0 : _b.records) !== null && _c !== void 0 ? _c : [];
336
+ transactions = paymentTransactions
337
+ .filter(function (tx) {
338
+ return (tx.type === protocol_1.StellarTransactionType.PAYMENT && tx.asset_type === protocol_1.StellarAssetType.NATIVE) || tx.type === 'create_account';
339
+ })
340
+ .map(function (tx) {
341
+ var txData = tx.transaction;
342
+ var isPayment = tx.type === protocol_1.StellarTransactionType.PAYMENT;
343
+ var txAmount = isPayment ? tx.amount : tx.starting_balance;
344
+ var amount = new bignumber_1.default(txAmount).multipliedBy(1e7).toString();
345
+ var from = isPayment ? tx.from : tx.funder;
346
+ var to = isPayment ? tx.to : tx.account;
347
+ var isInbound = to.toLowerCase() === address.toLowerCase();
348
+ return {
349
+ from: [from],
350
+ to: [to],
351
+ isInbound: isInbound,
352
+ amount: (0, module_kit_1.newAmount)(amount, 'blockchain'),
353
+ fee: (0, module_kit_1.newAmount)(txData.fee_charged, 'blockchain'),
354
+ network: _this.options.network,
355
+ timestamp: Math.floor(new Date(tx.created_at).getTime() / 1000),
356
+ status: {
357
+ type: tx.transaction_successful ? 'applied' : 'failed',
358
+ hash: tx.transaction_hash,
359
+ block: txData.ledger.toString()
360
+ },
361
+ arbitraryData: txData.memo
362
+ };
363
+ });
364
+ return [2 /*return*/, {
365
+ transactions: transactions,
366
+ cursor: {
367
+ hasNext: ((_e = (_d = data._links) === null || _d === void 0 ? void 0 : _d.next) === null || _e === void 0 ? void 0 : _e.href) !== undefined,
368
+ next: (_j = (_h = (_g = (_f = data._links) === null || _f === void 0 ? void 0 : _f.next) === null || _g === void 0 ? void 0 : _g.href) === null || _h === void 0 ? void 0 : _h.replace(this.options.network.rpcUrl, '')) !== null && _j !== void 0 ? _j : undefined
369
+ }
370
+ }];
371
+ case 2:
372
+ error_5 = _l.sent();
373
+ if (((_k = error_5.response) === null || _k === void 0 ? void 0 : _k.status) === 404) {
374
+ return [2 /*return*/, {
375
+ transactions: [],
376
+ cursor: {
377
+ hasNext: false,
378
+ next: ''
379
+ }
380
+ }];
381
+ }
382
+ throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error_5);
383
+ case 3: return [2 /*return*/];
384
+ }
385
+ });
386
+ });
387
+ };
388
+ StellarProtocolImpl.prototype.getTransactionMaxAmountWithPublicKey = function (publicKey, to, configuration) {
389
+ return __awaiter(this, void 0, void 0, function () {
390
+ var balance, balanceBn, fee, amountWithoutFees, error_6;
391
+ return __generator(this, function (_a) {
392
+ switch (_a.label) {
393
+ case 0:
394
+ _a.trys.push([0, 2, , 3]);
395
+ return [4 /*yield*/, this.getBalanceOfPublicKey(publicKey)];
396
+ case 1:
397
+ balance = _a.sent();
398
+ balanceBn = new bignumber_1.default(balance.total.value || '0');
399
+ fee = void 0;
400
+ if ((configuration === null || configuration === void 0 ? void 0 : configuration.fee) !== undefined) {
401
+ fee = new bignumber_1.default((0, module_kit_1.newAmount)(configuration.fee).blockchain(this.units).value);
402
+ }
403
+ else {
404
+ fee = new bignumber_1.default(stellar_sdk_1.BASE_FEE).multipliedBy(to.length).dividedBy(1e7);
405
+ }
406
+ if (fee.gte(balanceBn)) {
407
+ return [2 /*return*/, (0, module_kit_1.newAmount)(0, 'blockchain')];
408
+ }
409
+ amountWithoutFees = balanceBn.minus(fee);
410
+ return [2 /*return*/, (0, module_kit_1.newAmount)(amountWithoutFees, 'blockchain')];
411
+ case 2:
412
+ error_6 = _a.sent();
413
+ throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error_6);
414
+ case 3: return [2 /*return*/];
415
+ }
416
+ });
417
+ });
418
+ };
419
+ StellarProtocolImpl.prototype.getTransactionFeeWithPublicKey = function (publicKey, details, configuration) {
420
+ return __awaiter(this, void 0, void 0, function () {
421
+ return __generator(this, function (_a) {
422
+ return [2 /*return*/, this.feeDefaults];
423
+ });
424
+ });
425
+ };
426
+ StellarProtocolImpl.prototype.getMetadata = function () {
427
+ return __awaiter(this, void 0, void 0, function () {
428
+ return __generator(this, function (_a) {
429
+ return [2 /*return*/, this.metadata];
430
+ });
431
+ });
432
+ };
433
+ StellarProtocolImpl.prototype.getAddressFromPublicKey = function (publicKey) {
434
+ return __awaiter(this, void 0, void 0, function () {
435
+ return __generator(this, function (_a) {
436
+ return [2 /*return*/, StellarAddress_1.StellarAddress.from(publicKey).asString()];
437
+ });
438
+ });
439
+ };
440
+ StellarProtocolImpl.prototype.getDetailsFromTransaction = function (transaction, _publicKey) {
441
+ return __awaiter(this, void 0, void 0, function () {
442
+ return __generator(this, function (_a) {
443
+ switch (transaction.type) {
444
+ case 'signed':
445
+ case 'unsigned':
446
+ return [2 /*return*/, this.getDetailsFromEncodedTransaction(transaction.transaction, _publicKey)];
447
+ default:
448
+ (0, coinlib_core_1.assertNever)(transaction);
449
+ throw new errors_1.UnsupportedError(coinlib_core_1.Domain.STELLAR, 'Unsupported transaction type.');
450
+ }
451
+ return [2 /*return*/];
452
+ });
453
+ });
454
+ };
455
+ StellarProtocolImpl.prototype.getDetailsFromEncodedGenericTransaction = function (transaction) {
456
+ return __awaiter(this, void 0, void 0, function () {
457
+ return __generator(this, function (_a) {
458
+ return [2 /*return*/, stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC)];
459
+ });
460
+ });
461
+ };
462
+ StellarProtocolImpl.prototype.getDetailsFromEncodedTransaction = function (transaction, publicKey) {
463
+ var _a, _b, _c, _d;
464
+ return __awaiter(this, void 0, void 0, function () {
465
+ var transactions, tx, _i, _e, txDetails, amount, op, to, fee, isInbound, type, uiAlerts, displayFromTo, asetType, asetType, cont, contractAddress, sendAssetIsNative, sendAssetIsNative, signer, descriptionParts, memo;
466
+ return __generator(this, function (_f) {
467
+ transactions = [];
468
+ tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC);
469
+ for (_i = 0, _e = tx.operations; _i < _e.length; _i++) {
470
+ txDetails = _e[_i];
471
+ amount = void 0;
472
+ op = void 0;
473
+ to = void 0;
474
+ fee = void 0;
475
+ isInbound = void 0;
476
+ type = void 0;
477
+ uiAlerts = [];
478
+ displayFromTo = true;
479
+ if (txDetails.type === protocol_1.StellarTransactionType.PAYMENT) {
480
+ op = txDetails;
481
+ if (op.asset.code === protocol_1.StellarAssetType.XLM) {
482
+ amount = new bignumber_1.default(op.amount).multipliedBy(1e7).toString();
483
+ }
484
+ else {
485
+ uiAlerts.push({
486
+ type: 'warning',
487
+ title: { value: protocol_1.StellarTransactionType.PAYMENT, type: 'plain' },
488
+ description: {
489
+ value: "".concat(op.amount, " ").concat(op.asset.code, " will be deducted from the source wallet"),
490
+ type: 'plain'
491
+ }
492
+ });
493
+ amount = new bignumber_1.default(0).multipliedBy(1e7).toString();
494
+ }
495
+ fee = tx.fee;
496
+ to = [op.destination];
497
+ type = protocol_1.StellarTransactionType.PAYMENT;
498
+ isInbound = to[0].toLowerCase() === publicKey.value.toLowerCase();
499
+ }
500
+ else if (txDetails.type === protocol_1.StellarTransactionType.CREATE_ACCOUNT) {
501
+ op = txDetails;
502
+ amount = new bignumber_1.default(op.startingBalance).multipliedBy(1e7).toString();
503
+ to = [op.destination];
504
+ fee = tx.fee;
505
+ isInbound = to[0].toLowerCase() === publicKey.value.toLowerCase();
506
+ type = protocol_1.StellarTransactionType.CREATE_ACCOUNT;
507
+ }
508
+ else if (txDetails.type === protocol_1.StellarTransactionType.CHANGE_TRUST) {
509
+ op = txDetails;
510
+ amount = new bignumber_1.default(0).toString();
511
+ if (op.line instanceof stellar_sdk_1.Asset) {
512
+ asetType = op.line;
513
+ to = [asetType.getIssuer()];
514
+ }
515
+ else if (op.line instanceof stellar_sdk_1.LiquidityPoolAsset) {
516
+ asetType = op.line;
517
+ to = [(_a = asetType.assetA.getIssuer()) !== null && _a !== void 0 ? _a : protocol_1.StellarAssetType.NATIVE, (_b = asetType.assetB.getIssuer()) !== null && _b !== void 0 ? _b : protocol_1.StellarAssetType.NATIVE];
518
+ }
519
+ else {
520
+ to = [tx.source];
521
+ }
522
+ fee = new bignumber_1.default(tx.fee).dividedBy(tx.operations.length).toString();
523
+ isInbound = false;
524
+ type = protocol_1.StellarTransactionType.CHANGE_TRUST;
525
+ }
526
+ else if (txDetails.type === protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION) {
527
+ isInbound = false;
528
+ op = txDetails;
529
+ fee = tx.fee;
530
+ cont = op.func.value();
531
+ amount = new bignumber_1.default(0).toString();
532
+ try {
533
+ Buffer.from(cont.contractAddress().value(), 'hex');
534
+ contractAddress = stellar_sdk_1.StrKey.encodeContract(Buffer.from(cont.contractAddress().value(), 'hex'));
535
+ to = [contractAddress];
536
+ }
537
+ catch (error) {
538
+ to = [tx.source];
539
+ }
540
+ type = protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION;
541
+ displayFromTo = false;
542
+ uiAlerts.push({
543
+ type: 'warning',
544
+ title: { value: protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION, type: 'plain' },
545
+ description: {
546
+ value: "Transaction ".concat(txDetails.type, " type was not decoded. Please understand what you are signing before proceeding."),
547
+ type: 'plain'
548
+ }
549
+ });
550
+ }
551
+ else if (txDetails.type === protocol_1.StellarTransactionType.PATH_PAYMENT_RECIEVE) {
552
+ op = txDetails;
553
+ fee = tx.fee;
554
+ sendAssetIsNative = op.sendAsset.isNative();
555
+ amount = new bignumber_1.default(sendAssetIsNative ? op.sendMax : 0).multipliedBy(1e7).toString();
556
+ to = [txDetails.destination];
557
+ isInbound = false;
558
+ type = protocol_1.StellarTransactionType.PATH_PAYMENT_RECIEVE;
559
+ if (!sendAssetIsNative) {
560
+ uiAlerts.push({
561
+ type: 'warning',
562
+ title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
563
+ description: {
564
+ value: "Maximum of ".concat(op.sendMax, " ").concat(op.sendAsset, " will be deducted from the source wallet"),
565
+ type: 'plain'
566
+ }
567
+ });
568
+ }
569
+ else {
570
+ uiAlerts.push({
571
+ type: 'info',
572
+ title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
573
+ description: {
574
+ value: "".concat(op.destAmount, " ").concat(op.destAsset, " will added to your wallet"),
575
+ type: 'plain'
576
+ }
577
+ });
578
+ }
579
+ }
580
+ else if (txDetails.type === protocol_1.StellarTransactionType.PATH_PAYMENT_SEND) {
581
+ op = txDetails;
582
+ fee = tx.fee;
583
+ sendAssetIsNative = op.sendAsset.isNative();
584
+ amount = new bignumber_1.default(sendAssetIsNative ? op.sendAmount : 0).multipliedBy(1e7).toString();
585
+ to = [txDetails.destination];
586
+ isInbound = false;
587
+ type = protocol_1.StellarTransactionType.PATH_PAYMENT_SEND;
588
+ if (!sendAssetIsNative) {
589
+ uiAlerts.push({
590
+ type: 'warning',
591
+ title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
592
+ description: {
593
+ value: "".concat(op.sendAmount, " ").concat(op.sendAsset, " will be deducted from the source wallet"),
594
+ type: 'plain'
595
+ }
596
+ });
597
+ }
598
+ else {
599
+ uiAlerts.push({
600
+ type: 'info',
601
+ title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
602
+ description: {
603
+ value: "Minimum of ".concat(op.destMin, " ").concat(op.destAsset, " will added to your wallet"),
604
+ type: 'plain'
605
+ }
606
+ });
607
+ }
608
+ }
609
+ else if (txDetails.type === protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT) {
610
+ amount = new bignumber_1.default(0).toString();
611
+ op = txDetails;
612
+ fee = tx.fee;
613
+ to = [op.liquidityPoolId];
614
+ uiAlerts.push({
615
+ type: 'warning',
616
+ title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT, type: 'plain' },
617
+ description: {
618
+ value: "Transaction is not fully decoded",
619
+ type: 'plain'
620
+ }
621
+ });
622
+ uiAlerts.push({
623
+ type: 'warning',
624
+ title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT, type: 'plain' },
625
+ description: {
626
+ value: "".concat(op.maxAmountA, " & ").concat(op.maxAmountB, " of two different assets will be deducted from the source wallet"),
627
+ type: 'plain'
628
+ }
629
+ });
630
+ type = protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT;
631
+ }
632
+ else if (txDetails.type === protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW) {
633
+ amount = new bignumber_1.default(0).toString();
634
+ op = txDetails;
635
+ fee = tx.fee;
636
+ to = [op.liquidityPoolId];
637
+ uiAlerts.push({
638
+ type: 'info',
639
+ title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW, type: 'plain' },
640
+ description: {
641
+ value: "".concat(op.minAmountA, " & ").concat(op.minAmountB, " of two different assets will be added to your wallet"),
642
+ type: 'plain'
643
+ }
644
+ });
645
+ type = protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW;
646
+ }
647
+ else if (txDetails.type === protocol_1.StellarTransactionType.SET_OPTIONS) {
648
+ op = txDetails;
649
+ fee = tx.fee;
650
+ signer = op.signer;
651
+ if ('ed25519PublicKey' in signer && signer.ed25519PublicKey) {
652
+ to = [signer.ed25519PublicKey];
653
+ }
654
+ else if ('ed25519SignedPayload' in signer && signer.ed25519SignedPayload) {
655
+ to = [signer.ed25519SignedPayload];
656
+ }
657
+ else if ('preAuthTx' in signer && signer.preAuthTx) {
658
+ to = [signer.preAuthTx.toString('hex')];
659
+ }
660
+ else if ('sha256Hash' in signer && signer.sha256Hash) {
661
+ to = [signer.sha256Hash.toString('hex')];
662
+ }
663
+ else {
664
+ to = [tx.source];
665
+ }
666
+ descriptionParts = [
667
+ to[0] && "Signer: ".concat(to[0]),
668
+ op.masterWeight !== undefined && "MasterWeight: ".concat(op.masterWeight),
669
+ op.lowThreshold !== undefined && "LowThreshold: ".concat(op.lowThreshold),
670
+ op.medThreshold !== undefined && "MedThreshold: ".concat(op.medThreshold),
671
+ op.highThreshold !== undefined && "HighThreshold: ".concat(op.highThreshold)
672
+ ]
673
+ .filter(Boolean)
674
+ .join('\n');
675
+ uiAlerts.push({
676
+ type: 'info',
677
+ title: { value: protocol_1.StellarTransactionType.SET_OPTIONS, type: 'plain' },
678
+ description: {
679
+ value: "You are setting the following parameters:\n".concat(descriptionParts),
680
+ type: 'plain'
681
+ }
682
+ });
683
+ amount = new bignumber_1.default(0).toString();
684
+ type = protocol_1.StellarTransactionType.SET_OPTIONS;
685
+ }
686
+ else {
687
+ to = [tx.source];
688
+ fee = tx.fee;
689
+ amount = new bignumber_1.default(0).toString();
690
+ isInbound = false;
691
+ type = txDetails.type;
692
+ uiAlerts.push({
693
+ type: 'warning',
694
+ title: { value: txDetails.type, type: 'plain' },
695
+ description: {
696
+ value: "Transaction ".concat(txDetails.type, " type was not decoded. Please understand what you are signing before proceeding."),
697
+ type: 'plain'
698
+ }
699
+ });
700
+ displayFromTo = false;
701
+ }
702
+ memo = tx.memo.type === 'text' || tx.memo.type === 'id'
703
+ ? (_c = tx.memo.value) === null || _c === void 0 ? void 0 : _c.toString()
704
+ : tx.memo.type === 'hash' || tx.memo.type === 'return'
705
+ ? (_d = tx.memo.value) === null || _d === void 0 ? void 0 : _d.toString('hex')
706
+ : undefined;
707
+ transactions.push({
708
+ from: [tx.source],
709
+ to: to,
710
+ isInbound: isInbound,
711
+ amount: (0, module_kit_1.newAmount)(amount, 'blockchain'),
712
+ fee: (0, module_kit_1.newAmount)(fee, 'blockchain'),
713
+ network: this.options.network,
714
+ arbitraryData: memo,
715
+ type: type,
716
+ uiAlerts: uiAlerts,
717
+ json: JSON.stringify(tx),
718
+ displayFromTo: displayFromTo
719
+ });
720
+ }
721
+ return [2 /*return*/, transactions];
722
+ });
723
+ });
724
+ };
725
+ StellarProtocolImpl.prototype.getCryptoConfiguration = function () {
726
+ return __awaiter(this, void 0, void 0, function () {
727
+ return __generator(this, function (_a) {
728
+ return [2 /*return*/, this.cryptoConfiguration];
729
+ });
730
+ });
731
+ };
732
+ StellarProtocolImpl.prototype.getKeyPairFromDerivative = function (derivative) {
733
+ return __awaiter(this, void 0, void 0, function () {
734
+ return __generator(this, function (_a) {
735
+ return [2 /*return*/, {
736
+ secretKey: (0, module_kit_1.newSecretKey)(derivative.secretKey, 'hex'),
737
+ publicKey: (0, module_kit_1.newPublicKey)(derivative.publicKey, 'hex')
738
+ }];
739
+ });
740
+ });
741
+ };
742
+ StellarProtocolImpl.prototype.signTransactionWithSecretKey = function (transaction, secretKey) {
743
+ return __awaiter(this, void 0, void 0, function () {
744
+ var tx;
745
+ return __generator(this, function (_a) {
746
+ tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction.transaction, stellar_sdk_1.Networks.PUBLIC);
747
+ tx.sign(stellar_sdk_1.Keypair.fromSecret(stellar_sdk_1.StrKey.encodeEd25519SecretSeed(Buffer.from(secretKey.value, 'hex'))));
748
+ return [2 /*return*/, (0, module_kit_1.newSignedTransaction)({
749
+ transaction: tx.toXDR()
750
+ })];
751
+ });
752
+ });
753
+ };
754
+ StellarProtocolImpl.prototype.getNetwork = function () {
755
+ return __awaiter(this, void 0, void 0, function () {
756
+ return __generator(this, function (_a) {
757
+ return [2 /*return*/, this.options.network];
758
+ });
759
+ });
760
+ };
761
+ StellarProtocolImpl.prototype.getBalanceOfPublicKey = function (publicKey) {
762
+ return __awaiter(this, void 0, void 0, function () {
763
+ var address;
764
+ return __generator(this, function (_a) {
765
+ switch (_a.label) {
766
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
767
+ case 1:
768
+ address = _a.sent();
769
+ return [2 /*return*/, this.getBalanceOfAddress(address)];
770
+ }
771
+ });
772
+ });
773
+ };
774
+ StellarProtocolImpl.prototype.getBalanceOfAddress = function (address) {
775
+ return __awaiter(this, void 0, void 0, function () {
776
+ var data, balance, btnBalance, error_7;
777
+ return __generator(this, function (_a) {
778
+ switch (_a.label) {
779
+ case 0:
780
+ _a.trys.push([0, 2, , 3]);
781
+ return [4 /*yield*/, index_1.default.get("".concat(this.options.network.rpcUrl, "/accounts/").concat(address))];
782
+ case 1:
783
+ data = (_a.sent()).data;
784
+ balance = data.balances.find(function (b) { return b.asset_type === protocol_1.StellarAssetType.NATIVE; });
785
+ btnBalance = new bignumber_1.default(balance.balance).multipliedBy(1e7).toString();
786
+ return [2 /*return*/, {
787
+ total: (0, module_kit_1.newAmount)(btnBalance, 'blockchain')
788
+ }];
789
+ case 2:
790
+ error_7 = _a.sent();
791
+ return [2 /*return*/, { total: (0, module_kit_1.newAmount)('0', 'blockchain') }];
792
+ case 3: return [2 /*return*/];
793
+ }
794
+ });
795
+ });
796
+ };
797
+ StellarProtocolImpl.prototype.prepareTransactionWithPublicKey = function (publicKey, details, configuration) {
798
+ var _a, _b;
799
+ return __awaiter(this, void 0, void 0, function () {
800
+ var address, account, fee, txBuilder, _i, details_1, detail, destinationExists, e_1, amount, memo, tx;
801
+ return __generator(this, function (_c) {
802
+ switch (_c.label) {
803
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
804
+ case 1:
805
+ address = _c.sent();
806
+ return [4 /*yield*/, this.server.loadAccount(address)];
807
+ case 2:
808
+ account = _c.sent();
809
+ fee = (configuration === null || configuration === void 0 ? void 0 : configuration.fee) !== undefined ? (_a = configuration === null || configuration === void 0 ? void 0 : configuration.fee) === null || _a === void 0 ? void 0 : _a.value : stellar_sdk_1.BASE_FEE;
810
+ txBuilder = new stellar_sdk_1.TransactionBuilder(account, {
811
+ fee: fee,
812
+ networkPassphrase: stellar_sdk_1.Networks.PUBLIC
813
+ });
814
+ _i = 0, details_1 = details;
815
+ _c.label = 3;
816
+ case 3:
817
+ if (!(_i < details_1.length)) return [3 /*break*/, 9];
818
+ detail = details_1[_i];
819
+ destinationExists = true;
820
+ _c.label = 4;
821
+ case 4:
822
+ _c.trys.push([4, 6, , 7]);
823
+ return [4 /*yield*/, this.server.loadAccount(detail.to)];
824
+ case 5:
825
+ _c.sent();
826
+ return [3 /*break*/, 7];
827
+ case 6:
828
+ e_1 = _c.sent();
829
+ if (((_b = e_1.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
830
+ destinationExists = false;
831
+ }
832
+ else {
833
+ throw e_1;
834
+ }
835
+ return [3 /*break*/, 7];
836
+ case 7:
837
+ amount = new bignumber_1.default(detail.amount.value).dividedBy(1e7).toString();
838
+ if (destinationExists) {
839
+ txBuilder.addOperation(stellar_sdk_1.Operation.payment({
840
+ destination: detail.to,
841
+ asset: stellar_sdk_1.Asset.native(),
842
+ amount: amount
843
+ }));
844
+ }
845
+ else {
846
+ txBuilder.addOperation(stellar_sdk_1.Operation.createAccount({
847
+ destination: detail.to,
848
+ startingBalance: amount
849
+ }));
850
+ }
851
+ _c.label = 8;
852
+ case 8:
853
+ _i++;
854
+ return [3 /*break*/, 3];
855
+ case 9:
856
+ if (configuration === null || configuration === void 0 ? void 0 : configuration.arbitraryData) {
857
+ memo = configuration === null || configuration === void 0 ? void 0 : configuration.arbitraryData;
858
+ txBuilder.addMemo(stellar_sdk_1.Memo.id(memo));
859
+ }
860
+ tx = txBuilder.setTimeout(600).build();
861
+ return [2 /*return*/, (0, module_kit_1.newUnsignedTransaction)({
862
+ transaction: tx.toXDR()
863
+ })];
864
+ }
865
+ });
866
+ });
867
+ };
868
+ StellarProtocolImpl.prototype.broadcastTransaction = function (transaction) {
869
+ return __awaiter(this, void 0, void 0, function () {
870
+ var params, data;
871
+ return __generator(this, function (_a) {
872
+ switch (_a.label) {
873
+ case 0:
874
+ params = new URLSearchParams();
875
+ params.append('tx', transaction.transaction);
876
+ return [4 /*yield*/, index_1.default.post("".concat(this.options.network.rpcUrl, "/transactions"), params.toString(), {
877
+ headers: {
878
+ 'Content-Type': 'application/x-www-form-urlencoded'
879
+ }
880
+ })];
881
+ case 1:
882
+ data = (_a.sent()).data;
883
+ return [2 /*return*/, data.hash];
884
+ }
885
+ });
886
+ });
887
+ };
888
+ StellarProtocolImpl.prototype.getWalletConnectChain = function () {
889
+ return __awaiter(this, void 0, void 0, function () {
890
+ var chain;
891
+ return __generator(this, function (_a) {
892
+ chain = this.options.network.type === 'mainnet' ? 'pubnet' : 'testnet';
893
+ return [2 /*return*/, "stellar:".concat(chain)];
894
+ });
895
+ });
896
+ };
897
+ StellarProtocolImpl.prototype.prepareWalletConnectTransactionWithPublicKey = function (publicKey, request) {
898
+ var _a, _b;
899
+ return __awaiter(this, void 0, void 0, function () {
900
+ var sourceAddress, sourceAccount, destination, value, amount, fee, txBuilder, tx;
901
+ return __generator(this, function (_c) {
902
+ switch (_c.label) {
903
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
904
+ case 1:
905
+ sourceAddress = _c.sent();
906
+ return [4 /*yield*/, this.server.loadAccount(sourceAddress)];
907
+ case 2:
908
+ sourceAccount = _c.sent();
909
+ destination = (_a = request.to) !== null && _a !== void 0 ? _a : '';
910
+ value = (_b = request.value) !== null && _b !== void 0 ? _b : '0';
911
+ amount = new bignumber_1.default(value).dividedBy(1e7).toString() // convert from stroops to XLM
912
+ ;
913
+ fee = stellar_sdk_1.BASE_FEE;
914
+ txBuilder = new stellar_sdk_1.TransactionBuilder(sourceAccount, {
915
+ fee: fee,
916
+ networkPassphrase: stellar_sdk_1.Networks.PUBLIC
917
+ });
918
+ txBuilder.addOperation(stellar_sdk_1.Operation.payment({
919
+ destination: destination,
920
+ asset: stellar_sdk_1.Asset.native(),
921
+ amount: amount
922
+ }));
923
+ if (request.data) {
924
+ txBuilder.addMemo(stellar_sdk_1.Memo.id(request.data.toString()));
925
+ }
926
+ tx = txBuilder.setTimeout(600).build();
927
+ return [2 /*return*/, (0, module_kit_1.newUnsignedTransaction)({
928
+ transaction: tx.toXDR()
929
+ })];
930
+ }
931
+ });
932
+ });
933
+ };
934
+ return StellarProtocolImpl;
935
+ }());
936
+ exports.StellarProtocolImpl = StellarProtocolImpl;
937
+ function createStellarProtocol(options) {
938
+ if (options === void 0) { options = {}; }
939
+ return new StellarProtocolImpl(options);
940
+ }
941
+ exports.createStellarProtocol = createStellarProtocol;
942
+ exports.STELLAR_MAINNET_PROTOCOL_NETWORK = {
943
+ name: 'Mainnet',
944
+ type: 'mainnet',
945
+ rpcUrl: 'https://horizon.stellar.org',
946
+ blockExplorerUrl: 'https://stellar.expert/explorer/public'
947
+ };
948
+ var DEFAULT_STELLAR_PROTOCOL_NETWORK = exports.STELLAR_MAINNET_PROTOCOL_NETWORK;
949
+ function createStellarProtocolOptions(network) {
950
+ if (network === void 0) { network = {}; }
951
+ return {
952
+ network: __assign(__assign({}, DEFAULT_STELLAR_PROTOCOL_NETWORK), network)
953
+ };
954
+ }
955
+ exports.createStellarProtocolOptions = createStellarProtocolOptions;
956
+ //# sourceMappingURL=StellarProtocol.js.map