@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.
Files changed (2) hide show
  1. package/lib/index.js +91 -20
  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
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 = " | 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
  }
@@ -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
- permit.signature = "0x3e1d72164c5656b61bb438fd0527cf317451d334e54468ab58dfd54eb12cae6f3aafdff7d8f7952e6935a463a7920c1a16298694a976496d40918d718260cc781b";
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, e_4, gasPrice, adjustedGasPrice, tx, e_5;
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
- e_4 = _b.sent();
461
- console.error("Error in estimateGas: ", e_4);
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
- e_5 = _b.sent();
473
- console.error(e_5);
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, e_6;
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: nonce,
573
+ nonce: 0,
507
574
  },
508
- spender: from,
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
- e_6 = _b.sent();
536
- console.error(e_6);
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, 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;
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: nonce,
770
+ nonce: 0,
701
771
  },
702
- spender: quote.senderAddress,
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
- e_7 = _d.sent();
725
- console.error(tag, "e: ", e_7);
726
- throw e_7;
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.21",
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",