@pioneer-platform/uniswap-client 0.0.21 → 0.0.22
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/lib/index.js +91 -20
- package/package.json +3 -2
package/lib/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var log = require('@pioneer-platform/loggerdog')();
|
|
|
64
64
|
var _a = require("@pioneer-platform/pioneer-caip"), caipToNetworkId = _a.caipToNetworkId, shortListSymbolToCaip = _a.shortListSymbolToCaip, ChainToNetworkId = _a.ChainToNetworkId;
|
|
65
65
|
var permit2_sdk_1 = require("@uniswap/permit2-sdk");
|
|
66
66
|
var _b = require('@pioneer-platform/pioneer-coins'), createMemo = _b.createMemo, parseMemo = _b.parseMemo;
|
|
67
|
-
var _c = require('@uniswap/v2-sdk'), Pair = _c.Pair,
|
|
67
|
+
var _c = require('@uniswap/v2-sdk'), Pair = _c.Pair, Route = _c.Route, Trade = _c.Trade, TokenAmount = _c.TokenAmount, WETH = _c.WETH; // Import necessary components from v2-sdk
|
|
68
68
|
var constants_1 = require("./constants");
|
|
69
69
|
// import JSBI from 'jsbi'
|
|
70
70
|
// import { ethers } from 'ethers'
|
|
@@ -93,10 +93,16 @@ module.exports = {
|
|
|
93
93
|
getQuote: function (quote) {
|
|
94
94
|
return get_quote(quote);
|
|
95
95
|
},
|
|
96
|
+
getRateUsd: function (token, chainId) {
|
|
97
|
+
return getRateUsd(token, chainId);
|
|
98
|
+
},
|
|
96
99
|
// //buildSwapTx
|
|
97
100
|
buildSwapTx: function (quote, permitSig) {
|
|
98
101
|
return buildSwapTx(quote);
|
|
99
102
|
},
|
|
103
|
+
buildPermitTx: function (input) {
|
|
104
|
+
return build_permit_tx(input);
|
|
105
|
+
}
|
|
100
106
|
// buildApprovalTx: function (approval:any) {
|
|
101
107
|
// return build_approval_tx(approval);
|
|
102
108
|
// }
|
|
@@ -294,7 +300,7 @@ var getRoute = function (_a) {
|
|
|
294
300
|
return __generator(this, function (_b) {
|
|
295
301
|
switch (_b.label) {
|
|
296
302
|
case 0:
|
|
297
|
-
tag = " |
|
|
303
|
+
tag = " | getRoute | ";
|
|
298
304
|
_b.label = 1;
|
|
299
305
|
case 1:
|
|
300
306
|
_b.trys.push([1, 3, , 4]);
|
|
@@ -311,7 +317,7 @@ var getRoute = function (_a) {
|
|
|
311
317
|
return [2 /*return*/, route];
|
|
312
318
|
case 3:
|
|
313
319
|
e_1 = _b.sent();
|
|
314
|
-
console.error(tag, "Error in
|
|
320
|
+
console.error(tag, "Error in getRoute: ", e_1);
|
|
315
321
|
throw e_1;
|
|
316
322
|
case 4: return [2 /*return*/];
|
|
317
323
|
}
|
|
@@ -371,7 +377,14 @@ var buildSwapTx = function (_a) {
|
|
|
371
377
|
case 2:
|
|
372
378
|
deadline = _b.sent();
|
|
373
379
|
log.info(tag, "deadline: ", deadline);
|
|
374
|
-
|
|
380
|
+
log.info(tag, "permit FINAL: ", permit);
|
|
381
|
+
log.info(tag, "INPUT FINAL: ", trade, {
|
|
382
|
+
recipient: from,
|
|
383
|
+
slippageTolerance: slippageTolerance,
|
|
384
|
+
deadlineOrPreviousBlockhash: deadline,
|
|
385
|
+
inputTokenPermit: permit,
|
|
386
|
+
// fee: options.feeOptions,
|
|
387
|
+
});
|
|
375
388
|
responseRouter = universal_router_sdk_1.SwapRouter.swapERC20CallParameters(trade, {
|
|
376
389
|
recipient: from,
|
|
377
390
|
slippageTolerance: slippageTolerance,
|
|
@@ -421,10 +434,64 @@ var buildSwapTx = function (_a) {
|
|
|
421
434
|
});
|
|
422
435
|
});
|
|
423
436
|
};
|
|
437
|
+
var getRateUsd = function (token, chainId) {
|
|
438
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
439
|
+
var tag, providerUrl, provider, sellTokenContract, path, sellTokenDecimals, _a, sellToken, buyToken, route, trade, amountOut, e_4;
|
|
440
|
+
return __generator(this, function (_b) {
|
|
441
|
+
switch (_b.label) {
|
|
442
|
+
case 0:
|
|
443
|
+
tag = TAG + " | getRateUsd | ";
|
|
444
|
+
_b.label = 1;
|
|
445
|
+
case 1:
|
|
446
|
+
_b.trys.push([1, 6, , 7]);
|
|
447
|
+
providerUrl = EIP155_MAINNET_CHAINS['eip155:' + chainId].rpc;
|
|
448
|
+
provider = new ethers.providers.JsonRpcProvider(providerUrl);
|
|
449
|
+
sellTokenContract = new ethers.Contract(token, ERC20_ABI, provider);
|
|
450
|
+
path = [sellTokenContract.address, EIP155_MAINNET_CHAINS['eip155:' + chainId].WETH];
|
|
451
|
+
if (!(token !== ethers.constants.AddressZero)) return [3 /*break*/, 3];
|
|
452
|
+
return [4 /*yield*/, new ethers.Contract(token, ERC20_ABI, provider).decimals()];
|
|
453
|
+
case 2:
|
|
454
|
+
_a = _b.sent();
|
|
455
|
+
return [3 /*break*/, 4];
|
|
456
|
+
case 3:
|
|
457
|
+
_a = 18;
|
|
458
|
+
_b.label = 4;
|
|
459
|
+
case 4:
|
|
460
|
+
sellTokenDecimals = _a;
|
|
461
|
+
log.info("".concat(tag, " sellTokenDecimals: ").concat(sellTokenDecimals));
|
|
462
|
+
sellToken = new sdk_core_1.Token(parseInt(chainId), token, sellTokenDecimals);
|
|
463
|
+
console.log('WETH[ChainId.MAINNET]: ', EIP155_MAINNET_CHAINS['eip155:' + chainId].WETH);
|
|
464
|
+
buyToken = new sdk_core_1.Token(parseInt(chainId), EIP155_MAINNET_CHAINS['eip155:' + chainId].WETH, sellTokenDecimals);
|
|
465
|
+
return [4 /*yield*/, getRoute({
|
|
466
|
+
sellToken: sellToken,
|
|
467
|
+
buyToken: buyToken,
|
|
468
|
+
chainId: parseInt(chainId),
|
|
469
|
+
amountIn: ethers.utils.parseUnits('1', sellTokenDecimals),
|
|
470
|
+
provider: provider
|
|
471
|
+
})];
|
|
472
|
+
case 5:
|
|
473
|
+
route = _b.sent();
|
|
474
|
+
console.log("route: ", route);
|
|
475
|
+
if (!route)
|
|
476
|
+
throw new Error("missing route, failed to find route");
|
|
477
|
+
trade = route.trade;
|
|
478
|
+
log.info(tag, "trade: ", trade);
|
|
479
|
+
amountOut = trade.swaps[0].outputAmount;
|
|
480
|
+
log.info(tag, "amountOut: ", amountOut);
|
|
481
|
+
return [2 /*return*/, amountOut.toFixed(18)];
|
|
482
|
+
case 6:
|
|
483
|
+
e_4 = _b.sent();
|
|
484
|
+
console.error(e_4);
|
|
485
|
+
return [3 /*break*/, 7];
|
|
486
|
+
case 7: return [2 /*return*/];
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
};
|
|
424
491
|
var buildApprovalTx = function (_a) {
|
|
425
492
|
var from = _a.from, contract = _a.contract, address = _a.address, chainId = _a.chainId, provider = _a.provider;
|
|
426
493
|
return __awaiter(this, void 0, void 0, function () {
|
|
427
|
-
var tag, data, value, nonce, gas, estimatedGas,
|
|
494
|
+
var tag, data, value, nonce, gas, estimatedGas, e_5, gasPrice, adjustedGasPrice, tx, e_6;
|
|
428
495
|
return __generator(this, function (_b) {
|
|
429
496
|
switch (_b.label) {
|
|
430
497
|
case 0:
|
|
@@ -457,8 +524,8 @@ var buildApprovalTx = function (_a) {
|
|
|
457
524
|
gas = "0x".concat(estimatedGas.toString(16));
|
|
458
525
|
return [3 /*break*/, 6];
|
|
459
526
|
case 5:
|
|
460
|
-
|
|
461
|
-
console.error("Error in estimateGas: ",
|
|
527
|
+
e_5 = _b.sent();
|
|
528
|
+
console.error("Error in estimateGas: ", e_5);
|
|
462
529
|
//@TODO get custom gas limit defaults per chain
|
|
463
530
|
gas = "0x".concat(BigInt("335120").toString(16));
|
|
464
531
|
return [3 /*break*/, 6];
|
|
@@ -469,8 +536,8 @@ var buildApprovalTx = function (_a) {
|
|
|
469
536
|
tx = __assign(__assign({ from: from, to: contract.address, chainId: chainId, data: data }, (value && !isZero(value) ? { value: (0, v3_sdk_1.toHex)(value) } : {})), { gas: gas, gasPrice: (0, v3_sdk_1.toHex)(adjustedGasPrice), nonce: (0, v3_sdk_1.toHex)(nonce) });
|
|
470
537
|
return [2 /*return*/, tx];
|
|
471
538
|
case 8:
|
|
472
|
-
|
|
473
|
-
console.error(
|
|
539
|
+
e_6 = _b.sent();
|
|
540
|
+
console.error(e_6);
|
|
474
541
|
return [3 /*break*/, 9];
|
|
475
542
|
case 9: return [2 /*return*/];
|
|
476
543
|
}
|
|
@@ -483,7 +550,7 @@ function toDeadline(expiration) {
|
|
|
483
550
|
var build_permit_tx = function (_a) {
|
|
484
551
|
var from = _a.from, token = _a.token, amount = _a.amount, chainId = _a.chainId;
|
|
485
552
|
return __awaiter(this, void 0, void 0, function () {
|
|
486
|
-
var PERMIT_EXPIRATION, PERMIT_SIG_EXPIRATION, providerUrl, provider, nonce, permit, fullResponse, domain, types, values, typedData, tx,
|
|
553
|
+
var PERMIT_EXPIRATION, PERMIT_SIG_EXPIRATION, providerUrl, provider, nonce, permit, fullResponse, domain, types, values, typedData, tx, e_7;
|
|
487
554
|
return __generator(this, function (_b) {
|
|
488
555
|
switch (_b.label) {
|
|
489
556
|
case 0:
|
|
@@ -503,11 +570,12 @@ var build_permit_tx = function (_a) {
|
|
|
503
570
|
token: token,
|
|
504
571
|
amount: amount,
|
|
505
572
|
expiration: toDeadline(PERMIT_EXPIRATION),
|
|
506
|
-
nonce:
|
|
573
|
+
nonce: 0,
|
|
507
574
|
},
|
|
508
|
-
spender:
|
|
575
|
+
spender: EIP155_MAINNET_CHAINS['eip155:' + chainId].universalRouter,
|
|
509
576
|
sigDeadline: toDeadline(PERMIT_SIG_EXPIRATION),
|
|
510
577
|
};
|
|
578
|
+
console.log("permit: ", permit);
|
|
511
579
|
fullResponse = permit2_sdk_1.AllowanceTransfer.getPermitData(permit, permit2_sdk_1.PERMIT2_ADDRESS, chainId);
|
|
512
580
|
log.info("fullResponse: ", fullResponse);
|
|
513
581
|
domain = fullResponse.domain, types = fullResponse.types, values = fullResponse.values;
|
|
@@ -532,8 +600,8 @@ var build_permit_tx = function (_a) {
|
|
|
532
600
|
};
|
|
533
601
|
return [2 /*return*/, tx];
|
|
534
602
|
case 2:
|
|
535
|
-
|
|
536
|
-
console.error(
|
|
603
|
+
e_7 = _b.sent();
|
|
604
|
+
console.error(e_7);
|
|
537
605
|
return [3 /*break*/, 3];
|
|
538
606
|
case 3: return [2 /*return*/];
|
|
539
607
|
}
|
|
@@ -542,7 +610,7 @@ var build_permit_tx = function (_a) {
|
|
|
542
610
|
};
|
|
543
611
|
var get_quote = function (quote) {
|
|
544
612
|
return __awaiter(this, void 0, void 0, function () {
|
|
545
|
-
var tag, output, slippageTolerance, recipient, inputChain, outputChain, providerUrl, chainIdInt, provider, sellTokenContract, buyTokenContract, buyTokenAddress_1, balance, sellTokenAddress_1, permit2, router, planner, sellAmountBigNumber, path, permit2Address, currentAllowance, allowanceTx, formattedAllowanceTx, _a, sellTokenAddress, buyTokenAddress, sellTokenDecimals, _b, buyTokenDecimals, _c, amountInBigNumber, sellToken, buyToken, route, trade, amountOut, PERMIT_EXPIRATION, PERMIT_SIG_EXPIRATION, nonce, permit, tx,
|
|
613
|
+
var tag, output, slippageTolerance, recipient, inputChain, outputChain, providerUrl, chainIdInt, provider, sellTokenContract, buyTokenContract, buyTokenAddress_1, balance, sellTokenAddress_1, permit2, router, planner, sellAmountBigNumber, path, permit2Address, currentAllowance, allowanceTx, formattedAllowanceTx, _a, sellTokenAddress, buyTokenAddress, sellTokenDecimals, _b, buyTokenDecimals, _c, amountInBigNumber, sellToken, buyToken, route, trade, amountOut, PERMIT_EXPIRATION, PERMIT_SIG_EXPIRATION, nonce, permit, tx, e_8;
|
|
546
614
|
return __generator(this, function (_d) {
|
|
547
615
|
switch (_d.label) {
|
|
548
616
|
case 0:
|
|
@@ -563,6 +631,8 @@ var get_quote = function (quote) {
|
|
|
563
631
|
throw new Error("missing recipientAddress");
|
|
564
632
|
if (!quote.slippage)
|
|
565
633
|
throw new Error("missing slippage");
|
|
634
|
+
if (!quote.permit2)
|
|
635
|
+
throw new Error("missing permit2, required for uniswap");
|
|
566
636
|
output.txs = [];
|
|
567
637
|
slippageTolerance = quote.slippage;
|
|
568
638
|
recipient = quote.recipientAddress;
|
|
@@ -697,11 +767,12 @@ var get_quote = function (quote) {
|
|
|
697
767
|
token: sellToken.address,
|
|
698
768
|
amount: "1000000000000000000000000",
|
|
699
769
|
expiration: toDeadline(PERMIT_EXPIRATION),
|
|
700
|
-
nonce:
|
|
770
|
+
nonce: 0,
|
|
701
771
|
},
|
|
702
|
-
spender:
|
|
772
|
+
spender: EIP155_MAINNET_CHAINS['eip155:' + chainIdInt].universalRouter,
|
|
703
773
|
sigDeadline: toDeadline(PERMIT_SIG_EXPIRATION),
|
|
704
774
|
};
|
|
775
|
+
permit.signature = quote.permit2;
|
|
705
776
|
return [4 /*yield*/, buildSwapTx({ trade: trade, permit: permit, from: quote.senderAddress, chainId: chainIdInt, provider: provider })];
|
|
706
777
|
case 15:
|
|
707
778
|
tx = _d.sent();
|
|
@@ -721,9 +792,9 @@ var get_quote = function (quote) {
|
|
|
721
792
|
output.id = uuid();
|
|
722
793
|
return [2 /*return*/, output];
|
|
723
794
|
case 16:
|
|
724
|
-
|
|
725
|
-
console.error(tag, "e: ",
|
|
726
|
-
throw
|
|
795
|
+
e_8 = _d.sent();
|
|
796
|
+
console.error(tag, "e: ", e_8);
|
|
797
|
+
throw e_8;
|
|
727
798
|
case 17: return [2 /*return*/];
|
|
728
799
|
}
|
|
729
800
|
});
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pioneer-platform/uniswap-client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
7
|
+
"@keepkey/keepkey-sdk": "^0.2.57",
|
|
7
8
|
"@pioneer-platform/loggerdog": "^8.3.1",
|
|
8
9
|
"@pioneer-platform/maya-network": "^8.3.7",
|
|
9
10
|
"@pioneer-platform/pioneer-caip": "^9.2.23",
|
|
@@ -13,8 +14,8 @@
|
|
|
13
14
|
"@uniswap/sdk": "^3.0.3",
|
|
14
15
|
"@uniswap/sdk-core": "^4.0.7",
|
|
15
16
|
"@uniswap/smart-order-router": "^3.16.25",
|
|
16
|
-
"@uniswap/universal-router-sdk": "^1.5.7",
|
|
17
17
|
"@uniswap/token-lists": "^1.0.0-beta.34",
|
|
18
|
+
"@uniswap/universal-router-sdk": "^1.5.7",
|
|
18
19
|
"@uniswap/v2-sdk": "^3.2.1",
|
|
19
20
|
"@uniswap/v3-sdk": "^3.10.0",
|
|
20
21
|
"axios": "^1.3.4",
|