@pioneer-platform/uniswap-client 0.0.20 → 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 +116 -42
- 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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
buildSwapTx: function (quote, permitSig) {
|
|
101
|
+
return buildSwapTx(quote);
|
|
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
|
}
|
|
@@ -350,7 +356,7 @@ var getDeadline = function (provider) { return __awaiter(void 0, void 0, void 0,
|
|
|
350
356
|
});
|
|
351
357
|
}); };
|
|
352
358
|
var buildSwapTx = function (_a) {
|
|
353
|
-
var trade = _a.trade, from = _a.from, chainId = _a.chainId, provider = _a.provider;
|
|
359
|
+
var trade = _a.trade, permit = _a.permit, from = _a.from, chainId = _a.chainId, provider = _a.provider;
|
|
354
360
|
return __awaiter(this, void 0, void 0, function () {
|
|
355
361
|
var tag, BIPS_BASE, slippageTolerance, deadline, responseRouter, data, value, nonce, gas, estimatedGas, e_2, gasPrice, adjustedGasPrice, tx, e_3;
|
|
356
362
|
return __generator(this, function (_b) {
|
|
@@ -371,11 +377,19 @@ var buildSwapTx = function (_a) {
|
|
|
371
377
|
case 2:
|
|
372
378
|
deadline = _b.sent();
|
|
373
379
|
log.info(tag, "deadline: ", deadline);
|
|
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
|
+
});
|
|
374
388
|
responseRouter = universal_router_sdk_1.SwapRouter.swapERC20CallParameters(trade, {
|
|
375
389
|
recipient: from,
|
|
376
390
|
slippageTolerance: slippageTolerance,
|
|
377
391
|
deadlineOrPreviousBlockhash: deadline,
|
|
378
|
-
|
|
392
|
+
inputTokenPermit: permit,
|
|
379
393
|
// fee: options.feeOptions,
|
|
380
394
|
});
|
|
381
395
|
log.info(tag, "responseRouter: ", responseRouter);
|
|
@@ -420,10 +434,64 @@ var buildSwapTx = function (_a) {
|
|
|
420
434
|
});
|
|
421
435
|
});
|
|
422
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
|
+
};
|
|
423
491
|
var buildApprovalTx = function (_a) {
|
|
424
492
|
var from = _a.from, contract = _a.contract, address = _a.address, chainId = _a.chainId, provider = _a.provider;
|
|
425
493
|
return __awaiter(this, void 0, void 0, function () {
|
|
426
|
-
var tag, data, value, nonce, gas, estimatedGas,
|
|
494
|
+
var tag, data, value, nonce, gas, estimatedGas, e_5, gasPrice, adjustedGasPrice, tx, e_6;
|
|
427
495
|
return __generator(this, function (_b) {
|
|
428
496
|
switch (_b.label) {
|
|
429
497
|
case 0:
|
|
@@ -456,8 +524,8 @@ var buildApprovalTx = function (_a) {
|
|
|
456
524
|
gas = "0x".concat(estimatedGas.toString(16));
|
|
457
525
|
return [3 /*break*/, 6];
|
|
458
526
|
case 5:
|
|
459
|
-
|
|
460
|
-
console.error("Error in estimateGas: ",
|
|
527
|
+
e_5 = _b.sent();
|
|
528
|
+
console.error("Error in estimateGas: ", e_5);
|
|
461
529
|
//@TODO get custom gas limit defaults per chain
|
|
462
530
|
gas = "0x".concat(BigInt("335120").toString(16));
|
|
463
531
|
return [3 /*break*/, 6];
|
|
@@ -468,8 +536,8 @@ var buildApprovalTx = function (_a) {
|
|
|
468
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) });
|
|
469
537
|
return [2 /*return*/, tx];
|
|
470
538
|
case 8:
|
|
471
|
-
|
|
472
|
-
console.error(
|
|
539
|
+
e_6 = _b.sent();
|
|
540
|
+
console.error(e_6);
|
|
473
541
|
return [3 /*break*/, 9];
|
|
474
542
|
case 9: return [2 /*return*/];
|
|
475
543
|
}
|
|
@@ -482,7 +550,7 @@ function toDeadline(expiration) {
|
|
|
482
550
|
var build_permit_tx = function (_a) {
|
|
483
551
|
var from = _a.from, token = _a.token, amount = _a.amount, chainId = _a.chainId;
|
|
484
552
|
return __awaiter(this, void 0, void 0, function () {
|
|
485
|
-
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;
|
|
486
554
|
return __generator(this, function (_b) {
|
|
487
555
|
switch (_b.label) {
|
|
488
556
|
case 0:
|
|
@@ -502,11 +570,12 @@ var build_permit_tx = function (_a) {
|
|
|
502
570
|
token: token,
|
|
503
571
|
amount: amount,
|
|
504
572
|
expiration: toDeadline(PERMIT_EXPIRATION),
|
|
505
|
-
nonce:
|
|
573
|
+
nonce: 0,
|
|
506
574
|
},
|
|
507
|
-
spender:
|
|
575
|
+
spender: EIP155_MAINNET_CHAINS['eip155:' + chainId].universalRouter,
|
|
508
576
|
sigDeadline: toDeadline(PERMIT_SIG_EXPIRATION),
|
|
509
577
|
};
|
|
578
|
+
console.log("permit: ", permit);
|
|
510
579
|
fullResponse = permit2_sdk_1.AllowanceTransfer.getPermitData(permit, permit2_sdk_1.PERMIT2_ADDRESS, chainId);
|
|
511
580
|
log.info("fullResponse: ", fullResponse);
|
|
512
581
|
domain = fullResponse.domain, types = fullResponse.types, values = fullResponse.values;
|
|
@@ -531,8 +600,8 @@ var build_permit_tx = function (_a) {
|
|
|
531
600
|
};
|
|
532
601
|
return [2 /*return*/, tx];
|
|
533
602
|
case 2:
|
|
534
|
-
|
|
535
|
-
console.error(
|
|
603
|
+
e_7 = _b.sent();
|
|
604
|
+
console.error(e_7);
|
|
536
605
|
return [3 /*break*/, 3];
|
|
537
606
|
case 3: return [2 /*return*/];
|
|
538
607
|
}
|
|
@@ -541,14 +610,14 @@ var build_permit_tx = function (_a) {
|
|
|
541
610
|
};
|
|
542
611
|
var get_quote = function (quote) {
|
|
543
612
|
return __awaiter(this, void 0, void 0, function () {
|
|
544
|
-
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,
|
|
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;
|
|
545
614
|
return __generator(this, function (_d) {
|
|
546
615
|
switch (_d.label) {
|
|
547
616
|
case 0:
|
|
548
617
|
tag = TAG + " | get_quote | ";
|
|
549
618
|
_d.label = 1;
|
|
550
619
|
case 1:
|
|
551
|
-
_d.trys.push([1,
|
|
620
|
+
_d.trys.push([1, 16, , 17]);
|
|
552
621
|
output = {};
|
|
553
622
|
if (!quote.sellAsset)
|
|
554
623
|
throw new Error("missing sellAsset");
|
|
@@ -562,6 +631,8 @@ var get_quote = function (quote) {
|
|
|
562
631
|
throw new Error("missing recipientAddress");
|
|
563
632
|
if (!quote.slippage)
|
|
564
633
|
throw new Error("missing slippage");
|
|
634
|
+
if (!quote.permit2)
|
|
635
|
+
throw new Error("missing permit2, required for uniswap");
|
|
565
636
|
output.txs = [];
|
|
566
637
|
slippageTolerance = quote.slippage;
|
|
567
638
|
recipient = quote.recipientAddress;
|
|
@@ -686,29 +757,32 @@ var get_quote = function (quote) {
|
|
|
686
757
|
amountOut = trade.swaps[0].outputAmount;
|
|
687
758
|
log.info(tag, "amountOut: ", amountOut);
|
|
688
759
|
output.amountOut = amountOut.toFixed(18);
|
|
689
|
-
|
|
690
|
-
|
|
760
|
+
PERMIT_EXPIRATION = 2592000000;
|
|
761
|
+
PERMIT_SIG_EXPIRATION = 1800000;
|
|
762
|
+
return [4 /*yield*/, provider.getTransactionCount(quote.senderAddress, "latest")];
|
|
763
|
+
case 14:
|
|
764
|
+
nonce = _d.sent();
|
|
765
|
+
permit = {
|
|
766
|
+
details: {
|
|
691
767
|
token: sellToken.address,
|
|
692
768
|
amount: "1000000000000000000000000",
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
769
|
+
expiration: toDeadline(PERMIT_EXPIRATION),
|
|
770
|
+
nonce: 0,
|
|
771
|
+
},
|
|
772
|
+
spender: EIP155_MAINNET_CHAINS['eip155:' + chainIdInt].universalRouter,
|
|
773
|
+
sigDeadline: toDeadline(PERMIT_SIG_EXPIRATION),
|
|
774
|
+
};
|
|
775
|
+
permit.signature = quote.permit2;
|
|
776
|
+
return [4 /*yield*/, buildSwapTx({ trade: trade, permit: permit, from: quote.senderAddress, chainId: chainIdInt, provider: provider })];
|
|
777
|
+
case 15:
|
|
698
778
|
tx = _d.sent();
|
|
699
|
-
|
|
700
|
-
output.txs.push(
|
|
701
|
-
tx2 = {
|
|
779
|
+
log.info(tag, "tx: ", tx);
|
|
780
|
+
output.txs.push({
|
|
702
781
|
type: "evm",
|
|
703
782
|
description: 'swap tokens',
|
|
704
783
|
chain: inputChain,
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
};
|
|
708
|
-
output.txs.push(tx2);
|
|
709
|
-
//amountOutMin
|
|
710
|
-
// let tx = await buildTx({trade,from:quote.senderAddress, chainId:chainIdInt, provider})
|
|
711
|
-
// log.info(tag,"tx: ",tx)
|
|
784
|
+
txParams: tx
|
|
785
|
+
});
|
|
712
786
|
output.meta = {
|
|
713
787
|
quoteMode: "ERC20-ERC20"
|
|
714
788
|
};
|
|
@@ -717,11 +791,11 @@ var get_quote = function (quote) {
|
|
|
717
791
|
output.type = 'EVM';
|
|
718
792
|
output.id = uuid();
|
|
719
793
|
return [2 /*return*/, output];
|
|
720
|
-
case
|
|
721
|
-
|
|
722
|
-
console.error(tag, "e: ",
|
|
723
|
-
throw
|
|
724
|
-
case
|
|
794
|
+
case 16:
|
|
795
|
+
e_8 = _d.sent();
|
|
796
|
+
console.error(tag, "e: ", e_8);
|
|
797
|
+
throw e_8;
|
|
798
|
+
case 17: return [2 /*return*/];
|
|
725
799
|
}
|
|
726
800
|
});
|
|
727
801
|
});
|
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",
|