@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.
Files changed (2) hide show
  1. package/lib/index.js +116 -42
  2. 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, WETH = _c.WETH, Route = _c.Route, Trade = _c.Trade, TokenAmount = _c.TokenAmount; // Import necessary components from v2-sdk
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
- // buildApprovalTx: function (approval:any) {
98
- // return build_approval_tx(approval);
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 = " | getMinAmountOut | ";
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 getMinAmountOut: ", e_1);
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
- // inputTokenPermit: options.permit,
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, e_4, gasPrice, adjustedGasPrice, tx, e_5;
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
- e_4 = _b.sent();
460
- console.error("Error in estimateGas: ", e_4);
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
- e_5 = _b.sent();
472
- console.error(e_5);
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, e_6;
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: nonce,
573
+ nonce: 0,
506
574
  },
507
- spender: from,
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
- e_6 = _b.sent();
535
- console.error(e_6);
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, tx, tx2, e_7;
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, 15, , 16]);
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
- return [4 /*yield*/, build_permit_tx({
690
- from: quote.senderAddress,
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
- chainId: chainIdInt
694
- })
695
- //
696
- ];
697
- case 14:
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(tx);
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
- inputs: ['permit2sig'],
706
- txParams: {}
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 15:
721
- e_7 = _d.sent();
722
- console.error(tag, "e: ", e_7);
723
- throw e_7;
724
- case 16: return [2 /*return*/];
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.20",
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",