flash-sdk 9.0.2 → 9.0.3-alpha.1

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.
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
@@ -638,24 +638,41 @@ var PerpetualsClient = (function () {
638
638
  var averageEntryPrice = totalValue.div(totalSize);
639
639
  return averageEntryPrice;
640
640
  };
641
- this.getLeverageSync = function (sizeUsd, collateralAmount, collateralMinOraclePrice, collateralTokenDecimals, pnlUsd) {
642
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenDecimals);
643
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd);
644
- if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
645
- return sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentCollateralUsdIncludingPnl);
641
+ this.getLeverageContractHelper = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
642
+ var pnl = _this.getPnlSync(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
643
+ var exitFee = _this.getExitFeeSync(positionAccount, targetCustodyAccount, collateralCustodyAccount, collateralPrice, collateralEmaPrice);
644
+ var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
645
+ var unsettledFeesUsd = exitFee.exitFeeUsd.add(lockFeeUsd);
646
+ var lossUsd = pnl.lossUsd.add(unsettledFeesUsd);
647
+ var currentMarginUsd = constants_1.BN_ZERO;
648
+ if (isInitial) {
649
+ currentMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
650
+ }
651
+ else {
652
+ currentMarginUsd = positionAccount.collateralUsd.add(pnl.profitUsd).sub(lossUsd);
653
+ }
654
+ if (currentMarginUsd.gt(constants_1.BN_ZERO)) {
655
+ return positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentMarginUsd);
646
656
  }
647
657
  else {
648
658
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
649
659
  }
650
660
  };
651
- this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap, pnlUsd) {
661
+ this.getLeverageSync = function (positionAccount, finalCollateralUsd, finalSizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
662
+ positionAccount = positionAccount.clone();
663
+ positionAccount.sizeUsd = finalSizeUsd;
664
+ positionAccount.sizeAmount = targetPrice.getTokenAmount(finalSizeUsd, targetCustodyAccount.decimals);
665
+ positionAccount.collateralUsd = finalCollateralUsd;
666
+ return _this.getLeverageContractHelper(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig);
667
+ };
668
+ this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, pnlUsd) {
652
669
  var finalCollateralAmount = constants_1.BN_ZERO;
653
670
  if (!inputDeltaAmount.isZero()) {
654
671
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
655
672
  finalCollateralAmount = inputDeltaAmount;
656
673
  }
657
674
  else {
658
- var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
675
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
659
676
  finalCollateralAmount = swapAmountOut;
660
677
  }
661
678
  }
@@ -681,9 +698,8 @@ var PerpetualsClient = (function () {
681
698
  entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
682
699
  }
683
700
  var collateralMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
684
- var collateralAmount = positionAccount.collateralAmount.add(finalCollateralAmount);
685
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenCustodyAccount.decimals);
686
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd).sub(openFeeUsd);
701
+ var finalCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(finalCollateralAmount, collateralTokenCustodyAccount.decimals);
702
+ var currentCollateralUsdIncludingPnl = finalCollateralUsd.add(pnlUsd).sub(openFeeUsd);
687
703
  var sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
688
704
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
689
705
  if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
@@ -693,68 +709,6 @@ var PerpetualsClient = (function () {
693
709
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
694
710
  }
695
711
  };
696
- this.getEntryPriceAndFeeSync = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps) {
697
- if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
698
- if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
699
- throw new Error("Delta Amounts cannot be negative.");
700
- }
701
- var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
702
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
703
- if (positionAccount === null) {
704
- var data = __assign({}, types_1.DEFAULT_POSITION);
705
- positionAccount = PositionAccount_1.PositionAccount.from(web3_js_1.PublicKey.default, data);
706
- var sizeUsd_1 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
707
- positionAccount.sizeUsd = sizeUsd_1;
708
- positionAccount.sizeDecimals = targetCustodyAccount.decimals;
709
- positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
710
- positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
711
- }
712
- else {
713
- positionAccount = positionAccount.clone();
714
- var positionEntryPrice = OraclePrice_1.OraclePrice.from({
715
- price: positionAccount.entryPrice.price,
716
- exponent: new anchor_1.BN(positionAccount.entryPrice.exponent),
717
- confidence: constants_1.BN_ZERO,
718
- timestamp: constants_1.BN_ZERO
719
- });
720
- entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
721
- var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
722
- positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
723
- }
724
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
725
- positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
726
- var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
727
- var liquidationPrice = _this.getLiquidationPriceSync(positionAccount.collateralAmount, positionAccount.sizeAmount, entryOraclePrice, lockFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
728
- var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
729
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
730
- var feeUsd = constants_1.BN_ZERO;
731
- var feeAmount = constants_1.BN_ZERO;
732
- var feeUsdAfterDiscount = constants_1.BN_ZERO;
733
- var feeAmountAfterDiscount = constants_1.BN_ZERO;
734
- if (positionAccount !== null && sizeDeltaAmount.isZero()) {
735
- }
736
- else {
737
- feeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.openPosition).div(new anchor_1.BN(constants_1.RATE_POWER));
738
- feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
739
- if (discountBps.gt(constants_1.BN_ZERO)) {
740
- feeUsdAfterDiscount = feeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
741
- feeUsdAfterDiscount = feeUsd.sub(feeUsdAfterDiscount);
742
- feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
743
- }
744
- else {
745
- feeUsdAfterDiscount = feeUsd;
746
- feeAmountAfterDiscount = feeAmount;
747
- }
748
- }
749
- return {
750
- entryOraclePrice: entryOraclePrice,
751
- feeUsd: feeUsd,
752
- feeAmount: feeAmount,
753
- feeUsdAfterDiscount: feeUsdAfterDiscount,
754
- feeAmountAfterDiscount: feeAmountAfterDiscount,
755
- liquidationPrice: liquidationPrice
756
- };
757
- };
758
712
  this.getEntryPriceAndFeeSyncV2 = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps, enableLogs) {
759
713
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
760
714
  if (enableLogs === void 0) { enableLogs = false; }
@@ -766,8 +720,8 @@ var PerpetualsClient = (function () {
766
720
  if (positionAccount === null) {
767
721
  var data = __assign({}, types_1.DEFAULT_POSITION);
768
722
  positionAccount = PositionAccount_1.PositionAccount.from(web3_js_1.PublicKey.default, data);
769
- var sizeUsd_2 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
770
- positionAccount.sizeUsd = sizeUsd_2;
723
+ var sizeUsd_1 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
724
+ positionAccount.sizeUsd = sizeUsd_1;
771
725
  positionAccount.sizeDecimals = targetCustodyAccount.decimals;
772
726
  positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
773
727
  positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
@@ -784,12 +738,13 @@ var PerpetualsClient = (function () {
784
738
  var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
785
739
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
786
740
  }
787
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
741
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
742
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
743
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
788
744
  positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
789
- var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
790
- var liquidationPrice = _this.getLiquidationPriceSync(positionAccount.collateralAmount, positionAccount.sizeAmount, entryOraclePrice, lockFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
745
+ var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
746
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
791
747
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
792
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
793
748
  var feeUsd = constants_1.BN_ZERO;
794
749
  var feeAmount = constants_1.BN_ZERO;
795
750
  var feeUsdAfterDiscount = constants_1.BN_ZERO;
@@ -798,11 +753,11 @@ var PerpetualsClient = (function () {
798
753
  }
799
754
  else {
800
755
  feeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.openPosition).div(new anchor_1.BN(constants_1.RATE_POWER));
801
- feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
756
+ feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
802
757
  if (discountBps.gt(constants_1.BN_ZERO)) {
803
758
  feeUsdAfterDiscount = feeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
804
759
  feeUsdAfterDiscount = feeUsd.sub(feeUsdAfterDiscount);
805
- feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
760
+ feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
806
761
  }
807
762
  else {
808
763
  feeUsdAfterDiscount = feeUsd;
@@ -861,25 +816,26 @@ var PerpetualsClient = (function () {
861
816
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
862
817
  throw new Error("Delta Amounts cannot be negative ");
863
818
  }
864
- resultingPositionAccount.collateralAmount = resultingPositionAccount.collateralAmount.sub(collateralDeltaAmount);
865
- resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
866
819
  if (resultingPositionAccount.collateralAmount.isNeg() || resultingPositionAccount.sizeAmount.isNeg()) {
867
820
  throw new Error("cannot remove/close more than collateral/Size");
868
821
  }
869
822
  var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
870
823
  var exitOraclePrice = _this.getExitOraclePriceSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
871
- var _a = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount), collateralTokenMinOraclePrice = _a.min, collateralTokenMaxOraclePrice = _a.max;
824
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
825
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
826
+ resultingPositionAccount.collateralUsd = resultingPositionAccount.collateralUsd.sub(collateralDeltaUsd);
827
+ resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
872
828
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(resultingPositionAccount, collateralCustodyAccount, currentTimestamp);
873
- var lockAndUnsettledFee = collateralTokenMinOraclePrice.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
829
+ var lockAndUnsettledFee = collateralMinMaxPrice.min.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
874
830
  var sizeAmountUsd = exitOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
875
831
  var exitFeeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
876
- var exitFeeAmount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
832
+ var exitFeeAmount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
877
833
  var exitFeeUsdAfterDiscount = constants_1.BN_ZERO;
878
834
  var exitFeeAmountAfterDiscount = constants_1.BN_ZERO;
879
835
  if (discountBps.gt(constants_1.BN_ZERO)) {
880
836
  exitFeeUsdAfterDiscount = exitFeeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
881
837
  exitFeeUsdAfterDiscount = exitFeeUsd.sub(exitFeeUsdAfterDiscount);
882
- exitFeeAmountAfterDiscount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
838
+ exitFeeAmountAfterDiscount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
883
839
  }
884
840
  else {
885
841
  exitFeeUsdAfterDiscount = exitFeeUsd;
@@ -889,7 +845,7 @@ var PerpetualsClient = (function () {
889
845
  price: positionAccount.entryPrice.price, exponent: new anchor_1.BN(positionAccount.entryPrice.exponent), confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO
890
846
  });
891
847
  resultingPositionAccount.sizeUsd = positionEntryOraclePrice.getAssetAmountUsd(resultingPositionAccount.sizeAmount, targetCustodyAccount.decimals);
892
- var liquidationPrice = _this.getLiquidationPriceSync(resultingPositionAccount.collateralAmount, resultingPositionAccount.sizeAmount, positionEntryOraclePrice, lockAndUnsettledFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
848
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(positionEntryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
893
849
  return {
894
850
  exitOraclePrice: exitOraclePrice,
895
851
  borrowFeeUsd: lockAndUnsettledFeeUsd,
@@ -902,13 +858,11 @@ var PerpetualsClient = (function () {
902
858
  };
903
859
  };
904
860
  this.getTradeSpread = function (targetCustodyAccount, sizeUsd) {
905
- if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero()
906
- ||
907
- sizeUsd.isZero()) {
861
+ if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero() || sizeUsd.isZero()) {
908
862
  return constants_1.BN_ZERO;
909
863
  }
910
864
  var slope = ((targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin)).mul(new anchor_1.BN(Math.pow(10, (constants_1.RATE_DECIMALS + constants_1.BPS_DECIMALS)))))
911
- .div(targetCustodyAccount.pricing.maxPositionLockedUsd);
865
+ .div(targetCustodyAccount.pricing.maxPositionSizeUsd);
912
866
  var variable = (slope.mul(sizeUsd)).div(new anchor_1.BN(Math.pow(10, (constants_1.RATE_DECIMALS + constants_1.BPS_DECIMALS))));
913
867
  var finalSpread = targetCustodyAccount.pricing.tradeSpreadMin.add(variable);
914
868
  return finalSpread;
@@ -923,21 +877,11 @@ var PerpetualsClient = (function () {
923
877
  var exitOraclePrice = OraclePrice_1.OraclePrice.from({ price: exitPriceBN, exponent: maxPrice.exponent, confidence: maxPrice.confidence, timestamp: maxPrice.timestamp });
924
878
  return exitOraclePrice;
925
879
  };
926
- this.getExitOraclePriceWithoutSpreadSync = function (side, targetPrice, targetEmaPrice, targetCustodyAccount) {
927
- var _a = _this.getMinAndMaxOraclePriceSync(targetPrice, targetEmaPrice, targetCustodyAccount), minPrice = _a.min, maxPrice = _a.max;
928
- if ((0, types_1.isVariant)(side, 'long')) {
929
- return minPrice;
930
- }
931
- else {
932
- return maxPrice;
933
- }
934
- };
935
880
  this.getSizeAmountFromLeverageAndCollateral = function (collateralAmtWithFee, leverage, marketToken, collateralToken, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, discountBps) {
936
881
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
937
882
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
938
883
  var collateralTokenMinPriceUi = new bignumber_js_1.default(collateralTokenMinPrice.toString()).dividedBy(Math.pow(10, constants_1.USD_DECIMALS));
939
- var collateralAmtMinUsdUi = new bignumber_js_1.default(collateralAmtWithFee.toString()).dividedBy(Math.pow(10, collateralToken.decimals))
940
- .multipliedBy(collateralTokenMinPriceUi);
884
+ var collateralAmtMinUsdUi = new bignumber_js_1.default(collateralAmtWithFee.toString()).dividedBy(Math.pow(10, collateralToken.decimals)).multipliedBy(collateralTokenMinPriceUi);
941
885
  var openPosFeeRateUi = new bignumber_js_1.default(targetCustodyAccount.fees.openPosition.toString()).dividedBy(Math.pow(10, constants_1.RATE_DECIMALS));
942
886
  if (!discountBps.isZero()) {
943
887
  var discountBpsUi = new bignumber_js_1.default(discountBps.toString()).dividedBy(Math.pow(10, constants_1.BPS_DECIMALS));
@@ -945,20 +889,20 @@ var PerpetualsClient = (function () {
945
889
  }
946
890
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
947
891
  .dividedBy(new bignumber_js_1.default(1).plus((new bignumber_js_1.default(2).multipliedBy(openPosFeeRateUi)).multipliedBy(leverage)));
948
- var lockedUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toString(), constants_1.USD_DECIMALS);
949
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, lockedUsd);
892
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toString(), constants_1.USD_DECIMALS);
893
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
950
894
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
951
895
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
952
896
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(marketToken.decimals, bignumber_js_1.default.ROUND_DOWN), marketToken.decimals);
953
897
  };
954
- this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap, discountBps) {
898
+ this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, discountBps) {
955
899
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
956
900
  var finalCollateralAmount = constants_1.BN_ZERO;
957
901
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
958
902
  finalCollateralAmount = amountIn;
959
903
  }
960
904
  else {
961
- var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
905
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
962
906
  finalCollateralAmount = swapAmountOut;
963
907
  }
964
908
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
@@ -972,8 +916,8 @@ var PerpetualsClient = (function () {
972
916
  }
973
917
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
974
918
  .dividedBy(new bignumber_js_1.default(1).plus((new bignumber_js_1.default(2).multipliedBy(openPosFeeRateUi)).multipliedBy(leverage)));
975
- var lockedUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toFixed(constants_1.USD_DECIMALS), constants_1.USD_DECIMALS);
976
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, lockedUsd);
919
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toFixed(constants_1.USD_DECIMALS), constants_1.USD_DECIMALS);
920
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, sizeUsd);
977
921
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
978
922
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
979
923
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(targetTokenCustodyAccount.decimals, bignumber_js_1.default.ROUND_DOWN), targetTokenCustodyAccount.decimals);
@@ -996,7 +940,7 @@ var PerpetualsClient = (function () {
996
940
  var collateralAmtWithFeeUi = collateralWithFeeUsdUi.dividedBy(collateralTokenMinPriceUi);
997
941
  return (0, utils_1.uiDecimalsToNative)(collateralAmtWithFeeUi.toFixed(collateralToken.decimals, bignumber_js_1.default.ROUND_DOWN), collateralToken.decimals);
998
942
  };
999
- this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap) {
943
+ this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig) {
1000
944
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
1001
945
  var collateralTokenMinPriceUi = new bignumber_js_1.default(collateralTokenMinPrice.toString()).dividedBy(Math.pow(10, constants_1.USD_DECIMALS));
1002
946
  var sizeUsd = targetTokenPrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
@@ -1013,11 +957,11 @@ var PerpetualsClient = (function () {
1013
957
  collateralInInputToken = collateralAmountWithFee;
1014
958
  }
1015
959
  else {
1016
- collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountIn;
960
+ collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountIn;
1017
961
  }
1018
962
  return collateralInInputToken;
1019
963
  };
1020
- this.getDecreaseSizeCollateralAndFeeSync = function (positionAccount, marketCorrelation, sizeDeltaUsd, keepLevSame, targetPrice, targetEmaPrice, marketConfig, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, side, poolConfig, discountBps, debugLogs) {
964
+ this.getDecreaseSizeCollateralAndFeeSync = function (positionAccount, marketCorrelation, maxPayOffBps, sizeDeltaUsd, keepLevSame, targetPrice, targetEmaPrice, marketConfig, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, side, poolConfig, discountBps, debugLogs) {
1021
965
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
1022
966
  if (debugLogs === void 0) { debugLogs = false; }
1023
967
  if (!marketConfig.marketAccount.equals(positionAccount.market)) {
@@ -1039,10 +983,9 @@ var PerpetualsClient = (function () {
1039
983
  var decimalPower = new anchor_1.BN(Math.pow(10, targetCustodyAccount.decimals));
1040
984
  var closeRatio = (positionDelta.sizeAmount.mul(decimalPower)).div(positionAccount.sizeAmount);
1041
985
  positionDelta.sizeUsd = (positionAccount.sizeUsd.mul(closeRatio)).div(decimalPower);
1042
- positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1043
986
  positionDelta.lockedAmount = (positionAccount.lockedAmount.mul(closeRatio)).div(decimalPower);
1044
- positionDelta.lockedUsd = (positionAccount.lockedUsd.mul(closeRatio)).div(decimalPower);
1045
- positionDelta.collateralAmount = (positionAccount.collateralAmount.mul(closeRatio)).div(decimalPower);
987
+ positionDelta.collateralUsd = (positionAccount.collateralUsd.mul(closeRatio)).div(decimalPower);
988
+ positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1046
989
  positionDelta.degenSizeUsd = positionAccount.degenSizeUsd.mul(closeRatio).div(decimalPower);
1047
990
  var newPnl = _this.getPnlSync(positionDelta, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1048
991
  var exitFeeUsd = positionDelta.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
@@ -1052,30 +995,37 @@ var PerpetualsClient = (function () {
1052
995
  }
1053
996
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionDelta, collateralCustodyAccount, currentTimestamp);
1054
997
  var totalFeesUsd = (exitFeeUsd.add(lockAndUnsettledFeeUsd));
1055
- var currentCollateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(positionDelta.collateralAmount, collateralCustodyAccount.decimals);
998
+ var currentCollateralUsd = positionDelta.collateralUsd;
1056
999
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1057
- var assetsUsd = newPnl.profitUsd.add(currentCollateralUsd);
1058
- var closeAmount, feesAmount;
1000
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(currentCollateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionDelta.lockedAmount, collateralCustodyAccount.decimals));
1059
1001
  if (debugLogs) {
1060
1002
  console.log("assetsUsd.sub(liabilityUsd):", collateralCustodyAccount.decimals, assetsUsd.toString(), liabilityUsd.toString(), assetsUsd.sub(liabilityUsd).toString());
1061
1003
  }
1004
+ var closeAmountUsd, feesAmountUsd;
1062
1005
  if (assetsUsd.gte(liabilityUsd)) {
1063
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), collateralCustodyAccount.decimals);
1064
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, collateralCustodyAccount.decimals);
1006
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1007
+ feesAmountUsd = totalFeesUsd;
1008
+ }
1009
+ else {
1010
+ closeAmountUsd = constants_1.BN_ZERO;
1011
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1012
+ }
1013
+ var closeAmount = collateralMinMaxPrice.max.getTokenAmount(closeAmountUsd, collateralCustodyAccount.decimals);
1014
+ var newLockAmount = collateralMinMaxPrice.max.getTokenAmount(_this.getLockedUsd(constants_1.BN_ZERO, closeAmountUsd, side, marketCorrelation, maxPayOffBps), collateralCustodyAccount.decimals);
1015
+ if (newLockAmount.gt(positionDelta.lockedAmount)) {
1016
+ positionDelta.lockedAmount = constants_1.BN_ZERO;
1065
1017
  }
1066
1018
  else {
1067
- closeAmount = constants_1.BN_ZERO;
1068
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), collateralCustodyAccount.decimals);
1019
+ positionDelta.lockedAmount = positionDelta.lockedAmount.sub(newLockAmount);
1069
1020
  }
1070
1021
  var newPosition = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1071
1022
  newPosition.sizeAmount = positionAccount.sizeAmount.sub(positionDelta.sizeAmount);
1072
1023
  newPosition.sizeUsd = positionAccount.sizeUsd.sub(positionDelta.sizeUsd);
1073
- newPosition.lockedUsd = positionAccount.lockedUsd.sub(positionDelta.lockedUsd);
1074
1024
  newPosition.lockedAmount = positionAccount.lockedAmount.sub(positionDelta.lockedAmount);
1075
- newPosition.collateralAmount = positionAccount.collateralAmount.sub(positionDelta.collateralAmount);
1025
+ newPosition.collateralUsd = positionAccount.collateralUsd.sub(positionDelta.collateralUsd);
1076
1026
  newPosition.unsettledFeesUsd = positionAccount.unsettledFeesUsd.sub(positionDelta.unsettledFeesUsd);
1077
- newPosition.collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(newPosition.collateralAmount, collateralCustodyAccount.decimals);
1078
1027
  newPosition.degenSizeUsd = positionAccount.degenSizeUsd.sub(positionDelta.degenSizeUsd);
1028
+ newPosition.collateralUsd = newPosition.collateralUsd.add(closeAmountUsd);
1079
1029
  var feeUsdWithDiscount = constants_1.BN_ZERO;
1080
1030
  var feeUsd = sizeDeltaUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1081
1031
  if (discountBps.gt(constants_1.BN_ZERO)) {
@@ -1089,29 +1039,30 @@ var PerpetualsClient = (function () {
1089
1039
  feeUsdWithDiscount = feeUsdWithDiscount.add(lockAndUnsettledFeeUsd);
1090
1040
  if (keepLevSame) {
1091
1041
  var collateralAmountReceived = closeAmount;
1092
- var collateralAmountRecievedUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralAmountReceived, collateralCustodyAccount.decimals);
1093
- var _a = _this.getMaxWithdrawableAmountSyncInternal(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, closeAmount), maxWithdrawableAmount = _a.maxWithdrawableAmount, diff = _a.diff;
1042
+ var collateralAmountReceivedUsd = closeAmountUsd;
1043
+ var _a = _this.getMaxWithdrawableAmountSyncInternal(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig), maxWithdrawableAmount = _a.maxWithdrawableAmount, maxWithdrawableAmountUsd = _a.maxWithdrawableAmountUsd, diffUsd = _a.diffUsd;
1094
1044
  if (debugLogs) {
1095
1045
  console.log("maxWithdrawableAmount ", maxWithdrawableAmount.toString(), keepLevSame);
1096
1046
  console.log("collateralAmountReceived ", collateralAmountReceived.toString(), keepLevSame);
1097
1047
  }
1098
- if (collateralAmountReceived.lt(constants_1.BN_ZERO)) {
1048
+ if (collateralAmountReceivedUsd.lt(constants_1.BN_ZERO)) {
1099
1049
  collateralAmountReceived = constants_1.BN_ZERO;
1100
- collateralAmountRecievedUsd = constants_1.BN_ZERO;
1050
+ collateralAmountReceivedUsd = constants_1.BN_ZERO;
1101
1051
  }
1102
- else if (collateralAmountReceived.gt(maxWithdrawableAmount)) {
1052
+ else if (collateralAmountReceivedUsd.gt(maxWithdrawableAmountUsd)) {
1103
1053
  if (debugLogs) {
1104
1054
  console.log("exceeding to redicing maxWithdrawableAmount ", maxWithdrawableAmount.toString(), collateralAmountReceived.toString());
1105
1055
  }
1106
1056
  collateralAmountReceived = maxWithdrawableAmount;
1107
- collateralAmountRecievedUsd = collateralMinMaxPrice.min.getAssetAmountUsd(maxWithdrawableAmount, collateralCustodyAccount.decimals);
1057
+ collateralAmountReceivedUsd = maxWithdrawableAmountUsd;
1108
1058
  }
1109
1059
  var entryPrice = OraclePrice_1.OraclePrice.from({ price: newPosition.entryPrice.price, exponent: new anchor_1.BN(newPosition.entryPrice.exponent), confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1110
- var finalInterestUsd = _this.getLockFeeAndUnsettledUsdForPosition(newPosition, collateralCustodyAccount, currentTimestamp);
1111
- var finalLiquidationPrice = _this.getLiquidationPriceSync(newPosition.collateralAmount, newPosition.sizeAmount, entryPrice, finalInterestUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, newPosition);
1060
+ newPosition.collateralUsd = newPosition.collateralUsd.sub(collateralAmountReceivedUsd);
1061
+ var lockAndUnsettledFeeUsdNew = _this.getLockFeeAndUnsettledUsdForPosition(newPosition, collateralCustodyAccount, currentTimestamp);
1062
+ var finalLiquidationPrice = _this.getLiquidationPriceContractHelper(entryPrice, lockAndUnsettledFeeUsdNew, side, targetCustodyAccount, newPosition);
1112
1063
  var finalPnl = _this.getPnlSync(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1113
1064
  var finalPnlUsd = finalPnl.profitUsd.sub(finalPnl.lossUsd);
1114
- var newLev = _this.getLeverageSync(newPosition.sizeUsd, newPosition.collateralAmount, collateralMinMaxPrice.min, collateralCustodyAccount.decimals, constants_1.BN_ZERO);
1065
+ var newLev = _this.getLeverageSync(newPosition, newPosition.collateralUsd, newPosition.sizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, false, poolConfig);
1115
1066
  return {
1116
1067
  newSizeUsd: newPosition.sizeUsd,
1117
1068
  feeUsd: feeUsd,
@@ -1119,8 +1070,9 @@ var PerpetualsClient = (function () {
1119
1070
  lockAndUnsettledFeeUsd: lockAndUnsettledFeeUsd,
1120
1071
  newLev: newLev,
1121
1072
  liquidationPrice: finalLiquidationPrice,
1122
- collateralAmountRecieved: collateralAmountReceived,
1123
- newCollateralAmount: newPosition.collateralAmount.add(diff),
1073
+ collateralAmountReceived: collateralAmountReceived,
1074
+ collateralAmountReceivedUsd: collateralAmountReceivedUsd,
1075
+ newCollateralUsd: newPosition.collateralUsd.add(diffUsd),
1124
1076
  newPnl: finalPnlUsd
1125
1077
  };
1126
1078
  }
@@ -1128,8 +1080,7 @@ var PerpetualsClient = (function () {
1128
1080
  throw "only same leverage is supported for now";
1129
1081
  }
1130
1082
  };
1131
- this.getMaxWithdrawableAmountSyncInternal = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, closeAmount, errorBandwidthPercentageUi) {
1132
- if (closeAmount === void 0) { closeAmount = constants_1.BN_ZERO; }
1083
+ this.getMaxWithdrawableAmountSyncInternal = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, errorBandwidthPercentageUi) {
1133
1084
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
1134
1085
  if (errorBandwidthPercentageUi > 100 || errorBandwidthPercentageUi < 0) {
1135
1086
  throw new Error("errorBandwidthPercentageUi cannot be >100 or <0");
@@ -1138,61 +1089,62 @@ var PerpetualsClient = (function () {
1138
1089
  (new anchor_1.BN(targetCustodyAccount.pricing.maxInitDegenLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100))
1139
1090
  : (new anchor_1.BN(targetCustodyAccount.pricing.maxInitLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100));
1140
1091
  var profitLoss = _this.getPnlSync(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1141
- var _a = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount), collateralMinPrice = _a.min, collateralMaxPrice = _a.max;
1092
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1142
1093
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1143
1094
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1144
1095
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1145
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount.add(closeAmount), collateralCustodyAccount.decimals);
1146
1096
  var availableInitMarginUsd = constants_1.BN_ZERO;
1147
- if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1148
- availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1097
+ if (profitLoss.lossUsd.lt(positionAccount.collateralUsd)) {
1098
+ availableInitMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
1149
1099
  }
1150
1100
  else {
1151
1101
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1152
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1102
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diffUsd: constants_1.BN_ZERO };
1153
1103
  }
1154
1104
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1155
1105
  if (maxRemovableCollateralUsd.isNeg()) {
1156
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1106
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diffUsd: constants_1.BN_ZERO };
1157
1107
  }
1158
1108
  var maxWithdrawableAmount = constants_1.BN_ZERO;
1159
- var diff = constants_1.BN_ZERO;
1109
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1110
+ var diffUsd = constants_1.BN_ZERO;
1160
1111
  var remainingCollateralUsd = availableInitMarginUsd.sub(maxRemovableCollateralUsd);
1161
1112
  var isDegenMode = positionAccount.isDegenMode();
1162
1113
  if (remainingCollateralUsd.lt(new anchor_1.BN(isDegenMode ? targetCustodyAccount.pricing.minDegenCollateralUsd : targetCustodyAccount.pricing.minCollateralUsd))) {
1163
- diff = (new anchor_1.BN(isDegenMode ? targetCustodyAccount.pricing.minDegenCollateralUsd : targetCustodyAccount.pricing.minCollateralUsd)).sub(remainingCollateralUsd);
1164
- var updatedMaxRemovableCollateralUsd = maxRemovableCollateralUsd.sub(diff);
1114
+ diffUsd = (new anchor_1.BN(isDegenMode ? targetCustodyAccount.pricing.minDegenCollateralUsd : targetCustodyAccount.pricing.minCollateralUsd)).sub(remainingCollateralUsd);
1115
+ var updatedMaxRemovableCollateralUsd = maxRemovableCollateralUsd.sub(diffUsd);
1165
1116
  if (updatedMaxRemovableCollateralUsd.isNeg()) {
1166
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1117
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diffUsd: constants_1.BN_ZERO };
1167
1118
  }
1168
1119
  else {
1169
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1120
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1121
+ maxWithdrawableAmountUsd = updatedMaxRemovableCollateralUsd;
1170
1122
  }
1171
1123
  }
1172
1124
  else {
1173
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1125
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1126
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1174
1127
  }
1175
- return { maxWithdrawableAmount: maxWithdrawableAmount, diff: diff };
1128
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd, diffUsd: diffUsd };
1176
1129
  };
1177
- this.getFinalCloseAmountSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1130
+ this.getFinalCloseAmountUsdSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1178
1131
  var position = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1179
1132
  var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1180
- var collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(position.collateralAmount, collateralCustodyAccount.decimals);
1181
1133
  var newPnl = _this.getPnlSync(position, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1182
1134
  var exitPriceAndFee = _this.getExitPriceAndFeeSync(positionAccount, marketCorrelation, positionAccount.collateralAmount, positionAccount.sizeAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp);
1183
1135
  var totalFeesUsd = (exitPriceAndFee.exitFeeUsd.add(exitPriceAndFee.borrowFeeUsd));
1184
1136
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1185
- var assetsUsd = newPnl.profitUsd.add(collateralMinMaxPrice.min.getAssetAmountUsd(positionAccount.collateralAmount, positionAccount.collateralDecimals));
1186
- var closeAmount, feesAmount;
1137
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(positionAccount.collateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionAccount.lockedAmount, collateralCustodyAccount.decimals));
1138
+ var closeAmountUsd, feesAmountUsd;
1187
1139
  if (assetsUsd.gt(liabilityUsd)) {
1188
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), position.collateralDecimals);
1189
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, positionAccount.collateralDecimals);
1140
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1141
+ feesAmountUsd = totalFeesUsd;
1190
1142
  }
1191
1143
  else {
1192
- closeAmount = constants_1.BN_ZERO;
1193
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), positionAccount.collateralDecimals);
1144
+ closeAmountUsd = constants_1.BN_ZERO;
1145
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1194
1146
  }
1195
- return { closeAmount: closeAmount, feesAmount: feesAmount };
1147
+ return { closeAmountUsd: closeAmountUsd, feesAmountUsd: feesAmountUsd };
1196
1148
  };
1197
1149
  this.getMaxWithdrawableAmountSync = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, errorBandwidthPercentageUi) {
1198
1150
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
@@ -1205,34 +1157,37 @@ var PerpetualsClient = (function () {
1205
1157
  var maxRemoveableCollateralUsdAfterMinRequired = positionAccount.collateralUsd.sub((positionAccount.isDegenMode() ? new anchor_1.BN(targetCustodyAccount.pricing.minDegenCollateralUsd) : new anchor_1.BN(targetCustodyAccount.pricing.minCollateralUsd)).mul(new anchor_1.BN(100 + errorBandwidthPercentageUi)).div(new anchor_1.BN(100)));
1206
1158
  if (maxRemoveableCollateralUsdAfterMinRequired.isNeg()) {
1207
1159
  console.log("THIS cannot happen but still");
1208
- return constants_1.BN_ZERO;
1160
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1209
1161
  }
1210
1162
  var profitLoss = _this.getPnlSync(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1211
- var _a = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount), collateralMinPrice = _a.min, collateralMaxPrice = _a.max;
1163
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1212
1164
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1213
1165
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1214
1166
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1215
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount, collateralCustodyAccount.decimals);
1167
+ var currentCollateralUsd = positionAccount.collateralUsd;
1216
1168
  var availableInitMarginUsd = constants_1.BN_ZERO;
1217
1169
  if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1218
1170
  availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1219
1171
  }
1220
1172
  else {
1221
1173
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1222
- return constants_1.BN_ZERO;
1174
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1223
1175
  }
1224
1176
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1225
1177
  if (maxRemovableCollateralUsd.isNeg()) {
1226
- return constants_1.BN_ZERO;
1178
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1227
1179
  }
1228
1180
  var maxWithdrawableAmount;
1181
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1229
1182
  if (maxRemoveableCollateralUsdAfterMinRequired.lt(maxRemovableCollateralUsd)) {
1230
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1183
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1184
+ maxWithdrawableAmountUsd = maxRemoveableCollateralUsdAfterMinRequired;
1231
1185
  }
1232
1186
  else {
1233
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1187
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1188
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1234
1189
  }
1235
- return maxWithdrawableAmount;
1190
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd };
1236
1191
  };
1237
1192
  this.getCumulativeLockFeeSync = function (custodyAccount, currentTimestamp) {
1238
1193
  var cumulativeLockFee = constants_1.BN_ZERO;
@@ -1270,12 +1225,12 @@ var PerpetualsClient = (function () {
1270
1225
  var cumulativeLockFee = _this.getCumulativeLockFeeSync(collateralCustodyAccount, currentTimestamp);
1271
1226
  var lockFeeUsd = constants_1.BN_ZERO;
1272
1227
  if (cumulativeLockFee.gt(position.cumulativeLockFeeSnapshot)) {
1273
- lockFeeUsd = cumulativeLockFee.sub(position.cumulativeLockFeeSnapshot).mul(position.lockedUsd).div(new anchor_1.BN(constants_1.RATE_POWER));
1228
+ lockFeeUsd = cumulativeLockFee.sub(position.cumulativeLockFeeSnapshot).mul(position.sizeUsd).div(new anchor_1.BN(constants_1.RATE_POWER));
1274
1229
  }
1275
1230
  lockFeeUsd = lockFeeUsd.add(position.unsettledFeesUsd);
1276
1231
  return lockFeeUsd;
1277
1232
  };
1278
- this.getLockedUsd = function (sideUsd, side, marketCorrelation, maxPayOffBps) {
1233
+ this.getLockedUsd = function (sizeUsd, collateralUsd, side, marketCorrelation, maxPayOffBps) {
1279
1234
  var maxPayOffBpsNew = constants_1.BN_ZERO;
1280
1235
  if (marketCorrelation || (0, types_1.isVariant)(side, 'short')) {
1281
1236
  maxPayOffBpsNew = anchor_1.BN.min(new anchor_1.BN(constants_1.BPS_POWER), maxPayOffBps);
@@ -1283,193 +1238,146 @@ var PerpetualsClient = (function () {
1283
1238
  else {
1284
1239
  maxPayOffBpsNew = maxPayOffBps;
1285
1240
  }
1286
- var lockedUsd = (sideUsd.mul(maxPayOffBpsNew)).div(new anchor_1.BN(constants_1.BPS_POWER));
1241
+ var lockedUsd = ((sizeUsd.add(collateralUsd)).mul(maxPayOffBpsNew)).div(new anchor_1.BN(constants_1.BPS_POWER));
1287
1242
  return lockedUsd;
1288
1243
  };
1289
- this.getLiquidationPriceSync = function (collateralAmount, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount) {
1244
+ this.getLiquidationPriceContractHelper = function (entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount) {
1290
1245
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1291
1246
  price: constants_1.BN_ZERO,
1292
1247
  exponent: constants_1.BN_ZERO,
1293
1248
  confidence: constants_1.BN_ZERO,
1294
1249
  timestamp: constants_1.BN_ZERO
1295
1250
  });
1296
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1297
- return zeroOraclePrice;
1298
- }
1299
1251
  if (positionAccount.entryPrice.exponent && !entryOraclePrice.exponent.eq(new anchor_1.BN(positionAccount.entryPrice.exponent))) {
1300
1252
  throw new Error("Exponent mismatch : ".concat(positionAccount.entryPrice.exponent, " & ").concat(entryOraclePrice.exponent.toString(), " ").concat(entryOraclePrice === null || entryOraclePrice === void 0 ? void 0 : entryOraclePrice.toUiPrice(8)));
1301
1253
  }
1302
1254
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1303
1255
  var unsettledLossUsd = exitFeeUsd.add(lockAndUnsettledFeeUsd);
1304
1256
  var liablitiesUsd = positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(new anchor_1.BN(targetCustodyAccount.pricing.maxLeverage)).add(unsettledLossUsd);
1305
- var targetMinMaxPriceOracle = _this.getMinAndMaxOraclePriceSync(targetPrice, targetEmaPrice, targetCustodyAccount);
1306
- var collateralMinMaxPriceOracle = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1307
1257
  var liquidationPrice;
1308
- if (marketCorrelation && (0, types_1.isVariant)(side, 'long')) {
1309
- var newCollateralAmount = void 0;
1310
- if (targetCustodyAccount.mint == collateralCustodyAccount.mint) {
1311
- newCollateralAmount = collateralAmount;
1258
+ if (positionAccount.collateralUsd.gte(liablitiesUsd)) {
1259
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1260
+ price: (positionAccount.collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1261
+ .div(positionAccount.sizeAmount),
1262
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1263
+ confidence: constants_1.BN_ZERO,
1264
+ timestamp: constants_1.BN_ZERO
1265
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1266
+ if ((0, types_1.isVariant)(side, 'long')) {
1267
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1268
+ price: entryOraclePrice.price.sub(priceDiffLossOracle.price),
1269
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1270
+ confidence: constants_1.BN_ZERO,
1271
+ timestamp: constants_1.BN_ZERO
1272
+ });
1312
1273
  }
1313
1274
  else {
1314
- var pairPrice = collateralMinMaxPriceOracle.min.price.mul(new anchor_1.BN(10).pow(collateralMinMaxPriceOracle.min.exponent)).div(targetMinMaxPriceOracle.max.price);
1315
- var swapPrice = pairPrice.sub(pairPrice.mul(collateralCustodyAccount.pricing.swapSpread).div(new anchor_1.BN(constants_1.BPS_POWER)));
1316
- newCollateralAmount = (0, utils_1.checkedDecimalMul)(collateralAmount, new anchor_1.BN(-1 * collateralCustodyAccount.decimals), swapPrice, collateralMinMaxPriceOracle.min.exponent, new anchor_1.BN(-1 * targetCustodyAccount.decimals));
1275
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1276
+ price: entryOraclePrice.price.add(priceDiffLossOracle.price),
1277
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1278
+ confidence: constants_1.BN_ZERO,
1279
+ timestamp: constants_1.BN_ZERO
1280
+ });
1317
1281
  }
1318
- var lp = OraclePrice_1.OraclePrice.from({
1319
- price: (positionAccount.sizeUsd.add(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1320
- .div(sizeAmount.add(newCollateralAmount)),
1282
+ }
1283
+ else {
1284
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1285
+ price: (liablitiesUsd.sub(positionAccount.collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1286
+ .div(positionAccount.sizeAmount),
1321
1287
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1322
1288
  confidence: constants_1.BN_ZERO,
1323
1289
  timestamp: constants_1.BN_ZERO
1324
- });
1325
- liquidationPrice = lp.scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1326
- }
1327
- else {
1328
- var assetsUsd = collateralMinMaxPriceOracle.min.getAssetAmountUsd(collateralAmount, collateralCustodyAccount.decimals);
1329
- if (assetsUsd.gte(liablitiesUsd)) {
1330
- var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1331
- price: (assetsUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1332
- .div(positionAccount.sizeAmount),
1333
- exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1290
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1291
+ if ((0, types_1.isVariant)(side, 'long')) {
1292
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1293
+ price: entryOraclePrice.price.add(priceDiffProfitOracle.price),
1294
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1334
1295
  confidence: constants_1.BN_ZERO,
1335
1296
  timestamp: constants_1.BN_ZERO
1336
- }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1337
- if ((0, types_1.isVariant)(side, 'long')) {
1338
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1339
- price: entryOraclePrice.price.sub(priceDiffLossOracle.price),
1340
- exponent: new anchor_1.BN(entryOraclePrice.exponent),
1341
- confidence: constants_1.BN_ZERO,
1342
- timestamp: constants_1.BN_ZERO
1343
- });
1344
- }
1345
- else {
1346
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1347
- price: entryOraclePrice.price.add(priceDiffLossOracle.price),
1348
- exponent: new anchor_1.BN(entryOraclePrice.exponent),
1349
- confidence: constants_1.BN_ZERO,
1350
- timestamp: constants_1.BN_ZERO
1351
- });
1352
- }
1297
+ });
1353
1298
  }
1354
1299
  else {
1355
- var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1356
- price: (liablitiesUsd.sub(assetsUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1357
- .div(positionAccount.sizeAmount),
1358
- exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1300
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1301
+ price: entryOraclePrice.price.sub(priceDiffProfitOracle.price),
1302
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1359
1303
  confidence: constants_1.BN_ZERO,
1360
1304
  timestamp: constants_1.BN_ZERO
1361
- }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1362
- if ((0, types_1.isVariant)(side, 'long')) {
1363
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1364
- price: entryOraclePrice.price.add(priceDiffProfitOracle.price),
1365
- exponent: new anchor_1.BN(entryOraclePrice.exponent),
1366
- confidence: constants_1.BN_ZERO,
1367
- timestamp: constants_1.BN_ZERO
1368
- });
1369
- }
1370
- else {
1371
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1372
- price: entryOraclePrice.price.sub(priceDiffProfitOracle.price),
1373
- exponent: new anchor_1.BN(entryOraclePrice.exponent),
1374
- confidence: constants_1.BN_ZERO,
1375
- timestamp: constants_1.BN_ZERO
1376
- });
1377
- }
1305
+ });
1378
1306
  }
1379
1307
  }
1380
1308
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1381
1309
  };
1382
- this.getLiquidationPriceWithOrder = function (collateralAmount, collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount) {
1310
+ this.getLiquidationPriceSync = function (collateralUsd, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, side, targetPrice, targetCustodyAccount, positionAccount) {
1311
+ var newPositionAccount = positionAccount.clone();
1312
+ newPositionAccount.sizeAmount = sizeAmount;
1313
+ newPositionAccount.sizeUsd = targetPrice.getAssetAmountUsd(sizeAmount, targetCustodyAccount.decimals);
1314
+ newPositionAccount.collateralUsd = collateralUsd;
1315
+ return _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, newPositionAccount);
1316
+ };
1317
+ this.getLiquidationPriceWithOrder = function (collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, side, targetCustodyAccount) {
1383
1318
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1384
1319
  price: constants_1.BN_ZERO,
1385
1320
  exponent: constants_1.BN_ZERO,
1386
1321
  confidence: constants_1.BN_ZERO,
1387
1322
  timestamp: constants_1.BN_ZERO
1388
1323
  });
1389
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1390
- return zeroOraclePrice;
1391
- }
1392
1324
  var exitFeeUsd = sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1393
1325
  var unsettledLossUsd = exitFeeUsd;
1394
1326
  var liablitiesUsd = sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(new anchor_1.BN(targetCustodyAccount.pricing.maxLeverage)).add(unsettledLossUsd);
1395
- var targetMinMaxPriceOracle = _this.getMinAndMaxOraclePriceSync(targetPrice, targetEmaPrice, targetCustodyAccount);
1396
- var collateralMinMaxPriceOracle = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1397
1327
  var liquidationPrice;
1398
- if (marketCorrelation && (0, types_1.isVariant)(side, 'long')) {
1399
- var newCollateralAmount = void 0;
1400
- if (targetCustodyAccount.mint == collateralCustodyAccount.mint) {
1401
- newCollateralAmount = collateralAmount;
1328
+ if (collateralUsd.gte(liablitiesUsd)) {
1329
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1330
+ price: (collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1331
+ .div(sizeAmount),
1332
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1333
+ confidence: constants_1.BN_ZERO,
1334
+ timestamp: constants_1.BN_ZERO
1335
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1336
+ if ((0, types_1.isVariant)(side, 'long')) {
1337
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1338
+ price: limitOraclePrice.price.sub(priceDiffLossOracle.price),
1339
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1340
+ confidence: constants_1.BN_ZERO,
1341
+ timestamp: constants_1.BN_ZERO
1342
+ });
1402
1343
  }
1403
1344
  else {
1404
- var pairPrice = collateralMinMaxPriceOracle.min.price.mul(new anchor_1.BN(10).pow(collateralMinMaxPriceOracle.min.exponent)).div(targetMinMaxPriceOracle.max.price);
1405
- var swapPrice = pairPrice.sub(pairPrice.mul(collateralCustodyAccount.pricing.swapSpread).div(new anchor_1.BN(constants_1.BPS_POWER)));
1406
- newCollateralAmount = (0, utils_1.checkedDecimalMul)(collateralAmount, new anchor_1.BN(-1 * collateralCustodyAccount.decimals), swapPrice, collateralMinMaxPriceOracle.min.exponent, new anchor_1.BN(-1 * targetCustodyAccount.decimals));
1345
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1346
+ price: limitOraclePrice.price.add(priceDiffLossOracle.price),
1347
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1348
+ confidence: constants_1.BN_ZERO,
1349
+ timestamp: constants_1.BN_ZERO
1350
+ });
1407
1351
  }
1408
- var lp = OraclePrice_1.OraclePrice.from({
1409
- price: (sizeUsd.add(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1410
- .div(sizeAmount.add(newCollateralAmount)),
1352
+ }
1353
+ else {
1354
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1355
+ price: (liablitiesUsd.sub(collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1356
+ .div(sizeAmount),
1411
1357
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1412
1358
  confidence: constants_1.BN_ZERO,
1413
1359
  timestamp: constants_1.BN_ZERO
1414
- });
1415
- liquidationPrice = lp.scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1416
- }
1417
- else {
1418
- var assetsUsd = collateralUsd;
1419
- if (assetsUsd.gte(liablitiesUsd)) {
1420
- var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1421
- price: (assetsUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1422
- .div(sizeAmount),
1423
- exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1360
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1361
+ if ((0, types_1.isVariant)(side, 'long')) {
1362
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1363
+ price: limitOraclePrice.price.add(priceDiffProfitOracle.price),
1364
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1424
1365
  confidence: constants_1.BN_ZERO,
1425
1366
  timestamp: constants_1.BN_ZERO
1426
- }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1427
- if ((0, types_1.isVariant)(side, 'long')) {
1428
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1429
- price: limitOraclePrice.price.sub(priceDiffLossOracle.price),
1430
- exponent: new anchor_1.BN(limitOraclePrice.exponent),
1431
- confidence: constants_1.BN_ZERO,
1432
- timestamp: constants_1.BN_ZERO
1433
- });
1434
- }
1435
- else {
1436
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1437
- price: limitOraclePrice.price.add(priceDiffLossOracle.price),
1438
- exponent: new anchor_1.BN(limitOraclePrice.exponent),
1439
- confidence: constants_1.BN_ZERO,
1440
- timestamp: constants_1.BN_ZERO
1441
- });
1442
- }
1367
+ });
1443
1368
  }
1444
1369
  else {
1445
- var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1446
- price: (liablitiesUsd.sub(assetsUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1447
- .div(sizeAmount),
1448
- exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1370
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1371
+ price: limitOraclePrice.price.sub(priceDiffProfitOracle.price),
1372
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1449
1373
  confidence: constants_1.BN_ZERO,
1450
1374
  timestamp: constants_1.BN_ZERO
1451
- }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1452
- if ((0, types_1.isVariant)(side, 'long')) {
1453
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1454
- price: limitOraclePrice.price.add(priceDiffProfitOracle.price),
1455
- exponent: new anchor_1.BN(limitOraclePrice.exponent),
1456
- confidence: constants_1.BN_ZERO,
1457
- timestamp: constants_1.BN_ZERO
1458
- });
1459
- }
1460
- else {
1461
- liquidationPrice = OraclePrice_1.OraclePrice.from({
1462
- price: limitOraclePrice.price.sub(priceDiffProfitOracle.price),
1463
- exponent: new anchor_1.BN(limitOraclePrice.exponent),
1464
- confidence: constants_1.BN_ZERO,
1465
- timestamp: constants_1.BN_ZERO
1466
- });
1467
- }
1375
+ });
1468
1376
  }
1469
1377
  }
1470
1378
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1471
1379
  };
1472
- this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, positionAccount) {
1380
+ this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, collateralPrice, positionAccount) {
1473
1381
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1474
1382
  price: constants_1.BN_ZERO,
1475
1383
  exponent: constants_1.BN_ZERO,
@@ -1480,7 +1388,7 @@ var PerpetualsClient = (function () {
1480
1388
  return zeroOraclePrice;
1481
1389
  }
1482
1390
  var priceDiffProfit = OraclePrice_1.OraclePrice.from({
1483
- price: positionAccount.lockedUsd.mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1391
+ price: (collateralPrice.price.mul(positionAccount.lockedAmount)).mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1484
1392
  .div(positionAccount.sizeAmount),
1485
1393
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1486
1394
  confidence: constants_1.BN_ZERO,
@@ -1508,7 +1416,7 @@ var PerpetualsClient = (function () {
1508
1416
  }
1509
1417
  return maxProfitPrice.price.isNeg() ? zeroOraclePrice : maxProfitPrice;
1510
1418
  };
1511
- this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1419
+ this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketCorrelation, maxPayOffBps, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1512
1420
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
1513
1421
  throw new Error("Delta Amounts cannot be negative.");
1514
1422
  }
@@ -1538,10 +1446,9 @@ var PerpetualsClient = (function () {
1538
1446
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
1539
1447
  positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
1540
1448
  positionAccount.market = marketAccountPk;
1541
- positionAccount.lockedUsd = targetTokenPrice.getAssetAmountUsd(positionAccount.sizeAmount, targetCustodyAccount.decimals);
1542
- positionAccount.lockedAmount = collateralPrice.getTokenAmount(positionAccount.lockedUsd, collateralCustodyAccount.decimals);
1543
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
1544
- positionAccount.collateralUsd = collateralPrice.getAssetAmountUsd(positionAccount.collateralAmount, collateralCustodyAccount.decimals);
1449
+ var collateralDeltaUsd = collateralPrice.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
1450
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
1451
+ positionAccount.lockedAmount = positionAccount.lockedAmount.add(collateralPrice.getTokenAmount(_this.getLockedUsd(sizeDeltaUsd, collateralDeltaUsd, side, marketCorrelation, maxPayOffBps), collateralCustodyAccount.decimals));
1545
1452
  var currentTime = new anchor_1.BN((0, utils_1.getUnixTs)());
1546
1453
  var pnl = _this.getPnlSync(positionAccount, userEntrytpSlOraclePrice, userEntrytpSlOraclePrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTime, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1547
1454
  var pnlUsd = pnl.profitUsd.sub(pnl.lossUsd);
@@ -1613,6 +1520,9 @@ var PerpetualsClient = (function () {
1613
1520
  });
1614
1521
  };
1615
1522
  this.getPnlSync = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1523
+ return _this.getPnlContractHelper(positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig);
1524
+ };
1525
+ this.getPnlContractHelper = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1616
1526
  if (positionAccount.sizeUsd.isZero() || positionAccount.entryPrice.price.isZero()) {
1617
1527
  return {
1618
1528
  profitUsd: constants_1.BN_ZERO,
@@ -1671,7 +1581,7 @@ var PerpetualsClient = (function () {
1671
1581
  }
1672
1582
  if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1673
1583
  return {
1674
- profitUsd: anchor_1.BN.min(priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals), collateralMinPrice.getAssetAmountUsd(positionAccount.lockedAmount, positionAccount.lockedDecimals)),
1584
+ profitUsd: priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1675
1585
  lossUsd: constants_1.BN_ZERO,
1676
1586
  };
1677
1587
  }
@@ -1762,6 +1672,9 @@ var PerpetualsClient = (function () {
1762
1672
  }
1763
1673
  };
1764
1674
  this.getAssetsUnderManagementUsdSync = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1675
+ return _this.getAssetsUnderManagementUsdContractHelper(poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig);
1676
+ };
1677
+ this.getAssetsUnderManagementUsdContractHelper = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1765
1678
  var poolAmountUsd = constants_1.BN_ZERO;
1766
1679
  for (var index = 0; index < custodies.length; index++) {
1767
1680
  if (custodies.length != poolAccount.custodies.length || !custodies[index].publicKey.equals(poolAccount.custodies[index])) {
@@ -1774,6 +1687,7 @@ var PerpetualsClient = (function () {
1774
1687
  var token_amount_usd = tokenMinMaxPrice.max.getAssetAmountUsd(custodies[index].assets.owned, custodies[index].decimals);
1775
1688
  poolAmountUsd = poolAmountUsd.add(token_amount_usd);
1776
1689
  }
1690
+ poolAmountUsd = poolAmountUsd.sub(poolAccount.feesObligationUsd.add(poolAccount.rebateObligationUsd));
1777
1691
  if (aumCalcMode === "includePnl") {
1778
1692
  var poolEquityUsd = poolAmountUsd;
1779
1693
  for (var index = 0; index < markets.length; index++) {
@@ -1783,11 +1697,12 @@ var PerpetualsClient = (function () {
1783
1697
  var targetCustodyId = poolAccount.getCustodyId(markets[index].targetCustody);
1784
1698
  var collateralCustodyId = poolAccount.getCustodyId(markets[index].collateralCustody);
1785
1699
  var position = markets[index].getCollectivePosition();
1700
+ poolEquityUsd = poolEquityUsd.sub(position.collateralUsd);
1786
1701
  var collectivePnl = _this.getPnlSync(position, tokenPrices[targetCustodyId], tokenEmaPrices[targetCustodyId], custodies[targetCustodyId], tokenPrices[collateralCustodyId], tokenEmaPrices[collateralCustodyId], custodies[collateralCustodyId], currentTime, custodies[targetCustodyId].pricing.delaySeconds, poolConfig);
1787
1702
  var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(tokenPrices[collateralCustodyId], tokenEmaPrices[collateralCustodyId], custodies[collateralCustodyId]);
1788
- var collectiveCollateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(position.collateralAmount, position.collateralDecimals);
1789
- var collectiveLossUsd = anchor_1.BN.min(collectivePnl.lossUsd, collectiveCollateralUsd);
1790
- poolEquityUsd = (poolEquityUsd.add(collectiveLossUsd)).sub(collectivePnl.profitUsd);
1703
+ var collectiveLossUsd = anchor_1.BN.min(collectivePnl.lossUsd, position.collateralUsd);
1704
+ var collectiveProfitUsd = anchor_1.BN.min(collectivePnl.profitUsd, collateralMinMaxPrice.max.getAssetAmountUsd(position.lockedAmount, custodies[collateralCustodyId].decimals).sub(position.collateralUsd));
1705
+ poolEquityUsd = (poolEquityUsd.add(collectiveLossUsd)).sub(collectiveProfitUsd);
1791
1706
  }
1792
1707
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: poolEquityUsd };
1793
1708
  }
@@ -1795,14 +1710,6 @@ var PerpetualsClient = (function () {
1795
1710
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: constants_1.BN_ZERO };
1796
1711
  }
1797
1712
  };
1798
- this.getNftFinalDiscount = function (perpetualsAccount, nftTradingAccount, currentTime) {
1799
- if (currentTime.sub(nftTradingAccount.timestamp).lt(constants_1.DAY_SECONDS) && nftTradingAccount.counter.gt(new anchor_1.BN(perpetualsAccount.tradeLimit))) {
1800
- return { discountBn: constants_1.BN_ZERO };
1801
- }
1802
- else {
1803
- return { discountBn: perpetualsAccount.tradingDiscount[nftTradingAccount.level - 1] };
1804
- }
1805
- };
1806
1713
  this.getFeeDiscount = function (perpetualsAccount, tokenStakeAccount, currentTime) {
1807
1714
  if (tokenStakeAccount.level === 0) {
1808
1715
  return { discountBn: constants_1.BN_ZERO };
@@ -1887,7 +1794,7 @@ var PerpetualsClient = (function () {
1887
1794
  });
1888
1795
  };
1889
1796
  this.getStakedLpTokenPrice = function (poolKey, POOL_CONFIG) { return __awaiter(_this, void 0, void 0, function () {
1890
- var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_1, token, _a, custodies_2, custody, _b, _c, market, transaction, backUpOracleInstruction, result, index, res;
1797
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_1, token, _a, custodies_2, custody, _b, _c, market, transaction, backUpOracleInstruction, setCULimitIx, result, index, res;
1891
1798
  var _d;
1892
1799
  return __generator(this, function (_e) {
1893
1800
  switch (_e.label) {
@@ -1935,6 +1842,8 @@ var PerpetualsClient = (function () {
1935
1842
  return [4, backUpOracleInstructionPromise];
1936
1843
  case 2:
1937
1844
  backUpOracleInstruction = _e.sent();
1845
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1846
+ transaction.instructions.unshift(setCULimitIx);
1938
1847
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
1939
1848
  return [4, this.viewHelper.simulateTransaction(transaction)];
1940
1849
  case 3:
@@ -2001,7 +1910,7 @@ var PerpetualsClient = (function () {
2001
1910
  args_1[_i - 4] = arguments[_i];
2002
1911
  }
2003
1912
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, depositCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, depositCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2004
- var custodies, custodyMetas, marketMetas, _a, custodies_5, token, _b, custodies_6, custody, _c, _d, market, depositCustodyConfig, transaction, backUpOracleInstruction, result, index, res;
1913
+ var custodies, custodyMetas, marketMetas, _a, custodies_5, token, _b, custodies_6, custody, _c, _d, market, depositCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2005
1914
  var _e;
2006
1915
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2007
1916
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2052,6 +1961,8 @@ var PerpetualsClient = (function () {
2052
1961
  .transaction()];
2053
1962
  case 1:
2054
1963
  transaction = _f.sent();
1964
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1965
+ transaction.instructions.unshift(setCULimitIx);
2055
1966
  if (!enableBackupOracle) return [3, 3];
2056
1967
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2057
1968
  case 2:
@@ -2061,6 +1972,14 @@ var PerpetualsClient = (function () {
2061
1972
  case 3: return [4, this.viewHelper.simulateTransaction(transaction, userPublicKey)];
2062
1973
  case 4:
2063
1974
  result = _f.sent();
1975
+ if (result.value.err) {
1976
+ console.error('error Simulation failed:::', result);
1977
+ return [2, {
1978
+ amount: undefined,
1979
+ fee: undefined,
1980
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
1981
+ }];
1982
+ }
2064
1983
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getAddLiquidityAmountAndFee'; });
2065
1984
  res = this.viewHelper.decodeLogs(result, index, 'getAddLiquidityAmountAndFee');
2066
1985
  return [2, {
@@ -2077,7 +1996,7 @@ var PerpetualsClient = (function () {
2077
1996
  args_1[_i - 4] = arguments[_i];
2078
1997
  }
2079
1998
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, removeTokenCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, removeTokenCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2080
- var custodies, custodyMetas, marketMetas, _a, custodies_7, token, _b, custodies_8, custody, _c, _d, market, removeCustodyConfig, transaction, backUpOracleInstruction, result, index, res;
1999
+ var custodies, custodyMetas, marketMetas, _a, custodies_7, token, _b, custodies_8, custody, _c, _d, market, removeCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2081
2000
  var _e;
2082
2001
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2083
2002
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2128,6 +2047,8 @@ var PerpetualsClient = (function () {
2128
2047
  .transaction()];
2129
2048
  case 1:
2130
2049
  transaction = _f.sent();
2050
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2051
+ transaction.instructions.unshift(setCULimitIx);
2131
2052
  if (!enableBackupOracle) return [3, 3];
2132
2053
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2133
2054
  case 2:
@@ -2139,9 +2060,11 @@ var PerpetualsClient = (function () {
2139
2060
  result = _f.sent();
2140
2061
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getRemoveLiquidityAmountAndFee'; });
2141
2062
  if (result.value.err) {
2063
+ console.error('error Simulation failed:', result);
2142
2064
  return [2, {
2143
- amount: new anchor_1.BN(0),
2144
- fee: new anchor_1.BN(0),
2065
+ amount: undefined,
2066
+ fee: undefined,
2067
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2145
2068
  }];
2146
2069
  }
2147
2070
  res = this.viewHelper.decodeLogs(result, index, 'getRemoveLiquidityAmountAndFee');
@@ -2154,7 +2077,7 @@ var PerpetualsClient = (function () {
2154
2077
  });
2155
2078
  };
2156
2079
  this.getCompoundingLPTokenPrice = function (poolKey, POOL_CONFIG) { return __awaiter(_this, void 0, void 0, function () {
2157
- var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_9, token, _a, custodies_10, custody, _b, _c, market, backUpOracleInstruction, transaction, result, index, res;
2080
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_9, token, _a, custodies_10, custody, _b, _c, market, backUpOracleInstruction, transaction, setCULimitIx, result, index, res;
2158
2081
  var _d;
2159
2082
  return __generator(this, function (_e) {
2160
2083
  switch (_e.label) {
@@ -2202,6 +2125,8 @@ var PerpetualsClient = (function () {
2202
2125
  .transaction()];
2203
2126
  case 2:
2204
2127
  transaction = _e.sent();
2128
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2129
+ transaction.instructions.unshift(setCULimitIx);
2205
2130
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
2206
2131
  return [4, this.viewHelper.simulateTransaction(transaction)];
2207
2132
  case 3:
@@ -2218,7 +2143,7 @@ var PerpetualsClient = (function () {
2218
2143
  args_1[_i - 4] = arguments[_i];
2219
2144
  }
2220
2145
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, depositCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, depositCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2221
- var custodies, custodyMetas, marketMetas, _a, custodies_11, token, _b, custodies_12, custody, _c, _d, market, depositCustodyConfig, rewardCustody, transaction, backUpOracleInstruction, result, index, res;
2146
+ var custodies, custodyMetas, marketMetas, _a, custodies_11, token, _b, custodies_12, custody, _c, _d, market, depositCustodyConfig, rewardCustody, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2222
2147
  var _e;
2223
2148
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2224
2149
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2273,6 +2198,8 @@ var PerpetualsClient = (function () {
2273
2198
  .transaction()];
2274
2199
  case 1:
2275
2200
  transaction = _f.sent();
2201
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2202
+ transaction.instructions.unshift(setCULimitIx);
2276
2203
  if (!enableBackupOracle) return [3, 3];
2277
2204
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2278
2205
  case 2:
@@ -2298,7 +2225,7 @@ var PerpetualsClient = (function () {
2298
2225
  args_1[_i - 4] = arguments[_i];
2299
2226
  }
2300
2227
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, removeTokenCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, removeTokenCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2301
- var custodies, custodyMetas, marketMetas, _a, custodies_13, token, _b, custodies_14, custody, _c, _d, market, removeCustodyConfig, rewardCustody, transaction, backUpOracleInstruction, result, index, res;
2228
+ var custodies, custodyMetas, marketMetas, _a, custodies_13, token, _b, custodies_14, custody, _c, _d, market, removeCustodyConfig, rewardCustody, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2302
2229
  var _e;
2303
2230
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2304
2231
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2353,6 +2280,8 @@ var PerpetualsClient = (function () {
2353
2280
  .transaction()];
2354
2281
  case 1:
2355
2282
  transaction = _f.sent();
2283
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2284
+ transaction.instructions.unshift(setCULimitIx);
2356
2285
  if (!enableBackupOracle) return [3, 3];
2357
2286
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2358
2287
  case 2:
@@ -2547,11 +2476,10 @@ var PerpetualsClient = (function () {
2547
2476
  for (var _i = 8; _i < arguments.length; _i++) {
2548
2477
  args_1[_i - 8] = arguments[_i];
2549
2478
  }
2550
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, priceWithSlippage_1, collateralWithfee_1, size_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, priceWithSlippage, collateralWithfee, size, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2479
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, priceWithSlippage_1, collateralWithfee_1, size_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, priceWithSlippage, collateralWithfee, size, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2551
2480
  var publicKey, targetCustodyConfig, collateralCustodyConfig, collateralToken, marketAccount, userCollateralTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, params, instruction;
2552
2481
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2553
2482
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2554
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2555
2483
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2556
2484
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2557
2485
  return __generator(this, function (_c) {
@@ -2644,7 +2572,7 @@ var PerpetualsClient = (function () {
2644
2572
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
2645
2573
  fundingMint: collateralCustodyConfig.mintKey
2646
2574
  })
2647
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2575
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2648
2576
  .instruction()];
2649
2577
  case 7:
2650
2578
  instruction = _c.sent();
@@ -2662,11 +2590,10 @@ var PerpetualsClient = (function () {
2662
2590
  for (var _i = 6; _i < arguments.length; _i++) {
2663
2591
  args_1[_i - 6] = arguments[_i];
2664
2592
  }
2665
- return __awaiter(_this, __spreadArray([marketSymbol_1, collateralSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (marketSymbol, collateralSymbol, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
2593
+ return __awaiter(_this, __spreadArray([marketSymbol_1, collateralSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (marketSymbol, collateralSymbol, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
2666
2594
  var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, instruction, closeWsolATAIns, error_1;
2667
2595
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2668
2596
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2669
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2670
2597
  if (createUserATA === void 0) { createUserATA = true; }
2671
2598
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
2672
2599
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -2745,7 +2672,7 @@ var PerpetualsClient = (function () {
2745
2672
  collateralMint: collateralCustodyConfig.mintKey,
2746
2673
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2747
2674
  })
2748
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2675
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2749
2676
  .instruction()];
2750
2677
  case 6:
2751
2678
  instruction = _b.sent();
@@ -2767,16 +2694,15 @@ var PerpetualsClient = (function () {
2767
2694
  });
2768
2695
  });
2769
2696
  };
2770
- this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2697
+ this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2771
2698
  var args_1 = [];
2772
- for (var _i = 10; _i < arguments.length; _i++) {
2773
- args_1[_i - 10] = arguments[_i];
2699
+ for (var _i = 9; _i < arguments.length; _i++) {
2700
+ args_1[_i - 9] = arguments[_i];
2774
2701
  }
2775
- return __awaiter(_this, __spreadArray([targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, collateralTokenSymbol, userInputTokenSymbol, amountIn, minCollateralAmountOut, priceWithSlippage, sizeAmount, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2776
- var publicKey, userInputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, targetToken, userInputTokenAccount, userInputToken, lamports, unWrappedSolBalance, _a, userOutputTokenAccount, tokenAccountBalance, _b, userOutputTokenAccount, rebateMintAccount, inx, err_3;
2702
+ return __awaiter(_this, __spreadArray([targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, collateralTokenSymbol, userInputTokenSymbol, amountIn, priceWithSlippage, sizeAmount, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2703
+ var publicKey, userInputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, targetToken, userInputTokenAccount, userInputToken, lamports, unWrappedSolBalance, _a, userOutputTokenAccount, tokenAccountBalance, _b, userOutputTokenAccount, inx, err_3;
2777
2704
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2778
2705
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2779
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2780
2706
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2781
2707
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2782
2708
  return __generator(this, function (_c) {
@@ -2870,18 +2796,10 @@ var PerpetualsClient = (function () {
2870
2796
  }
2871
2797
  _c.label = 10;
2872
2798
  case 10:
2873
- rebateMintAccount = {
2874
- pubkey: collateralCustodyConfig.mintKey,
2875
- isSigner: false,
2876
- isWritable: false
2877
- };
2878
- _c.label = 11;
2879
- case 11:
2880
- _c.trys.push([11, 13, , 14]);
2799
+ _c.trys.push([10, 12, , 13]);
2881
2800
  return [4, this.program.methods
2882
2801
  .swapAndOpen({
2883
2802
  amountIn: amountIn,
2884
- minCollateralAmountOut: minCollateralAmountOut,
2885
2803
  priceWithSlippage: priceWithSlippage,
2886
2804
  sizeAmount: sizeAmount,
2887
2805
  privilege: privilege
@@ -2912,17 +2830,17 @@ var PerpetualsClient = (function () {
2912
2830
  collateralMint: collateralCustodyConfig.mintKey,
2913
2831
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralTokenSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2914
2832
  })
2915
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2833
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2916
2834
  .instruction()];
2917
- case 12:
2835
+ case 11:
2918
2836
  inx = _c.sent();
2919
2837
  instructions.push(inx);
2920
- return [3, 14];
2921
- case 13:
2838
+ return [3, 13];
2839
+ case 12:
2922
2840
  err_3 = _c.sent();
2923
2841
  console.error("perpClient SwapAndOpen error:: ", err_3);
2924
2842
  throw err_3;
2925
- case 14: return [2, {
2843
+ case 13: return [2, {
2926
2844
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
2927
2845
  additionalSigners: additionalSigners
2928
2846
  }];
@@ -2930,16 +2848,15 @@ var PerpetualsClient = (function () {
2930
2848
  });
2931
2849
  });
2932
2850
  };
2933
- this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2851
+ this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2934
2852
  var args_1 = [];
2935
- for (var _i = 8; _i < arguments.length; _i++) {
2936
- args_1[_i - 8] = arguments[_i];
2853
+ for (var _i = 7; _i < arguments.length; _i++) {
2854
+ args_1[_i - 7] = arguments[_i];
2937
2855
  }
2938
- return __awaiter(_this, __spreadArray([targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, userOutputTokenSymbol, collateralTokenSymbol, minSwapAmountOut, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, ephemeralSignerPubkey) {
2939
- var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, rebateMintAccount, inx, err_4;
2856
+ return __awaiter(_this, __spreadArray([targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, userOutputTokenSymbol, collateralTokenSymbol, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, ephemeralSignerPubkey) {
2857
+ var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, inx, err_4;
2940
2858
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2941
2859
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2942
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2943
2860
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2944
2861
  return __generator(this, function (_a) {
2945
2862
  switch (_a.label) {
@@ -3005,18 +2922,12 @@ var PerpetualsClient = (function () {
3005
2922
  if (!(_a.sent())) {
3006
2923
  preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userCollateralTokenAccount, publicKey, collateralToken.mintKey, collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID));
3007
2924
  }
3008
- rebateMintAccount = {
3009
- pubkey: collateralCustodyConfig.mintKey,
3010
- isSigner: false,
3011
- isWritable: false
3012
- };
3013
2925
  _a.label = 5;
3014
2926
  case 5:
3015
2927
  _a.trys.push([5, 7, , 8]);
3016
2928
  return [4, this.program.methods
3017
2929
  .closeAndSwap({
3018
2930
  priceWithSlippage: priceWithSlippage,
3019
- minSwapAmountOut: minSwapAmountOut,
3020
2931
  privilege: privilege
3021
2932
  })
3022
2933
  .accounts({
@@ -3045,7 +2956,7 @@ var PerpetualsClient = (function () {
3045
2956
  collateralMint: collateralCustodyConfig.mintKey,
3046
2957
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
3047
2958
  })
3048
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2959
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3049
2960
  .instruction()];
3050
2961
  case 6:
3051
2962
  inx = _a.sent();
@@ -3166,12 +3077,12 @@ var PerpetualsClient = (function () {
3166
3077
  });
3167
3078
  });
3168
3079
  };
3169
- this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1) {
3080
+ this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1) {
3170
3081
  var args_1 = [];
3171
- for (var _i = 8; _i < arguments.length; _i++) {
3172
- args_1[_i - 8] = arguments[_i];
3082
+ for (var _i = 7; _i < arguments.length; _i++) {
3083
+ args_1[_i - 7] = arguments[_i];
3173
3084
  }
3174
- return __awaiter(_this, __spreadArray([targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, inputSymbol, collateralSymbol, amountIn, minCollateralAmountOut, side, positionPubKey, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
3085
+ return __awaiter(_this, __spreadArray([targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, inputSymbol, collateralSymbol, amountIn, side, positionPubKey, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
3175
3086
  var publicKey, collateralCustodyConfig, targetCustodyConfig, inputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userInputTokenAccount, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, userCollateralTokenAccount, marketAccount, instruction;
3176
3087
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
3177
3088
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -3250,7 +3161,6 @@ var PerpetualsClient = (function () {
3250
3161
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3251
3162
  return [4, this.program.methods.swapAndAddCollateral({
3252
3163
  amountIn: amountIn,
3253
- minCollateralAmountOut: minCollateralAmountOut,
3254
3164
  }).accounts({
3255
3165
  owner: publicKey,
3256
3166
  feePayer: publicKey,
@@ -3286,12 +3196,12 @@ var PerpetualsClient = (function () {
3286
3196
  });
3287
3197
  });
3288
3198
  };
3289
- this.removeCollateral = function (collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3199
+ this.removeCollateral = function (collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3290
3200
  var args_1 = [];
3291
3201
  for (var _i = 6; _i < arguments.length; _i++) {
3292
3202
  args_1[_i - 6] = arguments[_i];
3293
3203
  }
3294
- return __awaiter(_this, __spreadArray([collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (collateralWithFee, marketSymbol, collateralSymbol, side, positionPubKey, poolConfig, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
3204
+ return __awaiter(_this, __spreadArray([collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (collateralDeltaUsd, marketSymbol, collateralSymbol, side, positionPubKey, poolConfig, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
3295
3205
  var publicKey, collateralCustodyConfig, targetCustodyConfig, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, marketAccount, instruction, closeWsolATAIns, error_2;
3296
3206
  if (createUserATA === void 0) { createUserATA = true; }
3297
3207
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
@@ -3355,7 +3265,7 @@ var PerpetualsClient = (function () {
3355
3265
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3356
3266
  return [4, this.program.methods
3357
3267
  .removeCollateral({
3358
- collateralDelta: collateralWithFee,
3268
+ collateralDeltaUsd: collateralDeltaUsd,
3359
3269
  })
3360
3270
  .accounts({
3361
3271
  owner: publicKey,
@@ -3397,12 +3307,12 @@ var PerpetualsClient = (function () {
3397
3307
  });
3398
3308
  });
3399
3309
  };
3400
- this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1) {
3310
+ this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1) {
3401
3311
  var args_1 = [];
3402
- for (var _i = 7; _i < arguments.length; _i++) {
3403
- args_1[_i - 7] = arguments[_i];
3312
+ for (var _i = 6; _i < arguments.length; _i++) {
3313
+ args_1[_i - 6] = arguments[_i];
3404
3314
  }
3405
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, outputSymbol, minSwapAmountOut, collateralDelta, side, poolConfig, ephemeralSignerPubkey) {
3315
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, outputSymbol, collateralDeltaUsd, side, poolConfig, ephemeralSignerPubkey) {
3406
3316
  var publicKey, targetCustodyConfig, collateralCustodyConfig, outputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, lamports, userCollateralTokenAccount, marketAccount, positionAccount, instruction;
3407
3317
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
3408
3318
  return __generator(this, function (_a) {
@@ -3459,8 +3369,7 @@ var PerpetualsClient = (function () {
3459
3369
  positionAccount = poolConfig.getPositionFromMarketPk(publicKey, marketAccount);
3460
3370
  return [4, this.program.methods
3461
3371
  .removeCollateralAndSwap({
3462
- collateralDelta: collateralDelta,
3463
- minSwapAmountOut: minSwapAmountOut,
3372
+ collateralDeltaUsd: collateralDeltaUsd,
3464
3373
  })
3465
3374
  .accounts({
3466
3375
  owner: publicKey,
@@ -3505,11 +3414,10 @@ var PerpetualsClient = (function () {
3505
3414
  for (var _i = 8; _i < arguments.length; _i++) {
3506
3415
  args_1[_i - 8] = arguments[_i];
3507
3416
  }
3508
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, positionPubKey_1, side_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, positionPubKey, side, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
3417
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, positionPubKey_1, side_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, positionPubKey, side, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount) {
3509
3418
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3510
3419
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3511
3420
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3512
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3513
3421
  return __generator(this, function (_a) {
3514
3422
  switch (_a.label) {
3515
3423
  case 0:
@@ -3552,7 +3460,7 @@ var PerpetualsClient = (function () {
3552
3460
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3553
3461
  collateralMint: collateralCustodyConfig.mintKey
3554
3462
  })
3555
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3463
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3556
3464
  .instruction()];
3557
3465
  case 1:
3558
3466
  instruction = _a.sent();
@@ -3570,11 +3478,10 @@ var PerpetualsClient = (function () {
3570
3478
  for (var _i = 8; _i < arguments.length; _i++) {
3571
3479
  args_1[_i - 8] = arguments[_i];
3572
3480
  }
3573
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, side, positionPubKey, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
3481
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, side, positionPubKey, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount) {
3574
3482
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3575
3483
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3576
3484
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3577
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3578
3485
  return __generator(this, function (_a) {
3579
3486
  switch (_a.label) {
3580
3487
  case 0:
@@ -3617,7 +3524,7 @@ var PerpetualsClient = (function () {
3617
3524
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3618
3525
  collateralMint: collateralCustodyConfig.mintKey
3619
3526
  })
3620
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3527
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3621
3528
  .instruction()];
3622
3529
  case 1:
3623
3530
  instruction = _a.sent();
@@ -4084,119 +3991,8 @@ var PerpetualsClient = (function () {
4084
3991
  }
4085
3992
  });
4086
3993
  }); };
4087
- this.updateNftAccount = function (nftMint, updateReferer, updateBooster, flpStakeAccounts) { return __awaiter(_this, void 0, void 0, function () {
4088
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, nftReferralAccount, nftTokenAccount, flpStakeAccountMetas, _i, flpStakeAccounts_1, flpStakeAccountPk, updateNftTradingAccountInstruction, err_8;
4089
- return __generator(this, function (_a) {
4090
- switch (_a.label) {
4091
- case 0:
4092
- publicKey = this.provider.wallet.publicKey;
4093
- preInstructions = [];
4094
- instructions = [];
4095
- postInstructions = [];
4096
- additionalSigners = [];
4097
- _a.label = 1;
4098
- case 1:
4099
- _a.trys.push([1, 4, , 5]);
4100
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4101
- Buffer.from("trading"),
4102
- nftMint.toBuffer(),
4103
- ], this.programId)[0];
4104
- nftReferralAccount = web3_js_1.PublicKey.findProgramAddressSync([
4105
- Buffer.from("referral"),
4106
- publicKey.toBuffer(),
4107
- ], this.programId)[0];
4108
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, publicKey, true)];
4109
- case 2:
4110
- nftTokenAccount = _a.sent();
4111
- flpStakeAccountMetas = [];
4112
- for (_i = 0, flpStakeAccounts_1 = flpStakeAccounts; _i < flpStakeAccounts_1.length; _i++) {
4113
- flpStakeAccountPk = flpStakeAccounts_1[_i];
4114
- flpStakeAccountMetas.push({
4115
- pubkey: flpStakeAccountPk,
4116
- isSigner: false,
4117
- isWritable: true,
4118
- });
4119
- }
4120
- return [4, this.program.methods
4121
- .updateTradingAccount({
4122
- updateReferer: updateReferer,
4123
- updateBooster: updateBooster
4124
- })
4125
- .accounts({
4126
- owner: publicKey,
4127
- feePayer: publicKey,
4128
- nftTokenAccount: nftTokenAccount,
4129
- referralAccount: nftReferralAccount,
4130
- tradingAccount: nftTradingAccount
4131
- })
4132
- .instruction()];
4133
- case 3:
4134
- updateNftTradingAccountInstruction = _a.sent();
4135
- instructions.push(updateNftTradingAccountInstruction);
4136
- return [3, 5];
4137
- case 4:
4138
- err_8 = _a.sent();
4139
- console.log("perpClient updateNftAccount error:: ", err_8);
4140
- throw err_8;
4141
- case 5: return [2, {
4142
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4143
- additionalSigners: additionalSigners
4144
- }];
4145
- }
4146
- });
4147
- }); };
4148
- this.levelUp = function (poolConfig, nftMint, authorizationRulesAccount) { return __awaiter(_this, void 0, void 0, function () {
4149
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, metadataAccount, levelUpInstruction, err_9;
4150
- return __generator(this, function (_a) {
4151
- switch (_a.label) {
4152
- case 0:
4153
- publicKey = this.provider.wallet.publicKey;
4154
- preInstructions = [];
4155
- instructions = [];
4156
- postInstructions = [];
4157
- additionalSigners = [];
4158
- _a.label = 1;
4159
- case 1:
4160
- _a.trys.push([1, 3, , 4]);
4161
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4162
- Buffer.from("trading"),
4163
- nftMint.toBuffer(),
4164
- ], this.programId)[0];
4165
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
4166
- return [4, this.program.methods
4167
- .levelUp({})
4168
- .accounts({
4169
- owner: publicKey,
4170
- perpetuals: this.perpetuals.publicKey,
4171
- pool: poolConfig.poolAddress,
4172
- metadataAccount: metadataAccount,
4173
- nftMint: nftMint,
4174
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
4175
- tradingAccount: nftTradingAccount,
4176
- transferAuthority: this.authority.publicKey,
4177
- authorizationRulesAccount: authorizationRulesAccount,
4178
- authorizationRulesProgram: new web3_js_1.PublicKey('auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg'),
4179
- systemProgram: web3_js_1.SystemProgram.programId,
4180
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
4181
- })
4182
- .instruction()];
4183
- case 2:
4184
- levelUpInstruction = _a.sent();
4185
- instructions.push(levelUpInstruction);
4186
- return [3, 4];
4187
- case 3:
4188
- err_9 = _a.sent();
4189
- console.log("perpClient levelUp error:: ", err_9);
4190
- throw err_9;
4191
- case 4: return [2, {
4192
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4193
- additionalSigners: additionalSigners
4194
- }];
4195
- }
4196
- });
4197
- }); };
4198
3994
  this.depositStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4199
- var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_10;
3995
+ var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_8;
4200
3996
  return __generator(this, function (_a) {
4201
3997
  switch (_a.label) {
4202
3998
  case 0:
@@ -4238,9 +4034,9 @@ var PerpetualsClient = (function () {
4238
4034
  instructions.push(depositStakeInstruction);
4239
4035
  return [3, 5];
4240
4036
  case 4:
4241
- err_10 = _a.sent();
4242
- console.log("perpClient depositStaking error:: ", err_10);
4243
- throw err_10;
4037
+ err_8 = _a.sent();
4038
+ console.log("perpClient depositStaking error:: ", err_8);
4039
+ throw err_8;
4244
4040
  case 5: return [2, {
4245
4041
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4246
4042
  additionalSigners: additionalSigners
@@ -4249,7 +4045,7 @@ var PerpetualsClient = (function () {
4249
4045
  });
4250
4046
  }); };
4251
4047
  this.refreshStakeWithAllFlpStakeAccounts = function (rewardSymbol, poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4252
- var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_11;
4048
+ var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_9;
4253
4049
  return __generator(this, function (_c) {
4254
4050
  switch (_c.label) {
4255
4051
  case 0:
@@ -4296,9 +4092,9 @@ var PerpetualsClient = (function () {
4296
4092
  refreshStakeInstruction = _c.sent();
4297
4093
  return [2, refreshStakeInstruction];
4298
4094
  case 2:
4299
- err_11 = _c.sent();
4300
- console.log("perpClient refreshStaking error:: ", err_11);
4301
- throw err_11;
4095
+ err_9 = _c.sent();
4096
+ console.log("perpClient refreshStaking error:: ", err_9);
4097
+ throw err_9;
4302
4098
  case 3: return [2];
4303
4099
  }
4304
4100
  });
@@ -4309,7 +4105,7 @@ var PerpetualsClient = (function () {
4309
4105
  args_1[_i - 3] = arguments[_i];
4310
4106
  }
4311
4107
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, flpStakeAccountPk_1], args_1, true), void 0, function (rewardSymbol, poolConfig, flpStakeAccountPk, userPublicKey) {
4312
- var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_12;
4108
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_10;
4313
4109
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4314
4110
  return __generator(this, function (_c) {
4315
4111
  switch (_c.label) {
@@ -4357,9 +4153,9 @@ var PerpetualsClient = (function () {
4357
4153
  refreshStakeInstruction = _c.sent();
4358
4154
  return [2, refreshStakeInstruction];
4359
4155
  case 2:
4360
- err_12 = _c.sent();
4361
- console.log("perpClient refreshStaking error:: ", err_12);
4362
- throw err_12;
4156
+ err_10 = _c.sent();
4157
+ console.log("perpClient refreshStaking error:: ", err_10);
4158
+ throw err_10;
4363
4159
  case 3: return [2];
4364
4160
  }
4365
4161
  });
@@ -4371,7 +4167,7 @@ var PerpetualsClient = (function () {
4371
4167
  args_1[_i - 3] = arguments[_i];
4372
4168
  }
4373
4169
  return __awaiter(_this, __spreadArray([rewardSymbol_1, unstakeAmount_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, unstakeAmount, poolConfig, userPublicKey) {
4374
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_13;
4170
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_11;
4375
4171
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4376
4172
  return __generator(this, function (_b) {
4377
4173
  switch (_b.label) {
@@ -4423,9 +4219,9 @@ var PerpetualsClient = (function () {
4423
4219
  instructions.push(unstakeInstantInstruction);
4424
4220
  return [3, 6];
4425
4221
  case 5:
4426
- err_13 = _b.sent();
4427
- console.log("perpClient unstakeInstant error:: ", err_13);
4428
- throw err_13;
4222
+ err_11 = _b.sent();
4223
+ console.log("perpClient unstakeInstant error:: ", err_11);
4224
+ throw err_11;
4429
4225
  case 6: return [2, {
4430
4226
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4431
4227
  additionalSigners: additionalSigners
@@ -4435,7 +4231,7 @@ var PerpetualsClient = (function () {
4435
4231
  });
4436
4232
  };
4437
4233
  this.setFeeShareBps = function (poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4438
- var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_14;
4234
+ var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_12;
4439
4235
  return __generator(this, function (_c) {
4440
4236
  switch (_c.label) {
4441
4237
  case 0:
@@ -4479,15 +4275,15 @@ var PerpetualsClient = (function () {
4479
4275
  refreshStakeInstruction = _c.sent();
4480
4276
  return [2, refreshStakeInstruction];
4481
4277
  case 2:
4482
- err_14 = _c.sent();
4483
- console.log("perpClient refreshStaking error:: ", err_14);
4484
- throw err_14;
4278
+ err_12 = _c.sent();
4279
+ console.log("perpClient refreshStaking error:: ", err_12);
4280
+ throw err_12;
4485
4281
  case 3: return [2];
4486
4282
  }
4487
4283
  });
4488
4284
  }); };
4489
4285
  this.unstakeRequest = function (unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4490
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_15;
4286
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_13;
4491
4287
  return __generator(this, function (_a) {
4492
4288
  switch (_a.label) {
4493
4289
  case 0:
@@ -4521,9 +4317,9 @@ var PerpetualsClient = (function () {
4521
4317
  instructions.push(unstakeRequestInstruction);
4522
4318
  return [3, 4];
4523
4319
  case 3:
4524
- err_15 = _a.sent();
4525
- console.log("perpClient unstakeRequest error:: ", err_15);
4526
- throw err_15;
4320
+ err_13 = _a.sent();
4321
+ console.log("perpClient unstakeRequest error:: ", err_13);
4322
+ throw err_13;
4527
4323
  case 4: return [2, {
4528
4324
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4529
4325
  additionalSigners: additionalSigners
@@ -4537,7 +4333,7 @@ var PerpetualsClient = (function () {
4537
4333
  args_1[_i - 1] = arguments[_i];
4538
4334
  }
4539
4335
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, pendingActivation, deactivated, createUserLPTA, userPublicKey) {
4540
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_16;
4336
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_14;
4541
4337
  if (pendingActivation === void 0) { pendingActivation = true; }
4542
4338
  if (deactivated === void 0) { deactivated = true; }
4543
4339
  if (createUserLPTA === void 0) { createUserLPTA = true; }
@@ -4593,9 +4389,9 @@ var PerpetualsClient = (function () {
4593
4389
  instructions.push(withdrawStakeInstruction);
4594
4390
  return [3, 6];
4595
4391
  case 5:
4596
- err_16 = _b.sent();
4597
- console.log("perpClient withdrawStake error:: ", err_16);
4598
- throw err_16;
4392
+ err_14 = _b.sent();
4393
+ console.log("perpClient withdrawStake error:: ", err_14);
4394
+ throw err_14;
4599
4395
  case 6: return [2, {
4600
4396
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4601
4397
  additionalSigners: additionalSigners
@@ -4610,7 +4406,7 @@ var PerpetualsClient = (function () {
4610
4406
  args_1[_i - 3] = arguments[_i];
4611
4407
  }
4612
4408
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, tokenStakeAccount_1], args_1, true), void 0, function (rewardSymbol, poolConfig, tokenStakeAccount, createUserATA) {
4613
- var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_17;
4409
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_15;
4614
4410
  if (createUserATA === void 0) { createUserATA = true; }
4615
4411
  return __generator(this, function (_b) {
4616
4412
  switch (_b.label) {
@@ -4671,9 +4467,9 @@ var PerpetualsClient = (function () {
4671
4467
  instructions.push(withdrawStakeInstruction);
4672
4468
  return [3, 6];
4673
4469
  case 5:
4674
- err_17 = _b.sent();
4675
- console.log("perpClient withdrawStake error:: ", err_17);
4676
- throw err_17;
4470
+ err_15 = _b.sent();
4471
+ console.log("perpClient withdrawStake error:: ", err_15);
4472
+ throw err_15;
4677
4473
  case 6: return [2, {
4678
4474
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4679
4475
  additionalSigners: additionalSigners
@@ -4688,7 +4484,7 @@ var PerpetualsClient = (function () {
4688
4484
  args_1[_i - 5] = arguments[_i];
4689
4485
  }
4690
4486
  return __awaiter(_this, __spreadArray([amountIn_1, minCompoundingAmountOut_1, inTokenSymbol_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (amountIn, minCompoundingAmountOut, inTokenSymbol, rewardTokenMint, poolConfig, skipBalanceChecks, ephemeralSignerPubkey, userPublicKey) {
4691
- var publicKey, preInstructions, instructions, additionalSigners, postInstructions, rewardCustody, inCustodyConfig, lpTokenMint, compoundingTokenMint, wrappedSolAccount, lpTokenAccount, compoundingTokenAccount, fundingAccount, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, lamports, unWrappedSolBalance, _e, addCompoundingLiquidity, err_18;
4487
+ var publicKey, preInstructions, instructions, additionalSigners, postInstructions, rewardCustody, inCustodyConfig, lpTokenMint, compoundingTokenMint, wrappedSolAccount, lpTokenAccount, compoundingTokenAccount, fundingAccount, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, lamports, unWrappedSolBalance, _e, addCompoundingLiquidity, err_16;
4692
4488
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
4693
4489
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4694
4490
  if (userPublicKey === void 0) { userPublicKey = undefined; }
@@ -4816,8 +4612,8 @@ var PerpetualsClient = (function () {
4816
4612
  instructions.push(addCompoundingLiquidity);
4817
4613
  return [3, 10];
4818
4614
  case 9:
4819
- err_18 = _f.sent();
4820
- console.log("perpClient addCompoundingLiquidity error:: ", err_18);
4615
+ err_16 = _f.sent();
4616
+ console.log("perpClient addCompoundingLiquidity error:: ", err_16);
4821
4617
  return [3, 10];
4822
4618
  case 10: return [2, {
4823
4619
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4833,7 +4629,7 @@ var PerpetualsClient = (function () {
4833
4629
  args_1[_i - 5] = arguments[_i];
4834
4630
  }
4835
4631
  return __awaiter(_this, __spreadArray([compoundingAmountIn_1, minAmountOut_1, outTokenSymbol_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (compoundingAmountIn, minAmountOut, outTokenSymbol, rewardTokenMint, poolConfig, createUserATA, ephemeralSignerPubkey, userPublicKey) {
4836
- var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, outCustodyConfig, lpTokenMint, compoundingTokenMint, lamports, _a, custodyAccountMetas, custodyOracleAccountMetas, markets, _b, _c, custody, _d, _e, market, compoundingTokenAccount, removeCompoundingLiquidity, err_19;
4632
+ var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, outCustodyConfig, lpTokenMint, compoundingTokenMint, lamports, _a, custodyAccountMetas, custodyOracleAccountMetas, markets, _b, _c, custody, _d, _e, market, compoundingTokenAccount, removeCompoundingLiquidity, err_17;
4837
4633
  if (createUserATA === void 0) { createUserATA = true; }
4838
4634
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4839
4635
  if (userPublicKey === void 0) { userPublicKey = undefined; }
@@ -4945,8 +4741,8 @@ var PerpetualsClient = (function () {
4945
4741
  instructions.push(removeCompoundingLiquidity);
4946
4742
  return [3, 8];
4947
4743
  case 7:
4948
- err_19 = _f.sent();
4949
- console.log("perpClient removeCompoundingLiquidity error:: ", err_19);
4744
+ err_17 = _f.sent();
4745
+ console.log("perpClient removeCompoundingLiquidity error:: ", err_17);
4950
4746
  return [3, 8];
4951
4747
  case 8: return [2, {
4952
4748
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4962,7 +4758,7 @@ var PerpetualsClient = (function () {
4962
4758
  args_1[_i - 3] = arguments[_i];
4963
4759
  }
4964
4760
  return __awaiter(_this, __spreadArray([amount_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (amount, rewardTokenMint, poolConfig, createUserATA) {
4965
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, _a, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _b, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _c, _d, custody, _e, _f, market, migrateStake, err_20;
4761
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, _a, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _b, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _c, _d, custody, _e, _f, market, migrateStake, err_18;
4966
4762
  if (createUserATA === void 0) { createUserATA = true; }
4967
4763
  return __generator(this, function (_g) {
4968
4764
  switch (_g.label) {
@@ -5060,8 +4856,8 @@ var PerpetualsClient = (function () {
5060
4856
  instructions.push(migrateStake);
5061
4857
  return [3, 8];
5062
4858
  case 7:
5063
- err_20 = _g.sent();
5064
- console.log("perpClient migrateStake error:: ", err_20);
4859
+ err_18 = _g.sent();
4860
+ console.log("perpClient migrateStake error:: ", err_18);
5065
4861
  return [3, 8];
5066
4862
  case 8: return [2, {
5067
4863
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5072,7 +4868,7 @@ var PerpetualsClient = (function () {
5072
4868
  });
5073
4869
  };
5074
4870
  this.migrateFlp = function (amount, rewardTokenMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5075
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_21;
4871
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_19;
5076
4872
  return __generator(this, function (_d) {
5077
4873
  switch (_d.label) {
5078
4874
  case 0:
@@ -5144,8 +4940,8 @@ var PerpetualsClient = (function () {
5144
4940
  instructions.push(migrateFlp);
5145
4941
  return [3, 4];
5146
4942
  case 3:
5147
- err_21 = _d.sent();
5148
- console.log("perpClient migrateFlp error:: ", err_21);
4943
+ err_19 = _d.sent();
4944
+ console.log("perpClient migrateFlp error:: ", err_19);
5149
4945
  return [3, 4];
5150
4946
  case 4: return [2, {
5151
4947
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5160,7 +4956,7 @@ var PerpetualsClient = (function () {
5160
4956
  args_1[_i - 1] = arguments[_i];
5161
4957
  }
5162
4958
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, rewardTokenSymbol) {
5163
- var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_22;
4959
+ var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_20;
5164
4960
  if (rewardTokenSymbol === void 0) { rewardTokenSymbol = 'USDC'; }
5165
4961
  return __generator(this, function (_e) {
5166
4962
  switch (_e.label) {
@@ -5218,8 +5014,8 @@ var PerpetualsClient = (function () {
5218
5014
  instructions.push(compoundingFee);
5219
5015
  return [3, 4];
5220
5016
  case 3:
5221
- err_22 = _e.sent();
5222
- console.log("perpClient compoundingFee error:: ", err_22);
5017
+ err_20 = _e.sent();
5018
+ console.log("perpClient compoundingFee error:: ", err_20);
5223
5019
  return [3, 4];
5224
5020
  case 4: return [2, {
5225
5021
  instructions: __spreadArray([], instructions, true),
@@ -5229,158 +5025,20 @@ var PerpetualsClient = (function () {
5229
5025
  });
5230
5026
  });
5231
5027
  };
5232
- this.burnAndClaim = function (owner, nftMint, poolConfig, createAta) { return __awaiter(_this, void 0, void 0, function () {
5233
- var preInstructions, instructions, postInstructions, additionalSigners, userTokenAccount, _a, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndClaimInstruction, err_23;
5234
- return __generator(this, function (_b) {
5235
- switch (_b.label) {
5028
+ this.depositTokenStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5029
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_21;
5030
+ return __generator(this, function (_a) {
5031
+ switch (_a.label) {
5236
5032
  case 0:
5237
5033
  preInstructions = [];
5238
5034
  instructions = [];
5239
5035
  postInstructions = [];
5240
5036
  additionalSigners = [];
5241
- _b.label = 1;
5037
+ _a.label = 1;
5242
5038
  case 1:
5243
- _b.trys.push([1, 7, , 8]);
5244
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, owner, true)];
5245
- case 2:
5246
- userTokenAccount = _b.sent();
5247
- _a = createAta;
5248
- if (!_a) return [3, 4];
5249
- return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5250
- case 3:
5251
- _a = !(_b.sent());
5252
- _b.label = 4;
5253
- case 4:
5254
- if (_a) {
5255
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(owner, userTokenAccount, owner, poolConfig.tokenMint));
5256
- }
5257
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, owner, true)];
5258
- case 5:
5259
- nftTokenAccount = _b.sent();
5260
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5261
- Buffer.from("trading"),
5262
- nftMint.toBuffer(),
5263
- ], this.programId)[0];
5264
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5265
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5266
- edition = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("edition")], constants_1.METAPLEX_PROGRAM_ID)[0];
5267
- tokenRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("token_record"), nftTokenAccount.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5268
- return [4, this.program.methods
5269
- .burnAndClaim({})
5270
- .accounts({
5271
- owner: owner,
5272
- receivingTokenAccount: userTokenAccount,
5273
- perpetuals: this.perpetuals.publicKey,
5274
- tokenVault: poolConfig.tokenVault,
5275
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5276
- metadataAccount: metadataAccount,
5277
- collectionMetadata: collectionMetadata,
5278
- edition: edition,
5279
- tokenRecord: tokenRecord,
5280
- tradingAccount: nftTradingAccount,
5281
- transferAuthority: poolConfig.transferAuthority,
5282
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5283
- nftMint: nftMint,
5284
- nftTokenAccount: nftTokenAccount,
5285
- systemProgram: web3_js_1.SystemProgram.programId,
5286
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5287
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5288
- eventAuthority: this.eventAuthority.publicKey,
5289
- program: this.programId,
5290
- receivingTokenMint: poolConfig.tokenMint,
5291
- })
5292
- .instruction()];
5293
- case 6:
5294
- burnAndClaimInstruction = _b.sent();
5295
- instructions.push(burnAndClaimInstruction);
5296
- return [3, 8];
5297
- case 7:
5298
- err_23 = _b.sent();
5299
- console.log("perpClient burnAndClaimInstruction error:: ", err_23);
5300
- throw err_23;
5301
- case 8: return [2, {
5302
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5303
- additionalSigners: additionalSigners
5304
- }];
5305
- }
5306
- });
5307
- }); };
5308
- this.burnAndStake = function (owner, feePayer, nftMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5309
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndStakeInstruction, err_24;
5310
- return __generator(this, function (_a) {
5311
- switch (_a.label) {
5312
- case 0:
5313
- preInstructions = [];
5314
- instructions = [];
5315
- postInstructions = [];
5316
- additionalSigners = [];
5317
- _a.label = 1;
5318
- case 1:
5319
- _a.trys.push([1, 3, , 4]);
5320
- tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5321
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, owner, true);
5322
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5323
- Buffer.from("trading"),
5324
- nftMint.toBuffer(),
5325
- ], this.programId)[0];
5326
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5327
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5328
- edition = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("edition")], constants_1.METAPLEX_PROGRAM_ID)[0];
5329
- tokenRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("token_record"), nftTokenAccount.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5330
- return [4, this.program.methods
5331
- .burnAndStake({})
5332
- .accounts({
5333
- owner: owner,
5334
- feePayer: feePayer,
5335
- perpetuals: this.perpetuals.publicKey,
5336
- tokenVault: poolConfig.tokenVault,
5337
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5338
- tokenStakeAccount: tokenStakeAccount,
5339
- metadataAccount: metadataAccount,
5340
- collectionMetadata: collectionMetadata,
5341
- edition: edition,
5342
- tokenRecord: tokenRecord,
5343
- tradingAccount: nftTradingAccount,
5344
- transferAuthority: poolConfig.transferAuthority,
5345
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5346
- nftMint: nftMint,
5347
- nftTokenAccount: nftTokenAccount,
5348
- systemProgram: web3_js_1.SystemProgram.programId,
5349
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5350
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5351
- eventAuthority: this.eventAuthority.publicKey,
5352
- program: this.programId
5353
- })
5354
- .instruction()];
5355
- case 2:
5356
- burnAndStakeInstruction = _a.sent();
5357
- instructions.push(burnAndStakeInstruction);
5358
- return [3, 4];
5359
- case 3:
5360
- err_24 = _a.sent();
5361
- console.log("perpClient burnAndStakeInstruction error:: ", err_24);
5362
- throw err_24;
5363
- case 4: return [2, {
5364
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5365
- additionalSigners: additionalSigners
5366
- }];
5367
- }
5368
- });
5369
- }); };
5370
- this.depositTokenStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5371
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_25;
5372
- return __generator(this, function (_a) {
5373
- switch (_a.label) {
5374
- case 0:
5375
- preInstructions = [];
5376
- instructions = [];
5377
- postInstructions = [];
5378
- additionalSigners = [];
5379
- _a.label = 1;
5380
- case 1:
5381
- _a.trys.push([1, 4, , 5]);
5382
- tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5383
- userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(poolConfig.tokenMint, owner, true);
5039
+ _a.trys.push([1, 4, , 5]);
5040
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5041
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(poolConfig.tokenMint, owner, true);
5384
5042
  return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5385
5043
  case 2:
5386
5044
  if (!(_a.sent())) {
@@ -5410,9 +5068,9 @@ var PerpetualsClient = (function () {
5410
5068
  instructions.push(depositTokenStakeInstruction);
5411
5069
  return [3, 5];
5412
5070
  case 4:
5413
- err_25 = _a.sent();
5414
- console.log("perpClient depositStakingInstruction error:: ", err_25);
5415
- throw err_25;
5071
+ err_21 = _a.sent();
5072
+ console.log("perpClient depositStakingInstruction error:: ", err_21);
5073
+ throw err_21;
5416
5074
  case 5: return [2, {
5417
5075
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5418
5076
  additionalSigners: additionalSigners
@@ -5421,7 +5079,7 @@ var PerpetualsClient = (function () {
5421
5079
  });
5422
5080
  }); };
5423
5081
  this.unstakeTokenRequest = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5424
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_26;
5082
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_22;
5425
5083
  return __generator(this, function (_a) {
5426
5084
  switch (_a.label) {
5427
5085
  case 0:
@@ -5450,9 +5108,9 @@ var PerpetualsClient = (function () {
5450
5108
  instructions.push(unstakeTokenRequestInstruction);
5451
5109
  return [3, 4];
5452
5110
  case 3:
5453
- err_26 = _a.sent();
5454
- console.log("perpClient unstakeTokenRequestInstruction error:: ", err_26);
5455
- throw err_26;
5111
+ err_22 = _a.sent();
5112
+ console.log("perpClient unstakeTokenRequestInstruction error:: ", err_22);
5113
+ throw err_22;
5456
5114
  case 4: return [2, {
5457
5115
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5458
5116
  additionalSigners: additionalSigners
@@ -5461,7 +5119,7 @@ var PerpetualsClient = (function () {
5461
5119
  });
5462
5120
  }); };
5463
5121
  this.unstakeTokenInstant = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5464
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_27;
5122
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_23;
5465
5123
  return __generator(this, function (_a) {
5466
5124
  switch (_a.label) {
5467
5125
  case 0:
@@ -5502,9 +5160,9 @@ var PerpetualsClient = (function () {
5502
5160
  instructions.push(unstakeTokenInstantInstruction);
5503
5161
  return [3, 5];
5504
5162
  case 4:
5505
- err_27 = _a.sent();
5506
- console.log("perpClient unstakeTokenInstantInstruction error:: ", err_27);
5507
- throw err_27;
5163
+ err_23 = _a.sent();
5164
+ console.log("perpClient unstakeTokenInstantInstruction error:: ", err_23);
5165
+ throw err_23;
5508
5166
  case 5: return [2, {
5509
5167
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5510
5168
  additionalSigners: additionalSigners
@@ -5513,7 +5171,7 @@ var PerpetualsClient = (function () {
5513
5171
  });
5514
5172
  }); };
5515
5173
  this.withdrawToken = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5516
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_28;
5174
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_24;
5517
5175
  return __generator(this, function (_a) {
5518
5176
  switch (_a.label) {
5519
5177
  case 0:
@@ -5554,9 +5212,9 @@ var PerpetualsClient = (function () {
5554
5212
  instructions.push(withdrawTokenInstruction);
5555
5213
  return [3, 5];
5556
5214
  case 4:
5557
- err_28 = _a.sent();
5558
- console.log("perpClient withdrawTokenInstruction error:: ", err_28);
5559
- throw err_28;
5215
+ err_24 = _a.sent();
5216
+ console.log("perpClient withdrawTokenInstruction error:: ", err_24);
5217
+ throw err_24;
5560
5218
  case 5: return [2, {
5561
5219
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5562
5220
  additionalSigners: additionalSigners
@@ -5565,7 +5223,7 @@ var PerpetualsClient = (function () {
5565
5223
  });
5566
5224
  }); };
5567
5225
  this.cancelUnstakeRequest = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5568
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_29;
5226
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_25;
5569
5227
  return __generator(this, function (_a) {
5570
5228
  switch (_a.label) {
5571
5229
  case 0:
@@ -5594,9 +5252,9 @@ var PerpetualsClient = (function () {
5594
5252
  instructions.push(cancelUnstakeRequestInstruction);
5595
5253
  return [3, 4];
5596
5254
  case 3:
5597
- err_29 = _a.sent();
5598
- console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_29);
5599
- throw err_29;
5255
+ err_25 = _a.sent();
5256
+ console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_25);
5257
+ throw err_25;
5600
5258
  case 4: return [2, {
5601
5259
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5602
5260
  additionalSigners: additionalSigners
@@ -5610,7 +5268,7 @@ var PerpetualsClient = (function () {
5610
5268
  args_1[_i - 2] = arguments[_i];
5611
5269
  }
5612
5270
  return __awaiter(_this, __spreadArray([owner_1, poolConfig_1], args_1, true), void 0, function (owner, poolConfig, createUserATA) {
5613
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_30;
5271
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_26;
5614
5272
  if (createUserATA === void 0) { createUserATA = true; }
5615
5273
  return __generator(this, function (_b) {
5616
5274
  switch (_b.label) {
@@ -5656,9 +5314,9 @@ var PerpetualsClient = (function () {
5656
5314
  instructions.push(collectTokenRewardInstruction);
5657
5315
  return [3, 6];
5658
5316
  case 5:
5659
- err_30 = _b.sent();
5660
- console.log("perpClient collectTokenRewardInstruction error:: ", err_30);
5661
- throw err_30;
5317
+ err_26 = _b.sent();
5318
+ console.log("perpClient collectTokenRewardInstruction error:: ", err_26);
5319
+ throw err_26;
5662
5320
  case 6: return [2, {
5663
5321
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5664
5322
  additionalSigners: additionalSigners
@@ -5673,7 +5331,7 @@ var PerpetualsClient = (function () {
5673
5331
  args_1[_i - 3] = arguments[_i];
5674
5332
  }
5675
5333
  return __awaiter(_this, __spreadArray([owner_1, rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rewardSymbol, poolConfig, createUserATA) {
5676
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_31;
5334
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_27;
5677
5335
  if (createUserATA === void 0) { createUserATA = true; }
5678
5336
  return __generator(this, function (_b) {
5679
5337
  switch (_b.label) {
@@ -5720,9 +5378,9 @@ var PerpetualsClient = (function () {
5720
5378
  instructions.push(collectRevenueInstruction);
5721
5379
  return [3, 6];
5722
5380
  case 5:
5723
- err_31 = _b.sent();
5724
- console.log("perpClient collectRevenueInstruction error:: ", err_31);
5725
- throw err_31;
5381
+ err_27 = _b.sent();
5382
+ console.log("perpClient collectRevenueInstruction error:: ", err_27);
5383
+ throw err_27;
5726
5384
  case 6: return [2, {
5727
5385
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5728
5386
  additionalSigners: additionalSigners
@@ -5731,179 +5389,18 @@ var PerpetualsClient = (function () {
5731
5389
  });
5732
5390
  });
5733
5391
  };
5734
- this.initRewardVault = function (nftCount, rewardSymbol, collectionMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5735
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fbNftProgramData, rewardVault, rewardTokenAccount, nftTransferAuthority, initRewardVault, err_32;
5736
- return __generator(this, function (_a) {
5737
- switch (_a.label) {
5738
- case 0:
5739
- publicKey = this.provider.wallet.publicKey;
5740
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5741
- instructions = [];
5742
- additionalSigners = [];
5743
- _a.label = 1;
5744
- case 1:
5745
- _a.trys.push([1, 3, , 4]);
5746
- fbNftProgramData = web3_js_1.PublicKey.findProgramAddressSync([this.programFbnftReward.programId.toBuffer()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0];
5747
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5748
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5749
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5750
- return [4, this.programFbnftReward.methods
5751
- .initRewardVault({
5752
- nftCount: nftCount
5753
- })
5754
- .accounts({
5755
- admin: publicKey,
5756
- transferAuthority: nftTransferAuthority,
5757
- rewardVault: rewardVault,
5758
- rewardMint: rewardCustodyMint,
5759
- rewardTokenAccount: rewardTokenAccount,
5760
- collectionMint: collectionMint,
5761
- programData: fbNftProgramData,
5762
- systemProgram: web3_js_1.SystemProgram.programId,
5763
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5764
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
5765
- })
5766
- .instruction()];
5767
- case 2:
5768
- initRewardVault = _a.sent();
5769
- instructions.push(initRewardVault);
5770
- return [3, 4];
5771
- case 3:
5772
- err_32 = _a.sent();
5773
- console.log("perpClient InitRewardVault error:: ", err_32);
5774
- throw err_32;
5775
- case 4: return [2, {
5776
- instructions: __spreadArray([], instructions, true),
5777
- additionalSigners: additionalSigners
5778
- }];
5779
- }
5780
- });
5781
- }); };
5782
- this.distributeReward = function (rewardAmount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5783
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fundingAccount, rewardVault, rewardTokenAccount, distributeReward, err_33;
5784
- return __generator(this, function (_a) {
5785
- switch (_a.label) {
5786
- case 0:
5787
- publicKey = this.provider.wallet.publicKey;
5788
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5789
- instructions = [];
5790
- additionalSigners = [];
5791
- _a.label = 1;
5792
- case 1:
5793
- _a.trys.push([1, 3, , 4]);
5794
- fundingAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true);
5795
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5796
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5797
- return [4, this.programFbnftReward.methods
5798
- .distributeRewards({
5799
- rewardAmount: rewardAmount
5800
- })
5801
- .accounts({
5802
- admin: publicKey,
5803
- fundingAccount: fundingAccount,
5804
- rewardVault: rewardVault,
5805
- rewardTokenAccount: rewardTokenAccount,
5806
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5807
- })
5808
- .instruction()];
5809
- case 2:
5810
- distributeReward = _a.sent();
5811
- instructions.push(distributeReward);
5812
- return [3, 4];
5813
- case 3:
5814
- err_33 = _a.sent();
5815
- console.log("perpClient distributeReward error:: ", err_33);
5816
- throw err_33;
5817
- case 4: return [2, {
5818
- instructions: __spreadArray([], instructions, true),
5819
- additionalSigners: additionalSigners
5820
- }];
5821
- }
5822
- });
5823
- }); };
5824
- this.collectNftReward = function (rewardSymbol_1, poolConfig_1, nftMint_1) {
5392
+ this.collectRebate = function (owner_1, rebateSymbol_1, poolConfig_1) {
5825
5393
  var args_1 = [];
5826
5394
  for (var _i = 3; _i < arguments.length; _i++) {
5827
5395
  args_1[_i - 3] = arguments[_i];
5828
5396
  }
5829
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, nftMint_1], args_1, true), void 0, function (rewardSymbol, poolConfig, nftMint, createUserATA) {
5830
- var publicKey, rewardToken, rewardCustodyMint, instructions, additionalSigners, nftTokenAccount, metadataAccount, receivingTokenAccount, _a, rewardRecord, rewardVault, rewardTokenAccount, nftTransferAuthority, collectNftReward, err_34;
5397
+ return __awaiter(_this, __spreadArray([owner_1, rebateSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rebateSymbol, poolConfig, createUserATA) {
5398
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateMint, tokenStakeAccount, userTokenAccount, _a, collectRebateInstruction, err_28;
5831
5399
  if (createUserATA === void 0) { createUserATA = true; }
5832
5400
  return __generator(this, function (_b) {
5833
5401
  switch (_b.label) {
5834
5402
  case 0:
5835
5403
  publicKey = this.provider.wallet.publicKey;
5836
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5837
- rewardCustodyMint = rewardToken.mintKey;
5838
- instructions = [];
5839
- additionalSigners = [];
5840
- _b.label = 1;
5841
- case 1:
5842
- _b.trys.push([1, 5, , 6]);
5843
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, publicKey, true);
5844
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5845
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5846
- _a = createUserATA;
5847
- if (!_a) return [3, 3];
5848
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5849
- case 2:
5850
- _a = !(_b.sent());
5851
- _b.label = 3;
5852
- case 3:
5853
- if (_a) {
5854
- instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID));
5855
- }
5856
- rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), nftMint.toBuffer()], this.programFbnftReward.programId)[0];
5857
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5858
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5859
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5860
- return [4, this.programFbnftReward.methods
5861
- .collectReward()
5862
- .accounts({
5863
- owner: publicKey,
5864
- feePayer: publicKey,
5865
- nftMint: nftMint,
5866
- nftTokenAccount: nftTokenAccount,
5867
- metadataAccount: metadataAccount,
5868
- receivingAccount: receivingTokenAccount,
5869
- rewardRecord: rewardRecord,
5870
- rewardVault: rewardVault,
5871
- rewardTokenAccount: rewardTokenAccount,
5872
- transferAuthority: nftTransferAuthority,
5873
- systemProgram: web3_js_1.SystemProgram.programId,
5874
- tokenProgram: rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID,
5875
- })
5876
- .instruction()];
5877
- case 4:
5878
- collectNftReward = _b.sent();
5879
- instructions.push(collectNftReward);
5880
- return [3, 6];
5881
- case 5:
5882
- err_34 = _b.sent();
5883
- throw err_34;
5884
- case 6: return [2, {
5885
- instructions: __spreadArray([], instructions, true),
5886
- additionalSigners: additionalSigners
5887
- }];
5888
- }
5889
- });
5890
- });
5891
- };
5892
- this.collectAndDistributeFee = function (rewardSymbol_1, poolConfig_1) {
5893
- var args_1 = [];
5894
- for (var _i = 2; _i < arguments.length; _i++) {
5895
- args_1[_i - 2] = arguments[_i];
5896
- }
5897
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, poolConfig, createUserATA, nftTradingAccount) {
5898
- var publicKey, rewardToken, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tradingAccount, rewardVault, rewardTokenAccount, withdrawStakeInstruction, err_35;
5899
- if (createUserATA === void 0) { createUserATA = true; }
5900
- return __generator(this, function (_b) {
5901
- switch (_b.label) {
5902
- case 0:
5903
- publicKey = this.provider.wallet.publicKey;
5904
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5905
- rewardCustodyMint = rewardToken.mintKey;
5906
- rewardCustodyConfig = poolConfig.custodies.find(function (i) { return i.mintKey.equals(rewardToken.mintKey); });
5907
5404
  preInstructions = [];
5908
5405
  instructions = [];
5909
5406
  postInstructions = [];
@@ -5911,59 +5408,43 @@ var PerpetualsClient = (function () {
5911
5408
  _b.label = 1;
5912
5409
  case 1:
5913
5410
  _b.trys.push([1, 5, , 6]);
5914
- pool = poolConfig.poolAddress;
5915
- flpStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("stake"), publicKey.toBuffer(), pool.toBuffer()], this.program.programId)[0];
5916
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5411
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5412
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5413
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rebateMint, owner, true);
5917
5414
  _a = createUserATA;
5918
5415
  if (!_a) return [3, 3];
5919
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5416
+ return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5920
5417
  case 2:
5921
5418
  _a = !(_b.sent());
5922
5419
  _b.label = 3;
5923
5420
  case 3:
5924
5421
  if (_a) {
5925
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint));
5926
- }
5927
- tradingAccount = [];
5928
- if (nftTradingAccount) {
5929
- tradingAccount.push({
5930
- pubkey: nftTradingAccount,
5931
- isSigner: false,
5932
- isWritable: true,
5933
- });
5422
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userTokenAccount, publicKey, rebateMint));
5934
5423
  }
5935
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5936
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5937
- return [4, this.programPerpComposability.methods
5938
- .collectAndDistributeFee()
5424
+ return [4, this.program.methods
5425
+ .collectRebate()
5939
5426
  .accounts({
5940
- perpProgram: this.programId,
5941
- owner: publicKey,
5942
- receivingTokenAccount: receivingTokenAccount,
5943
- transferAuthority: poolConfig.transferAuthority,
5427
+ owner: owner,
5428
+ receivingTokenAccount: userTokenAccount,
5944
5429
  perpetuals: this.perpetuals.publicKey,
5945
- pool: pool,
5946
- feeCustody: rewardCustodyConfig.custodyAccount,
5947
- flpStakeAccount: flpStakeAccount,
5948
- feeCustodyTokenAccount: rewardCustodyConfig.tokenAccount,
5949
- systemProgram: web3_js_1.SystemProgram.programId,
5430
+ transferAuthority: poolConfig.transferAuthority,
5431
+ rebateVault: poolConfig.rebateVault,
5432
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5433
+ tokenStakeAccount: tokenStakeAccount,
5950
5434
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5951
5435
  eventAuthority: this.eventAuthority.publicKey,
5952
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5953
- fbnftRewardsProgram: this.programFbnftReward.programId,
5954
- rewardVault: rewardVault,
5955
- rewardTokenAccount: rewardTokenAccount
5436
+ program: this.programId,
5437
+ receivingTokenMint: rebateMint,
5956
5438
  })
5957
- .remainingAccounts(tradingAccount)
5958
5439
  .instruction()];
5959
5440
  case 4:
5960
- withdrawStakeInstruction = _b.sent();
5961
- instructions.push(withdrawStakeInstruction);
5441
+ collectRebateInstruction = _b.sent();
5442
+ instructions.push(collectRebateInstruction);
5962
5443
  return [3, 6];
5963
5444
  case 5:
5964
- err_35 = _b.sent();
5965
- console.log("perpClient withdrawStake error:: ", err_35);
5966
- throw err_35;
5445
+ err_28 = _b.sent();
5446
+ console.log("perpClient collectRebateInstruction error:: ", err_28);
5447
+ throw err_28;
5967
5448
  case 6: return [2, {
5968
5449
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5969
5450
  additionalSigners: additionalSigners
@@ -5972,13 +5453,60 @@ var PerpetualsClient = (function () {
5972
5453
  });
5973
5454
  });
5974
5455
  };
5456
+ this.settleRebates = function (rebateSymbol, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5457
+ var preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, rebateMint, settleRebatesInstruction, err_29;
5458
+ return __generator(this, function (_a) {
5459
+ switch (_a.label) {
5460
+ case 0:
5461
+ preInstructions = [];
5462
+ instructions = [];
5463
+ postInstructions = [];
5464
+ additionalSigners = [];
5465
+ _a.label = 1;
5466
+ case 1:
5467
+ _a.trys.push([1, 3, , 4]);
5468
+ rewardCustody = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(rewardSymbol).mintKey); });
5469
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5470
+ return [4, this.program.methods
5471
+ .settleRebates()
5472
+ .accounts({
5473
+ transferAuthority: poolConfig.transferAuthority,
5474
+ perpetuals: this.perpetuals.publicKey,
5475
+ pool: poolConfig.poolAddress,
5476
+ rewardCustody: rewardCustody.custodyAccount,
5477
+ rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
5478
+ rewardCustodyTokenAccount: rewardCustody.tokenAccount,
5479
+ rebateVault: poolConfig.rebateVault,
5480
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5481
+ tokenMint: rebateMint,
5482
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5483
+ eventAuthority: this.eventAuthority.publicKey,
5484
+ program: this.programId,
5485
+ ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
5486
+ })
5487
+ .instruction()];
5488
+ case 2:
5489
+ settleRebatesInstruction = _a.sent();
5490
+ instructions.push(settleRebatesInstruction);
5491
+ return [3, 4];
5492
+ case 3:
5493
+ err_29 = _a.sent();
5494
+ console.log("perpClient settleRebatesInstruction error:: ", err_29);
5495
+ throw err_29;
5496
+ case 4: return [2, {
5497
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5498
+ additionalSigners: additionalSigners
5499
+ }];
5500
+ }
5501
+ });
5502
+ }); };
5975
5503
  this.placeLimitOrder = function (targetSymbol_1, collateralSymbol_1, reserveSymbol_1, receiveSymbol_1, side_1, limitPrice_1, reserveAmount_1, sizeAmount_1, stopLossPrice_1, takeProfitPrice_1, poolConfig_1) {
5976
5504
  var args_1 = [];
5977
5505
  for (var _i = 11; _i < arguments.length; _i++) {
5978
5506
  args_1[_i - 11] = arguments[_i];
5979
5507
  }
5980
5508
  return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, reserveSymbol_1, receiveSymbol_1, side_1, limitPrice_1, reserveAmount_1, sizeAmount_1, stopLossPrice_1, takeProfitPrice_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, reserveSymbol, receiveSymbol, side, limitPrice, reserveAmount, sizeAmount, stopLossPrice, takeProfitPrice, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
5981
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_36;
5509
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_30;
5982
5510
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
5983
5511
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
5984
5512
  return __generator(this, function (_c) {
@@ -6084,9 +5612,9 @@ var PerpetualsClient = (function () {
6084
5612
  instructions.push(placeLimitOrder);
6085
5613
  return [3, 10];
6086
5614
  case 9:
6087
- err_36 = _c.sent();
6088
- console.log("perpClient placeLimitOrder error:: ", err_36);
6089
- throw err_36;
5615
+ err_30 = _c.sent();
5616
+ console.log("perpClient placeLimitOrder error:: ", err_30);
5617
+ throw err_30;
6090
5618
  case 10: return [2, {
6091
5619
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6092
5620
  additionalSigners: additionalSigners
@@ -6101,7 +5629,7 @@ var PerpetualsClient = (function () {
6101
5629
  args_1[_i - 11] = arguments[_i];
6102
5630
  }
6103
5631
  return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, reserveSymbol_1, receiveSymbol_1, side_1, orderId_1, limitPrice_1, sizeAmount_1, stopLossPrice_1, takeProfitPrice_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, reserveSymbol, receiveSymbol, side, orderId, limitPrice, sizeAmount, stopLossPrice, takeProfitPrice, poolConfig, createUserATA, ephemeralSignerPubkey) {
6104
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_37;
5632
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_31;
6105
5633
  if (createUserATA === void 0) { createUserATA = true; }
6106
5634
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6107
5635
  return __generator(this, function (_b) {
@@ -6192,9 +5720,9 @@ var PerpetualsClient = (function () {
6192
5720
  instructions.push(editLimitOrder);
6193
5721
  return [3, 8];
6194
5722
  case 7:
6195
- err_37 = _b.sent();
6196
- console.log("perpClient editLimitOrder error:: ", err_37);
6197
- throw err_37;
5723
+ err_31 = _b.sent();
5724
+ console.log("perpClient editLimitOrder error:: ", err_31);
5725
+ throw err_31;
6198
5726
  case 8: return [2, {
6199
5727
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6200
5728
  additionalSigners: additionalSigners
@@ -6208,11 +5736,10 @@ var PerpetualsClient = (function () {
6208
5736
  for (var _i = 7; _i < arguments.length; _i++) {
6209
5737
  args_1[_i - 7] = arguments[_i];
6210
5738
  }
6211
- return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6212
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_38;
5739
+ return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount) {
5740
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_32;
6213
5741
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6214
5742
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6215
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6216
5743
  return __generator(this, function (_a) {
6217
5744
  switch (_a.label) {
6218
5745
  case 0:
@@ -6255,16 +5782,16 @@ var PerpetualsClient = (function () {
6255
5782
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6256
5783
  collateralMint: collateralCustodyConfig.mintKey,
6257
5784
  })
6258
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5785
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6259
5786
  .instruction()];
6260
5787
  case 2:
6261
5788
  executeLimitOrder = _a.sent();
6262
5789
  instructions.push(executeLimitOrder);
6263
5790
  return [3, 4];
6264
5791
  case 3:
6265
- err_38 = _a.sent();
6266
- console.log("perpClient executeLimitOrder error:: ", err_38);
6267
- throw err_38;
5792
+ err_32 = _a.sent();
5793
+ console.log("perpClient executeLimitOrder error:: ", err_32);
5794
+ throw err_32;
6268
5795
  case 4: return [2, {
6269
5796
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6270
5797
  additionalSigners: additionalSigners
@@ -6278,11 +5805,10 @@ var PerpetualsClient = (function () {
6278
5805
  for (var _i = 8; _i < arguments.length; _i++) {
6279
5806
  args_1[_i - 8] = arguments[_i];
6280
5807
  }
6281
- return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, reserveSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, reserveSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6282
- var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_39;
5808
+ return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, reserveSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, reserveSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount) {
5809
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_33;
6283
5810
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6284
5811
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6285
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6286
5812
  return __generator(this, function (_a) {
6287
5813
  switch (_a.label) {
6288
5814
  case 0:
@@ -6328,16 +5854,16 @@ var PerpetualsClient = (function () {
6328
5854
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6329
5855
  collateralMint: collateralCustodyConfig.mintKey,
6330
5856
  })
6331
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5857
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6332
5858
  .instruction()];
6333
5859
  case 2:
6334
5860
  executeLimitWithSwap = _a.sent();
6335
5861
  instructions.push(executeLimitWithSwap);
6336
5862
  return [3, 4];
6337
5863
  case 3:
6338
- err_39 = _a.sent();
6339
- console.log("perpClient executeLimitWithSwap error:: ", err_39);
6340
- throw err_39;
5864
+ err_33 = _a.sent();
5865
+ console.log("perpClient executeLimitWithSwap error:: ", err_33);
5866
+ throw err_33;
6341
5867
  case 4: return [2, {
6342
5868
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6343
5869
  additionalSigners: additionalSigners
@@ -6347,7 +5873,7 @@ var PerpetualsClient = (function () {
6347
5873
  });
6348
5874
  };
6349
5875
  this.placeTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6350
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_40;
5876
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_34;
6351
5877
  return __generator(this, function (_a) {
6352
5878
  switch (_a.label) {
6353
5879
  case 0:
@@ -6395,9 +5921,9 @@ var PerpetualsClient = (function () {
6395
5921
  instructions.push(placeTriggerOrder);
6396
5922
  return [3, 4];
6397
5923
  case 3:
6398
- err_40 = _a.sent();
6399
- console.log("perpClient placeTriggerOrder error:: ", err_40);
6400
- throw err_40;
5924
+ err_34 = _a.sent();
5925
+ console.log("perpClient placeTriggerOrder error:: ", err_34);
5926
+ throw err_34;
6401
5927
  case 4: return [2, {
6402
5928
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6403
5929
  additionalSigners: additionalSigners
@@ -6406,7 +5932,7 @@ var PerpetualsClient = (function () {
6406
5932
  });
6407
5933
  }); };
6408
5934
  this.editTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, orderId, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6409
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_41;
5935
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_35;
6410
5936
  return __generator(this, function (_a) {
6411
5937
  switch (_a.label) {
6412
5938
  case 0:
@@ -6453,9 +5979,9 @@ var PerpetualsClient = (function () {
6453
5979
  instructions.push(editTriggerOrder);
6454
5980
  return [3, 4];
6455
5981
  case 3:
6456
- err_41 = _a.sent();
6457
- console.log("perpClient editTriggerOrder error:: ", err_41);
6458
- throw err_41;
5982
+ err_35 = _a.sent();
5983
+ console.log("perpClient editTriggerOrder error:: ", err_35);
5984
+ throw err_35;
6459
5985
  case 4: return [2, {
6460
5986
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6461
5987
  additionalSigners: additionalSigners
@@ -6464,7 +5990,7 @@ var PerpetualsClient = (function () {
6464
5990
  });
6465
5991
  }); };
6466
5992
  this.cancelTriggerOrder = function (targetSymbol, collateralSymbol, side, orderId, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6467
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_42;
5993
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_36;
6468
5994
  return __generator(this, function (_a) {
6469
5995
  switch (_a.label) {
6470
5996
  case 0:
@@ -6497,9 +6023,9 @@ var PerpetualsClient = (function () {
6497
6023
  instructions.push(cancelTriggerOrder);
6498
6024
  return [3, 4];
6499
6025
  case 3:
6500
- err_42 = _a.sent();
6501
- console.log("perpClient cancelTriggerOrder error:: ", err_42);
6502
- throw err_42;
6026
+ err_36 = _a.sent();
6027
+ console.log("perpClient cancelTriggerOrder error:: ", err_36);
6028
+ throw err_36;
6503
6029
  case 4: return [2, {
6504
6030
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6505
6031
  additionalSigners: additionalSigners
@@ -6508,7 +6034,7 @@ var PerpetualsClient = (function () {
6508
6034
  });
6509
6035
  }); };
6510
6036
  this.cancelAllTriggerOrders = function (targetSymbol, collateralSymbol, side, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6511
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_43;
6037
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_37;
6512
6038
  return __generator(this, function (_a) {
6513
6039
  switch (_a.label) {
6514
6040
  case 0:
@@ -6539,9 +6065,9 @@ var PerpetualsClient = (function () {
6539
6065
  instructions.push(cancelAllTriggerOrders);
6540
6066
  return [3, 4];
6541
6067
  case 3:
6542
- err_43 = _a.sent();
6543
- console.log("perpClient cancelAllTriggerOrders error:: ", err_43);
6544
- throw err_43;
6068
+ err_37 = _a.sent();
6069
+ console.log("perpClient cancelAllTriggerOrders error:: ", err_37);
6070
+ throw err_37;
6545
6071
  case 4: return [2, {
6546
6072
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6547
6073
  additionalSigners: additionalSigners
@@ -6554,13 +6080,12 @@ var PerpetualsClient = (function () {
6554
6080
  for (var _i = 9; _i < arguments.length; _i++) {
6555
6081
  args_1[_i - 9] = arguments[_i];
6556
6082
  }
6557
- return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, receivingSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, receivingSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6558
- var payerPubkey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, userReceivingTokenAccount, userReceivingTokenAccountCollateral, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, collateralToken, receivingToken, _a, _b, positionAccount, orderAccount, custodyAccountMetas, custodyOracleAccountMetas, _c, _d, custody, executeTriggerWithSwap, err_44;
6083
+ return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, receivingSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, receivingSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount) {
6084
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, userReceivingTokenAccount, userReceivingTokenAccountCollateral, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, collateralToken, receivingToken, _a, _b, positionAccount, orderAccount, custodyAccountMetas, custodyOracleAccountMetas, _c, _d, custody, executeTriggerWithSwap, err_38;
6559
6085
  if (createUserATA === void 0) { createUserATA = true; }
6560
6086
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6561
6087
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6562
6088
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6563
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6564
6089
  return __generator(this, function (_e) {
6565
6090
  switch (_e.label) {
6566
6091
  case 0:
@@ -6655,16 +6180,16 @@ var PerpetualsClient = (function () {
6655
6180
  collateralMint: collateralCustodyConfig.mintKey,
6656
6181
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
6657
6182
  })
6658
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6183
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6659
6184
  .instruction()];
6660
6185
  case 8:
6661
6186
  executeTriggerWithSwap = _e.sent();
6662
6187
  instructions.push(executeTriggerWithSwap);
6663
6188
  return [3, 10];
6664
6189
  case 9:
6665
- err_44 = _e.sent();
6666
- console.log("perpClient executeTriggerWithSwap error:: ", err_44);
6667
- throw err_44;
6190
+ err_38 = _e.sent();
6191
+ console.log("perpClient executeTriggerWithSwap error:: ", err_38);
6192
+ throw err_38;
6668
6193
  case 10: return [2, {
6669
6194
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6670
6195
  additionalSigners: additionalSigners
@@ -6678,13 +6203,12 @@ var PerpetualsClient = (function () {
6678
6203
  for (var _i = 8; _i < arguments.length; _i++) {
6679
6204
  args_1[_i - 8] = arguments[_i];
6680
6205
  }
6681
- return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6682
- var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_45;
6206
+ return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount) {
6207
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_39;
6683
6208
  if (createUserATA === void 0) { createUserATA = true; }
6684
6209
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6685
6210
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6686
6211
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6687
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6688
6212
  return __generator(this, function (_b) {
6689
6213
  switch (_b.label) {
6690
6214
  case 0:
@@ -6744,16 +6268,16 @@ var PerpetualsClient = (function () {
6744
6268
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6745
6269
  receivingMint: collateralCustodyConfig.mintKey
6746
6270
  })
6747
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6271
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6748
6272
  .instruction()];
6749
6273
  case 6:
6750
6274
  executeTriggerOrder = _b.sent();
6751
6275
  instructions.push(executeTriggerOrder);
6752
6276
  return [3, 8];
6753
6277
  case 7:
6754
- err_45 = _b.sent();
6755
- console.log("perpClient executeTriggerOrder error:: ", err_45);
6756
- throw err_45;
6278
+ err_39 = _b.sent();
6279
+ console.log("perpClient executeTriggerOrder error:: ", err_39);
6280
+ throw err_39;
6757
6281
  case 8: return [2, {
6758
6282
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6759
6283
  additionalSigners: additionalSigners
@@ -6768,7 +6292,7 @@ var PerpetualsClient = (function () {
6768
6292
  args_1[_i - 5] = arguments[_i];
6769
6293
  }
6770
6294
  return __awaiter(_this, __spreadArray([userInputTokenSymbol_1, userOutputTokenSymbol_1, amountIn_1, minAmountOut_1, poolConfig_1], args_1, true), void 0, function (userInputTokenSymbol, userOutputTokenSymbol, amountIn, minAmountOut, poolConfig, useFeesPool, createUserATA, unWrapSol, skipBalanceChecks, ephemeralSignerPubkey) {
6771
- var userInputCustodyConfig, userOutputCustodyConfig, publicKey, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userOutputTokenAccount, userInputTokenAccount, wsolAssociatedTokenAccount, wsolATAExist, unWrappedSolBalance, _a, wsolAssociatedTokenAccount, closeWsolATAIns, accCreationLamports, lamports, unWrappedSolBalance, _b, tokenAccountBalance, _c, lamports, _d, custodyAccountMetas, custodyOracleAccountMetas, _e, _f, custody, params, inx, closeWsolATAIns, err_46;
6295
+ var userInputCustodyConfig, userOutputCustodyConfig, publicKey, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userOutputTokenAccount, userInputTokenAccount, wsolAssociatedTokenAccount, wsolATAExist, unWrappedSolBalance, _a, wsolAssociatedTokenAccount, closeWsolATAIns, accCreationLamports, lamports, unWrappedSolBalance, _b, tokenAccountBalance, _c, lamports, _d, custodyAccountMetas, custodyOracleAccountMetas, _e, _f, custody, params, inx, closeWsolATAIns, err_40;
6772
6296
  if (useFeesPool === void 0) { useFeesPool = false; }
6773
6297
  if (createUserATA === void 0) { createUserATA = true; }
6774
6298
  if (unWrapSol === void 0) { unWrapSol = false; }
@@ -6973,9 +6497,9 @@ var PerpetualsClient = (function () {
6973
6497
  }
6974
6498
  return [3, 20];
6975
6499
  case 19:
6976
- err_46 = _g.sent();
6977
- console.error("perpClient Swap error:: ", err_46);
6978
- throw err_46;
6500
+ err_40 = _g.sent();
6501
+ console.error("perpClient Swap error:: ", err_40);
6502
+ throw err_40;
6979
6503
  case 20: return [2, {
6980
6504
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6981
6505
  additionalSigners: additionalSigners
@@ -6985,7 +6509,7 @@ var PerpetualsClient = (function () {
6985
6509
  });
6986
6510
  };
6987
6511
  this.swapFeeInternal = function (rewardTokenSymbol, swapTokenSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6988
- var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_47;
6512
+ var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_41;
6989
6513
  return __generator(this, function (_b) {
6990
6514
  switch (_b.label) {
6991
6515
  case 0:
@@ -7030,11 +6554,7 @@ var PerpetualsClient = (function () {
7030
6554
  rewardCustody: rewardCustody.custodyAccount,
7031
6555
  rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
7032
6556
  rewardCustodyTokenAccount: rewardCustody.tokenAccount,
7033
- custody: custody.custodyAccount,
7034
- custodyOracleAccount: this.useExtOracleAccount ? custody.extOracleAccount : custody.intOracleAccount,
7035
- custodyTokenAccount: custody.tokenAccount,
7036
6557
  eventAuthority: this.eventAuthority.publicKey,
7037
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7038
6558
  program: this.programId,
7039
6559
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
7040
6560
  })
@@ -7045,9 +6565,9 @@ var PerpetualsClient = (function () {
7045
6565
  instructions.push(inx);
7046
6566
  return [3, 4];
7047
6567
  case 3:
7048
- err_47 = _b.sent();
7049
- console.error("perpClient Swap error:: ", err_47);
7050
- throw err_47;
6568
+ err_41 = _b.sent();
6569
+ console.error("perpClient Swap error:: ", err_41);
6570
+ throw err_41;
7051
6571
  case 4: return [2, {
7052
6572
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7053
6573
  additionalSigners: additionalSigners
@@ -7056,7 +6576,7 @@ var PerpetualsClient = (function () {
7056
6576
  });
7057
6577
  }); };
7058
6578
  this.setLpTokenPrice = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7059
- var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_48;
6579
+ var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_42;
7060
6580
  return __generator(this, function (_d) {
7061
6581
  switch (_d.label) {
7062
6582
  case 0:
@@ -7104,9 +6624,9 @@ var PerpetualsClient = (function () {
7104
6624
  instructions.push(setLpTokenPriceInstruction);
7105
6625
  return [3, 4];
7106
6626
  case 3:
7107
- err_48 = _d.sent();
7108
- console.log("perpClient setLpTokenPriceInstruction error:: ", err_48);
7109
- throw err_48;
6627
+ err_42 = _d.sent();
6628
+ console.log("perpClient setLpTokenPriceInstruction error:: ", err_42);
6629
+ throw err_42;
7110
6630
  case 4: return [2, {
7111
6631
  instructions: __spreadArray([], instructions, true),
7112
6632
  additionalSigners: additionalSigners
@@ -7154,7 +6674,7 @@ var PerpetualsClient = (function () {
7154
6674
  });
7155
6675
  }); };
7156
6676
  this.setAdminSigners = function (admins, minSignatures) { return __awaiter(_this, void 0, void 0, function () {
7157
- var adminMetas, _i, admins_2, admin, err_49;
6677
+ var adminMetas, _i, admins_2, admin, err_43;
7158
6678
  return __generator(this, function (_a) {
7159
6679
  switch (_a.label) {
7160
6680
  case 0:
@@ -7184,11 +6704,11 @@ var PerpetualsClient = (function () {
7184
6704
  _a.sent();
7185
6705
  return [3, 4];
7186
6706
  case 3:
7187
- err_49 = _a.sent();
6707
+ err_43 = _a.sent();
7188
6708
  if (this.printErrors) {
7189
- console.error("setAdminSigners err:", err_49);
6709
+ console.error("setAdminSigners err:", err_43);
7190
6710
  }
7191
- throw err_49;
6711
+ throw err_43;
7192
6712
  case 4: return [2];
7193
6713
  }
7194
6714
  });
@@ -7377,7 +6897,7 @@ var PerpetualsClient = (function () {
7377
6897
  });
7378
6898
  }); };
7379
6899
  this.protocolWithdrawFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7380
- var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_50;
6900
+ var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_44;
7381
6901
  return __generator(this, function (_a) {
7382
6902
  switch (_a.label) {
7383
6903
  case 0:
@@ -7410,9 +6930,9 @@ var PerpetualsClient = (function () {
7410
6930
  instructions.push(withdrawFeesIx);
7411
6931
  return [3, 5];
7412
6932
  case 4:
7413
- err_50 = _a.sent();
7414
- console.log("perpClient setPool error:: ", err_50);
7415
- throw err_50;
6933
+ err_44 = _a.sent();
6934
+ console.log("perpClient setPool error:: ", err_44);
6935
+ throw err_44;
7416
6936
  case 5: return [2, {
7417
6937
  instructions: __spreadArray([], instructions, true),
7418
6938
  additionalSigners: additionalSigners
@@ -7421,7 +6941,7 @@ var PerpetualsClient = (function () {
7421
6941
  });
7422
6942
  }); };
7423
6943
  this.moveProtocolFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7424
- var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_51;
6944
+ var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_45;
7425
6945
  return __generator(this, function (_a) {
7426
6946
  switch (_a.label) {
7427
6947
  case 0:
@@ -7455,9 +6975,9 @@ var PerpetualsClient = (function () {
7455
6975
  instructions.push(moveProtocolFeesIx);
7456
6976
  return [3, 4];
7457
6977
  case 3:
7458
- err_51 = _a.sent();
7459
- console.log("perpClient setPool error:: ", err_51);
7460
- throw err_51;
6978
+ err_45 = _a.sent();
6979
+ console.log("perpClient setPool error:: ", err_45);
6980
+ throw err_45;
7461
6981
  case 4: return [2, {
7462
6982
  instructions: __spreadArray([], instructions, true),
7463
6983
  additionalSigners: additionalSigners
@@ -7466,7 +6986,7 @@ var PerpetualsClient = (function () {
7466
6986
  });
7467
6987
  }); };
7468
6988
  this.setProtocolFeeShareBps = function (feeShareBps, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7469
- var publicKey, setProtocolFeeShareBpsIx, err_52;
6989
+ var publicKey, setProtocolFeeShareBpsIx, err_46;
7470
6990
  return __generator(this, function (_a) {
7471
6991
  switch (_a.label) {
7472
6992
  case 0:
@@ -7486,15 +7006,15 @@ var PerpetualsClient = (function () {
7486
7006
  setProtocolFeeShareBpsIx = _a.sent();
7487
7007
  return [2, setProtocolFeeShareBpsIx];
7488
7008
  case 2:
7489
- err_52 = _a.sent();
7490
- console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_52);
7491
- throw err_52;
7009
+ err_46 = _a.sent();
7010
+ console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_46);
7011
+ throw err_46;
7492
7012
  case 3: return [2];
7493
7013
  }
7494
7014
  });
7495
7015
  }); };
7496
7016
  this.setPermissions = function (permissions) { return __awaiter(_this, void 0, void 0, function () {
7497
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_53;
7017
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_47;
7498
7018
  return __generator(this, function (_a) {
7499
7019
  switch (_a.label) {
7500
7020
  case 0:
@@ -7521,9 +7041,9 @@ var PerpetualsClient = (function () {
7521
7041
  instructions.push(setPermissionsInstruction);
7522
7042
  return [3, 4];
7523
7043
  case 3:
7524
- err_53 = _a.sent();
7525
- console.log("perpClient setPool error:: ", err_53);
7526
- throw err_53;
7044
+ err_47 = _a.sent();
7045
+ console.log("perpClient setPool error:: ", err_47);
7046
+ throw err_47;
7527
7047
  case 4: return [2, {
7528
7048
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7529
7049
  additionalSigners: additionalSigners
@@ -7532,7 +7052,7 @@ var PerpetualsClient = (function () {
7532
7052
  });
7533
7053
  }); };
7534
7054
  this.reimburse = function (tokenMint, amountIn, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7535
- var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_54;
7055
+ var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_48;
7536
7056
  var _f;
7537
7057
  return __generator(this, function (_g) {
7538
7058
  switch (_g.label) {
@@ -7593,9 +7113,9 @@ var PerpetualsClient = (function () {
7593
7113
  instructions.push(reimburse);
7594
7114
  return [3, 5];
7595
7115
  case 4:
7596
- err_54 = _g.sent();
7597
- console.log("perpClient setPool error:: ", err_54);
7598
- throw err_54;
7116
+ err_48 = _g.sent();
7117
+ console.log("perpClient setPool error:: ", err_48);
7118
+ throw err_48;
7599
7119
  case 5: return [2, {
7600
7120
  instructions: __spreadArray([], instructions, true),
7601
7121
  additionalSigners: additionalSigners
@@ -7603,8 +7123,8 @@ var PerpetualsClient = (function () {
7603
7123
  }
7604
7124
  });
7605
7125
  }); };
7606
- this.setInternalOraclePrice = function (tokenMint, price, expo, conf, ema, publishTime, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7607
- var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_55;
7126
+ this.setInternalOraclePrice = function (tokenMint, useCurrentTime, price, expo, conf, ema, publishTime, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7127
+ var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_49;
7608
7128
  return __generator(this, function (_a) {
7609
7129
  switch (_a.label) {
7610
7130
  case 0:
@@ -7616,6 +7136,7 @@ var PerpetualsClient = (function () {
7616
7136
  _a.trys.push([1, 3, , 4]);
7617
7137
  return [4, this.program.methods
7618
7138
  .setInternalOraclePrice({
7139
+ useCurrentTime: useCurrentTime,
7619
7140
  price: price,
7620
7141
  expo: expo,
7621
7142
  conf: conf,
@@ -7637,9 +7158,9 @@ var PerpetualsClient = (function () {
7637
7158
  instructions.push(setInternalOraclePrice);
7638
7159
  return [3, 4];
7639
7160
  case 3:
7640
- err_55 = _a.sent();
7641
- console.log("perpClient setInternalOracleAccount error:: ", err_55);
7642
- throw err_55;
7161
+ err_49 = _a.sent();
7162
+ console.log("perpClient setInternalOracleAccount error:: ", err_49);
7163
+ throw err_49;
7643
7164
  case 4: return [2, {
7644
7165
  instructions: __spreadArray([], instructions, true),
7645
7166
  additionalSigners: additionalSigners
@@ -7647,8 +7168,8 @@ var PerpetualsClient = (function () {
7647
7168
  }
7648
7169
  });
7649
7170
  }); };
7650
- this.setInternalOraclePriceBatch = function (tokenMintList, tokenInternalPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7651
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_56;
7171
+ this.setInternalOraclePriceBatch = function (useCurrentTime, tokenMintList, tokenInternalPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7172
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_50;
7652
7173
  return __generator(this, function (_a) {
7653
7174
  switch (_a.label) {
7654
7175
  case 0:
@@ -7659,11 +7180,6 @@ var PerpetualsClient = (function () {
7659
7180
  accountMetas = [];
7660
7181
  _loop_1 = function (tokenMint) {
7661
7182
  var custody = ALL_CUSTODY_CONFIGS.find(function (i) { return i.mintKey.equals(tokenMint); });
7662
- accountMetas.push({
7663
- pubkey: custody.custodyAccount,
7664
- isSigner: false,
7665
- isWritable: false,
7666
- });
7667
7183
  accountMetas.push({
7668
7184
  pubkey: custody.intOracleAccount,
7669
7185
  isSigner: false,
@@ -7686,6 +7202,7 @@ var PerpetualsClient = (function () {
7686
7202
  _a.trys.push([1, 3, , 4]);
7687
7203
  return [4, this.program.methods
7688
7204
  .setInternalCurrentPrice({
7205
+ useCurrentTime: useCurrentTime,
7689
7206
  prices: tokenInternalPrices
7690
7207
  })
7691
7208
  .accounts({
@@ -7698,9 +7215,9 @@ var PerpetualsClient = (function () {
7698
7215
  instructions.push(setInternalOraclePrice);
7699
7216
  return [3, 4];
7700
7217
  case 3:
7701
- err_56 = _a.sent();
7702
- console.log("perpClient setInternalOracleAccount error:: ", err_56);
7703
- throw err_56;
7218
+ err_50 = _a.sent();
7219
+ console.log("perpClient setInternalOracleAccount error:: ", err_50);
7220
+ throw err_50;
7704
7221
  case 4: return [2, {
7705
7222
  instructions: __spreadArray([], instructions, true),
7706
7223
  additionalSigners: additionalSigners
@@ -7709,7 +7226,7 @@ var PerpetualsClient = (function () {
7709
7226
  });
7710
7227
  }); };
7711
7228
  this.setInternalOracleEmaPriceBatch = function (tokenMintList, tokenInternalEmaPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7712
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_57;
7229
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_51;
7713
7230
  return __generator(this, function (_a) {
7714
7231
  switch (_a.label) {
7715
7232
  case 0:
@@ -7720,21 +7237,11 @@ var PerpetualsClient = (function () {
7720
7237
  accountMetas = [];
7721
7238
  _loop_2 = function (tokenMint) {
7722
7239
  var custody = ALL_CUSTODY_CONFIGS.find(function (i) { return i.mintKey.equals(tokenMint); });
7723
- accountMetas.push({
7724
- pubkey: custody.custodyAccount,
7725
- isSigner: false,
7726
- isWritable: false,
7727
- });
7728
7240
  accountMetas.push({
7729
7241
  pubkey: custody.intOracleAccount,
7730
7242
  isSigner: false,
7731
7243
  isWritable: true,
7732
7244
  });
7733
- accountMetas.push({
7734
- pubkey: custody.extOracleAccount,
7735
- isSigner: false,
7736
- isWritable: false,
7737
- });
7738
7245
  };
7739
7246
  for (_i = 0, tokenMintList_2 = tokenMintList; _i < tokenMintList_2.length; _i++) {
7740
7247
  tokenMint = tokenMintList_2[_i];
@@ -7759,9 +7266,9 @@ var PerpetualsClient = (function () {
7759
7266
  instructions.push(setInternalOraclePrice);
7760
7267
  return [3, 4];
7761
7268
  case 3:
7762
- err_57 = _a.sent();
7763
- console.log("perpClient setInternalOracleAccount error:: ", err_57);
7764
- throw err_57;
7269
+ err_51 = _a.sent();
7270
+ console.log("perpClient setInternalOracleAccount error:: ", err_51);
7271
+ throw err_51;
7765
7272
  case 4: return [2, {
7766
7273
  instructions: __spreadArray([], instructions, true),
7767
7274
  additionalSigners: additionalSigners
@@ -7770,7 +7277,7 @@ var PerpetualsClient = (function () {
7770
7277
  });
7771
7278
  }); };
7772
7279
  this.renameFlp = function (flag, lpTokenName, lpTokenSymbol, lpTokenUri, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7773
- var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_58;
7280
+ var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_52;
7774
7281
  return __generator(this, function (_a) {
7775
7282
  switch (_a.label) {
7776
7283
  case 0:
@@ -7808,8 +7315,8 @@ var PerpetualsClient = (function () {
7808
7315
  instructions.push(renameFlp);
7809
7316
  return [3, 4];
7810
7317
  case 3:
7811
- err_58 = _a.sent();
7812
- console.log("perpClient renameFlp error:: ", err_58);
7318
+ err_52 = _a.sent();
7319
+ console.log("perpClient renameFlp error:: ", err_52);
7813
7320
  return [3, 4];
7814
7321
  case 4: return [2, {
7815
7322
  instructions: __spreadArray([], instructions, true),
@@ -7819,7 +7326,7 @@ var PerpetualsClient = (function () {
7819
7326
  });
7820
7327
  }); };
7821
7328
  this.initStake = function (stakingFeeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7822
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_59;
7329
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_53;
7823
7330
  return __generator(this, function (_a) {
7824
7331
  switch (_a.label) {
7825
7332
  case 0:
@@ -7857,9 +7364,9 @@ var PerpetualsClient = (function () {
7857
7364
  instructions.push(initStakeInstruction);
7858
7365
  return [3, 4];
7859
7366
  case 3:
7860
- err_59 = _a.sent();
7861
- console.log("perpClient InitStaking error:: ", err_59);
7862
- throw err_59;
7367
+ err_53 = _a.sent();
7368
+ console.log("perpClient InitStaking error:: ", err_53);
7369
+ throw err_53;
7863
7370
  case 4: return [2, {
7864
7371
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7865
7372
  additionalSigners: additionalSigners
@@ -7868,7 +7375,7 @@ var PerpetualsClient = (function () {
7868
7375
  });
7869
7376
  }); };
7870
7377
  this.initCompounding = function (feeShareBps, metadataTitle, metadataSymbol, metadataUri, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7871
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_60;
7378
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_54;
7872
7379
  return __generator(this, function (_a) {
7873
7380
  switch (_a.label) {
7874
7381
  case 0:
@@ -7897,7 +7404,6 @@ var PerpetualsClient = (function () {
7897
7404
  transferAuthority: poolConfig.transferAuthority,
7898
7405
  perpetuals: this.perpetuals.publicKey,
7899
7406
  pool: poolConfig.poolAddress,
7900
- custody: rewardCustodyConfig.custodyAccount,
7901
7407
  lpTokenMint: poolConfig.stakedLpTokenMint,
7902
7408
  compoundingVault: compoundingVault,
7903
7409
  compoundingTokenMint: compoundingTokenMint,
@@ -7913,9 +7419,9 @@ var PerpetualsClient = (function () {
7913
7419
  instructions.push(initCompoundingInstruction);
7914
7420
  return [3, 4];
7915
7421
  case 3:
7916
- err_60 = _a.sent();
7917
- console.log("perpClient initCompounding error:: ", err_60);
7918
- throw err_60;
7422
+ err_54 = _a.sent();
7423
+ console.log("perpClient initCompounding error:: ", err_54);
7424
+ throw err_54;
7919
7425
  case 4: return [2, {
7920
7426
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7921
7427
  additionalSigners: additionalSigners
@@ -7924,7 +7430,7 @@ var PerpetualsClient = (function () {
7924
7430
  });
7925
7431
  }); };
7926
7432
  this.initTokenVault = function (token_permissions, tokens_to_distribute, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7927
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_61;
7433
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_55;
7928
7434
  return __generator(this, function (_a) {
7929
7435
  switch (_a.label) {
7930
7436
  case 0:
@@ -7965,9 +7471,9 @@ var PerpetualsClient = (function () {
7965
7471
  instructions.push(initTokenVaultInstruction);
7966
7472
  return [3, 4];
7967
7473
  case 3:
7968
- err_61 = _a.sent();
7969
- console.log("perpClient InitTokenVaultInstruction error:: ", err_61);
7970
- throw err_61;
7474
+ err_55 = _a.sent();
7475
+ console.log("perpClient InitTokenVaultInstruction error:: ", err_55);
7476
+ throw err_55;
7971
7477
  case 4: return [2, {
7972
7478
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7973
7479
  additionalSigners: additionalSigners
@@ -7976,7 +7482,7 @@ var PerpetualsClient = (function () {
7976
7482
  });
7977
7483
  }); };
7978
7484
  this.setTokenVaultConfig = function (token_permissions, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7979
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_62;
7485
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_56;
7980
7486
  return __generator(this, function (_a) {
7981
7487
  switch (_a.label) {
7982
7488
  case 0:
@@ -8007,9 +7513,9 @@ var PerpetualsClient = (function () {
8007
7513
  instructions.push(setTokenVaultConfigInstruction);
8008
7514
  return [3, 4];
8009
7515
  case 3:
8010
- err_62 = _a.sent();
8011
- console.log("perpClient setTokenVaultConfigInstruction error:: ", err_62);
8012
- throw err_62;
7516
+ err_56 = _a.sent();
7517
+ console.log("perpClient setTokenVaultConfigInstruction error:: ", err_56);
7518
+ throw err_56;
8013
7519
  case 4: return [2, {
8014
7520
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8015
7521
  additionalSigners: additionalSigners
@@ -8018,7 +7524,7 @@ var PerpetualsClient = (function () {
8018
7524
  });
8019
7525
  }); };
8020
7526
  this.withdrawInstantFee = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8021
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_63;
7527
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_57;
8022
7528
  return __generator(this, function (_a) {
8023
7529
  switch (_a.label) {
8024
7530
  case 0:
@@ -8057,9 +7563,59 @@ var PerpetualsClient = (function () {
8057
7563
  instructions.push(withdrawInstantFeeInstruction);
8058
7564
  return [3, 6];
8059
7565
  case 5:
8060
- err_63 = _a.sent();
8061
- console.log("perpClient withdrawInstantFeeInstruction error:: ", err_63);
8062
- throw err_63;
7566
+ err_57 = _a.sent();
7567
+ console.log("perpClient withdrawInstantFeeInstruction error:: ", err_57);
7568
+ throw err_57;
7569
+ case 6: return [2, {
7570
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7571
+ additionalSigners: additionalSigners
7572
+ }];
7573
+ }
7574
+ });
7575
+ }); };
7576
+ this.withdrawUnclaimedTokens = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7577
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawUnclaimedTokensInstruction, err_58;
7578
+ return __generator(this, function (_a) {
7579
+ switch (_a.label) {
7580
+ case 0:
7581
+ publicKey = this.provider.wallet.publicKey;
7582
+ preInstructions = [];
7583
+ instructions = [];
7584
+ postInstructions = [];
7585
+ additionalSigners = [];
7586
+ _a.label = 1;
7587
+ case 1:
7588
+ _a.trys.push([1, 5, , 6]);
7589
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, publicKey, true)];
7590
+ case 2:
7591
+ receivingTokenAccount = _a.sent();
7592
+ return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
7593
+ case 3:
7594
+ if (!(_a.sent())) {
7595
+ preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, poolConfig.tokenMint));
7596
+ }
7597
+ return [4, this.program.methods
7598
+ .withdrawUnclaimedTokens({})
7599
+ .accounts({
7600
+ admin: publicKey,
7601
+ multisig: this.multisig.publicKey,
7602
+ perpetuals: this.perpetuals.publicKey,
7603
+ transferAuthority: poolConfig.transferAuthority,
7604
+ tokenVault: poolConfig.tokenVault,
7605
+ tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
7606
+ receivingTokenAccount: receivingTokenAccount,
7607
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7608
+ receivingTokenMint: poolConfig.tokenMint,
7609
+ })
7610
+ .instruction()];
7611
+ case 4:
7612
+ withdrawUnclaimedTokensInstruction = _a.sent();
7613
+ instructions.push(withdrawUnclaimedTokensInstruction);
7614
+ return [3, 6];
7615
+ case 5:
7616
+ err_58 = _a.sent();
7617
+ console.log("perpClient withdrawUnclaimedTokensInstruction error:: ", err_58);
7618
+ throw err_58;
8063
7619
  case 6: return [2, {
8064
7620
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8065
7621
  additionalSigners: additionalSigners
@@ -8068,7 +7624,7 @@ var PerpetualsClient = (function () {
8068
7624
  });
8069
7625
  }); };
8070
7626
  this.initRevenueTokenAccount = function (feeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8071
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_64;
7627
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_59;
8072
7628
  return __generator(this, function (_a) {
8073
7629
  switch (_a.label) {
8074
7630
  case 0:
@@ -8105,9 +7661,55 @@ var PerpetualsClient = (function () {
8105
7661
  instructions.push(initRevenueTokenAccountInstruction);
8106
7662
  return [3, 4];
8107
7663
  case 3:
8108
- err_64 = _a.sent();
8109
- console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_64);
8110
- throw err_64;
7664
+ err_59 = _a.sent();
7665
+ console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_59);
7666
+ throw err_59;
7667
+ case 4: return [2, {
7668
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7669
+ additionalSigners: additionalSigners
7670
+ }];
7671
+ }
7672
+ });
7673
+ }); };
7674
+ this.initRebateVault = function (allowRebatePayout, rebateSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7675
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateCustodyMint, initRebateVaultInstruction, err_60;
7676
+ return __generator(this, function (_a) {
7677
+ switch (_a.label) {
7678
+ case 0:
7679
+ publicKey = this.provider.wallet.publicKey;
7680
+ preInstructions = [];
7681
+ instructions = [];
7682
+ postInstructions = [];
7683
+ additionalSigners = [];
7684
+ _a.label = 1;
7685
+ case 1:
7686
+ _a.trys.push([1, 3, , 4]);
7687
+ rebateCustodyMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
7688
+ return [4, this.program.methods
7689
+ .initRebateVault({
7690
+ allowRebatePayout: allowRebatePayout
7691
+ })
7692
+ .accounts({
7693
+ admin: publicKey,
7694
+ multisig: this.multisig.publicKey,
7695
+ transferAuthority: poolConfig.transferAuthority,
7696
+ perpetuals: this.perpetuals.publicKey,
7697
+ rebateMint: rebateCustodyMint,
7698
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
7699
+ rebateVault: poolConfig.rebateVault,
7700
+ systemProgram: web3_js_1.SystemProgram.programId,
7701
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7702
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY
7703
+ })
7704
+ .instruction()];
7705
+ case 2:
7706
+ initRebateVaultInstruction = _a.sent();
7707
+ instructions.push(initRebateVaultInstruction);
7708
+ return [3, 4];
7709
+ case 3:
7710
+ err_60 = _a.sent();
7711
+ console.log("perpClient initRebateVaultInstruction error:: ", err_60);
7712
+ throw err_60;
8111
7713
  case 4: return [2, {
8112
7714
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8113
7715
  additionalSigners: additionalSigners
@@ -8116,7 +7718,7 @@ var PerpetualsClient = (function () {
8116
7718
  });
8117
7719
  }); };
8118
7720
  this.distributeTokenReward = function (amount, epochCount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8119
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_65;
7721
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_61;
8120
7722
  return __generator(this, function (_a) {
8121
7723
  switch (_a.label) {
8122
7724
  case 0:
@@ -8155,9 +7757,9 @@ var PerpetualsClient = (function () {
8155
7757
  instructions.push(distributeTokenRewardInstruction);
8156
7758
  return [3, 4];
8157
7759
  case 3:
8158
- err_65 = _a.sent();
8159
- console.log("perpClient distributeTokenRewardInstruction error:: ", err_65);
8160
- throw err_65;
7760
+ err_61 = _a.sent();
7761
+ console.log("perpClient distributeTokenRewardInstruction error:: ", err_61);
7762
+ throw err_61;
8161
7763
  case 4: return [2, {
8162
7764
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8163
7765
  additionalSigners: additionalSigners
@@ -8166,7 +7768,7 @@ var PerpetualsClient = (function () {
8166
7768
  });
8167
7769
  }); };
8168
7770
  this.setTokenStakeLevel = function (owner, stakeLevel) { return __awaiter(_this, void 0, void 0, function () {
8169
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_66;
7771
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_62;
8170
7772
  return __generator(this, function (_a) {
8171
7773
  switch (_a.label) {
8172
7774
  case 0:
@@ -8194,9 +7796,9 @@ var PerpetualsClient = (function () {
8194
7796
  instructions.push(setTokenStakeLevelInstruction);
8195
7797
  return [3, 4];
8196
7798
  case 3:
8197
- err_66 = _a.sent();
8198
- console.log("perpClient setTokenStakeLevelInstruction error:: ", err_66);
8199
- throw err_66;
7799
+ err_62 = _a.sent();
7800
+ console.log("perpClient setTokenStakeLevelInstruction error:: ", err_62);
7801
+ throw err_62;
8200
7802
  case 4: return [2, {
8201
7803
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8202
7804
  additionalSigners: additionalSigners
@@ -8205,7 +7807,7 @@ var PerpetualsClient = (function () {
8205
7807
  });
8206
7808
  }); };
8207
7809
  this.setTokenReward = function (owner, amount, epochCount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8208
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_67;
7810
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_63;
8209
7811
  return __generator(this, function (_a) {
8210
7812
  switch (_a.label) {
8211
7813
  case 0:
@@ -8237,9 +7839,49 @@ var PerpetualsClient = (function () {
8237
7839
  instructions.push(setTokenRewardInstruction);
8238
7840
  return [3, 4];
8239
7841
  case 3:
8240
- err_67 = _a.sent();
8241
- console.log("perpClient setTokenRewardInstruction error:: ", err_67);
8242
- throw err_67;
7842
+ err_63 = _a.sent();
7843
+ console.log("perpClient setTokenRewardInstruction error:: ", err_63);
7844
+ throw err_63;
7845
+ case 4: return [2, {
7846
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7847
+ additionalSigners: additionalSigners
7848
+ }];
7849
+ }
7850
+ });
7851
+ }); };
7852
+ this.resizeInternalOracle = function (extOracle, tokenMint, intOracleAccount) { return __awaiter(_this, void 0, void 0, function () {
7853
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_64;
7854
+ return __generator(this, function (_a) {
7855
+ switch (_a.label) {
7856
+ case 0:
7857
+ publicKey = this.provider.wallet.publicKey;
7858
+ preInstructions = [];
7859
+ instructions = [];
7860
+ postInstructions = [];
7861
+ additionalSigners = [];
7862
+ _a.label = 1;
7863
+ case 1:
7864
+ _a.trys.push([1, 3, , 4]);
7865
+ return [4, this.program.methods
7866
+ .resizeInternalOracle({
7867
+ extOracle: extOracle
7868
+ })
7869
+ .accounts({
7870
+ admin: publicKey,
7871
+ multisig: this.multisig.publicKey,
7872
+ custodyTokenMint: tokenMint,
7873
+ intOracleAccount: intOracleAccount,
7874
+ systemProgram: web3_js_1.SystemProgram.programId,
7875
+ })
7876
+ .instruction()];
7877
+ case 2:
7878
+ resizeInternalOracleInstruction = _a.sent();
7879
+ instructions.push(resizeInternalOracleInstruction);
7880
+ return [3, 4];
7881
+ case 3:
7882
+ err_64 = _a.sent();
7883
+ console.log("perpClient resizeInternalOracleInstruction error:: ", err_64);
7884
+ throw err_64;
8243
7885
  case 4: return [2, {
8244
7886
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8245
7887
  additionalSigners: additionalSigners