@proton/wrap-constants 0.0.56 → 0.0.59
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.
- package/dist/constants.d.ts +1 -0
- package/dist/graph.d.ts +30 -0
- package/dist/index.d.ts +2 -0
- package/dist/math.d.ts +17 -0
- package/dist/parsers/pool.d.ts +6 -11
- package/dist/utils.d.ts +1 -0
- package/dist/wrap-constants.cjs.development.js +347 -2
- package/dist/wrap-constants.cjs.development.js.map +1 -1
- package/dist/wrap-constants.cjs.production.min.js +1 -1
- package/dist/wrap-constants.cjs.production.min.js.map +1 -1
- package/dist/wrap-constants.esm.js +336 -3
- package/dist/wrap-constants.esm.js.map +1 -1
- package/package.json +4 -2
- package/src/coins.ts +1 -1
- package/src/constants.ts +2 -1
- package/src/graph.ts +126 -0
- package/src/index.ts +3 -1
- package/src/math.ts +112 -0
- package/src/parsers/pool.ts +7 -6
- package/src/utils.ts +12 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { string, object, array, literal, number, any, nativeEnum, boolean } from 'zod';
|
|
2
|
+
import cloneDeep from 'lodash.clonedeep';
|
|
3
|
+
import { BigNumber } from 'bignumber.js';
|
|
2
4
|
|
|
3
5
|
var _similarChains, _explorerLinkByChain;
|
|
4
6
|
|
|
@@ -269,7 +271,7 @@ var initializeCoins = function initializeCoins(protonChain) {
|
|
|
269
271
|
xtokenPrecision: 4,
|
|
270
272
|
xtokenContract: 'loan.token',
|
|
271
273
|
wallets: [],
|
|
272
|
-
image: 'https://
|
|
274
|
+
image: 'https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/loan.png',
|
|
273
275
|
coingeckoId: 'proton-loan'
|
|
274
276
|
}, {
|
|
275
277
|
allowSwap: true,
|
|
@@ -942,8 +944,47 @@ function _extends() {
|
|
|
942
944
|
return _extends.apply(this, arguments);
|
|
943
945
|
}
|
|
944
946
|
|
|
947
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
948
|
+
if (!o) return;
|
|
949
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
950
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
951
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
952
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
953
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
function _arrayLikeToArray(arr, len) {
|
|
957
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
958
|
+
|
|
959
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
960
|
+
|
|
961
|
+
return arr2;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
965
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
966
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
967
|
+
|
|
968
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
969
|
+
if (it) o = it;
|
|
970
|
+
var i = 0;
|
|
971
|
+
return function () {
|
|
972
|
+
if (i >= o.length) return {
|
|
973
|
+
done: true
|
|
974
|
+
};
|
|
975
|
+
return {
|
|
976
|
+
done: false,
|
|
977
|
+
value: o[i++]
|
|
978
|
+
};
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
983
|
+
}
|
|
984
|
+
|
|
945
985
|
var WRAP_CONTRACT = 'proton.wrap';
|
|
946
986
|
var WRAP_AUTH_ACTION = 'generateauth';
|
|
987
|
+
var FEE_FACTOR = 10000;
|
|
947
988
|
var initializeConstants = function initializeConstants(chain) {
|
|
948
989
|
var _initializeCoins = initializeCoins(chain),
|
|
949
990
|
swapCoins = _initializeCoins.swapCoins,
|
|
@@ -956,7 +997,7 @@ var initializeConstants = function initializeConstants(chain) {
|
|
|
956
997
|
|
|
957
998
|
var constants = {
|
|
958
999
|
SWAP_CONTRACT: 'proton.swaps',
|
|
959
|
-
FEE_FACTOR:
|
|
1000
|
+
FEE_FACTOR: FEE_FACTOR,
|
|
960
1001
|
GOOGLE_MAPS_KEY: 'AIzaSyDb2_CrK032kSIqBXbkdwmaLKWELl0SxVs',
|
|
961
1002
|
SWAP_URL: chain === 'proton' ? 'https://otc.protonswap.com' : 'https://otc-test.protonswap.com',
|
|
962
1003
|
WRAP_SERVER_URL: chain === 'proton' ? 'https://www.api.bloks.io/proton-wrap-public2' : 'https://www.api.bloks.io/proton-wrap-testnet-public2',
|
|
@@ -1223,6 +1264,298 @@ var wrapParser = /*#__PURE__*/object({
|
|
|
1223
1264
|
var isSameToken = function isSameToken(token1, token2) {
|
|
1224
1265
|
return token1.xtokenSymbol === token2.xtokenSymbol && token1.xtokenPrecision === token2.xtokenPrecision && token1.xtokenContract === token2.xtokenContract;
|
|
1225
1266
|
};
|
|
1267
|
+
var median = function median(numbers) {
|
|
1268
|
+
var sorted = numbers.slice().sort(function (a, b) {
|
|
1269
|
+
return a - b;
|
|
1270
|
+
});
|
|
1271
|
+
var middle = Math.floor(sorted.length / 2);
|
|
1272
|
+
|
|
1273
|
+
if (sorted.length % 2 === 0) {
|
|
1274
|
+
return (sorted[middle - 1] + sorted[middle]) / 2;
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
return sorted[middle];
|
|
1278
|
+
};
|
|
1279
|
+
|
|
1280
|
+
var INode = function INode(key, data) {
|
|
1281
|
+
this.key = void 0;
|
|
1282
|
+
this.data = {};
|
|
1283
|
+
this.key = key;
|
|
1284
|
+
|
|
1285
|
+
if (data) {
|
|
1286
|
+
this.data = data;
|
|
1287
|
+
}
|
|
1288
|
+
};
|
|
1289
|
+
var ILink = function ILink(from, to, data) {
|
|
1290
|
+
this.from = void 0;
|
|
1291
|
+
this.to = void 0;
|
|
1292
|
+
this.data = {};
|
|
1293
|
+
this.from = from;
|
|
1294
|
+
this.to = to;
|
|
1295
|
+
|
|
1296
|
+
if (data) {
|
|
1297
|
+
this.data = data;
|
|
1298
|
+
}
|
|
1299
|
+
};
|
|
1300
|
+
var Graph = /*#__PURE__*/function () {
|
|
1301
|
+
function Graph() {
|
|
1302
|
+
this.nodes = [];
|
|
1303
|
+
this.links = [];
|
|
1304
|
+
this.lastPathFound = [];
|
|
1305
|
+
|
|
1306
|
+
this.isEquals = function (a, b) {
|
|
1307
|
+
return a.key === b.key;
|
|
1308
|
+
};
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
var _proto = Graph.prototype;
|
|
1312
|
+
|
|
1313
|
+
_proto.addNode = function addNode(k, v) {
|
|
1314
|
+
var node = this.findNode(k);
|
|
1315
|
+
|
|
1316
|
+
if (!node) {
|
|
1317
|
+
this.nodes.push(new INode(k, v));
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
|
|
1321
|
+
_proto.addNodes = function addNodes() {
|
|
1322
|
+
var _this = this;
|
|
1323
|
+
|
|
1324
|
+
for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1325
|
+
nodes[_key] = arguments[_key];
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
nodes.forEach(function (node) {
|
|
1329
|
+
return typeof node === "string" ? _this.addNode(node) : _this.addNode(node[0], node[1]);
|
|
1330
|
+
});
|
|
1331
|
+
};
|
|
1332
|
+
|
|
1333
|
+
_proto.findNode = function findNode(k) {
|
|
1334
|
+
var _this2 = this;
|
|
1335
|
+
|
|
1336
|
+
var inode = new INode(k);
|
|
1337
|
+
return this.nodes.find(function (node) {
|
|
1338
|
+
return _this2.isEquals(node, inode);
|
|
1339
|
+
});
|
|
1340
|
+
};
|
|
1341
|
+
|
|
1342
|
+
_proto.findNodes = function findNodes() {
|
|
1343
|
+
var _this3 = this;
|
|
1344
|
+
|
|
1345
|
+
for (var _len2 = arguments.length, keys = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
1346
|
+
keys[_key2] = arguments[_key2];
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
return keys.map(function (k) {
|
|
1350
|
+
return _this3.findNode(k);
|
|
1351
|
+
});
|
|
1352
|
+
};
|
|
1353
|
+
|
|
1354
|
+
_proto.requireFindNodes = function requireFindNodes() {
|
|
1355
|
+
var nodes = this.findNodes.apply(this, arguments);
|
|
1356
|
+
|
|
1357
|
+
if (nodes.some(function (n) {
|
|
1358
|
+
return n === undefined;
|
|
1359
|
+
})) {
|
|
1360
|
+
throw new Error('One of the nodes does not exist');
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
return nodes;
|
|
1364
|
+
};
|
|
1365
|
+
|
|
1366
|
+
_proto.addLink = function addLink(nodeA, nodeB, data) {
|
|
1367
|
+
var _this$requireFindNode = this.requireFindNodes(nodeA, nodeB),
|
|
1368
|
+
inodeA = _this$requireFindNode[0],
|
|
1369
|
+
inodeB = _this$requireFindNode[1];
|
|
1370
|
+
|
|
1371
|
+
this.links.push(new ILink(inodeA, inodeB, data));
|
|
1372
|
+
};
|
|
1373
|
+
|
|
1374
|
+
_proto.addLinks = function addLinks() {
|
|
1375
|
+
var _this4 = this;
|
|
1376
|
+
|
|
1377
|
+
for (var _len3 = arguments.length, links = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
1378
|
+
links[_key3] = arguments[_key3];
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
links.forEach(function (link) {
|
|
1382
|
+
return _this4.addLink.apply(_this4, link);
|
|
1383
|
+
});
|
|
1384
|
+
}
|
|
1385
|
+
/**
|
|
1386
|
+
* Get all nodes linked
|
|
1387
|
+
* to from `node`.
|
|
1388
|
+
*/
|
|
1389
|
+
;
|
|
1390
|
+
|
|
1391
|
+
_proto.findLinkedNodes = function findLinkedNodes(node) {
|
|
1392
|
+
var _this5 = this;
|
|
1393
|
+
|
|
1394
|
+
return this.links.reduce(function (acc, link) {
|
|
1395
|
+
if (_this5.isEquals(link.from, node)) {
|
|
1396
|
+
acc.push(link.to);
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
return acc;
|
|
1400
|
+
}, []);
|
|
1401
|
+
};
|
|
1402
|
+
|
|
1403
|
+
_proto.findAllPaths = function findAllPaths(from, to) {
|
|
1404
|
+
var _this6 = this;
|
|
1405
|
+
|
|
1406
|
+
var allPaths = [];
|
|
1407
|
+
|
|
1408
|
+
var _this$requireFindNode2 = this.requireFindNodes(from, to),
|
|
1409
|
+
fromNode = _this$requireFindNode2[0],
|
|
1410
|
+
toNode = _this$requireFindNode2[1];
|
|
1411
|
+
|
|
1412
|
+
var path = [fromNode];
|
|
1413
|
+
var seen = new Set();
|
|
1414
|
+
|
|
1415
|
+
var stuck = function stuck(x) {
|
|
1416
|
+
if (_this6.isEquals(x, toNode)) {
|
|
1417
|
+
return false;
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
for (var _iterator = _createForOfIteratorHelperLoose(_this6.findLinkedNodes(x)), _step; !(_step = _iterator()).done;) {
|
|
1421
|
+
var y = _step.value;
|
|
1422
|
+
|
|
1423
|
+
if (!seen.has(y.key)) {
|
|
1424
|
+
seen.add(y.key);
|
|
1425
|
+
|
|
1426
|
+
if (!stuck(y)) {
|
|
1427
|
+
return false;
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
return true;
|
|
1433
|
+
};
|
|
1434
|
+
|
|
1435
|
+
var search = function search(x) {
|
|
1436
|
+
if (_this6.isEquals(x, toNode)) {
|
|
1437
|
+
allPaths.push(cloneDeep(path));
|
|
1438
|
+
return;
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
seen = new Set(path.map(function (p) {
|
|
1442
|
+
return p.key;
|
|
1443
|
+
}));
|
|
1444
|
+
|
|
1445
|
+
if (stuck(x)) {
|
|
1446
|
+
return;
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.findLinkedNodes(x)), _step2; !(_step2 = _iterator2()).done;) {
|
|
1450
|
+
var y = _step2.value;
|
|
1451
|
+
|
|
1452
|
+
if (!path.includes(y)) {
|
|
1453
|
+
path.push(y);
|
|
1454
|
+
search(y);
|
|
1455
|
+
path.pop();
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
};
|
|
1459
|
+
|
|
1460
|
+
search(fromNode);
|
|
1461
|
+
return allPaths;
|
|
1462
|
+
};
|
|
1463
|
+
|
|
1464
|
+
return Graph;
|
|
1465
|
+
}();
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* XPR<>XUSDT (XPR -> XUSDT)
|
|
1469
|
+
*
|
|
1470
|
+
* pool1 * pool2
|
|
1471
|
+
* term = pool2 - --------------
|
|
1472
|
+
* pool1 + swap
|
|
1473
|
+
*
|
|
1474
|
+
* result = term - (term * fee)
|
|
1475
|
+
*/
|
|
1476
|
+
|
|
1477
|
+
var compute_transfer = function compute_transfer(pool1, pool2, swap, exchange_fee, precision) {
|
|
1478
|
+
var term1 = pool2;
|
|
1479
|
+
var term2over = pool1.multipliedBy(pool2);
|
|
1480
|
+
var term2under = pool1.plus(swap);
|
|
1481
|
+
var term2 = term2over.dividedBy(term2under).integerValue(BigNumber.ROUND_DOWN);
|
|
1482
|
+
var term = term1.minus(term2);
|
|
1483
|
+
var fee = new BigNumber(exchange_fee).dividedBy(FEE_FACTOR);
|
|
1484
|
+
var result = term.minus(term.multipliedBy(fee));
|
|
1485
|
+
return result.integerValue(BigNumber.ROUND_DOWN).shiftedBy(-precision);
|
|
1486
|
+
};
|
|
1487
|
+
var compute_transfer_curve = function compute_transfer_curve(reserve_in, reserve_out, amount_in, exchange_fee, precision, amplifier) {
|
|
1488
|
+
if (amplifier === 0) {
|
|
1489
|
+
return compute_transfer(new BigNumber(reserve_in), new BigNumber(reserve_out), new BigNumber(amount_in), exchange_fee, precision);
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
var MAX_ITERATIONS = 10;
|
|
1493
|
+
var sum = reserve_in + reserve_out;
|
|
1494
|
+
var D = sum;
|
|
1495
|
+
var D_prev = 0;
|
|
1496
|
+
|
|
1497
|
+
var F = function F(v) {
|
|
1498
|
+
return (v >= 0 ? 1 : -1) * Math.floor(Math.abs(v));
|
|
1499
|
+
};
|
|
1500
|
+
|
|
1501
|
+
var i = MAX_ITERATIONS;
|
|
1502
|
+
|
|
1503
|
+
while (D != D_prev && i--) {
|
|
1504
|
+
var prod1 = F(F(D * D / (reserve_in * 2)) * D / (reserve_out * 2));
|
|
1505
|
+
D_prev = D;
|
|
1506
|
+
D = F(2 * D * (amplifier * sum + prod1) / ((2 * amplifier - 1) * D + 3 * prod1));
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
var b = reserve_in + amount_in + F(D / (amplifier * 2)) - D;
|
|
1510
|
+
var c = F(F(D * D / ((reserve_in + amount_in) * 2)) * D / (amplifier * 4));
|
|
1511
|
+
var x = D,
|
|
1512
|
+
x_prev = 0;
|
|
1513
|
+
i = MAX_ITERATIONS;
|
|
1514
|
+
|
|
1515
|
+
while (x != x_prev && i--) {
|
|
1516
|
+
x_prev = F(x);
|
|
1517
|
+
x = +new BigNumber(x * x + c).dividedBy(2 * x + b).toFixed(0, BigNumber.ROUND_DOWN);
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
if (reserve_out <= x) {
|
|
1521
|
+
throw new Error("curve: insufficient reserve out");
|
|
1522
|
+
} // Amount out + Fee + 1
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
var amount_out_with_fee = new BigNumber(reserve_out - x); // Fee + 1
|
|
1526
|
+
// +1 covers small precision issues
|
|
1527
|
+
|
|
1528
|
+
var fee = amount_out_with_fee.multipliedBy(exchange_fee).dividedBy(FEE_FACTOR).plus(1).toFixed(0, BigNumber.ROUND_DOWN); // Amount out
|
|
1529
|
+
|
|
1530
|
+
var amount_out = amount_out_with_fee.minus(fee);
|
|
1531
|
+
return amount_out.integerValue(BigNumber.ROUND_DOWN).shiftedBy(-precision);
|
|
1532
|
+
};
|
|
1533
|
+
var compute_liquidity = function compute_liquidity(amount_lt, pool, lt_supply, precision) {
|
|
1534
|
+
var over = amount_lt.multipliedBy(pool);
|
|
1535
|
+
var under = lt_supply;
|
|
1536
|
+
var result = over.dividedBy(under).integerValue(BigNumber.ROUND_DOWN);
|
|
1537
|
+
return +result.shiftedBy(-precision).toFixed(precision, BigNumber.ROUND_DOWN);
|
|
1538
|
+
};
|
|
1539
|
+
var isInputInvalid = function isInputInvalid(data, value, pool) {
|
|
1540
|
+
value = String(value);
|
|
1541
|
+
var isBackspace = data === null;
|
|
1542
|
+
var isNumber = !/[0-9]|\./.test(data);
|
|
1543
|
+
var isDoubleDot = data === '.' && value.indexOf('.') !== value.length - 1;
|
|
1544
|
+
var isPrecisionTooHigh = value && value.indexOf('.') !== -1 && value.split('.')[1].length > pool.xtokenPrecision;
|
|
1545
|
+
var isInvalid = !isBackspace && Boolean(isNumber || isDoubleDot || isPrecisionTooHigh);
|
|
1546
|
+
return isInvalid;
|
|
1547
|
+
};
|
|
1548
|
+
var applyDiscountToFee = function applyDiscountToFee(fee, staked) {
|
|
1549
|
+
if (staked >= 10000000) {
|
|
1550
|
+
return fee * 0;
|
|
1551
|
+
} else if (staked >= 1000000) {
|
|
1552
|
+
return fee * 0.33;
|
|
1553
|
+
} else if (staked >= 100000) {
|
|
1554
|
+
return fee * 0.66;
|
|
1555
|
+
} else {
|
|
1556
|
+
return fee;
|
|
1557
|
+
}
|
|
1558
|
+
};
|
|
1226
1559
|
|
|
1227
|
-
export { Chains, ExtendedAssetParser, Networks, Status, Type, WRAP_AUTH_ACTION, WRAP_CONTRACT, accountParser, addressParser, authorizationParser, authorizationsParser, baseActionParser, baseActionSerializedParser, bloksRatesParser, createAbstractAuthParser, depositBodyParser, exchangeRateParser, exchangeRatesParser, explorerLinkByChain, generateAddressBodyParser, generateAddressResponse, generateAuthParser, initializeCoins, initializeConstants, isSameToken, otcOrderResponseParser, otcQuoteBodyParser, otcQuoteResponseParser, rateParser, similarChains, singleActionTransactionParser, transactionParser, webauthActionParser, withdrawBodyParser, withdrawHistoryMetalResponseParser, withdrawHistoryMetalSwapParser, withdrawMetalResponseParser, withdrawalFeeQuoteParser, wrapParser, wrapSetConfParser, wrapStartParser };
|
|
1560
|
+
export { Chains, ExtendedAssetParser, FEE_FACTOR, Graph, ILink, INode, Networks, Status, Type, WRAP_AUTH_ACTION, WRAP_CONTRACT, accountParser, addressParser, applyDiscountToFee, authorizationParser, authorizationsParser, baseActionParser, baseActionSerializedParser, bloksRatesParser, compute_liquidity, compute_transfer, compute_transfer_curve, createAbstractAuthParser, depositBodyParser, exchangeRateParser, exchangeRatesParser, explorerLinkByChain, generateAddressBodyParser, generateAddressResponse, generateAuthParser, initializeCoins, initializeConstants, isInputInvalid, isSameToken, median, otcOrderResponseParser, otcQuoteBodyParser, otcQuoteResponseParser, rateParser, similarChains, singleActionTransactionParser, transactionParser, webauthActionParser, withdrawBodyParser, withdrawHistoryMetalResponseParser, withdrawHistoryMetalSwapParser, withdrawMetalResponseParser, withdrawalFeeQuoteParser, wrapParser, wrapSetConfParser, wrapStartParser };
|
|
1228
1561
|
//# sourceMappingURL=wrap-constants.esm.js.map
|