@airgap/stellar 0.13.45-beta.3 → 0.13.45-beta.5

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 (36) hide show
  1. package/package.json +4 -4
  2. package/v1/block-explorer/StellarBlockExplorer.js +61 -12
  3. package/v1/block-explorer/StellarBlockExplorer.js.map +1 -1
  4. package/v1/data/StellarAddress.js +14 -13
  5. package/v1/data/StellarAddress.js.map +1 -1
  6. package/v1/index.js +4 -4
  7. package/v1/index.js.map +1 -1
  8. package/v1/module/StellarModule.js +110 -41
  9. package/v1/module/StellarModule.js.map +1 -1
  10. package/v1/module.js +3 -2
  11. package/v1/module.js.map +1 -1
  12. package/v1/protocol/StellarProtocol.js +859 -591
  13. package/v1/protocol/StellarProtocol.js.map +1 -1
  14. package/v1/protocol/stellarAssets/StellarAsset.js +466 -259
  15. package/v1/protocol/stellarAssets/StellarAsset.js.map +1 -1
  16. package/v1/serializer/v3/schemas/converter/transaction-converter.js +20 -8
  17. package/v1/serializer/v3/schemas/converter/transaction-converter.js.map +1 -1
  18. package/v1/serializer/v3/serializer-companion.js +134 -61
  19. package/v1/serializer/v3/serializer-companion.js.map +1 -1
  20. package/v1/serializer/v3/validators/transaction-validator.js +61 -14
  21. package/v1/serializer/v3/validators/transaction-validator.js.map +1 -1
  22. package/v1/serializer/v3/validators/validators.js +62 -18
  23. package/v1/serializer/v3/validators/validators.js.map +1 -1
  24. package/v1/types/crypto.d.ts +1 -1
  25. package/v1/types/protocol.d.ts +2 -2
  26. package/v1/types/protocol.js +2 -2
  27. package/v1/types/protocol.js.map +1 -1
  28. package/v1/utils/convert.js +7 -6
  29. package/v1/utils/convert.js.map +1 -1
  30. package/v1/utils/key.js +10 -9
  31. package/v1/utils/key.js.map +1 -1
  32. package/v1/utils/signature.js +5 -4
  33. package/v1/utils/signature.js.map +1 -1
  34. package/v1/utils/transaction.d.ts +1 -0
  35. package/v1/utils/transaction.js +10 -9
  36. package/v1/utils/transaction.js.map +1 -1
@@ -1,21 +1,67 @@
1
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
+ };
2
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
51
  };
5
52
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.STELLAR_MAINNET_PROTOCOL_NETWORK = exports.StellarProtocolImpl = void 0;
7
- exports.createStellarProtocol = createStellarProtocol;
8
- exports.createStellarProtocolOptions = createStellarProtocolOptions;
9
- const coinlib_core_1 = require("@airgap/coinlib-core");
10
- const index_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/axios-0.19.0/index"));
11
- const errors_1 = require("@airgap/coinlib-core/errors");
12
- const module_kit_1 = require("@airgap/module-kit");
13
- const stellar_sdk_1 = require("@stellar/stellar-sdk");
14
- const bignumber_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
15
- const protocol_1 = require("../types/protocol");
16
- const StellarAddress_1 = require("../data/StellarAddress");
17
- class StellarProtocolImpl {
18
- constructor(options = {}) {
53
+ exports.createStellarProtocolOptions = exports.STELLAR_MAINNET_PROTOCOL_NETWORK = exports.createStellarProtocol = exports.StellarProtocolImpl = void 0;
54
+ var coinlib_core_1 = require("@airgap/coinlib-core");
55
+ var index_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/axios-0.19.0/index"));
56
+ var errors_1 = require("@airgap/coinlib-core/errors");
57
+ var module_kit_1 = require("@airgap/module-kit");
58
+ var stellar_sdk_1 = require("@stellar/stellar-sdk");
59
+ var bignumber_1 = __importDefault(require("@airgap/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 = {}; }
19
65
  this.units = {
20
66
  XLM: {
21
67
  symbol: { value: 'XLM', market: 'xlm' },
@@ -46,7 +92,7 @@ class StellarProtocolImpl {
46
92
  }
47
93
  },
48
94
  account: {
49
- standardDerivationPath: `m/44h/148h/0h`,
95
+ standardDerivationPath: "m/44h/148h/0h",
50
96
  address: {
51
97
  isCaseSensitive: false,
52
98
  placeholder: 'GABC...',
@@ -65,624 +111,846 @@ class StellarProtocolImpl {
65
111
  this.options = createStellarProtocolOptions(options.network);
66
112
  this.server = new stellar_sdk_1.Horizon.Server(this.options.network.rpcUrl);
67
113
  }
68
- async getMultisigStatus(publicKey) {
69
- const address = await this.getAddressFromPublicKey(publicKey);
70
- try {
71
- const account = await this.server.loadAccount(address);
72
- return account.signers.length > 1;
73
- }
74
- catch (error) {
75
- return false;
76
- }
77
- }
78
- async getSigners(publicKey) {
79
- const address = await this.getAddressFromPublicKey(publicKey);
80
- try {
81
- const account = await this.server.loadAccount(address);
82
- return account.signers;
83
- }
84
- catch (error) {
85
- throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error);
86
- }
87
- }
88
- async getThresholds(publicKey) {
89
- const address = await this.getAddressFromPublicKey(publicKey);
90
- try {
91
- const account = await this.server.loadAccount(address);
92
- return account.thresholds;
93
- }
94
- catch (error) {
95
- throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error);
96
- }
97
- }
98
- async getThresholdReachedStatus(transaction) {
99
- try {
100
- const tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC);
101
- const sourceAccountId = tx.source;
102
- const account = await this.server.loadAccount(sourceAccountId);
103
- const signers = account.signers;
104
- const thresholds = account.thresholds;
105
- const requiredThreshold = tx.operations.some((op) => ['setOptions', 'accountMerge'].includes(op.type))
106
- ? thresholds.high_threshold
107
- : tx.operations.some((op) => [
108
- 'createAccount',
109
- 'payment',
110
- 'pathPaymentStrictReceive',
111
- 'pathPaymentStrictSend',
112
- 'manageSellOffer',
113
- 'manageBuyOffer',
114
- 'createPassiveSellOffer',
115
- 'changeTrust',
116
- 'manageData',
117
- 'createClaimableBalance',
118
- 'beginSponsoringFutureReserves',
119
- 'endSponsoringFutureReserves',
120
- 'revokeSponsorship',
121
- 'clawback',
122
- 'clawbackClaimableBalance',
123
- 'liquidityPoolDeposit',
124
- 'liquidityPoolWithdraw',
125
- 'invokeHostFunction',
126
- 'extendFootprintTtl',
127
- 'restoreFootprint'
128
- ].includes(op.type))
129
- ? thresholds.med_threshold
130
- : thresholds.low_threshold;
131
- let totalWeight = 0;
132
- for (const sig of tx.signatures) {
133
- for (const signer of signers) {
134
- const keypair = stellar_sdk_1.Keypair.fromPublicKey(signer.key);
135
- const hint = keypair.signatureHint();
136
- if (hint.equals(sig.hint())) {
137
- totalWeight += signer.weight;
138
- }
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*/];
139
133
  }
140
- }
141
- const threshold = {
142
- thresholdRequired: requiredThreshold,
143
- currentThreshold: totalWeight
144
- };
145
- return threshold;
146
- }
147
- catch (error) {
148
- return {
149
- thresholdRequired: 0,
150
- currentThreshold: 0
151
- };
152
- }
153
- }
154
- async adjustSigner(masterPublicky, signerPublicKey, weight, lowThreshold, medThreshold, highThreshold) {
155
- const masterAddress = await this.getAddressFromPublicKey(masterPublicky);
156
- const signerAddress = await this.getAddressFromPublicKey(signerPublicKey);
157
- const account = await this.server.loadAccount(masterAddress);
158
- const signers = account.signers;
159
- const txBuilder = new stellar_sdk_1.TransactionBuilder(account, {
160
- fee: stellar_sdk_1.BASE_FEE,
161
- networkPassphrase: stellar_sdk_1.Networks.PUBLIC
134
+ });
162
135
  });
163
- if (signers.length === 1) {
164
- const masterWeight = weight;
165
- txBuilder
166
- .addOperation(stellar_sdk_1.Operation.setOptions({
167
- masterWeight,
168
- lowThreshold,
169
- medThreshold,
170
- highThreshold,
171
- signer: {
172
- ed25519PublicKey: signerAddress,
173
- weight
174
- }
175
- }))
176
- .setTimeout(600);
177
- }
178
- else {
179
- txBuilder
180
- .addOperation(stellar_sdk_1.Operation.setOptions({
181
- lowThreshold,
182
- medThreshold,
183
- highThreshold,
184
- signer: {
185
- ed25519PublicKey: signerAddress,
186
- weight
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*/];
187
156
  }
188
- }))
189
- .setTimeout(600);
190
- }
191
- return (0, module_kit_1.newUnsignedTransaction)({
192
- transaction: txBuilder.build().toXDR()
193
- });
194
- }
195
- async getTransactionsForPublicKey(publicKey, limit, cursor) {
196
- const address = await this.getAddressFromPublicKey(publicKey);
197
- return this.getTransactionsForAddress(address, limit, cursor);
198
- }
199
- async getTransactionsForAddress(address, limit, cursor) {
200
- try {
201
- const endpoint = cursor?.next ?? `/accounts/${address}/payments?limit=${limit}&order=desc&join=transactions`;
202
- const url = `${this.options.network.rpcUrl}${endpoint}`;
203
- const response = await index_1.default.get(url);
204
- const data = response.data;
205
- const paymentTransactions = data._embedded?.records ?? [];
206
- const transactions = paymentTransactions
207
- .filter((tx) => (tx.type === protocol_1.StellarTransactionType.PAYMENT && tx.asset_type === protocol_1.StellarAssetType.NATIVE) || tx.type === 'create_account')
208
- .map((tx) => {
209
- const txData = tx.transaction;
210
- const isPayment = tx.type === protocol_1.StellarTransactionType.PAYMENT;
211
- const txAmount = isPayment ? tx.amount : tx.starting_balance;
212
- const amount = new bignumber_1.default(txAmount).multipliedBy(1e7).toString();
213
- const from = isPayment ? tx.from : tx.funder;
214
- const to = isPayment ? tx.to : tx.account;
215
- const isInbound = to.toLowerCase() === address.toLowerCase();
216
- return {
217
- from: [from],
218
- to: [to],
219
- isInbound,
220
- amount: (0, module_kit_1.newAmount)(amount, 'blockchain'),
221
- fee: (0, module_kit_1.newAmount)(txData.fee_charged, 'blockchain'),
222
- network: this.options.network,
223
- timestamp: Math.floor(new Date(tx.created_at).getTime() / 1000),
224
- status: {
225
- type: tx.transaction_successful ? 'applied' : 'failed',
226
- hash: tx.transaction_hash,
227
- block: txData.ledger.toString()
228
- },
229
- arbitraryData: txData.memo
230
- };
231
157
  });
232
- return {
233
- transactions,
234
- cursor: {
235
- hasNext: data._links?.next?.href !== undefined,
236
- next: data._links?.next?.href?.replace(this.options.network.rpcUrl, '') ?? undefined
237
- }
238
- };
239
- }
240
- catch (error) {
241
- if (error.response?.status === 404) {
242
- return {
243
- transactions: [],
244
- cursor: {
245
- hasNext: false,
246
- next: ''
247
- }
248
- };
249
- }
250
- throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error);
251
- }
252
- }
253
- async getTransactionMaxAmountWithPublicKey(publicKey, to, configuration) {
254
- try {
255
- const balance = await this.getBalanceOfPublicKey(publicKey);
256
- const balanceBn = new bignumber_1.default(balance.total.value || '0');
257
- let fee;
258
- if (configuration?.fee !== undefined) {
259
- fee = new bignumber_1.default((0, module_kit_1.newAmount)(configuration.fee).blockchain(this.units).value);
260
- }
261
- else {
262
- fee = new bignumber_1.default(stellar_sdk_1.BASE_FEE).multipliedBy(to.length).dividedBy(1e7);
263
- }
264
- if (fee.gte(balanceBn)) {
265
- return (0, module_kit_1.newAmount)(0, 'blockchain');
266
- }
267
- let amountWithoutFees = balanceBn.minus(fee);
268
- return (0, module_kit_1.newAmount)(amountWithoutFees, 'blockchain');
269
- }
270
- catch (error) {
271
- throw new errors_1.NetworkError(coinlib_core_1.Domain.STELLAR, error);
272
- }
273
- }
274
- async getTransactionFeeWithPublicKey(publicKey, details, configuration) {
275
- return this.feeDefaults;
276
- }
277
- async getMetadata() {
278
- return this.metadata;
279
- }
280
- async getAddressFromPublicKey(publicKey) {
281
- return StellarAddress_1.StellarAddress.from(publicKey).asString();
282
- }
283
- async getDetailsFromTransaction(transaction, _publicKey) {
284
- switch (transaction.type) {
285
- case 'signed':
286
- case 'unsigned':
287
- return this.getDetailsFromEncodedTransaction(transaction.transaction, _publicKey);
288
- default:
289
- (0, coinlib_core_1.assertNever)(transaction);
290
- throw new errors_1.UnsupportedError(coinlib_core_1.Domain.STELLAR, 'Unsupported transaction type.');
291
- }
292
- }
293
- async getDetailsFromEncodedGenericTransaction(transaction) {
294
- return stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC);
295
- }
296
- async getDetailsFromEncodedTransaction(transaction, publicKey) {
297
- const transactions = [];
298
- const tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction, stellar_sdk_1.Networks.PUBLIC);
299
- for (const txDetails of tx.operations) {
300
- let amount;
301
- let op;
302
- let to;
303
- let fee;
304
- let isInbound;
305
- let type;
306
- let uiAlerts = [];
307
- let displayFromTo = true;
308
- if (txDetails.type === protocol_1.StellarTransactionType.PAYMENT) {
309
- op = txDetails;
310
- if (op.asset.code === protocol_1.StellarAssetType.XLM) {
311
- amount = new bignumber_1.default(op.amount).multipliedBy(1e7).toString();
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*/];
312
179
  }
313
- else {
314
- uiAlerts.push({
315
- type: 'warning',
316
- title: { value: protocol_1.StellarTransactionType.PAYMENT, type: 'plain' },
317
- description: {
318
- value: `${op.amount} ${op.asset.code} will be deducted from the source wallet`,
319
- type: 'plain'
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
+ }
320
236
  }
321
- });
322
- amount = new bignumber_1.default(0).multipliedBy(1e7).toString();
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*/];
323
249
  }
324
- fee = tx.fee;
325
- to = [op.destination];
326
- type = protocol_1.StellarTransactionType.PAYMENT;
327
- isInbound = to[0].toLowerCase() === publicKey.value.toLowerCase();
328
- }
329
- else if (txDetails.type === protocol_1.StellarTransactionType.CREATE_ACCOUNT) {
330
- op = txDetails;
331
- amount = new bignumber_1.default(op.startingBalance).multipliedBy(1e7).toString();
332
- to = [op.destination];
333
- fee = tx.fee;
334
- isInbound = to[0].toLowerCase() === publicKey.value.toLowerCase();
335
- type = protocol_1.StellarTransactionType.CREATE_ACCOUNT;
336
- }
337
- else if (txDetails.type === protocol_1.StellarTransactionType.CHANGE_TRUST) {
338
- op = txDetails;
339
- amount = new bignumber_1.default(0).toString();
340
- if (op.line instanceof stellar_sdk_1.Asset) {
341
- const asetType = op.line;
342
- to = [asetType.getIssuer()];
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
+ })];
343
303
  }
344
- else if (op.line instanceof stellar_sdk_1.LiquidityPoolAsset) {
345
- const asetType = op.line;
346
- to = [asetType.assetA.getIssuer() ?? protocol_1.StellarAssetType.NATIVE, asetType.assetB.getIssuer() ?? protocol_1.StellarAssetType.NATIVE];
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)];
347
316
  }
348
- else {
349
- to = [tx.source];
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*/];
350
384
  }
351
- fee = new bignumber_1.default(tx.fee).dividedBy(tx.operations.length).toString();
352
- isInbound = false;
353
- type = protocol_1.StellarTransactionType.CHANGE_TRUST;
354
- }
355
- else if (txDetails.type === protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION) {
356
- isInbound = false;
357
- op = txDetails;
358
- fee = tx.fee;
359
- const cont = op.func.value();
360
- amount = new bignumber_1.default(0).toString();
361
- try {
362
- Buffer.from(cont.contractAddress().value(), 'hex');
363
- const contractAddress = stellar_sdk_1.StrKey.encodeContract(Buffer.from(cont.contractAddress().value(), 'hex'));
364
- to = [contractAddress];
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*/];
365
415
  }
366
- catch (error) {
367
- to = [tx.source];
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.');
368
450
  }
369
- type = protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION;
370
- displayFromTo = false;
371
- uiAlerts.push({
372
- type: 'warning',
373
- title: { value: protocol_1.StellarTransactionType.INOKE_HOST_FUNCTION, type: 'plain' },
374
- description: {
375
- value: `Transaction ${txDetails.type} type was not decoded. Please understand what you are signing before proceeding.`,
376
- type: 'plain'
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();
377
499
  }
378
- });
379
- }
380
- else if (txDetails.type === protocol_1.StellarTransactionType.PATH_PAYMENT_RECIEVE) {
381
- op = txDetails;
382
- fee = tx.fee;
383
- const sendAssetIsNative = op.sendAsset.isNative();
384
- amount = new bignumber_1.default(sendAssetIsNative ? op.sendMax : 0).multipliedBy(1e7).toString();
385
- to = [txDetails.destination];
386
- isInbound = false;
387
- type = protocol_1.StellarTransactionType.PATH_PAYMENT_RECIEVE;
388
- if (!sendAssetIsNative) {
389
- uiAlerts.push({
390
- type: 'warning',
391
- title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
392
- description: {
393
- value: `Maximum of ${op.sendMax} ${op.sendAsset} will be deducted from the source wallet`,
394
- type: 'plain'
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()];
395
514
  }
396
- });
397
- }
398
- else {
399
- uiAlerts.push({
400
- type: 'info',
401
- title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
402
- description: {
403
- value: `${op.destAmount} ${op.destAsset} will added to your wallet`,
404
- type: 'plain'
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];
405
518
  }
406
- });
407
- }
408
- }
409
- else if (txDetails.type === protocol_1.StellarTransactionType.PATH_PAYMENT_SEND) {
410
- op = txDetails;
411
- fee = tx.fee;
412
- const sendAssetIsNative = op.sendAsset.isNative();
413
- amount = new bignumber_1.default(sendAssetIsNative ? op.sendAmount : 0).multipliedBy(1e7).toString();
414
- to = [txDetails.destination];
415
- isInbound = false;
416
- type = protocol_1.StellarTransactionType.PATH_PAYMENT_SEND;
417
- if (!sendAssetIsNative) {
418
- uiAlerts.push({
419
- type: 'warning',
420
- title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
421
- description: {
422
- value: `${op.sendAmount} ${op.sendAsset} will be deducted from the source wallet`,
423
- type: 'plain'
519
+ else {
520
+ to = [tx.source];
424
521
  }
425
- });
426
- }
427
- else {
428
- uiAlerts.push({
429
- type: 'info',
430
- title: { value: protocol_1.StellarTransactionType.PATH_PAYMENT_SEND, type: 'plain' },
431
- description: {
432
- value: `Minimum of ${op.destMin} ${op.destAsset} will added to your wallet`,
433
- type: 'plain'
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];
434
536
  }
435
- });
436
- }
437
- }
438
- else if (txDetails.type === protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT) {
439
- amount = new bignumber_1.default(0).toString();
440
- op = txDetails;
441
- fee = tx.fee;
442
- to = [op.liquidityPoolId];
443
- uiAlerts.push({
444
- type: 'warning',
445
- title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT, type: 'plain' },
446
- description: {
447
- value: `Transaction is not fully decoded`,
448
- type: 'plain'
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
+ });
449
550
  }
450
- });
451
- uiAlerts.push({
452
- type: 'warning',
453
- title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT, type: 'plain' },
454
- description: {
455
- value: `${op.maxAmountA} & ${op.maxAmountB} of two different assets will be deducted from the source wallet`,
456
- type: 'plain'
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
+ }
457
579
  }
458
- });
459
- type = protocol_1.StellarTransactionType.LIQUIDITY_POOL_DEPOSIT;
460
- }
461
- else if (txDetails.type === protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW) {
462
- amount = new bignumber_1.default(0).toString();
463
- op = txDetails;
464
- fee = tx.fee;
465
- to = [op.liquidityPoolId];
466
- uiAlerts.push({
467
- type: 'info',
468
- title: { value: protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW, type: 'plain' },
469
- description: {
470
- value: `${op.minAmountA} & ${op.minAmountB} of two different assets will be added to your wallet`,
471
- type: 'plain'
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
+ }
472
608
  }
473
- });
474
- type = protocol_1.StellarTransactionType.LIQUIDITY_POOL_WITHDRAW;
475
- }
476
- else if (txDetails.type === protocol_1.StellarTransactionType.SET_OPTIONS) {
477
- op = txDetails;
478
- fee = tx.fee;
479
- const signer = op.signer;
480
- if ('ed25519PublicKey' in signer && signer.ed25519PublicKey) {
481
- to = [signer.ed25519PublicKey];
482
- }
483
- else if ('ed25519SignedPayload' in signer && signer.ed25519SignedPayload) {
484
- to = [signer.ed25519SignedPayload];
485
- }
486
- else if ('preAuthTx' in signer && signer.preAuthTx) {
487
- to = [signer.preAuthTx.toString('hex')];
488
- }
489
- else if ('sha256Hash' in signer && signer.sha256Hash) {
490
- to = [signer.sha256Hash.toString('hex')];
491
- }
492
- else {
493
- to = [tx.source];
494
- }
495
- const descriptionParts = [
496
- to[0] && `Signer: ${to[0]}`,
497
- op.masterWeight !== undefined && `MasterWeight: ${op.masterWeight}`,
498
- op.lowThreshold !== undefined && `LowThreshold: ${op.lowThreshold}`,
499
- op.medThreshold !== undefined && `MedThreshold: ${op.medThreshold}`,
500
- op.highThreshold !== undefined && `HighThreshold: ${op.highThreshold}`
501
- ]
502
- .filter(Boolean)
503
- .join('\n');
504
- uiAlerts.push({
505
- type: 'info',
506
- title: { value: protocol_1.StellarTransactionType.SET_OPTIONS, type: 'plain' },
507
- description: {
508
- value: `You are setting the following parameters:\n${descriptionParts}`,
509
- type: 'plain'
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;
510
631
  }
511
- });
512
- amount = new bignumber_1.default(0).toString();
513
- type = protocol_1.StellarTransactionType.SET_OPTIONS;
514
- }
515
- else {
516
- to = [tx.source];
517
- fee = tx.fee;
518
- amount = new bignumber_1.default(0).toString();
519
- isInbound = false;
520
- type = txDetails.type;
521
- uiAlerts.push({
522
- type: 'warning',
523
- title: { value: txDetails.type, type: 'plain' },
524
- description: {
525
- value: `Transaction ${txDetails.type} type was not decoded. Please understand what you are signing before proceeding.`,
526
- type: 'plain'
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;
527
646
  }
528
- });
529
- displayFromTo = false;
530
- }
531
- const memo = tx.memo.type === 'text' || tx.memo.type === 'id'
532
- ? tx.memo.value?.toString()
533
- : tx.memo.type === 'hash' || tx.memo.type === 'return'
534
- ? tx.memo.value?.toString('hex')
535
- : undefined;
536
- transactions.push({
537
- from: [tx.source],
538
- to,
539
- isInbound,
540
- amount: (0, module_kit_1.newAmount)(amount, 'blockchain'),
541
- fee: (0, module_kit_1.newAmount)(fee, 'blockchain'),
542
- network: this.options.network,
543
- arbitraryData: memo,
544
- type,
545
- uiAlerts,
546
- json: JSON.stringify(tx),
547
- displayFromTo
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];
548
722
  });
549
- }
550
- return transactions;
551
- }
552
- async getCryptoConfiguration() {
553
- return this.cryptoConfiguration;
554
- }
555
- async getKeyPairFromDerivative(derivative) {
556
- return {
557
- secretKey: (0, module_kit_1.newSecretKey)(derivative.secretKey, 'hex'),
558
- publicKey: (0, module_kit_1.newPublicKey)(derivative.publicKey, 'hex')
559
- };
560
- }
561
- async signTransactionWithSecretKey(transaction, secretKey) {
562
- const tx = stellar_sdk_1.TransactionBuilder.fromXDR(transaction.transaction, stellar_sdk_1.Networks.PUBLIC);
563
- tx.sign(stellar_sdk_1.Keypair.fromSecret(stellar_sdk_1.StrKey.encodeEd25519SecretSeed(Buffer.from(secretKey.value, 'hex'))));
564
- return (0, module_kit_1.newSignedTransaction)({
565
- transaction: tx.toXDR()
566
723
  });
567
- }
568
- async getNetwork() {
569
- return this.options.network;
570
- }
571
- async getBalanceOfPublicKey(publicKey) {
572
- const address = await this.getAddressFromPublicKey(publicKey);
573
- return this.getBalanceOfAddress(address);
574
- }
575
- async getBalanceOfAddress(address) {
576
- try {
577
- const { data } = await index_1.default.get(`${this.options.network.rpcUrl}/accounts/${address}`);
578
- const balance = data.balances.find((b) => b.asset_type === protocol_1.StellarAssetType.NATIVE);
579
- const btnBalance = new bignumber_1.default(balance.balance).multipliedBy(1e7).toString();
580
- return {
581
- total: (0, module_kit_1.newAmount)(btnBalance, 'blockchain')
582
- };
583
- }
584
- catch (error) {
585
- return { total: (0, module_kit_1.newAmount)('0', 'blockchain') };
586
- }
587
- }
588
- async prepareTransactionWithPublicKey(publicKey, details, configuration) {
589
- const address = await this.getAddressFromPublicKey(publicKey);
590
- const account = await this.server.loadAccount(address);
591
- const fee = configuration?.fee !== undefined ? configuration?.fee?.value : stellar_sdk_1.BASE_FEE;
592
- const txBuilder = new stellar_sdk_1.TransactionBuilder(account, {
593
- fee,
594
- networkPassphrase: stellar_sdk_1.Networks.PUBLIC
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
+ });
595
730
  });
596
- for (const detail of details) {
597
- let destinationExists = true;
598
- try {
599
- await this.server.loadAccount(detail.to);
600
- }
601
- catch (e) {
602
- if (e.response?.status === 404) {
603
- destinationExists = false;
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)];
604
770
  }
605
- else {
606
- throw e;
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*/];
607
793
  }
608
- }
609
- const amount = new bignumber_1.default(detail.amount.value).dividedBy(1e7).toString();
610
- if (destinationExists) {
611
- txBuilder.addOperation(stellar_sdk_1.Operation.payment({
612
- destination: detail.to,
613
- asset: stellar_sdk_1.Asset.native(),
614
- amount
615
- }));
616
- }
617
- else {
618
- txBuilder.addOperation(stellar_sdk_1.Operation.createAccount({
619
- destination: detail.to,
620
- startingBalance: amount
621
- }));
622
- }
623
- }
624
- if (configuration?.arbitraryData) {
625
- const memo = configuration?.arbitraryData;
626
- txBuilder.addMemo(stellar_sdk_1.Memo.id(memo));
627
- }
628
- const tx = txBuilder.setTimeout(600).build();
629
- return (0, module_kit_1.newUnsignedTransaction)({
630
- transaction: tx.toXDR()
794
+ });
631
795
  });
632
- }
633
- async broadcastTransaction(transaction) {
634
- const params = new URLSearchParams();
635
- params.append('tx', transaction.transaction);
636
- const { data } = await index_1.default.post(`${this.options.network.rpcUrl}/transactions`, params.toString(), {
637
- headers: {
638
- 'Content-Type': 'application/x-www-form-urlencoded'
639
- }
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
+ });
640
866
  });
641
- return data.hash;
642
- }
643
- async getWalletConnectChain() {
644
- const chain = this.options.network.type === 'mainnet' ? 'pubnet' : 'testnet';
645
- return `stellar:${chain}`;
646
- }
647
- async prepareWalletConnectTransactionWithPublicKey(publicKey, request) {
648
- const sourceAddress = await this.getAddressFromPublicKey(publicKey);
649
- const sourceAccount = await this.server.loadAccount(sourceAddress);
650
- const destination = request.to ?? '';
651
- const value = request.value ?? '0';
652
- const amount = new bignumber_1.default(value).dividedBy(1e7).toString(); // convert from stroops to XLM
653
- const fee = stellar_sdk_1.BASE_FEE;
654
- const txBuilder = new stellar_sdk_1.TransactionBuilder(sourceAccount, {
655
- fee,
656
- networkPassphrase: stellar_sdk_1.Networks.PUBLIC
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
+ });
657
886
  });
658
- txBuilder.addOperation(stellar_sdk_1.Operation.payment({
659
- destination,
660
- asset: stellar_sdk_1.Asset.native(),
661
- amount
662
- }));
663
- if (request.data) {
664
- txBuilder.addMemo(stellar_sdk_1.Memo.id(request.data.toString()));
665
- }
666
- const tx = txBuilder.setTimeout(600).build();
667
- return (0, module_kit_1.newUnsignedTransaction)({
668
- transaction: tx.toXDR()
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
+ });
669
895
  });
670
- }
671
- }
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
+ }());
672
936
  exports.StellarProtocolImpl = StellarProtocolImpl;
673
- function createStellarProtocol(options = {}) {
937
+ function createStellarProtocol(options) {
938
+ if (options === void 0) { options = {}; }
674
939
  return new StellarProtocolImpl(options);
675
940
  }
941
+ exports.createStellarProtocol = createStellarProtocol;
676
942
  exports.STELLAR_MAINNET_PROTOCOL_NETWORK = {
677
943
  name: 'Mainnet',
678
944
  type: 'mainnet',
679
945
  rpcUrl: 'https://horizon.stellar.org',
680
946
  blockExplorerUrl: 'https://stellar.expert/explorer/public'
681
947
  };
682
- const DEFAULT_STELLAR_PROTOCOL_NETWORK = exports.STELLAR_MAINNET_PROTOCOL_NETWORK;
683
- function createStellarProtocolOptions(network = {}) {
948
+ var DEFAULT_STELLAR_PROTOCOL_NETWORK = exports.STELLAR_MAINNET_PROTOCOL_NETWORK;
949
+ function createStellarProtocolOptions(network) {
950
+ if (network === void 0) { network = {}; }
684
951
  return {
685
- network: { ...DEFAULT_STELLAR_PROTOCOL_NETWORK, ...network }
952
+ network: __assign(__assign({}, DEFAULT_STELLAR_PROTOCOL_NETWORK), network)
686
953
  };
687
954
  }
955
+ exports.createStellarProtocolOptions = createStellarProtocolOptions;
688
956
  //# sourceMappingURL=StellarProtocol.js.map