flash-sdk 10.4.0 → 10.5.0-alpha.0

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.
@@ -638,24 +638,42 @@ 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, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, pnlUsd, enableDebuglogs) {
669
+ if (enableDebuglogs === void 0) { enableDebuglogs = false; }
652
670
  var finalCollateralAmount = constants_1.BN_ZERO;
653
671
  if (!inputDeltaAmount.isZero()) {
654
672
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
655
673
  finalCollateralAmount = inputDeltaAmount;
656
674
  }
657
675
  else {
658
- var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
676
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
659
677
  finalCollateralAmount = swapAmountOut;
660
678
  }
661
679
  }
@@ -681,11 +699,13 @@ var PerpetualsClient = (function () {
681
699
  entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
682
700
  }
683
701
  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);
702
+ var finalCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(finalCollateralAmount, collateralTokenCustodyAccount.decimals).add(positionAccount.collateralUsd);
703
+ var currentCollateralUsdIncludingPnl = finalCollateralUsd.add(pnlUsd).sub(openFeeUsd);
687
704
  var sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
688
705
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
706
+ if (enableDebuglogs) {
707
+ console.log("SDK logs : finalCollateralUsd:", finalCollateralUsd.toString(), "finalCollateralAmount:", finalCollateralAmount.toString(), "sizeAmount:", sizeAmount.toString(), "sizeAmountUsd:", sizeAmountUsd.toString(), "sizeDeltaAmount:", sizeDeltaAmount.toString(), "sizeUsd:", sizeUsd.toString(), "currentCollateralUsdIncludingPnl:", currentCollateralUsdIncludingPnl.toString(), "finalCollateralUsd :", finalCollateralUsd.toString(), "pnlUsd :", pnlUsd.toString());
708
+ }
689
709
  if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
690
710
  return sizeAmountUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentCollateralUsdIncludingPnl);
691
711
  }
@@ -693,68 +713,6 @@ var PerpetualsClient = (function () {
693
713
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
694
714
  }
695
715
  };
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
716
  this.getEntryPriceAndFeeSyncV2 = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps, enableLogs) {
759
717
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
760
718
  if (enableLogs === void 0) { enableLogs = false; }
@@ -766,8 +724,8 @@ var PerpetualsClient = (function () {
766
724
  if (positionAccount === null) {
767
725
  var data = __assign({}, types_1.DEFAULT_POSITION);
768
726
  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;
727
+ var sizeUsd_1 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
728
+ positionAccount.sizeUsd = sizeUsd_1;
771
729
  positionAccount.sizeDecimals = targetCustodyAccount.decimals;
772
730
  positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
773
731
  positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
@@ -784,12 +742,13 @@ var PerpetualsClient = (function () {
784
742
  var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
785
743
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
786
744
  }
787
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
745
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
746
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
747
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
788
748
  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);
749
+ var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
750
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
791
751
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
792
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
793
752
  var feeUsd = constants_1.BN_ZERO;
794
753
  var feeAmount = constants_1.BN_ZERO;
795
754
  var feeUsdAfterDiscount = constants_1.BN_ZERO;
@@ -798,11 +757,11 @@ var PerpetualsClient = (function () {
798
757
  }
799
758
  else {
800
759
  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);
760
+ feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
802
761
  if (discountBps.gt(constants_1.BN_ZERO)) {
803
762
  feeUsdAfterDiscount = feeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
804
763
  feeUsdAfterDiscount = feeUsd.sub(feeUsdAfterDiscount);
805
- feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
764
+ feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
806
765
  }
807
766
  else {
808
767
  feeUsdAfterDiscount = feeUsd;
@@ -861,25 +820,26 @@ var PerpetualsClient = (function () {
861
820
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
862
821
  throw new Error("Delta Amounts cannot be negative ");
863
822
  }
864
- resultingPositionAccount.collateralAmount = resultingPositionAccount.collateralAmount.sub(collateralDeltaAmount);
865
- resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
866
823
  if (resultingPositionAccount.collateralAmount.isNeg() || resultingPositionAccount.sizeAmount.isNeg()) {
867
824
  throw new Error("cannot remove/close more than collateral/Size");
868
825
  }
869
826
  var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
870
827
  var exitOraclePrice = _this.getExitOraclePriceSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
871
- var _a = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount), collateralTokenMinOraclePrice = _a.min, collateralTokenMaxOraclePrice = _a.max;
828
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
829
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
830
+ resultingPositionAccount.collateralUsd = resultingPositionAccount.collateralUsd.sub(collateralDeltaUsd);
831
+ resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
872
832
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(resultingPositionAccount, collateralCustodyAccount, currentTimestamp);
873
- var lockAndUnsettledFee = collateralTokenMinOraclePrice.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
833
+ var lockAndUnsettledFee = collateralMinMaxPrice.min.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
874
834
  var sizeAmountUsd = exitOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
875
835
  var exitFeeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
876
- var exitFeeAmount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
836
+ var exitFeeAmount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
877
837
  var exitFeeUsdAfterDiscount = constants_1.BN_ZERO;
878
838
  var exitFeeAmountAfterDiscount = constants_1.BN_ZERO;
879
839
  if (discountBps.gt(constants_1.BN_ZERO)) {
880
840
  exitFeeUsdAfterDiscount = exitFeeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
881
841
  exitFeeUsdAfterDiscount = exitFeeUsd.sub(exitFeeUsdAfterDiscount);
882
- exitFeeAmountAfterDiscount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
842
+ exitFeeAmountAfterDiscount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
883
843
  }
884
844
  else {
885
845
  exitFeeUsdAfterDiscount = exitFeeUsd;
@@ -889,7 +849,7 @@ var PerpetualsClient = (function () {
889
849
  price: positionAccount.entryPrice.price, exponent: new anchor_1.BN(positionAccount.entryPrice.exponent), confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO
890
850
  });
891
851
  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);
852
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(positionEntryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
893
853
  return {
894
854
  exitOraclePrice: exitOraclePrice,
895
855
  borrowFeeUsd: lockAndUnsettledFeeUsd,
@@ -902,13 +862,11 @@ var PerpetualsClient = (function () {
902
862
  };
903
863
  };
904
864
  this.getTradeSpread = function (targetCustodyAccount, sizeUsd) {
905
- if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero()
906
- ||
907
- sizeUsd.isZero()) {
865
+ if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero() || sizeUsd.isZero()) {
908
866
  return constants_1.BN_ZERO;
909
867
  }
910
868
  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);
869
+ .div(targetCustodyAccount.pricing.maxPositionSizeUsd);
912
870
  var variable = (slope.mul(sizeUsd)).div(new anchor_1.BN(Math.pow(10, (constants_1.RATE_DECIMALS + constants_1.BPS_DECIMALS))));
913
871
  var finalSpread = targetCustodyAccount.pricing.tradeSpreadMin.add(variable);
914
872
  return finalSpread;
@@ -923,21 +881,11 @@ var PerpetualsClient = (function () {
923
881
  var exitOraclePrice = OraclePrice_1.OraclePrice.from({ price: exitPriceBN, exponent: maxPrice.exponent, confidence: maxPrice.confidence, timestamp: maxPrice.timestamp });
924
882
  return exitOraclePrice;
925
883
  };
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
884
  this.getSizeAmountFromLeverageAndCollateral = function (collateralAmtWithFee, leverage, marketToken, collateralToken, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, discountBps) {
936
885
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
937
886
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
938
887
  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);
888
+ var collateralAmtMinUsdUi = new bignumber_js_1.default(collateralAmtWithFee.toString()).dividedBy(Math.pow(10, collateralToken.decimals)).multipliedBy(collateralTokenMinPriceUi);
941
889
  var openPosFeeRateUi = new bignumber_js_1.default(targetCustodyAccount.fees.openPosition.toString()).dividedBy(Math.pow(10, constants_1.RATE_DECIMALS));
942
890
  if (!discountBps.isZero()) {
943
891
  var discountBpsUi = new bignumber_js_1.default(discountBps.toString()).dividedBy(Math.pow(10, constants_1.BPS_DECIMALS));
@@ -945,20 +893,20 @@ var PerpetualsClient = (function () {
945
893
  }
946
894
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
947
895
  .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);
896
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toString(), constants_1.USD_DECIMALS);
897
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
950
898
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
951
899
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
952
900
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(marketToken.decimals, bignumber_js_1.default.ROUND_DOWN), marketToken.decimals);
953
901
  };
954
- this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap, discountBps) {
902
+ this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, discountBps) {
955
903
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
956
904
  var finalCollateralAmount = constants_1.BN_ZERO;
957
905
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
958
906
  finalCollateralAmount = amountIn;
959
907
  }
960
908
  else {
961
- var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
909
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
962
910
  finalCollateralAmount = swapAmountOut;
963
911
  }
964
912
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
@@ -972,8 +920,8 @@ var PerpetualsClient = (function () {
972
920
  }
973
921
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
974
922
  .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);
923
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toFixed(constants_1.USD_DECIMALS), constants_1.USD_DECIMALS);
924
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, sizeUsd);
977
925
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
978
926
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
979
927
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(targetTokenCustodyAccount.decimals, bignumber_js_1.default.ROUND_DOWN), targetTokenCustodyAccount.decimals);
@@ -996,7 +944,7 @@ var PerpetualsClient = (function () {
996
944
  var collateralAmtWithFeeUi = collateralWithFeeUsdUi.dividedBy(collateralTokenMinPriceUi);
997
945
  return (0, utils_1.uiDecimalsToNative)(collateralAmtWithFeeUi.toFixed(collateralToken.decimals, bignumber_js_1.default.ROUND_DOWN), collateralToken.decimals);
998
946
  };
999
- this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap) {
947
+ this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig) {
1000
948
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
1001
949
  var collateralTokenMinPriceUi = new bignumber_js_1.default(collateralTokenMinPrice.toString()).dividedBy(Math.pow(10, constants_1.USD_DECIMALS));
1002
950
  var sizeUsd = targetTokenPrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
@@ -1013,11 +961,11 @@ var PerpetualsClient = (function () {
1013
961
  collateralInInputToken = collateralAmountWithFee;
1014
962
  }
1015
963
  else {
1016
- collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountIn;
964
+ collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountIn;
1017
965
  }
1018
966
  return collateralInInputToken;
1019
967
  };
1020
- this.getDecreaseSizeCollateralAndFeeSync = function (positionAccount, marketCorrelation, sizeDeltaUsd, keepLevSame, targetPrice, targetEmaPrice, marketConfig, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, side, poolConfig, discountBps, debugLogs) {
968
+ this.getDecreaseSizeCollateralAndFeeSync = function (positionAccount, marketCorrelation, maxPayOffBps, sizeDeltaUsd, keepLevSame, targetPrice, targetEmaPrice, marketConfig, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, side, poolConfig, discountBps, debugLogs) {
1021
969
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
1022
970
  if (debugLogs === void 0) { debugLogs = false; }
1023
971
  if (!marketConfig.marketAccount.equals(positionAccount.market)) {
@@ -1039,10 +987,9 @@ var PerpetualsClient = (function () {
1039
987
  var decimalPower = new anchor_1.BN(Math.pow(10, targetCustodyAccount.decimals));
1040
988
  var closeRatio = (positionDelta.sizeAmount.mul(decimalPower)).div(positionAccount.sizeAmount);
1041
989
  positionDelta.sizeUsd = (positionAccount.sizeUsd.mul(closeRatio)).div(decimalPower);
1042
- positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1043
990
  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);
991
+ positionDelta.collateralUsd = (positionAccount.collateralUsd.mul(closeRatio)).div(decimalPower);
992
+ positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1046
993
  positionDelta.degenSizeUsd = positionAccount.degenSizeUsd.mul(closeRatio).div(decimalPower);
1047
994
  var newPnl = _this.getPnlSync(positionDelta, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1048
995
  var exitFeeUsd = positionDelta.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
@@ -1052,30 +999,37 @@ var PerpetualsClient = (function () {
1052
999
  }
1053
1000
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionDelta, collateralCustodyAccount, currentTimestamp);
1054
1001
  var totalFeesUsd = (exitFeeUsd.add(lockAndUnsettledFeeUsd));
1055
- var currentCollateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(positionDelta.collateralAmount, collateralCustodyAccount.decimals);
1002
+ var currentCollateralUsd = positionDelta.collateralUsd;
1056
1003
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1057
- var assetsUsd = newPnl.profitUsd.add(currentCollateralUsd);
1058
- var closeAmount, feesAmount;
1004
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(currentCollateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionDelta.lockedAmount, collateralCustodyAccount.decimals));
1059
1005
  if (debugLogs) {
1060
1006
  console.log("assetsUsd.sub(liabilityUsd):", collateralCustodyAccount.decimals, assetsUsd.toString(), liabilityUsd.toString(), assetsUsd.sub(liabilityUsd).toString());
1061
1007
  }
1008
+ var closeAmountUsd, feesAmountUsd;
1062
1009
  if (assetsUsd.gte(liabilityUsd)) {
1063
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), collateralCustodyAccount.decimals);
1064
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, collateralCustodyAccount.decimals);
1010
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1011
+ feesAmountUsd = totalFeesUsd;
1065
1012
  }
1066
1013
  else {
1067
- closeAmount = constants_1.BN_ZERO;
1068
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), collateralCustodyAccount.decimals);
1014
+ closeAmountUsd = constants_1.BN_ZERO;
1015
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1016
+ }
1017
+ var closeAmount = collateralMinMaxPrice.max.getTokenAmount(closeAmountUsd, collateralCustodyAccount.decimals);
1018
+ var newLockAmount = collateralMinMaxPrice.max.getTokenAmount(_this.getLockedUsd(constants_1.BN_ZERO, closeAmountUsd, side, marketCorrelation, maxPayOffBps), collateralCustodyAccount.decimals);
1019
+ if (newLockAmount.gt(positionDelta.lockedAmount)) {
1020
+ positionDelta.lockedAmount = constants_1.BN_ZERO;
1021
+ }
1022
+ else {
1023
+ positionDelta.lockedAmount = positionDelta.lockedAmount.sub(newLockAmount);
1069
1024
  }
1070
1025
  var newPosition = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1071
1026
  newPosition.sizeAmount = positionAccount.sizeAmount.sub(positionDelta.sizeAmount);
1072
1027
  newPosition.sizeUsd = positionAccount.sizeUsd.sub(positionDelta.sizeUsd);
1073
- newPosition.lockedUsd = positionAccount.lockedUsd.sub(positionDelta.lockedUsd);
1074
1028
  newPosition.lockedAmount = positionAccount.lockedAmount.sub(positionDelta.lockedAmount);
1075
- newPosition.collateralAmount = positionAccount.collateralAmount.sub(positionDelta.collateralAmount);
1029
+ newPosition.collateralUsd = positionAccount.collateralUsd.sub(positionDelta.collateralUsd);
1076
1030
  newPosition.unsettledFeesUsd = positionAccount.unsettledFeesUsd.sub(positionDelta.unsettledFeesUsd);
1077
- newPosition.collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(newPosition.collateralAmount, collateralCustodyAccount.decimals);
1078
1031
  newPosition.degenSizeUsd = positionAccount.degenSizeUsd.sub(positionDelta.degenSizeUsd);
1032
+ newPosition.collateralUsd = newPosition.collateralUsd.add(closeAmountUsd);
1079
1033
  var feeUsdWithDiscount = constants_1.BN_ZERO;
1080
1034
  var feeUsd = sizeDeltaUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1081
1035
  if (discountBps.gt(constants_1.BN_ZERO)) {
@@ -1089,29 +1043,30 @@ var PerpetualsClient = (function () {
1089
1043
  feeUsdWithDiscount = feeUsdWithDiscount.add(lockAndUnsettledFeeUsd);
1090
1044
  if (keepLevSame) {
1091
1045
  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;
1046
+ var collateralAmountReceivedUsd = closeAmountUsd;
1047
+ var _a = _this.getMaxWithdrawableAmountSyncInternal(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig), maxWithdrawableAmount = _a.maxWithdrawableAmount, maxWithdrawableAmountUsd = _a.maxWithdrawableAmountUsd, diffUsd = _a.diffUsd;
1094
1048
  if (debugLogs) {
1095
1049
  console.log("maxWithdrawableAmount ", maxWithdrawableAmount.toString(), keepLevSame);
1096
1050
  console.log("collateralAmountReceived ", collateralAmountReceived.toString(), keepLevSame);
1097
1051
  }
1098
- if (collateralAmountReceived.lt(constants_1.BN_ZERO)) {
1052
+ if (collateralAmountReceivedUsd.lt(constants_1.BN_ZERO)) {
1099
1053
  collateralAmountReceived = constants_1.BN_ZERO;
1100
- collateralAmountRecievedUsd = constants_1.BN_ZERO;
1054
+ collateralAmountReceivedUsd = constants_1.BN_ZERO;
1101
1055
  }
1102
- else if (collateralAmountReceived.gt(maxWithdrawableAmount)) {
1056
+ else if (collateralAmountReceivedUsd.gt(maxWithdrawableAmountUsd)) {
1103
1057
  if (debugLogs) {
1104
1058
  console.log("exceeding to redicing maxWithdrawableAmount ", maxWithdrawableAmount.toString(), collateralAmountReceived.toString());
1105
1059
  }
1106
1060
  collateralAmountReceived = maxWithdrawableAmount;
1107
- collateralAmountRecievedUsd = collateralMinMaxPrice.min.getAssetAmountUsd(maxWithdrawableAmount, collateralCustodyAccount.decimals);
1061
+ collateralAmountReceivedUsd = maxWithdrawableAmountUsd;
1108
1062
  }
1109
1063
  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);
1064
+ newPosition.collateralUsd = newPosition.collateralUsd.sub(collateralAmountReceivedUsd);
1065
+ var lockAndUnsettledFeeUsdNew = _this.getLockFeeAndUnsettledUsdForPosition(newPosition, collateralCustodyAccount, currentTimestamp);
1066
+ var finalLiquidationPrice = _this.getLiquidationPriceContractHelper(entryPrice, lockAndUnsettledFeeUsdNew, side, targetCustodyAccount, newPosition);
1112
1067
  var finalPnl = _this.getPnlSync(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1113
1068
  var finalPnlUsd = finalPnl.profitUsd.sub(finalPnl.lossUsd);
1114
- var newLev = _this.getLeverageSync(newPosition.sizeUsd, newPosition.collateralAmount, collateralMinMaxPrice.min, collateralCustodyAccount.decimals, constants_1.BN_ZERO);
1069
+ var newLev = _this.getLeverageSync(newPosition, newPosition.collateralUsd, newPosition.sizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, false, poolConfig);
1115
1070
  return {
1116
1071
  newSizeUsd: newPosition.sizeUsd,
1117
1072
  feeUsd: feeUsd,
@@ -1119,8 +1074,9 @@ var PerpetualsClient = (function () {
1119
1074
  lockAndUnsettledFeeUsd: lockAndUnsettledFeeUsd,
1120
1075
  newLev: newLev,
1121
1076
  liquidationPrice: finalLiquidationPrice,
1122
- collateralAmountRecieved: collateralAmountReceived,
1123
- newCollateralAmount: newPosition.collateralAmount.add(diff),
1077
+ collateralAmountReceived: collateralAmountReceived,
1078
+ collateralAmountReceivedUsd: collateralAmountReceivedUsd,
1079
+ newCollateralUsd: newPosition.collateralUsd.add(diffUsd),
1124
1080
  newPnl: finalPnlUsd
1125
1081
  };
1126
1082
  }
@@ -1128,8 +1084,7 @@ var PerpetualsClient = (function () {
1128
1084
  throw "only same leverage is supported for now";
1129
1085
  }
1130
1086
  };
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; }
1087
+ this.getMaxWithdrawableAmountSyncInternal = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, errorBandwidthPercentageUi) {
1133
1088
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
1134
1089
  if (errorBandwidthPercentageUi > 100 || errorBandwidthPercentageUi < 0) {
1135
1090
  throw new Error("errorBandwidthPercentageUi cannot be >100 or <0");
@@ -1138,61 +1093,87 @@ var PerpetualsClient = (function () {
1138
1093
  (new anchor_1.BN(targetCustodyAccount.pricing.maxInitDegenLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100))
1139
1094
  : (new anchor_1.BN(targetCustodyAccount.pricing.maxInitLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100));
1140
1095
  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;
1096
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1142
1097
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1143
1098
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1144
1099
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1145
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount.add(closeAmount), collateralCustodyAccount.decimals);
1146
1100
  var availableInitMarginUsd = constants_1.BN_ZERO;
1147
- if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1148
- availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1101
+ if (profitLoss.lossUsd.lt(positionAccount.collateralUsd)) {
1102
+ availableInitMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
1149
1103
  }
1150
1104
  else {
1151
1105
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1152
- 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 };
1153
1107
  }
1154
1108
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1155
1109
  if (maxRemovableCollateralUsd.isNeg()) {
1156
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1110
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diffUsd: constants_1.BN_ZERO };
1157
1111
  }
1158
1112
  var maxWithdrawableAmount = constants_1.BN_ZERO;
1159
- var diff = constants_1.BN_ZERO;
1113
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1114
+ var diffUsd = constants_1.BN_ZERO;
1160
1115
  var remainingCollateralUsd = availableInitMarginUsd.sub(maxRemovableCollateralUsd);
1161
1116
  var isDegenMode = positionAccount.isDegenMode();
1162
1117
  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);
1118
+ diffUsd = (new anchor_1.BN(isDegenMode ? targetCustodyAccount.pricing.minDegenCollateralUsd : targetCustodyAccount.pricing.minCollateralUsd)).sub(remainingCollateralUsd);
1119
+ var updatedMaxRemovableCollateralUsd = maxRemovableCollateralUsd.sub(diffUsd);
1165
1120
  if (updatedMaxRemovableCollateralUsd.isNeg()) {
1166
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1121
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diffUsd: constants_1.BN_ZERO };
1167
1122
  }
1168
1123
  else {
1169
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1124
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1125
+ maxWithdrawableAmountUsd = updatedMaxRemovableCollateralUsd;
1170
1126
  }
1171
1127
  }
1172
1128
  else {
1173
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1129
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1130
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1174
1131
  }
1175
- return { maxWithdrawableAmount: maxWithdrawableAmount, diff: diff };
1132
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd, diffUsd: diffUsd };
1176
1133
  };
1177
- this.getFinalCloseAmountSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1134
+ this.getFinalCloseAmountUsdSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1178
1135
  var position = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1179
1136
  var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1180
- var collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(position.collateralAmount, collateralCustodyAccount.decimals);
1181
1137
  var newPnl = _this.getPnlSync(position, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1182
1138
  var exitPriceAndFee = _this.getExitPriceAndFeeSync(positionAccount, marketCorrelation, positionAccount.collateralAmount, positionAccount.sizeAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp);
1183
1139
  var totalFeesUsd = (exitPriceAndFee.exitFeeUsd.add(exitPriceAndFee.borrowFeeUsd));
1184
1140
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1185
- var assetsUsd = newPnl.profitUsd.add(collateralMinMaxPrice.min.getAssetAmountUsd(positionAccount.collateralAmount, positionAccount.collateralDecimals));
1186
- var closeAmount, feesAmount;
1141
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(positionAccount.collateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionAccount.lockedAmount, collateralCustodyAccount.decimals));
1142
+ var closeAmountUsd, feesAmountUsd;
1187
1143
  if (assetsUsd.gt(liabilityUsd)) {
1188
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), position.collateralDecimals);
1189
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, positionAccount.collateralDecimals);
1144
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1145
+ feesAmountUsd = totalFeesUsd;
1190
1146
  }
1191
1147
  else {
1192
- closeAmount = constants_1.BN_ZERO;
1193
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), positionAccount.collateralDecimals);
1148
+ closeAmountUsd = constants_1.BN_ZERO;
1149
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1194
1150
  }
1195
- return { closeAmount: closeAmount, feesAmount: feesAmount };
1151
+ return { closeAmountUsd: closeAmountUsd, feesAmountUsd: feesAmountUsd };
1152
+ };
1153
+ this.getMaxAddableCollateralSync = function (positionAccount, targetCustodyAccount, collateralCustodyAccount, collateralPrice, collateralEmaPrice, errorBandwidthPercentageUi) {
1154
+ if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
1155
+ if (errorBandwidthPercentageUi > 100 || errorBandwidthPercentageUi < 0) {
1156
+ throw new Error('errorBandwidthPercentageUi cannot be >100 or <0');
1157
+ }
1158
+ var rawMinInitLev = positionAccount.isDegenMode()
1159
+ ? new anchor_1.BN(targetCustodyAccount.pricing.minInitDegenLeverage)
1160
+ : new anchor_1.BN(targetCustodyAccount.pricing.minInitLeverage);
1161
+ var MIN_INIT_LEVERAGE = rawMinInitLev
1162
+ .mul(new anchor_1.BN(100 + errorBandwidthPercentageUi))
1163
+ .div(new anchor_1.BN(100));
1164
+ var requiredCollateralUsdForMinLev = positionAccount.sizeUsd
1165
+ .muln(constants_1.BPS_POWER)
1166
+ .div(MIN_INIT_LEVERAGE);
1167
+ var currentCollateralUsd = positionAccount.collateralUsd;
1168
+ var maxAddableCollateralUsd = requiredCollateralUsdForMinLev.gt(currentCollateralUsd)
1169
+ ? requiredCollateralUsdForMinLev.sub(currentCollateralUsd)
1170
+ : constants_1.BN_ZERO;
1171
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1172
+ var maxAddableAmount = collateralMinMaxPrice.min.getTokenAmount(maxAddableCollateralUsd, collateralCustodyAccount.decimals);
1173
+ return {
1174
+ maxAddableAmount: maxAddableAmount,
1175
+ maxAddableAmountUsd: maxAddableCollateralUsd,
1176
+ };
1196
1177
  };
1197
1178
  this.getMaxWithdrawableAmountSync = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, errorBandwidthPercentageUi) {
1198
1179
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
@@ -1205,34 +1186,37 @@ var PerpetualsClient = (function () {
1205
1186
  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
1187
  if (maxRemoveableCollateralUsdAfterMinRequired.isNeg()) {
1207
1188
  console.log("THIS cannot happen but still");
1208
- return constants_1.BN_ZERO;
1189
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1209
1190
  }
1210
1191
  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;
1192
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1212
1193
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1213
1194
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1214
1195
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1215
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount, collateralCustodyAccount.decimals);
1196
+ var currentCollateralUsd = positionAccount.collateralUsd;
1216
1197
  var availableInitMarginUsd = constants_1.BN_ZERO;
1217
1198
  if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1218
1199
  availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1219
1200
  }
1220
1201
  else {
1221
1202
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1222
- return constants_1.BN_ZERO;
1203
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1223
1204
  }
1224
1205
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1225
1206
  if (maxRemovableCollateralUsd.isNeg()) {
1226
- return constants_1.BN_ZERO;
1207
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1227
1208
  }
1228
1209
  var maxWithdrawableAmount;
1210
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1229
1211
  if (maxRemoveableCollateralUsdAfterMinRequired.lt(maxRemovableCollateralUsd)) {
1230
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1212
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1213
+ maxWithdrawableAmountUsd = maxRemoveableCollateralUsdAfterMinRequired;
1231
1214
  }
1232
1215
  else {
1233
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1216
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1217
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1234
1218
  }
1235
- return maxWithdrawableAmount;
1219
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd };
1236
1220
  };
1237
1221
  this.getCumulativeLockFeeSync = function (custodyAccount, currentTimestamp) {
1238
1222
  var cumulativeLockFee = constants_1.BN_ZERO;
@@ -1270,12 +1254,12 @@ var PerpetualsClient = (function () {
1270
1254
  var cumulativeLockFee = _this.getCumulativeLockFeeSync(collateralCustodyAccount, currentTimestamp);
1271
1255
  var lockFeeUsd = constants_1.BN_ZERO;
1272
1256
  if (cumulativeLockFee.gt(position.cumulativeLockFeeSnapshot)) {
1273
- lockFeeUsd = cumulativeLockFee.sub(position.cumulativeLockFeeSnapshot).mul(position.lockedUsd).div(new anchor_1.BN(constants_1.RATE_POWER));
1257
+ lockFeeUsd = cumulativeLockFee.sub(position.cumulativeLockFeeSnapshot).mul(position.sizeUsd).div(new anchor_1.BN(constants_1.RATE_POWER));
1274
1258
  }
1275
1259
  lockFeeUsd = lockFeeUsd.add(position.unsettledFeesUsd);
1276
1260
  return lockFeeUsd;
1277
1261
  };
1278
- this.getLockedUsd = function (sideUsd, side, marketCorrelation, maxPayOffBps) {
1262
+ this.getLockedUsd = function (sizeUsd, collateralUsd, side, marketCorrelation, maxPayOffBps) {
1279
1263
  var maxPayOffBpsNew = constants_1.BN_ZERO;
1280
1264
  if (marketCorrelation || (0, types_1.isVariant)(side, 'short')) {
1281
1265
  maxPayOffBpsNew = anchor_1.BN.min(new anchor_1.BN(constants_1.BPS_POWER), maxPayOffBps);
@@ -1283,193 +1267,146 @@ var PerpetualsClient = (function () {
1283
1267
  else {
1284
1268
  maxPayOffBpsNew = maxPayOffBps;
1285
1269
  }
1286
- var lockedUsd = (sideUsd.mul(maxPayOffBpsNew)).div(new anchor_1.BN(constants_1.BPS_POWER));
1270
+ var lockedUsd = ((sizeUsd.add(collateralUsd)).mul(maxPayOffBpsNew)).div(new anchor_1.BN(constants_1.BPS_POWER));
1287
1271
  return lockedUsd;
1288
1272
  };
1289
- this.getLiquidationPriceSync = function (collateralAmount, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount) {
1273
+ this.getLiquidationPriceContractHelper = function (entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount) {
1290
1274
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1291
1275
  price: constants_1.BN_ZERO,
1292
1276
  exponent: constants_1.BN_ZERO,
1293
1277
  confidence: constants_1.BN_ZERO,
1294
1278
  timestamp: constants_1.BN_ZERO
1295
1279
  });
1296
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1297
- return zeroOraclePrice;
1298
- }
1299
1280
  if (positionAccount.entryPrice.exponent && !entryOraclePrice.exponent.eq(new anchor_1.BN(positionAccount.entryPrice.exponent))) {
1300
1281
  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
1282
  }
1302
1283
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1303
1284
  var unsettledLossUsd = exitFeeUsd.add(lockAndUnsettledFeeUsd);
1304
1285
  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
1286
  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;
1287
+ if (positionAccount.collateralUsd.gte(liablitiesUsd)) {
1288
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1289
+ price: (positionAccount.collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1290
+ .div(positionAccount.sizeAmount),
1291
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1292
+ confidence: constants_1.BN_ZERO,
1293
+ timestamp: constants_1.BN_ZERO
1294
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1295
+ if ((0, types_1.isVariant)(side, 'long')) {
1296
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1297
+ price: entryOraclePrice.price.sub(priceDiffLossOracle.price),
1298
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1299
+ confidence: constants_1.BN_ZERO,
1300
+ timestamp: constants_1.BN_ZERO
1301
+ });
1312
1302
  }
1313
1303
  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));
1304
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1305
+ price: entryOraclePrice.price.add(priceDiffLossOracle.price),
1306
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1307
+ confidence: constants_1.BN_ZERO,
1308
+ timestamp: constants_1.BN_ZERO
1309
+ });
1317
1310
  }
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)),
1311
+ }
1312
+ else {
1313
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1314
+ price: (liablitiesUsd.sub(positionAccount.collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1315
+ .div(positionAccount.sizeAmount),
1321
1316
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1322
1317
  confidence: constants_1.BN_ZERO,
1323
1318
  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),
1319
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1320
+ if ((0, types_1.isVariant)(side, 'long')) {
1321
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1322
+ price: entryOraclePrice.price.add(priceDiffProfitOracle.price),
1323
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1334
1324
  confidence: constants_1.BN_ZERO,
1335
1325
  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
- }
1326
+ });
1353
1327
  }
1354
1328
  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),
1329
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1330
+ price: entryOraclePrice.price.sub(priceDiffProfitOracle.price),
1331
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1359
1332
  confidence: constants_1.BN_ZERO,
1360
1333
  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
- }
1334
+ });
1378
1335
  }
1379
1336
  }
1380
1337
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1381
1338
  };
1382
- this.getLiquidationPriceWithOrder = function (collateralAmount, collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount) {
1339
+ this.getLiquidationPriceSync = function (collateralUsd, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, side, targetPrice, targetCustodyAccount, positionAccount) {
1340
+ var newPositionAccount = positionAccount.clone();
1341
+ newPositionAccount.sizeAmount = sizeAmount;
1342
+ newPositionAccount.sizeUsd = targetPrice.getAssetAmountUsd(sizeAmount, targetCustodyAccount.decimals);
1343
+ newPositionAccount.collateralUsd = collateralUsd;
1344
+ return _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, newPositionAccount);
1345
+ };
1346
+ this.getLiquidationPriceWithOrder = function (collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, side, targetCustodyAccount) {
1383
1347
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1384
1348
  price: constants_1.BN_ZERO,
1385
1349
  exponent: constants_1.BN_ZERO,
1386
1350
  confidence: constants_1.BN_ZERO,
1387
1351
  timestamp: constants_1.BN_ZERO
1388
1352
  });
1389
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1390
- return zeroOraclePrice;
1391
- }
1392
1353
  var exitFeeUsd = sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1393
1354
  var unsettledLossUsd = exitFeeUsd;
1394
1355
  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
1356
  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;
1357
+ if (collateralUsd.gte(liablitiesUsd)) {
1358
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1359
+ price: (collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1360
+ .div(sizeAmount),
1361
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1362
+ confidence: constants_1.BN_ZERO,
1363
+ timestamp: constants_1.BN_ZERO
1364
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1365
+ if ((0, types_1.isVariant)(side, 'long')) {
1366
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1367
+ price: limitOraclePrice.price.sub(priceDiffLossOracle.price),
1368
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1369
+ confidence: constants_1.BN_ZERO,
1370
+ timestamp: constants_1.BN_ZERO
1371
+ });
1402
1372
  }
1403
1373
  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));
1374
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1375
+ price: limitOraclePrice.price.add(priceDiffLossOracle.price),
1376
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1377
+ confidence: constants_1.BN_ZERO,
1378
+ timestamp: constants_1.BN_ZERO
1379
+ });
1407
1380
  }
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)),
1381
+ }
1382
+ else {
1383
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1384
+ price: (liablitiesUsd.sub(collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1385
+ .div(sizeAmount),
1411
1386
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1412
1387
  confidence: constants_1.BN_ZERO,
1413
1388
  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),
1389
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1390
+ if ((0, types_1.isVariant)(side, 'long')) {
1391
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1392
+ price: limitOraclePrice.price.add(priceDiffProfitOracle.price),
1393
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1424
1394
  confidence: constants_1.BN_ZERO,
1425
1395
  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
- }
1396
+ });
1443
1397
  }
1444
1398
  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),
1399
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1400
+ price: limitOraclePrice.price.sub(priceDiffProfitOracle.price),
1401
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1449
1402
  confidence: constants_1.BN_ZERO,
1450
1403
  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
- }
1404
+ });
1468
1405
  }
1469
1406
  }
1470
1407
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1471
1408
  };
1472
- this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, positionAccount) {
1409
+ this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, collateralPrice, positionAccount) {
1473
1410
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1474
1411
  price: constants_1.BN_ZERO,
1475
1412
  exponent: constants_1.BN_ZERO,
@@ -1480,7 +1417,7 @@ var PerpetualsClient = (function () {
1480
1417
  return zeroOraclePrice;
1481
1418
  }
1482
1419
  var priceDiffProfit = OraclePrice_1.OraclePrice.from({
1483
- price: positionAccount.lockedUsd.mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1420
+ price: (collateralPrice.price.mul(positionAccount.lockedAmount)).mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1484
1421
  .div(positionAccount.sizeAmount),
1485
1422
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1486
1423
  confidence: constants_1.BN_ZERO,
@@ -1508,7 +1445,7 @@ var PerpetualsClient = (function () {
1508
1445
  }
1509
1446
  return maxProfitPrice.price.isNeg() ? zeroOraclePrice : maxProfitPrice;
1510
1447
  };
1511
- this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1448
+ this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketCorrelation, maxPayOffBps, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1512
1449
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
1513
1450
  throw new Error("Delta Amounts cannot be negative.");
1514
1451
  }
@@ -1538,10 +1475,9 @@ var PerpetualsClient = (function () {
1538
1475
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
1539
1476
  positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
1540
1477
  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);
1478
+ var collateralDeltaUsd = collateralPrice.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
1479
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
1480
+ positionAccount.lockedAmount = positionAccount.lockedAmount.add(collateralPrice.getTokenAmount(_this.getLockedUsd(sizeDeltaUsd, collateralDeltaUsd, side, marketCorrelation, maxPayOffBps), collateralCustodyAccount.decimals));
1545
1481
  var currentTime = new anchor_1.BN((0, utils_1.getUnixTs)());
1546
1482
  var pnl = _this.getPnlSync(positionAccount, userEntrytpSlOraclePrice, userEntrytpSlOraclePrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTime, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1547
1483
  var pnlUsd = pnl.profitUsd.sub(pnl.lossUsd);
@@ -1613,6 +1549,9 @@ var PerpetualsClient = (function () {
1613
1549
  });
1614
1550
  };
1615
1551
  this.getPnlSync = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1552
+ return _this.getPnlContractHelper(positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig);
1553
+ };
1554
+ this.getPnlContractHelper = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1616
1555
  if (positionAccount.sizeUsd.isZero() || positionAccount.entryPrice.price.isZero()) {
1617
1556
  return {
1618
1557
  profitUsd: constants_1.BN_ZERO,
@@ -1671,7 +1610,7 @@ var PerpetualsClient = (function () {
1671
1610
  }
1672
1611
  if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1673
1612
  return {
1674
- profitUsd: anchor_1.BN.min(priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals), collateralMinPrice.getAssetAmountUsd(positionAccount.lockedAmount, positionAccount.lockedDecimals)),
1613
+ profitUsd: priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1675
1614
  lossUsd: constants_1.BN_ZERO,
1676
1615
  };
1677
1616
  }
@@ -1762,6 +1701,9 @@ var PerpetualsClient = (function () {
1762
1701
  }
1763
1702
  };
1764
1703
  this.getAssetsUnderManagementUsdSync = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1704
+ return _this.getAssetsUnderManagementUsdContractHelper(poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig);
1705
+ };
1706
+ this.getAssetsUnderManagementUsdContractHelper = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1765
1707
  var poolAmountUsd = constants_1.BN_ZERO;
1766
1708
  for (var index = 0; index < custodies.length; index++) {
1767
1709
  if (custodies.length != poolAccount.custodies.length || !custodies[index].publicKey.equals(poolAccount.custodies[index])) {
@@ -1774,6 +1716,7 @@ var PerpetualsClient = (function () {
1774
1716
  var token_amount_usd = tokenMinMaxPrice.max.getAssetAmountUsd(custodies[index].assets.owned, custodies[index].decimals);
1775
1717
  poolAmountUsd = poolAmountUsd.add(token_amount_usd);
1776
1718
  }
1719
+ poolAmountUsd = poolAmountUsd.sub(poolAccount.feesObligationUsd.add(poolAccount.rebateObligationUsd));
1777
1720
  if (aumCalcMode === "includePnl") {
1778
1721
  var poolEquityUsd = poolAmountUsd;
1779
1722
  for (var index = 0; index < markets.length; index++) {
@@ -1783,11 +1726,12 @@ var PerpetualsClient = (function () {
1783
1726
  var targetCustodyId = poolAccount.getCustodyId(markets[index].targetCustody);
1784
1727
  var collateralCustodyId = poolAccount.getCustodyId(markets[index].collateralCustody);
1785
1728
  var position = markets[index].getCollectivePosition();
1729
+ poolEquityUsd = poolEquityUsd.sub(position.collateralUsd);
1786
1730
  var collectivePnl = _this.getPnlSync(position, tokenPrices[targetCustodyId], tokenEmaPrices[targetCustodyId], custodies[targetCustodyId], tokenPrices[collateralCustodyId], tokenEmaPrices[collateralCustodyId], custodies[collateralCustodyId], currentTime, custodies[targetCustodyId].pricing.delaySeconds, poolConfig);
1787
1731
  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);
1732
+ var collectiveLossUsd = anchor_1.BN.min(collectivePnl.lossUsd, position.collateralUsd);
1733
+ var collectiveProfitUsd = anchor_1.BN.min(collectivePnl.profitUsd, collateralMinMaxPrice.max.getAssetAmountUsd(position.lockedAmount, custodies[collateralCustodyId].decimals).sub(position.collateralUsd));
1734
+ poolEquityUsd = (poolEquityUsd.add(collectiveLossUsd)).sub(collectiveProfitUsd);
1791
1735
  }
1792
1736
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: poolEquityUsd };
1793
1737
  }
@@ -1795,14 +1739,6 @@ var PerpetualsClient = (function () {
1795
1739
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: constants_1.BN_ZERO };
1796
1740
  }
1797
1741
  };
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
1742
  this.getFeeDiscount = function (perpetualsAccount, tokenStakeAccount, currentTime) {
1807
1743
  if (tokenStakeAccount.level === 0) {
1808
1744
  return { discountBn: constants_1.BN_ZERO };
@@ -1887,7 +1823,7 @@ var PerpetualsClient = (function () {
1887
1823
  });
1888
1824
  };
1889
1825
  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;
1826
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_1, token, _a, custodies_2, custody, _b, _c, market, transaction, backUpOracleInstruction, setCULimitIx, result, index, res;
1891
1827
  var _d;
1892
1828
  return __generator(this, function (_e) {
1893
1829
  switch (_e.label) {
@@ -1935,6 +1871,8 @@ var PerpetualsClient = (function () {
1935
1871
  return [4, backUpOracleInstructionPromise];
1936
1872
  case 2:
1937
1873
  backUpOracleInstruction = _e.sent();
1874
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1875
+ transaction.instructions.unshift(setCULimitIx);
1938
1876
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
1939
1877
  return [4, this.viewHelper.simulateTransaction(transaction)];
1940
1878
  case 3:
@@ -2001,7 +1939,7 @@ var PerpetualsClient = (function () {
2001
1939
  args_1[_i - 4] = arguments[_i];
2002
1940
  }
2003
1941
  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;
1942
+ var custodies, custodyMetas, marketMetas, _a, custodies_5, token, _b, custodies_6, custody, _c, _d, market, depositCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2005
1943
  var _e;
2006
1944
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2007
1945
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2052,6 +1990,8 @@ var PerpetualsClient = (function () {
2052
1990
  .transaction()];
2053
1991
  case 1:
2054
1992
  transaction = _f.sent();
1993
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1994
+ transaction.instructions.unshift(setCULimitIx);
2055
1995
  if (!enableBackupOracle) return [3, 3];
2056
1996
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2057
1997
  case 2:
@@ -2061,6 +2001,14 @@ var PerpetualsClient = (function () {
2061
2001
  case 3: return [4, this.viewHelper.simulateTransaction(transaction, userPublicKey)];
2062
2002
  case 4:
2063
2003
  result = _f.sent();
2004
+ if (result.value.err) {
2005
+ console.error('error Simulation failed:::', result);
2006
+ return [2, {
2007
+ amount: undefined,
2008
+ fee: undefined,
2009
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2010
+ }];
2011
+ }
2064
2012
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getAddLiquidityAmountAndFee'; });
2065
2013
  res = this.viewHelper.decodeLogs(result, index, 'getAddLiquidityAmountAndFee');
2066
2014
  return [2, {
@@ -2077,7 +2025,7 @@ var PerpetualsClient = (function () {
2077
2025
  args_1[_i - 4] = arguments[_i];
2078
2026
  }
2079
2027
  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;
2028
+ var custodies, custodyMetas, marketMetas, _a, custodies_7, token, _b, custodies_8, custody, _c, _d, market, removeCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2081
2029
  var _e;
2082
2030
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2083
2031
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2128,6 +2076,8 @@ var PerpetualsClient = (function () {
2128
2076
  .transaction()];
2129
2077
  case 1:
2130
2078
  transaction = _f.sent();
2079
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2080
+ transaction.instructions.unshift(setCULimitIx);
2131
2081
  if (!enableBackupOracle) return [3, 3];
2132
2082
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2133
2083
  case 2:
@@ -2139,9 +2089,11 @@ var PerpetualsClient = (function () {
2139
2089
  result = _f.sent();
2140
2090
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getRemoveLiquidityAmountAndFee'; });
2141
2091
  if (result.value.err) {
2092
+ console.error('error Simulation failed:', result);
2142
2093
  return [2, {
2143
- amount: new anchor_1.BN(0),
2144
- fee: new anchor_1.BN(0),
2094
+ amount: undefined,
2095
+ fee: undefined,
2096
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2145
2097
  }];
2146
2098
  }
2147
2099
  res = this.viewHelper.decodeLogs(result, index, 'getRemoveLiquidityAmountAndFee');
@@ -2154,7 +2106,7 @@ var PerpetualsClient = (function () {
2154
2106
  });
2155
2107
  };
2156
2108
  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;
2109
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_9, token, _a, custodies_10, custody, _b, _c, market, backUpOracleInstruction, transaction, setCULimitIx, result, index, res;
2158
2110
  var _d;
2159
2111
  return __generator(this, function (_e) {
2160
2112
  switch (_e.label) {
@@ -2202,6 +2154,8 @@ var PerpetualsClient = (function () {
2202
2154
  .transaction()];
2203
2155
  case 2:
2204
2156
  transaction = _e.sent();
2157
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2158
+ transaction.instructions.unshift(setCULimitIx);
2205
2159
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
2206
2160
  return [4, this.viewHelper.simulateTransaction(transaction)];
2207
2161
  case 3:
@@ -2551,11 +2505,10 @@ var PerpetualsClient = (function () {
2551
2505
  for (var _i = 8; _i < arguments.length; _i++) {
2552
2506
  args_1[_i - 8] = arguments[_i];
2553
2507
  }
2554
- 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) {
2508
+ 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) {
2555
2509
  var publicKey, targetCustodyConfig, collateralCustodyConfig, collateralToken, marketAccount, userCollateralTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, params, instruction;
2556
2510
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2557
2511
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2558
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2559
2512
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2560
2513
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2561
2514
  return __generator(this, function (_c) {
@@ -2648,7 +2601,7 @@ var PerpetualsClient = (function () {
2648
2601
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
2649
2602
  fundingMint: collateralCustodyConfig.mintKey
2650
2603
  })
2651
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2604
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2652
2605
  .instruction()];
2653
2606
  case 7:
2654
2607
  instruction = _c.sent();
@@ -2666,11 +2619,10 @@ var PerpetualsClient = (function () {
2666
2619
  for (var _i = 6; _i < arguments.length; _i++) {
2667
2620
  args_1[_i - 6] = arguments[_i];
2668
2621
  }
2669
- 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) {
2622
+ 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) {
2670
2623
  var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, instruction, closeWsolATAIns, error_1;
2671
2624
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2672
2625
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2673
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2674
2626
  if (createUserATA === void 0) { createUserATA = true; }
2675
2627
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
2676
2628
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -2749,7 +2701,7 @@ var PerpetualsClient = (function () {
2749
2701
  collateralMint: collateralCustodyConfig.mintKey,
2750
2702
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2751
2703
  })
2752
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2704
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2753
2705
  .instruction()];
2754
2706
  case 6:
2755
2707
  instruction = _b.sent();
@@ -2771,16 +2723,15 @@ var PerpetualsClient = (function () {
2771
2723
  });
2772
2724
  });
2773
2725
  };
2774
- this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2726
+ this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2775
2727
  var args_1 = [];
2776
- for (var _i = 10; _i < arguments.length; _i++) {
2777
- args_1[_i - 10] = arguments[_i];
2728
+ for (var _i = 9; _i < arguments.length; _i++) {
2729
+ args_1[_i - 9] = arguments[_i];
2778
2730
  }
2779
- 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) {
2780
- 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;
2731
+ 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) {
2732
+ 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;
2781
2733
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2782
2734
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2783
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2784
2735
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2785
2736
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2786
2737
  return __generator(this, function (_c) {
@@ -2874,18 +2825,10 @@ var PerpetualsClient = (function () {
2874
2825
  }
2875
2826
  _c.label = 10;
2876
2827
  case 10:
2877
- rebateMintAccount = {
2878
- pubkey: collateralCustodyConfig.mintKey,
2879
- isSigner: false,
2880
- isWritable: false
2881
- };
2882
- _c.label = 11;
2883
- case 11:
2884
- _c.trys.push([11, 13, , 14]);
2828
+ _c.trys.push([10, 12, , 13]);
2885
2829
  return [4, this.program.methods
2886
2830
  .swapAndOpen({
2887
2831
  amountIn: amountIn,
2888
- minCollateralAmountOut: minCollateralAmountOut,
2889
2832
  priceWithSlippage: priceWithSlippage,
2890
2833
  sizeAmount: sizeAmount,
2891
2834
  privilege: privilege
@@ -2916,17 +2859,17 @@ var PerpetualsClient = (function () {
2916
2859
  collateralMint: collateralCustodyConfig.mintKey,
2917
2860
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralTokenSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2918
2861
  })
2919
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2862
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2920
2863
  .instruction()];
2921
- case 12:
2864
+ case 11:
2922
2865
  inx = _c.sent();
2923
2866
  instructions.push(inx);
2924
- return [3, 14];
2925
- case 13:
2867
+ return [3, 13];
2868
+ case 12:
2926
2869
  err_3 = _c.sent();
2927
2870
  console.error("perpClient SwapAndOpen error:: ", err_3);
2928
2871
  throw err_3;
2929
- case 14: return [2, {
2872
+ case 13: return [2, {
2930
2873
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
2931
2874
  additionalSigners: additionalSigners
2932
2875
  }];
@@ -2934,16 +2877,15 @@ var PerpetualsClient = (function () {
2934
2877
  });
2935
2878
  });
2936
2879
  };
2937
- this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2880
+ this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2938
2881
  var args_1 = [];
2939
- for (var _i = 8; _i < arguments.length; _i++) {
2940
- args_1[_i - 8] = arguments[_i];
2882
+ for (var _i = 7; _i < arguments.length; _i++) {
2883
+ args_1[_i - 7] = arguments[_i];
2941
2884
  }
2942
- 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) {
2943
- var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, rebateMintAccount, inx, err_4;
2885
+ 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) {
2886
+ var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, inx, err_4;
2944
2887
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2945
2888
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2946
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2947
2889
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2948
2890
  return __generator(this, function (_a) {
2949
2891
  switch (_a.label) {
@@ -3009,18 +2951,12 @@ var PerpetualsClient = (function () {
3009
2951
  if (!(_a.sent())) {
3010
2952
  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));
3011
2953
  }
3012
- rebateMintAccount = {
3013
- pubkey: collateralCustodyConfig.mintKey,
3014
- isSigner: false,
3015
- isWritable: false
3016
- };
3017
2954
  _a.label = 5;
3018
2955
  case 5:
3019
2956
  _a.trys.push([5, 7, , 8]);
3020
2957
  return [4, this.program.methods
3021
2958
  .closeAndSwap({
3022
2959
  priceWithSlippage: priceWithSlippage,
3023
- minSwapAmountOut: minSwapAmountOut,
3024
2960
  privilege: privilege
3025
2961
  })
3026
2962
  .accounts({
@@ -3049,7 +2985,7 @@ var PerpetualsClient = (function () {
3049
2985
  collateralMint: collateralCustodyConfig.mintKey,
3050
2986
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
3051
2987
  })
3052
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2988
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3053
2989
  .instruction()];
3054
2990
  case 6:
3055
2991
  inx = _a.sent();
@@ -3170,12 +3106,12 @@ var PerpetualsClient = (function () {
3170
3106
  });
3171
3107
  });
3172
3108
  };
3173
- this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1) {
3109
+ this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1) {
3174
3110
  var args_1 = [];
3175
- for (var _i = 8; _i < arguments.length; _i++) {
3176
- args_1[_i - 8] = arguments[_i];
3111
+ for (var _i = 7; _i < arguments.length; _i++) {
3112
+ args_1[_i - 7] = arguments[_i];
3177
3113
  }
3178
- 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) {
3114
+ 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) {
3179
3115
  var publicKey, collateralCustodyConfig, targetCustodyConfig, inputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userInputTokenAccount, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, userCollateralTokenAccount, marketAccount, instruction;
3180
3116
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
3181
3117
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -3254,7 +3190,6 @@ var PerpetualsClient = (function () {
3254
3190
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3255
3191
  return [4, this.program.methods.swapAndAddCollateral({
3256
3192
  amountIn: amountIn,
3257
- minCollateralAmountOut: minCollateralAmountOut,
3258
3193
  }).accounts({
3259
3194
  owner: publicKey,
3260
3195
  feePayer: publicKey,
@@ -3290,12 +3225,12 @@ var PerpetualsClient = (function () {
3290
3225
  });
3291
3226
  });
3292
3227
  };
3293
- this.removeCollateral = function (collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3228
+ this.removeCollateral = function (collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3294
3229
  var args_1 = [];
3295
3230
  for (var _i = 6; _i < arguments.length; _i++) {
3296
3231
  args_1[_i - 6] = arguments[_i];
3297
3232
  }
3298
- 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) {
3233
+ 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) {
3299
3234
  var publicKey, collateralCustodyConfig, targetCustodyConfig, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, marketAccount, instruction, closeWsolATAIns, error_2;
3300
3235
  if (createUserATA === void 0) { createUserATA = true; }
3301
3236
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
@@ -3359,7 +3294,7 @@ var PerpetualsClient = (function () {
3359
3294
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3360
3295
  return [4, this.program.methods
3361
3296
  .removeCollateral({
3362
- collateralDelta: collateralWithFee,
3297
+ collateralDeltaUsd: collateralDeltaUsd,
3363
3298
  })
3364
3299
  .accounts({
3365
3300
  owner: publicKey,
@@ -3401,12 +3336,12 @@ var PerpetualsClient = (function () {
3401
3336
  });
3402
3337
  });
3403
3338
  };
3404
- this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1) {
3339
+ this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1) {
3405
3340
  var args_1 = [];
3406
- for (var _i = 7; _i < arguments.length; _i++) {
3407
- args_1[_i - 7] = arguments[_i];
3341
+ for (var _i = 6; _i < arguments.length; _i++) {
3342
+ args_1[_i - 6] = arguments[_i];
3408
3343
  }
3409
- 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) {
3344
+ 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) {
3410
3345
  var publicKey, targetCustodyConfig, collateralCustodyConfig, outputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, lamports, userCollateralTokenAccount, marketAccount, positionAccount, instruction;
3411
3346
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
3412
3347
  return __generator(this, function (_a) {
@@ -3463,8 +3398,7 @@ var PerpetualsClient = (function () {
3463
3398
  positionAccount = poolConfig.getPositionFromMarketPk(publicKey, marketAccount);
3464
3399
  return [4, this.program.methods
3465
3400
  .removeCollateralAndSwap({
3466
- collateralDelta: collateralDelta,
3467
- minSwapAmountOut: minSwapAmountOut,
3401
+ collateralDeltaUsd: collateralDeltaUsd,
3468
3402
  })
3469
3403
  .accounts({
3470
3404
  owner: publicKey,
@@ -3509,11 +3443,10 @@ var PerpetualsClient = (function () {
3509
3443
  for (var _i = 8; _i < arguments.length; _i++) {
3510
3444
  args_1[_i - 8] = arguments[_i];
3511
3445
  }
3512
- 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) {
3446
+ 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) {
3513
3447
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3514
3448
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3515
3449
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3516
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3517
3450
  return __generator(this, function (_a) {
3518
3451
  switch (_a.label) {
3519
3452
  case 0:
@@ -3556,7 +3489,7 @@ var PerpetualsClient = (function () {
3556
3489
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3557
3490
  collateralMint: collateralCustodyConfig.mintKey
3558
3491
  })
3559
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3492
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3560
3493
  .instruction()];
3561
3494
  case 1:
3562
3495
  instruction = _a.sent();
@@ -3574,11 +3507,10 @@ var PerpetualsClient = (function () {
3574
3507
  for (var _i = 8; _i < arguments.length; _i++) {
3575
3508
  args_1[_i - 8] = arguments[_i];
3576
3509
  }
3577
- 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) {
3510
+ 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) {
3578
3511
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3579
3512
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3580
3513
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3581
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3582
3514
  return __generator(this, function (_a) {
3583
3515
  switch (_a.label) {
3584
3516
  case 0:
@@ -3621,7 +3553,7 @@ var PerpetualsClient = (function () {
3621
3553
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3622
3554
  collateralMint: collateralCustodyConfig.mintKey
3623
3555
  })
3624
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3556
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3625
3557
  .instruction()];
3626
3558
  case 1:
3627
3559
  instruction = _a.sent();
@@ -4088,119 +4020,8 @@ var PerpetualsClient = (function () {
4088
4020
  }
4089
4021
  });
4090
4022
  }); };
4091
- this.updateNftAccount = function (nftMint, updateReferer, updateBooster, flpStakeAccounts) { return __awaiter(_this, void 0, void 0, function () {
4092
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, nftReferralAccount, nftTokenAccount, flpStakeAccountMetas, _i, flpStakeAccounts_1, flpStakeAccountPk, updateNftTradingAccountInstruction, err_8;
4093
- return __generator(this, function (_a) {
4094
- switch (_a.label) {
4095
- case 0:
4096
- publicKey = this.provider.wallet.publicKey;
4097
- preInstructions = [];
4098
- instructions = [];
4099
- postInstructions = [];
4100
- additionalSigners = [];
4101
- _a.label = 1;
4102
- case 1:
4103
- _a.trys.push([1, 4, , 5]);
4104
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4105
- Buffer.from("trading"),
4106
- nftMint.toBuffer(),
4107
- ], this.programId)[0];
4108
- nftReferralAccount = web3_js_1.PublicKey.findProgramAddressSync([
4109
- Buffer.from("referral"),
4110
- publicKey.toBuffer(),
4111
- ], this.programId)[0];
4112
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, publicKey, true)];
4113
- case 2:
4114
- nftTokenAccount = _a.sent();
4115
- flpStakeAccountMetas = [];
4116
- for (_i = 0, flpStakeAccounts_1 = flpStakeAccounts; _i < flpStakeAccounts_1.length; _i++) {
4117
- flpStakeAccountPk = flpStakeAccounts_1[_i];
4118
- flpStakeAccountMetas.push({
4119
- pubkey: flpStakeAccountPk,
4120
- isSigner: false,
4121
- isWritable: true,
4122
- });
4123
- }
4124
- return [4, this.program.methods
4125
- .updateTradingAccount({
4126
- updateReferer: updateReferer,
4127
- updateBooster: updateBooster
4128
- })
4129
- .accounts({
4130
- owner: publicKey,
4131
- feePayer: publicKey,
4132
- nftTokenAccount: nftTokenAccount,
4133
- referralAccount: nftReferralAccount,
4134
- tradingAccount: nftTradingAccount
4135
- })
4136
- .instruction()];
4137
- case 3:
4138
- updateNftTradingAccountInstruction = _a.sent();
4139
- instructions.push(updateNftTradingAccountInstruction);
4140
- return [3, 5];
4141
- case 4:
4142
- err_8 = _a.sent();
4143
- console.log("perpClient updateNftAccount error:: ", err_8);
4144
- throw err_8;
4145
- case 5: return [2, {
4146
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4147
- additionalSigners: additionalSigners
4148
- }];
4149
- }
4150
- });
4151
- }); };
4152
- this.levelUp = function (poolConfig, nftMint, authorizationRulesAccount) { return __awaiter(_this, void 0, void 0, function () {
4153
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, metadataAccount, levelUpInstruction, err_9;
4154
- return __generator(this, function (_a) {
4155
- switch (_a.label) {
4156
- case 0:
4157
- publicKey = this.provider.wallet.publicKey;
4158
- preInstructions = [];
4159
- instructions = [];
4160
- postInstructions = [];
4161
- additionalSigners = [];
4162
- _a.label = 1;
4163
- case 1:
4164
- _a.trys.push([1, 3, , 4]);
4165
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4166
- Buffer.from("trading"),
4167
- nftMint.toBuffer(),
4168
- ], this.programId)[0];
4169
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
4170
- return [4, this.program.methods
4171
- .levelUp({})
4172
- .accounts({
4173
- owner: publicKey,
4174
- perpetuals: this.perpetuals.publicKey,
4175
- pool: poolConfig.poolAddress,
4176
- metadataAccount: metadataAccount,
4177
- nftMint: nftMint,
4178
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
4179
- tradingAccount: nftTradingAccount,
4180
- transferAuthority: this.authority.publicKey,
4181
- authorizationRulesAccount: authorizationRulesAccount,
4182
- authorizationRulesProgram: new web3_js_1.PublicKey('auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg'),
4183
- systemProgram: web3_js_1.SystemProgram.programId,
4184
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
4185
- })
4186
- .instruction()];
4187
- case 2:
4188
- levelUpInstruction = _a.sent();
4189
- instructions.push(levelUpInstruction);
4190
- return [3, 4];
4191
- case 3:
4192
- err_9 = _a.sent();
4193
- console.log("perpClient levelUp error:: ", err_9);
4194
- throw err_9;
4195
- case 4: return [2, {
4196
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4197
- additionalSigners: additionalSigners
4198
- }];
4199
- }
4200
- });
4201
- }); };
4202
4023
  this.depositStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4203
- var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_10;
4024
+ var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_8;
4204
4025
  return __generator(this, function (_a) {
4205
4026
  switch (_a.label) {
4206
4027
  case 0:
@@ -4242,9 +4063,9 @@ var PerpetualsClient = (function () {
4242
4063
  instructions.push(depositStakeInstruction);
4243
4064
  return [3, 5];
4244
4065
  case 4:
4245
- err_10 = _a.sent();
4246
- console.log("perpClient depositStaking error:: ", err_10);
4247
- throw err_10;
4066
+ err_8 = _a.sent();
4067
+ console.log("perpClient depositStaking error:: ", err_8);
4068
+ throw err_8;
4248
4069
  case 5: return [2, {
4249
4070
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4250
4071
  additionalSigners: additionalSigners
@@ -4253,7 +4074,7 @@ var PerpetualsClient = (function () {
4253
4074
  });
4254
4075
  }); };
4255
4076
  this.refreshStakeWithAllFlpStakeAccounts = function (rewardSymbol, poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4256
- var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_11;
4077
+ var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_9;
4257
4078
  return __generator(this, function (_c) {
4258
4079
  switch (_c.label) {
4259
4080
  case 0:
@@ -4300,9 +4121,9 @@ var PerpetualsClient = (function () {
4300
4121
  refreshStakeInstruction = _c.sent();
4301
4122
  return [2, refreshStakeInstruction];
4302
4123
  case 2:
4303
- err_11 = _c.sent();
4304
- console.log("perpClient refreshStaking error:: ", err_11);
4305
- throw err_11;
4124
+ err_9 = _c.sent();
4125
+ console.log("perpClient refreshStaking error:: ", err_9);
4126
+ throw err_9;
4306
4127
  case 3: return [2];
4307
4128
  }
4308
4129
  });
@@ -4313,7 +4134,7 @@ var PerpetualsClient = (function () {
4313
4134
  args_1[_i - 3] = arguments[_i];
4314
4135
  }
4315
4136
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, flpStakeAccountPk_1], args_1, true), void 0, function (rewardSymbol, poolConfig, flpStakeAccountPk, userPublicKey) {
4316
- var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_12;
4137
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_10;
4317
4138
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4318
4139
  return __generator(this, function (_c) {
4319
4140
  switch (_c.label) {
@@ -4361,9 +4182,9 @@ var PerpetualsClient = (function () {
4361
4182
  refreshStakeInstruction = _c.sent();
4362
4183
  return [2, refreshStakeInstruction];
4363
4184
  case 2:
4364
- err_12 = _c.sent();
4365
- console.log("perpClient refreshStaking error:: ", err_12);
4366
- throw err_12;
4185
+ err_10 = _c.sent();
4186
+ console.log("perpClient refreshStaking error:: ", err_10);
4187
+ throw err_10;
4367
4188
  case 3: return [2];
4368
4189
  }
4369
4190
  });
@@ -4375,7 +4196,7 @@ var PerpetualsClient = (function () {
4375
4196
  args_1[_i - 3] = arguments[_i];
4376
4197
  }
4377
4198
  return __awaiter(_this, __spreadArray([rewardSymbol_1, unstakeAmount_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, unstakeAmount, poolConfig, userPublicKey) {
4378
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_13;
4199
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_11;
4379
4200
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4380
4201
  return __generator(this, function (_b) {
4381
4202
  switch (_b.label) {
@@ -4427,9 +4248,9 @@ var PerpetualsClient = (function () {
4427
4248
  instructions.push(unstakeInstantInstruction);
4428
4249
  return [3, 6];
4429
4250
  case 5:
4430
- err_13 = _b.sent();
4431
- console.log("perpClient unstakeInstant error:: ", err_13);
4432
- throw err_13;
4251
+ err_11 = _b.sent();
4252
+ console.log("perpClient unstakeInstant error:: ", err_11);
4253
+ throw err_11;
4433
4254
  case 6: return [2, {
4434
4255
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4435
4256
  additionalSigners: additionalSigners
@@ -4439,7 +4260,7 @@ var PerpetualsClient = (function () {
4439
4260
  });
4440
4261
  };
4441
4262
  this.setFeeShareBps = function (poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4442
- var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_14;
4263
+ var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_12;
4443
4264
  return __generator(this, function (_c) {
4444
4265
  switch (_c.label) {
4445
4266
  case 0:
@@ -4483,15 +4304,15 @@ var PerpetualsClient = (function () {
4483
4304
  refreshStakeInstruction = _c.sent();
4484
4305
  return [2, refreshStakeInstruction];
4485
4306
  case 2:
4486
- err_14 = _c.sent();
4487
- console.log("perpClient refreshStaking error:: ", err_14);
4488
- throw err_14;
4307
+ err_12 = _c.sent();
4308
+ console.log("perpClient refreshStaking error:: ", err_12);
4309
+ throw err_12;
4489
4310
  case 3: return [2];
4490
4311
  }
4491
4312
  });
4492
4313
  }); };
4493
4314
  this.unstakeRequest = function (unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4494
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_15;
4315
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_13;
4495
4316
  return __generator(this, function (_a) {
4496
4317
  switch (_a.label) {
4497
4318
  case 0:
@@ -4525,9 +4346,9 @@ var PerpetualsClient = (function () {
4525
4346
  instructions.push(unstakeRequestInstruction);
4526
4347
  return [3, 4];
4527
4348
  case 3:
4528
- err_15 = _a.sent();
4529
- console.log("perpClient unstakeRequest error:: ", err_15);
4530
- throw err_15;
4349
+ err_13 = _a.sent();
4350
+ console.log("perpClient unstakeRequest error:: ", err_13);
4351
+ throw err_13;
4531
4352
  case 4: return [2, {
4532
4353
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4533
4354
  additionalSigners: additionalSigners
@@ -4541,7 +4362,7 @@ var PerpetualsClient = (function () {
4541
4362
  args_1[_i - 1] = arguments[_i];
4542
4363
  }
4543
4364
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, pendingActivation, deactivated, createUserLPTA, userPublicKey) {
4544
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_16;
4365
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_14;
4545
4366
  if (pendingActivation === void 0) { pendingActivation = true; }
4546
4367
  if (deactivated === void 0) { deactivated = true; }
4547
4368
  if (createUserLPTA === void 0) { createUserLPTA = true; }
@@ -4597,9 +4418,9 @@ var PerpetualsClient = (function () {
4597
4418
  instructions.push(withdrawStakeInstruction);
4598
4419
  return [3, 6];
4599
4420
  case 5:
4600
- err_16 = _b.sent();
4601
- console.log("perpClient withdrawStake error:: ", err_16);
4602
- throw err_16;
4421
+ err_14 = _b.sent();
4422
+ console.log("perpClient withdrawStake error:: ", err_14);
4423
+ throw err_14;
4603
4424
  case 6: return [2, {
4604
4425
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4605
4426
  additionalSigners: additionalSigners
@@ -4614,7 +4435,7 @@ var PerpetualsClient = (function () {
4614
4435
  args_1[_i - 3] = arguments[_i];
4615
4436
  }
4616
4437
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, tokenStakeAccount_1], args_1, true), void 0, function (rewardSymbol, poolConfig, tokenStakeAccount, createUserATA) {
4617
- var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_17;
4438
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_15;
4618
4439
  if (createUserATA === void 0) { createUserATA = true; }
4619
4440
  return __generator(this, function (_b) {
4620
4441
  switch (_b.label) {
@@ -4675,9 +4496,9 @@ var PerpetualsClient = (function () {
4675
4496
  instructions.push(withdrawStakeInstruction);
4676
4497
  return [3, 6];
4677
4498
  case 5:
4678
- err_17 = _b.sent();
4679
- console.log("perpClient withdrawStake error:: ", err_17);
4680
- throw err_17;
4499
+ err_15 = _b.sent();
4500
+ console.log("perpClient withdrawStake error:: ", err_15);
4501
+ throw err_15;
4681
4502
  case 6: return [2, {
4682
4503
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4683
4504
  additionalSigners: additionalSigners
@@ -4691,11 +4512,13 @@ var PerpetualsClient = (function () {
4691
4512
  for (var _i = 5; _i < arguments.length; _i++) {
4692
4513
  args_1[_i - 5] = arguments[_i];
4693
4514
  }
4694
- 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) {
4695
- 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;
4515
+ 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, enableHeapSizeIx, enableDebugLogs) {
4516
+ 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, heapSizeIx, addCompoundingLiquidity, err_16;
4696
4517
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
4697
4518
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4698
4519
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4520
+ if (enableHeapSizeIx === void 0) { enableHeapSizeIx = true; }
4521
+ if (enableDebugLogs === void 0) { enableDebugLogs = false; }
4699
4522
  return __generator(this, function (_f) {
4700
4523
  switch (_f.label) {
4701
4524
  case 0:
@@ -4786,6 +4609,15 @@ var PerpetualsClient = (function () {
4786
4609
  _f.label = 7;
4787
4610
  case 7:
4788
4611
  _f.trys.push([7, 9, , 10]);
4612
+ if (enableHeapSizeIx) {
4613
+ heapSizeIx = web3_js_1.ComputeBudgetProgram.requestHeapFrame({
4614
+ bytes: 64 * 1024,
4615
+ });
4616
+ if (enableDebugLogs) {
4617
+ console.log("SDK: adding 64 liq Data heapSizeIx for addCompoundingLiquidity");
4618
+ }
4619
+ preInstructions.push(heapSizeIx);
4620
+ }
4789
4621
  return [4, this.program.methods
4790
4622
  .addCompoundingLiquidity({
4791
4623
  amountIn: amountIn,
@@ -4820,8 +4652,8 @@ var PerpetualsClient = (function () {
4820
4652
  instructions.push(addCompoundingLiquidity);
4821
4653
  return [3, 10];
4822
4654
  case 9:
4823
- err_18 = _f.sent();
4824
- console.log("perpClient addCompoundingLiquidity error:: ", err_18);
4655
+ err_16 = _f.sent();
4656
+ console.log("perpClient addCompoundingLiquidity error:: ", err_16);
4825
4657
  return [3, 10];
4826
4658
  case 10: return [2, {
4827
4659
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4836,11 +4668,13 @@ var PerpetualsClient = (function () {
4836
4668
  for (var _i = 5; _i < arguments.length; _i++) {
4837
4669
  args_1[_i - 5] = arguments[_i];
4838
4670
  }
4839
- 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) {
4840
- 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;
4671
+ 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, enableHeapSizeIx, enableDebugLogs) {
4672
+ var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, outCustodyConfig, lpTokenMint, compoundingTokenMint, lamports, _a, custodyAccountMetas, custodyOracleAccountMetas, markets, _b, _c, custody, _d, _e, market, compoundingTokenAccount, heapSizeIx, removeCompoundingLiquidity, err_17;
4841
4673
  if (createUserATA === void 0) { createUserATA = true; }
4842
4674
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4843
4675
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4676
+ if (enableHeapSizeIx === void 0) { enableHeapSizeIx = true; }
4677
+ if (enableDebugLogs === void 0) { enableDebugLogs = false; }
4844
4678
  return __generator(this, function (_f) {
4845
4679
  switch (_f.label) {
4846
4680
  case 0:
@@ -4915,6 +4749,15 @@ var PerpetualsClient = (function () {
4915
4749
  _f.label = 5;
4916
4750
  case 5:
4917
4751
  _f.trys.push([5, 7, , 8]);
4752
+ if (enableHeapSizeIx) {
4753
+ heapSizeIx = web3_js_1.ComputeBudgetProgram.requestHeapFrame({
4754
+ bytes: 64 * 1024,
4755
+ });
4756
+ if (enableDebugLogs) {
4757
+ console.log("SDK: adding 64 liq Data heapSizeIx for addCompoundingLiquidity");
4758
+ }
4759
+ preInstructions.push(heapSizeIx);
4760
+ }
4918
4761
  return [4, this.program.methods
4919
4762
  .removeCompoundingLiquidity({
4920
4763
  compoundingAmountIn: compoundingAmountIn,
@@ -4949,8 +4792,8 @@ var PerpetualsClient = (function () {
4949
4792
  instructions.push(removeCompoundingLiquidity);
4950
4793
  return [3, 8];
4951
4794
  case 7:
4952
- err_19 = _f.sent();
4953
- console.log("perpClient removeCompoundingLiquidity error:: ", err_19);
4795
+ err_17 = _f.sent();
4796
+ console.log("perpClient removeCompoundingLiquidity error:: ", err_17);
4954
4797
  return [3, 8];
4955
4798
  case 8: return [2, {
4956
4799
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4966,7 +4809,7 @@ var PerpetualsClient = (function () {
4966
4809
  args_1[_i - 3] = arguments[_i];
4967
4810
  }
4968
4811
  return __awaiter(_this, __spreadArray([amount_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (amount, rewardTokenMint, poolConfig, createUserATA) {
4969
- 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;
4812
+ 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;
4970
4813
  if (createUserATA === void 0) { createUserATA = true; }
4971
4814
  return __generator(this, function (_g) {
4972
4815
  switch (_g.label) {
@@ -5064,8 +4907,8 @@ var PerpetualsClient = (function () {
5064
4907
  instructions.push(migrateStake);
5065
4908
  return [3, 8];
5066
4909
  case 7:
5067
- err_20 = _g.sent();
5068
- console.log("perpClient migrateStake error:: ", err_20);
4910
+ err_18 = _g.sent();
4911
+ console.log("perpClient migrateStake error:: ", err_18);
5069
4912
  return [3, 8];
5070
4913
  case 8: return [2, {
5071
4914
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5076,7 +4919,7 @@ var PerpetualsClient = (function () {
5076
4919
  });
5077
4920
  };
5078
4921
  this.migrateFlp = function (amount, rewardTokenMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5079
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_21;
4922
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_19;
5080
4923
  return __generator(this, function (_d) {
5081
4924
  switch (_d.label) {
5082
4925
  case 0:
@@ -5148,8 +4991,8 @@ var PerpetualsClient = (function () {
5148
4991
  instructions.push(migrateFlp);
5149
4992
  return [3, 4];
5150
4993
  case 3:
5151
- err_21 = _d.sent();
5152
- console.log("perpClient migrateFlp error:: ", err_21);
4994
+ err_19 = _d.sent();
4995
+ console.log("perpClient migrateFlp error:: ", err_19);
5153
4996
  return [3, 4];
5154
4997
  case 4: return [2, {
5155
4998
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5164,7 +5007,7 @@ var PerpetualsClient = (function () {
5164
5007
  args_1[_i - 1] = arguments[_i];
5165
5008
  }
5166
5009
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, rewardTokenSymbol) {
5167
- var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_22;
5010
+ var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_20;
5168
5011
  if (rewardTokenSymbol === void 0) { rewardTokenSymbol = 'USDC'; }
5169
5012
  return __generator(this, function (_e) {
5170
5013
  switch (_e.label) {
@@ -5222,8 +5065,8 @@ var PerpetualsClient = (function () {
5222
5065
  instructions.push(compoundingFee);
5223
5066
  return [3, 4];
5224
5067
  case 3:
5225
- err_22 = _e.sent();
5226
- console.log("perpClient compoundingFee error:: ", err_22);
5068
+ err_20 = _e.sent();
5069
+ console.log("perpClient compoundingFee error:: ", err_20);
5227
5070
  return [3, 4];
5228
5071
  case 4: return [2, {
5229
5072
  instructions: __spreadArray([], instructions, true),
@@ -5233,146 +5076,8 @@ var PerpetualsClient = (function () {
5233
5076
  });
5234
5077
  });
5235
5078
  };
5236
- this.burnAndClaim = function (owner, nftMint, poolConfig, createAta) { return __awaiter(_this, void 0, void 0, function () {
5237
- var preInstructions, instructions, postInstructions, additionalSigners, userTokenAccount, _a, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndClaimInstruction, err_23;
5238
- return __generator(this, function (_b) {
5239
- switch (_b.label) {
5240
- case 0:
5241
- preInstructions = [];
5242
- instructions = [];
5243
- postInstructions = [];
5244
- additionalSigners = [];
5245
- _b.label = 1;
5246
- case 1:
5247
- _b.trys.push([1, 7, , 8]);
5248
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, owner, true)];
5249
- case 2:
5250
- userTokenAccount = _b.sent();
5251
- _a = createAta;
5252
- if (!_a) return [3, 4];
5253
- return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5254
- case 3:
5255
- _a = !(_b.sent());
5256
- _b.label = 4;
5257
- case 4:
5258
- if (_a) {
5259
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(owner, userTokenAccount, owner, poolConfig.tokenMint));
5260
- }
5261
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, owner, true)];
5262
- case 5:
5263
- nftTokenAccount = _b.sent();
5264
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5265
- Buffer.from("trading"),
5266
- nftMint.toBuffer(),
5267
- ], this.programId)[0];
5268
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5269
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5270
- 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];
5271
- 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];
5272
- return [4, this.program.methods
5273
- .burnAndClaim({})
5274
- .accounts({
5275
- owner: owner,
5276
- receivingTokenAccount: userTokenAccount,
5277
- perpetuals: this.perpetuals.publicKey,
5278
- tokenVault: poolConfig.tokenVault,
5279
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5280
- metadataAccount: metadataAccount,
5281
- collectionMetadata: collectionMetadata,
5282
- edition: edition,
5283
- tokenRecord: tokenRecord,
5284
- tradingAccount: nftTradingAccount,
5285
- transferAuthority: poolConfig.transferAuthority,
5286
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5287
- nftMint: nftMint,
5288
- nftTokenAccount: nftTokenAccount,
5289
- systemProgram: web3_js_1.SystemProgram.programId,
5290
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5291
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5292
- eventAuthority: this.eventAuthority.publicKey,
5293
- program: this.programId,
5294
- receivingTokenMint: poolConfig.tokenMint,
5295
- })
5296
- .instruction()];
5297
- case 6:
5298
- burnAndClaimInstruction = _b.sent();
5299
- instructions.push(burnAndClaimInstruction);
5300
- return [3, 8];
5301
- case 7:
5302
- err_23 = _b.sent();
5303
- console.log("perpClient burnAndClaimInstruction error:: ", err_23);
5304
- throw err_23;
5305
- case 8: return [2, {
5306
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5307
- additionalSigners: additionalSigners
5308
- }];
5309
- }
5310
- });
5311
- }); };
5312
- this.burnAndStake = function (owner, feePayer, nftMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5313
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndStakeInstruction, err_24;
5314
- return __generator(this, function (_a) {
5315
- switch (_a.label) {
5316
- case 0:
5317
- preInstructions = [];
5318
- instructions = [];
5319
- postInstructions = [];
5320
- additionalSigners = [];
5321
- _a.label = 1;
5322
- case 1:
5323
- _a.trys.push([1, 3, , 4]);
5324
- tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5325
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, owner, true);
5326
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5327
- Buffer.from("trading"),
5328
- nftMint.toBuffer(),
5329
- ], this.programId)[0];
5330
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5331
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5332
- 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];
5333
- 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];
5334
- return [4, this.program.methods
5335
- .burnAndStake({})
5336
- .accounts({
5337
- owner: owner,
5338
- feePayer: feePayer,
5339
- perpetuals: this.perpetuals.publicKey,
5340
- tokenVault: poolConfig.tokenVault,
5341
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5342
- tokenStakeAccount: tokenStakeAccount,
5343
- metadataAccount: metadataAccount,
5344
- collectionMetadata: collectionMetadata,
5345
- edition: edition,
5346
- tokenRecord: tokenRecord,
5347
- tradingAccount: nftTradingAccount,
5348
- transferAuthority: poolConfig.transferAuthority,
5349
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5350
- nftMint: nftMint,
5351
- nftTokenAccount: nftTokenAccount,
5352
- systemProgram: web3_js_1.SystemProgram.programId,
5353
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5354
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5355
- eventAuthority: this.eventAuthority.publicKey,
5356
- program: this.programId
5357
- })
5358
- .instruction()];
5359
- case 2:
5360
- burnAndStakeInstruction = _a.sent();
5361
- instructions.push(burnAndStakeInstruction);
5362
- return [3, 4];
5363
- case 3:
5364
- err_24 = _a.sent();
5365
- console.log("perpClient burnAndStakeInstruction error:: ", err_24);
5366
- throw err_24;
5367
- case 4: return [2, {
5368
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5369
- additionalSigners: additionalSigners
5370
- }];
5371
- }
5372
- });
5373
- }); };
5374
5079
  this.depositTokenStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5375
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_25;
5080
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_21;
5376
5081
  return __generator(this, function (_a) {
5377
5082
  switch (_a.label) {
5378
5083
  case 0:
@@ -5414,9 +5119,9 @@ var PerpetualsClient = (function () {
5414
5119
  instructions.push(depositTokenStakeInstruction);
5415
5120
  return [3, 5];
5416
5121
  case 4:
5417
- err_25 = _a.sent();
5418
- console.log("perpClient depositStakingInstruction error:: ", err_25);
5419
- throw err_25;
5122
+ err_21 = _a.sent();
5123
+ console.log("perpClient depositStakingInstruction error:: ", err_21);
5124
+ throw err_21;
5420
5125
  case 5: return [2, {
5421
5126
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5422
5127
  additionalSigners: additionalSigners
@@ -5425,7 +5130,7 @@ var PerpetualsClient = (function () {
5425
5130
  });
5426
5131
  }); };
5427
5132
  this.unstakeTokenRequest = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5428
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_26;
5133
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_22;
5429
5134
  return __generator(this, function (_a) {
5430
5135
  switch (_a.label) {
5431
5136
  case 0:
@@ -5454,9 +5159,9 @@ var PerpetualsClient = (function () {
5454
5159
  instructions.push(unstakeTokenRequestInstruction);
5455
5160
  return [3, 4];
5456
5161
  case 3:
5457
- err_26 = _a.sent();
5458
- console.log("perpClient unstakeTokenRequestInstruction error:: ", err_26);
5459
- throw err_26;
5162
+ err_22 = _a.sent();
5163
+ console.log("perpClient unstakeTokenRequestInstruction error:: ", err_22);
5164
+ throw err_22;
5460
5165
  case 4: return [2, {
5461
5166
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5462
5167
  additionalSigners: additionalSigners
@@ -5465,7 +5170,7 @@ var PerpetualsClient = (function () {
5465
5170
  });
5466
5171
  }); };
5467
5172
  this.unstakeTokenInstant = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5468
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_27;
5173
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_23;
5469
5174
  return __generator(this, function (_a) {
5470
5175
  switch (_a.label) {
5471
5176
  case 0:
@@ -5506,9 +5211,9 @@ var PerpetualsClient = (function () {
5506
5211
  instructions.push(unstakeTokenInstantInstruction);
5507
5212
  return [3, 5];
5508
5213
  case 4:
5509
- err_27 = _a.sent();
5510
- console.log("perpClient unstakeTokenInstantInstruction error:: ", err_27);
5511
- throw err_27;
5214
+ err_23 = _a.sent();
5215
+ console.log("perpClient unstakeTokenInstantInstruction error:: ", err_23);
5216
+ throw err_23;
5512
5217
  case 5: return [2, {
5513
5218
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5514
5219
  additionalSigners: additionalSigners
@@ -5517,7 +5222,7 @@ var PerpetualsClient = (function () {
5517
5222
  });
5518
5223
  }); };
5519
5224
  this.withdrawToken = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5520
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_28;
5225
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_24;
5521
5226
  return __generator(this, function (_a) {
5522
5227
  switch (_a.label) {
5523
5228
  case 0:
@@ -5558,9 +5263,9 @@ var PerpetualsClient = (function () {
5558
5263
  instructions.push(withdrawTokenInstruction);
5559
5264
  return [3, 5];
5560
5265
  case 4:
5561
- err_28 = _a.sent();
5562
- console.log("perpClient withdrawTokenInstruction error:: ", err_28);
5563
- throw err_28;
5266
+ err_24 = _a.sent();
5267
+ console.log("perpClient withdrawTokenInstruction error:: ", err_24);
5268
+ throw err_24;
5564
5269
  case 5: return [2, {
5565
5270
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5566
5271
  additionalSigners: additionalSigners
@@ -5569,7 +5274,7 @@ var PerpetualsClient = (function () {
5569
5274
  });
5570
5275
  }); };
5571
5276
  this.cancelUnstakeRequest = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5572
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_29;
5277
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_25;
5573
5278
  return __generator(this, function (_a) {
5574
5279
  switch (_a.label) {
5575
5280
  case 0:
@@ -5598,9 +5303,9 @@ var PerpetualsClient = (function () {
5598
5303
  instructions.push(cancelUnstakeRequestInstruction);
5599
5304
  return [3, 4];
5600
5305
  case 3:
5601
- err_29 = _a.sent();
5602
- console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_29);
5603
- throw err_29;
5306
+ err_25 = _a.sent();
5307
+ console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_25);
5308
+ throw err_25;
5604
5309
  case 4: return [2, {
5605
5310
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5606
5311
  additionalSigners: additionalSigners
@@ -5614,7 +5319,7 @@ var PerpetualsClient = (function () {
5614
5319
  args_1[_i - 2] = arguments[_i];
5615
5320
  }
5616
5321
  return __awaiter(_this, __spreadArray([owner_1, poolConfig_1], args_1, true), void 0, function (owner, poolConfig, createUserATA) {
5617
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_30;
5322
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_26;
5618
5323
  if (createUserATA === void 0) { createUserATA = true; }
5619
5324
  return __generator(this, function (_b) {
5620
5325
  switch (_b.label) {
@@ -5660,9 +5365,9 @@ var PerpetualsClient = (function () {
5660
5365
  instructions.push(collectTokenRewardInstruction);
5661
5366
  return [3, 6];
5662
5367
  case 5:
5663
- err_30 = _b.sent();
5664
- console.log("perpClient collectTokenRewardInstruction error:: ", err_30);
5665
- throw err_30;
5368
+ err_26 = _b.sent();
5369
+ console.log("perpClient collectTokenRewardInstruction error:: ", err_26);
5370
+ throw err_26;
5666
5371
  case 6: return [2, {
5667
5372
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5668
5373
  additionalSigners: additionalSigners
@@ -5677,7 +5382,7 @@ var PerpetualsClient = (function () {
5677
5382
  args_1[_i - 3] = arguments[_i];
5678
5383
  }
5679
5384
  return __awaiter(_this, __spreadArray([owner_1, rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rewardSymbol, poolConfig, createUserATA) {
5680
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_31;
5385
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_27;
5681
5386
  if (createUserATA === void 0) { createUserATA = true; }
5682
5387
  return __generator(this, function (_b) {
5683
5388
  switch (_b.label) {
@@ -5724,9 +5429,9 @@ var PerpetualsClient = (function () {
5724
5429
  instructions.push(collectRevenueInstruction);
5725
5430
  return [3, 6];
5726
5431
  case 5:
5727
- err_31 = _b.sent();
5728
- console.log("perpClient collectRevenueInstruction error:: ", err_31);
5729
- throw err_31;
5432
+ err_27 = _b.sent();
5433
+ console.log("perpClient collectRevenueInstruction error:: ", err_27);
5434
+ throw err_27;
5730
5435
  case 6: return [2, {
5731
5436
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5732
5437
  additionalSigners: additionalSigners
@@ -5735,179 +5440,18 @@ var PerpetualsClient = (function () {
5735
5440
  });
5736
5441
  });
5737
5442
  };
5738
- this.initRewardVault = function (nftCount, rewardSymbol, collectionMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5739
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fbNftProgramData, rewardVault, rewardTokenAccount, nftTransferAuthority, initRewardVault, err_32;
5740
- return __generator(this, function (_a) {
5741
- switch (_a.label) {
5742
- case 0:
5743
- publicKey = this.provider.wallet.publicKey;
5744
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5745
- instructions = [];
5746
- additionalSigners = [];
5747
- _a.label = 1;
5748
- case 1:
5749
- _a.trys.push([1, 3, , 4]);
5750
- fbNftProgramData = web3_js_1.PublicKey.findProgramAddressSync([this.programFbnftReward.programId.toBuffer()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0];
5751
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5752
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5753
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5754
- return [4, this.programFbnftReward.methods
5755
- .initRewardVault({
5756
- nftCount: nftCount
5757
- })
5758
- .accounts({
5759
- admin: publicKey,
5760
- transferAuthority: nftTransferAuthority,
5761
- rewardVault: rewardVault,
5762
- rewardMint: rewardCustodyMint,
5763
- rewardTokenAccount: rewardTokenAccount,
5764
- collectionMint: collectionMint,
5765
- programData: fbNftProgramData,
5766
- systemProgram: web3_js_1.SystemProgram.programId,
5767
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5768
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
5769
- })
5770
- .instruction()];
5771
- case 2:
5772
- initRewardVault = _a.sent();
5773
- instructions.push(initRewardVault);
5774
- return [3, 4];
5775
- case 3:
5776
- err_32 = _a.sent();
5777
- console.log("perpClient InitRewardVault error:: ", err_32);
5778
- throw err_32;
5779
- case 4: return [2, {
5780
- instructions: __spreadArray([], instructions, true),
5781
- additionalSigners: additionalSigners
5782
- }];
5783
- }
5784
- });
5785
- }); };
5786
- this.distributeReward = function (rewardAmount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5787
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fundingAccount, rewardVault, rewardTokenAccount, distributeReward, err_33;
5788
- return __generator(this, function (_a) {
5789
- switch (_a.label) {
5790
- case 0:
5791
- publicKey = this.provider.wallet.publicKey;
5792
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5793
- instructions = [];
5794
- additionalSigners = [];
5795
- _a.label = 1;
5796
- case 1:
5797
- _a.trys.push([1, 3, , 4]);
5798
- fundingAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true);
5799
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5800
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5801
- return [4, this.programFbnftReward.methods
5802
- .distributeRewards({
5803
- rewardAmount: rewardAmount
5804
- })
5805
- .accounts({
5806
- admin: publicKey,
5807
- fundingAccount: fundingAccount,
5808
- rewardVault: rewardVault,
5809
- rewardTokenAccount: rewardTokenAccount,
5810
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5811
- })
5812
- .instruction()];
5813
- case 2:
5814
- distributeReward = _a.sent();
5815
- instructions.push(distributeReward);
5816
- return [3, 4];
5817
- case 3:
5818
- err_33 = _a.sent();
5819
- console.log("perpClient distributeReward error:: ", err_33);
5820
- throw err_33;
5821
- case 4: return [2, {
5822
- instructions: __spreadArray([], instructions, true),
5823
- additionalSigners: additionalSigners
5824
- }];
5825
- }
5826
- });
5827
- }); };
5828
- this.collectNftReward = function (rewardSymbol_1, poolConfig_1, nftMint_1) {
5443
+ this.collectRebate = function (owner_1, rebateSymbol_1, poolConfig_1) {
5829
5444
  var args_1 = [];
5830
5445
  for (var _i = 3; _i < arguments.length; _i++) {
5831
5446
  args_1[_i - 3] = arguments[_i];
5832
5447
  }
5833
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, nftMint_1], args_1, true), void 0, function (rewardSymbol, poolConfig, nftMint, createUserATA) {
5834
- var publicKey, rewardToken, rewardCustodyMint, instructions, additionalSigners, nftTokenAccount, metadataAccount, receivingTokenAccount, _a, rewardRecord, rewardVault, rewardTokenAccount, nftTransferAuthority, collectNftReward, err_34;
5448
+ return __awaiter(_this, __spreadArray([owner_1, rebateSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rebateSymbol, poolConfig, createUserATA) {
5449
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateMint, tokenStakeAccount, userTokenAccount, _a, collectRebateInstruction, err_28;
5835
5450
  if (createUserATA === void 0) { createUserATA = true; }
5836
5451
  return __generator(this, function (_b) {
5837
5452
  switch (_b.label) {
5838
5453
  case 0:
5839
5454
  publicKey = this.provider.wallet.publicKey;
5840
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5841
- rewardCustodyMint = rewardToken.mintKey;
5842
- instructions = [];
5843
- additionalSigners = [];
5844
- _b.label = 1;
5845
- case 1:
5846
- _b.trys.push([1, 5, , 6]);
5847
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, publicKey, true);
5848
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5849
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5850
- _a = createUserATA;
5851
- if (!_a) return [3, 3];
5852
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5853
- case 2:
5854
- _a = !(_b.sent());
5855
- _b.label = 3;
5856
- case 3:
5857
- if (_a) {
5858
- 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));
5859
- }
5860
- rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), nftMint.toBuffer()], this.programFbnftReward.programId)[0];
5861
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5862
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5863
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5864
- return [4, this.programFbnftReward.methods
5865
- .collectReward()
5866
- .accounts({
5867
- owner: publicKey,
5868
- feePayer: publicKey,
5869
- nftMint: nftMint,
5870
- nftTokenAccount: nftTokenAccount,
5871
- metadataAccount: metadataAccount,
5872
- receivingAccount: receivingTokenAccount,
5873
- rewardRecord: rewardRecord,
5874
- rewardVault: rewardVault,
5875
- rewardTokenAccount: rewardTokenAccount,
5876
- transferAuthority: nftTransferAuthority,
5877
- systemProgram: web3_js_1.SystemProgram.programId,
5878
- tokenProgram: rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID,
5879
- })
5880
- .instruction()];
5881
- case 4:
5882
- collectNftReward = _b.sent();
5883
- instructions.push(collectNftReward);
5884
- return [3, 6];
5885
- case 5:
5886
- err_34 = _b.sent();
5887
- throw err_34;
5888
- case 6: return [2, {
5889
- instructions: __spreadArray([], instructions, true),
5890
- additionalSigners: additionalSigners
5891
- }];
5892
- }
5893
- });
5894
- });
5895
- };
5896
- this.collectAndDistributeFee = function (rewardSymbol_1, poolConfig_1) {
5897
- var args_1 = [];
5898
- for (var _i = 2; _i < arguments.length; _i++) {
5899
- args_1[_i - 2] = arguments[_i];
5900
- }
5901
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, poolConfig, createUserATA, nftTradingAccount) {
5902
- var publicKey, rewardToken, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tradingAccount, rewardVault, rewardTokenAccount, withdrawStakeInstruction, err_35;
5903
- if (createUserATA === void 0) { createUserATA = true; }
5904
- return __generator(this, function (_b) {
5905
- switch (_b.label) {
5906
- case 0:
5907
- publicKey = this.provider.wallet.publicKey;
5908
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5909
- rewardCustodyMint = rewardToken.mintKey;
5910
- rewardCustodyConfig = poolConfig.custodies.find(function (i) { return i.mintKey.equals(rewardToken.mintKey); });
5911
5455
  preInstructions = [];
5912
5456
  instructions = [];
5913
5457
  postInstructions = [];
@@ -5915,59 +5459,43 @@ var PerpetualsClient = (function () {
5915
5459
  _b.label = 1;
5916
5460
  case 1:
5917
5461
  _b.trys.push([1, 5, , 6]);
5918
- pool = poolConfig.poolAddress;
5919
- flpStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("stake"), publicKey.toBuffer(), pool.toBuffer()], this.program.programId)[0];
5920
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5462
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5463
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5464
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rebateMint, owner, true);
5921
5465
  _a = createUserATA;
5922
5466
  if (!_a) return [3, 3];
5923
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5467
+ return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5924
5468
  case 2:
5925
5469
  _a = !(_b.sent());
5926
5470
  _b.label = 3;
5927
5471
  case 3:
5928
5472
  if (_a) {
5929
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint));
5473
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userTokenAccount, publicKey, rebateMint));
5930
5474
  }
5931
- tradingAccount = [];
5932
- if (nftTradingAccount) {
5933
- tradingAccount.push({
5934
- pubkey: nftTradingAccount,
5935
- isSigner: false,
5936
- isWritable: true,
5937
- });
5938
- }
5939
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5940
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5941
- return [4, this.programPerpComposability.methods
5942
- .collectAndDistributeFee()
5475
+ return [4, this.program.methods
5476
+ .collectRebate()
5943
5477
  .accounts({
5944
- perpProgram: this.programId,
5945
- owner: publicKey,
5946
- receivingTokenAccount: receivingTokenAccount,
5947
- transferAuthority: poolConfig.transferAuthority,
5478
+ owner: owner,
5479
+ receivingTokenAccount: userTokenAccount,
5948
5480
  perpetuals: this.perpetuals.publicKey,
5949
- pool: pool,
5950
- feeCustody: rewardCustodyConfig.custodyAccount,
5951
- flpStakeAccount: flpStakeAccount,
5952
- feeCustodyTokenAccount: rewardCustodyConfig.tokenAccount,
5953
- systemProgram: web3_js_1.SystemProgram.programId,
5481
+ transferAuthority: poolConfig.transferAuthority,
5482
+ rebateVault: poolConfig.rebateVault,
5483
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5484
+ tokenStakeAccount: tokenStakeAccount,
5954
5485
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5955
5486
  eventAuthority: this.eventAuthority.publicKey,
5956
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5957
- fbnftRewardsProgram: this.programFbnftReward.programId,
5958
- rewardVault: rewardVault,
5959
- rewardTokenAccount: rewardTokenAccount
5487
+ program: this.programId,
5488
+ receivingTokenMint: rebateMint,
5960
5489
  })
5961
- .remainingAccounts(tradingAccount)
5962
5490
  .instruction()];
5963
5491
  case 4:
5964
- withdrawStakeInstruction = _b.sent();
5965
- instructions.push(withdrawStakeInstruction);
5492
+ collectRebateInstruction = _b.sent();
5493
+ instructions.push(collectRebateInstruction);
5966
5494
  return [3, 6];
5967
5495
  case 5:
5968
- err_35 = _b.sent();
5969
- console.log("perpClient withdrawStake error:: ", err_35);
5970
- throw err_35;
5496
+ err_28 = _b.sent();
5497
+ console.log("perpClient collectRebateInstruction error:: ", err_28);
5498
+ throw err_28;
5971
5499
  case 6: return [2, {
5972
5500
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5973
5501
  additionalSigners: additionalSigners
@@ -5976,13 +5504,60 @@ var PerpetualsClient = (function () {
5976
5504
  });
5977
5505
  });
5978
5506
  };
5507
+ this.settleRebates = function (rebateSymbol, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5508
+ var preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, rebateMint, settleRebatesInstruction, err_29;
5509
+ return __generator(this, function (_a) {
5510
+ switch (_a.label) {
5511
+ case 0:
5512
+ preInstructions = [];
5513
+ instructions = [];
5514
+ postInstructions = [];
5515
+ additionalSigners = [];
5516
+ _a.label = 1;
5517
+ case 1:
5518
+ _a.trys.push([1, 3, , 4]);
5519
+ rewardCustody = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(rewardSymbol).mintKey); });
5520
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5521
+ return [4, this.program.methods
5522
+ .settleRebates()
5523
+ .accounts({
5524
+ transferAuthority: poolConfig.transferAuthority,
5525
+ perpetuals: this.perpetuals.publicKey,
5526
+ pool: poolConfig.poolAddress,
5527
+ rewardCustody: rewardCustody.custodyAccount,
5528
+ rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
5529
+ rewardCustodyTokenAccount: rewardCustody.tokenAccount,
5530
+ rebateVault: poolConfig.rebateVault,
5531
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5532
+ tokenMint: rebateMint,
5533
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5534
+ eventAuthority: this.eventAuthority.publicKey,
5535
+ program: this.programId,
5536
+ ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
5537
+ })
5538
+ .instruction()];
5539
+ case 2:
5540
+ settleRebatesInstruction = _a.sent();
5541
+ instructions.push(settleRebatesInstruction);
5542
+ return [3, 4];
5543
+ case 3:
5544
+ err_29 = _a.sent();
5545
+ console.log("perpClient settleRebatesInstruction error:: ", err_29);
5546
+ throw err_29;
5547
+ case 4: return [2, {
5548
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5549
+ additionalSigners: additionalSigners
5550
+ }];
5551
+ }
5552
+ });
5553
+ }); };
5979
5554
  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) {
5980
5555
  var args_1 = [];
5981
5556
  for (var _i = 11; _i < arguments.length; _i++) {
5982
5557
  args_1[_i - 11] = arguments[_i];
5983
5558
  }
5984
5559
  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) {
5985
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_36;
5560
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_30;
5986
5561
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
5987
5562
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
5988
5563
  return __generator(this, function (_c) {
@@ -6088,9 +5663,9 @@ var PerpetualsClient = (function () {
6088
5663
  instructions.push(placeLimitOrder);
6089
5664
  return [3, 10];
6090
5665
  case 9:
6091
- err_36 = _c.sent();
6092
- console.log("perpClient placeLimitOrder error:: ", err_36);
6093
- throw err_36;
5666
+ err_30 = _c.sent();
5667
+ console.log("perpClient placeLimitOrder error:: ", err_30);
5668
+ throw err_30;
6094
5669
  case 10: return [2, {
6095
5670
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6096
5671
  additionalSigners: additionalSigners
@@ -6105,7 +5680,7 @@ var PerpetualsClient = (function () {
6105
5680
  args_1[_i - 11] = arguments[_i];
6106
5681
  }
6107
5682
  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) {
6108
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_37;
5683
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_31;
6109
5684
  if (createUserATA === void 0) { createUserATA = true; }
6110
5685
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6111
5686
  return __generator(this, function (_b) {
@@ -6196,9 +5771,9 @@ var PerpetualsClient = (function () {
6196
5771
  instructions.push(editLimitOrder);
6197
5772
  return [3, 8];
6198
5773
  case 7:
6199
- err_37 = _b.sent();
6200
- console.log("perpClient editLimitOrder error:: ", err_37);
6201
- throw err_37;
5774
+ err_31 = _b.sent();
5775
+ console.log("perpClient editLimitOrder error:: ", err_31);
5776
+ throw err_31;
6202
5777
  case 8: return [2, {
6203
5778
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6204
5779
  additionalSigners: additionalSigners
@@ -6212,11 +5787,10 @@ var PerpetualsClient = (function () {
6212
5787
  for (var _i = 7; _i < arguments.length; _i++) {
6213
5788
  args_1[_i - 7] = arguments[_i];
6214
5789
  }
6215
- 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) {
6216
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_38;
5790
+ 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) {
5791
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_32;
6217
5792
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6218
5793
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6219
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6220
5794
  return __generator(this, function (_a) {
6221
5795
  switch (_a.label) {
6222
5796
  case 0:
@@ -6259,16 +5833,16 @@ var PerpetualsClient = (function () {
6259
5833
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6260
5834
  collateralMint: collateralCustodyConfig.mintKey,
6261
5835
  })
6262
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5836
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6263
5837
  .instruction()];
6264
5838
  case 2:
6265
5839
  executeLimitOrder = _a.sent();
6266
5840
  instructions.push(executeLimitOrder);
6267
5841
  return [3, 4];
6268
5842
  case 3:
6269
- err_38 = _a.sent();
6270
- console.log("perpClient executeLimitOrder error:: ", err_38);
6271
- throw err_38;
5843
+ err_32 = _a.sent();
5844
+ console.log("perpClient executeLimitOrder error:: ", err_32);
5845
+ throw err_32;
6272
5846
  case 4: return [2, {
6273
5847
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6274
5848
  additionalSigners: additionalSigners
@@ -6282,11 +5856,10 @@ var PerpetualsClient = (function () {
6282
5856
  for (var _i = 8; _i < arguments.length; _i++) {
6283
5857
  args_1[_i - 8] = arguments[_i];
6284
5858
  }
6285
- 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) {
6286
- var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_39;
5859
+ 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) {
5860
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_33;
6287
5861
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6288
5862
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6289
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6290
5863
  return __generator(this, function (_a) {
6291
5864
  switch (_a.label) {
6292
5865
  case 0:
@@ -6332,16 +5905,16 @@ var PerpetualsClient = (function () {
6332
5905
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6333
5906
  collateralMint: collateralCustodyConfig.mintKey,
6334
5907
  })
6335
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5908
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6336
5909
  .instruction()];
6337
5910
  case 2:
6338
5911
  executeLimitWithSwap = _a.sent();
6339
5912
  instructions.push(executeLimitWithSwap);
6340
5913
  return [3, 4];
6341
5914
  case 3:
6342
- err_39 = _a.sent();
6343
- console.log("perpClient executeLimitWithSwap error:: ", err_39);
6344
- throw err_39;
5915
+ err_33 = _a.sent();
5916
+ console.log("perpClient executeLimitWithSwap error:: ", err_33);
5917
+ throw err_33;
6345
5918
  case 4: return [2, {
6346
5919
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6347
5920
  additionalSigners: additionalSigners
@@ -6351,7 +5924,7 @@ var PerpetualsClient = (function () {
6351
5924
  });
6352
5925
  };
6353
5926
  this.placeTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6354
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_40;
5927
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_34;
6355
5928
  return __generator(this, function (_a) {
6356
5929
  switch (_a.label) {
6357
5930
  case 0:
@@ -6399,9 +5972,9 @@ var PerpetualsClient = (function () {
6399
5972
  instructions.push(placeTriggerOrder);
6400
5973
  return [3, 4];
6401
5974
  case 3:
6402
- err_40 = _a.sent();
6403
- console.log("perpClient placeTriggerOrder error:: ", err_40);
6404
- throw err_40;
5975
+ err_34 = _a.sent();
5976
+ console.log("perpClient placeTriggerOrder error:: ", err_34);
5977
+ throw err_34;
6405
5978
  case 4: return [2, {
6406
5979
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6407
5980
  additionalSigners: additionalSigners
@@ -6410,7 +5983,7 @@ var PerpetualsClient = (function () {
6410
5983
  });
6411
5984
  }); };
6412
5985
  this.editTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, orderId, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6413
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_41;
5986
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_35;
6414
5987
  return __generator(this, function (_a) {
6415
5988
  switch (_a.label) {
6416
5989
  case 0:
@@ -6457,9 +6030,9 @@ var PerpetualsClient = (function () {
6457
6030
  instructions.push(editTriggerOrder);
6458
6031
  return [3, 4];
6459
6032
  case 3:
6460
- err_41 = _a.sent();
6461
- console.log("perpClient editTriggerOrder error:: ", err_41);
6462
- throw err_41;
6033
+ err_35 = _a.sent();
6034
+ console.log("perpClient editTriggerOrder error:: ", err_35);
6035
+ throw err_35;
6463
6036
  case 4: return [2, {
6464
6037
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6465
6038
  additionalSigners: additionalSigners
@@ -6468,7 +6041,7 @@ var PerpetualsClient = (function () {
6468
6041
  });
6469
6042
  }); };
6470
6043
  this.cancelTriggerOrder = function (targetSymbol, collateralSymbol, side, orderId, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6471
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_42;
6044
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_36;
6472
6045
  return __generator(this, function (_a) {
6473
6046
  switch (_a.label) {
6474
6047
  case 0:
@@ -6501,9 +6074,9 @@ var PerpetualsClient = (function () {
6501
6074
  instructions.push(cancelTriggerOrder);
6502
6075
  return [3, 4];
6503
6076
  case 3:
6504
- err_42 = _a.sent();
6505
- console.log("perpClient cancelTriggerOrder error:: ", err_42);
6506
- throw err_42;
6077
+ err_36 = _a.sent();
6078
+ console.log("perpClient cancelTriggerOrder error:: ", err_36);
6079
+ throw err_36;
6507
6080
  case 4: return [2, {
6508
6081
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6509
6082
  additionalSigners: additionalSigners
@@ -6512,7 +6085,7 @@ var PerpetualsClient = (function () {
6512
6085
  });
6513
6086
  }); };
6514
6087
  this.cancelAllTriggerOrders = function (targetSymbol, collateralSymbol, side, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6515
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_43;
6088
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_37;
6516
6089
  return __generator(this, function (_a) {
6517
6090
  switch (_a.label) {
6518
6091
  case 0:
@@ -6543,9 +6116,9 @@ var PerpetualsClient = (function () {
6543
6116
  instructions.push(cancelAllTriggerOrders);
6544
6117
  return [3, 4];
6545
6118
  case 3:
6546
- err_43 = _a.sent();
6547
- console.log("perpClient cancelAllTriggerOrders error:: ", err_43);
6548
- throw err_43;
6119
+ err_37 = _a.sent();
6120
+ console.log("perpClient cancelAllTriggerOrders error:: ", err_37);
6121
+ throw err_37;
6549
6122
  case 4: return [2, {
6550
6123
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6551
6124
  additionalSigners: additionalSigners
@@ -6558,13 +6131,12 @@ var PerpetualsClient = (function () {
6558
6131
  for (var _i = 9; _i < arguments.length; _i++) {
6559
6132
  args_1[_i - 9] = arguments[_i];
6560
6133
  }
6561
- 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) {
6562
- 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;
6134
+ 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) {
6135
+ 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;
6563
6136
  if (createUserATA === void 0) { createUserATA = true; }
6564
6137
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6565
6138
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6566
6139
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6567
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6568
6140
  return __generator(this, function (_e) {
6569
6141
  switch (_e.label) {
6570
6142
  case 0:
@@ -6659,16 +6231,16 @@ var PerpetualsClient = (function () {
6659
6231
  collateralMint: collateralCustodyConfig.mintKey,
6660
6232
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
6661
6233
  })
6662
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6234
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6663
6235
  .instruction()];
6664
6236
  case 8:
6665
6237
  executeTriggerWithSwap = _e.sent();
6666
6238
  instructions.push(executeTriggerWithSwap);
6667
6239
  return [3, 10];
6668
6240
  case 9:
6669
- err_44 = _e.sent();
6670
- console.log("perpClient executeTriggerWithSwap error:: ", err_44);
6671
- throw err_44;
6241
+ err_38 = _e.sent();
6242
+ console.log("perpClient executeTriggerWithSwap error:: ", err_38);
6243
+ throw err_38;
6672
6244
  case 10: return [2, {
6673
6245
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6674
6246
  additionalSigners: additionalSigners
@@ -6682,13 +6254,12 @@ var PerpetualsClient = (function () {
6682
6254
  for (var _i = 8; _i < arguments.length; _i++) {
6683
6255
  args_1[_i - 8] = arguments[_i];
6684
6256
  }
6685
- 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) {
6686
- var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_45;
6257
+ 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) {
6258
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_39;
6687
6259
  if (createUserATA === void 0) { createUserATA = true; }
6688
6260
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6689
6261
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6690
6262
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6691
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6692
6263
  return __generator(this, function (_b) {
6693
6264
  switch (_b.label) {
6694
6265
  case 0:
@@ -6748,16 +6319,16 @@ var PerpetualsClient = (function () {
6748
6319
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6749
6320
  receivingMint: collateralCustodyConfig.mintKey
6750
6321
  })
6751
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6322
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6752
6323
  .instruction()];
6753
6324
  case 6:
6754
6325
  executeTriggerOrder = _b.sent();
6755
6326
  instructions.push(executeTriggerOrder);
6756
6327
  return [3, 8];
6757
6328
  case 7:
6758
- err_45 = _b.sent();
6759
- console.log("perpClient executeTriggerOrder error:: ", err_45);
6760
- throw err_45;
6329
+ err_39 = _b.sent();
6330
+ console.log("perpClient executeTriggerOrder error:: ", err_39);
6331
+ throw err_39;
6761
6332
  case 8: return [2, {
6762
6333
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6763
6334
  additionalSigners: additionalSigners
@@ -6772,7 +6343,7 @@ var PerpetualsClient = (function () {
6772
6343
  args_1[_i - 5] = arguments[_i];
6773
6344
  }
6774
6345
  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) {
6775
- 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;
6346
+ 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;
6776
6347
  if (useFeesPool === void 0) { useFeesPool = false; }
6777
6348
  if (createUserATA === void 0) { createUserATA = true; }
6778
6349
  if (unWrapSol === void 0) { unWrapSol = false; }
@@ -6977,9 +6548,9 @@ var PerpetualsClient = (function () {
6977
6548
  }
6978
6549
  return [3, 20];
6979
6550
  case 19:
6980
- err_46 = _g.sent();
6981
- console.error("perpClient Swap error:: ", err_46);
6982
- throw err_46;
6551
+ err_40 = _g.sent();
6552
+ console.error("perpClient Swap error:: ", err_40);
6553
+ throw err_40;
6983
6554
  case 20: return [2, {
6984
6555
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6985
6556
  additionalSigners: additionalSigners
@@ -6989,7 +6560,7 @@ var PerpetualsClient = (function () {
6989
6560
  });
6990
6561
  };
6991
6562
  this.swapFeeInternal = function (rewardTokenSymbol, swapTokenSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6992
- var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_47;
6563
+ var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_41;
6993
6564
  return __generator(this, function (_b) {
6994
6565
  switch (_b.label) {
6995
6566
  case 0:
@@ -7034,11 +6605,7 @@ var PerpetualsClient = (function () {
7034
6605
  rewardCustody: rewardCustody.custodyAccount,
7035
6606
  rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
7036
6607
  rewardCustodyTokenAccount: rewardCustody.tokenAccount,
7037
- custody: custody.custodyAccount,
7038
- custodyOracleAccount: this.useExtOracleAccount ? custody.extOracleAccount : custody.intOracleAccount,
7039
- custodyTokenAccount: custody.tokenAccount,
7040
6608
  eventAuthority: this.eventAuthority.publicKey,
7041
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7042
6609
  program: this.programId,
7043
6610
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
7044
6611
  })
@@ -7049,9 +6616,9 @@ var PerpetualsClient = (function () {
7049
6616
  instructions.push(inx);
7050
6617
  return [3, 4];
7051
6618
  case 3:
7052
- err_47 = _b.sent();
7053
- console.error("perpClient Swap error:: ", err_47);
7054
- throw err_47;
6619
+ err_41 = _b.sent();
6620
+ console.error("perpClient Swap error:: ", err_41);
6621
+ throw err_41;
7055
6622
  case 4: return [2, {
7056
6623
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7057
6624
  additionalSigners: additionalSigners
@@ -7060,7 +6627,7 @@ var PerpetualsClient = (function () {
7060
6627
  });
7061
6628
  }); };
7062
6629
  this.setLpTokenPrice = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7063
- var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_48;
6630
+ var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_42;
7064
6631
  return __generator(this, function (_d) {
7065
6632
  switch (_d.label) {
7066
6633
  case 0:
@@ -7108,9 +6675,9 @@ var PerpetualsClient = (function () {
7108
6675
  instructions.push(setLpTokenPriceInstruction);
7109
6676
  return [3, 4];
7110
6677
  case 3:
7111
- err_48 = _d.sent();
7112
- console.log("perpClient setLpTokenPriceInstruction error:: ", err_48);
7113
- throw err_48;
6678
+ err_42 = _d.sent();
6679
+ console.log("perpClient setLpTokenPriceInstruction error:: ", err_42);
6680
+ throw err_42;
7114
6681
  case 4: return [2, {
7115
6682
  instructions: __spreadArray([], instructions, true),
7116
6683
  additionalSigners: additionalSigners
@@ -7158,7 +6725,7 @@ var PerpetualsClient = (function () {
7158
6725
  });
7159
6726
  }); };
7160
6727
  this.setAdminSigners = function (admins, minSignatures) { return __awaiter(_this, void 0, void 0, function () {
7161
- var adminMetas, _i, admins_2, admin, err_49;
6728
+ var adminMetas, _i, admins_2, admin, err_43;
7162
6729
  return __generator(this, function (_a) {
7163
6730
  switch (_a.label) {
7164
6731
  case 0:
@@ -7188,16 +6755,16 @@ var PerpetualsClient = (function () {
7188
6755
  _a.sent();
7189
6756
  return [3, 4];
7190
6757
  case 3:
7191
- err_49 = _a.sent();
6758
+ err_43 = _a.sent();
7192
6759
  if (this.printErrors) {
7193
- console.error("setAdminSigners err:", err_49);
6760
+ console.error("setAdminSigners err:", err_43);
7194
6761
  }
7195
- throw err_49;
6762
+ throw err_43;
7196
6763
  case 4: return [2];
7197
6764
  }
7198
6765
  });
7199
6766
  }); };
7200
- this.addPool = function (name, maxAumUsd, permissions, metadataSymbol, metadataTitle, metadataUri, stakingFeeShareBps, vpVolumeFactor) { return __awaiter(_this, void 0, void 0, function () {
6767
+ this.addPool = function (name, maxAumUsd, permissions, metadataSymbol, metadataTitle, metadataUri, stakingFeeShareBps, vpVolumeFactor, stakingFeeBoostBps, minLpPriceUsd, maxLpPriceUsd, thresholdUsd) { return __awaiter(_this, void 0, void 0, function () {
7201
6768
  return __generator(this, function (_a) {
7202
6769
  switch (_a.label) {
7203
6770
  case 0: return [4, this.program.methods
@@ -7209,7 +6776,11 @@ var PerpetualsClient = (function () {
7209
6776
  metadataTitle: metadataTitle,
7210
6777
  metadataUri: metadataUri,
7211
6778
  stakingFeeShareBps: stakingFeeShareBps,
7212
- vpVolumeFactor: vpVolumeFactor
6779
+ vpVolumeFactor: vpVolumeFactor,
6780
+ stakingFeeBoostBps: stakingFeeBoostBps,
6781
+ minLpPriceUsd: minLpPriceUsd,
6782
+ maxLpPriceUsd: maxLpPriceUsd,
6783
+ thresholdUsd: thresholdUsd
7213
6784
  })
7214
6785
  .accounts({
7215
6786
  admin: this.provider.wallet.publicKey,
@@ -7257,7 +6828,7 @@ var PerpetualsClient = (function () {
7257
6828
  }
7258
6829
  });
7259
6830
  }); };
7260
- this.addCustody = function (poolName, tokenMint, isToken222, isStable, isVirtual, oracle, pricing, permissions, fees, borrowRate, ratios, depegAdjustment) { return __awaiter(_this, void 0, void 0, function () {
6831
+ this.addCustody = function (poolName, tokenMint, isToken222, isStable, isVirtual, oracle, pricing, permissions, fees, borrowRate, ratios, depegAdjustment, rewardThreshold, minReserveUsd, limitPriceBufferBps) { return __awaiter(_this, void 0, void 0, function () {
7261
6832
  var trx_id, error_3;
7262
6833
  return __generator(this, function (_a) {
7263
6834
  switch (_a.label) {
@@ -7275,6 +6846,9 @@ var PerpetualsClient = (function () {
7275
6846
  fees: fees,
7276
6847
  borrowRate: borrowRate,
7277
6848
  ratios: ratios,
6849
+ rewardThreshold: rewardThreshold,
6850
+ minReserveUsd: minReserveUsd,
6851
+ limitPriceBufferBps: limitPriceBufferBps
7278
6852
  })
7279
6853
  .accounts({
7280
6854
  admin: this.admin,
@@ -7381,7 +6955,7 @@ var PerpetualsClient = (function () {
7381
6955
  });
7382
6956
  }); };
7383
6957
  this.protocolWithdrawFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7384
- var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_50;
6958
+ var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_44;
7385
6959
  return __generator(this, function (_a) {
7386
6960
  switch (_a.label) {
7387
6961
  case 0:
@@ -7414,9 +6988,9 @@ var PerpetualsClient = (function () {
7414
6988
  instructions.push(withdrawFeesIx);
7415
6989
  return [3, 5];
7416
6990
  case 4:
7417
- err_50 = _a.sent();
7418
- console.log("perpClient setPool error:: ", err_50);
7419
- throw err_50;
6991
+ err_44 = _a.sent();
6992
+ console.log("perpClient setPool error:: ", err_44);
6993
+ throw err_44;
7420
6994
  case 5: return [2, {
7421
6995
  instructions: __spreadArray([], instructions, true),
7422
6996
  additionalSigners: additionalSigners
@@ -7425,7 +6999,7 @@ var PerpetualsClient = (function () {
7425
6999
  });
7426
7000
  }); };
7427
7001
  this.moveProtocolFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7428
- var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_51;
7002
+ var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_45;
7429
7003
  return __generator(this, function (_a) {
7430
7004
  switch (_a.label) {
7431
7005
  case 0:
@@ -7459,9 +7033,9 @@ var PerpetualsClient = (function () {
7459
7033
  instructions.push(moveProtocolFeesIx);
7460
7034
  return [3, 4];
7461
7035
  case 3:
7462
- err_51 = _a.sent();
7463
- console.log("perpClient setPool error:: ", err_51);
7464
- throw err_51;
7036
+ err_45 = _a.sent();
7037
+ console.log("perpClient setPool error:: ", err_45);
7038
+ throw err_45;
7465
7039
  case 4: return [2, {
7466
7040
  instructions: __spreadArray([], instructions, true),
7467
7041
  additionalSigners: additionalSigners
@@ -7470,7 +7044,7 @@ var PerpetualsClient = (function () {
7470
7044
  });
7471
7045
  }); };
7472
7046
  this.setProtocolFeeShareBps = function (feeShareBps, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7473
- var publicKey, setProtocolFeeShareBpsIx, err_52;
7047
+ var publicKey, setProtocolFeeShareBpsIx, err_46;
7474
7048
  return __generator(this, function (_a) {
7475
7049
  switch (_a.label) {
7476
7050
  case 0:
@@ -7490,15 +7064,15 @@ var PerpetualsClient = (function () {
7490
7064
  setProtocolFeeShareBpsIx = _a.sent();
7491
7065
  return [2, setProtocolFeeShareBpsIx];
7492
7066
  case 2:
7493
- err_52 = _a.sent();
7494
- console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_52);
7495
- throw err_52;
7067
+ err_46 = _a.sent();
7068
+ console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_46);
7069
+ throw err_46;
7496
7070
  case 3: return [2];
7497
7071
  }
7498
7072
  });
7499
7073
  }); };
7500
7074
  this.setPermissions = function (permissions) { return __awaiter(_this, void 0, void 0, function () {
7501
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_53;
7075
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_47;
7502
7076
  return __generator(this, function (_a) {
7503
7077
  switch (_a.label) {
7504
7078
  case 0:
@@ -7525,9 +7099,9 @@ var PerpetualsClient = (function () {
7525
7099
  instructions.push(setPermissionsInstruction);
7526
7100
  return [3, 4];
7527
7101
  case 3:
7528
- err_53 = _a.sent();
7529
- console.log("perpClient setPool error:: ", err_53);
7530
- throw err_53;
7102
+ err_47 = _a.sent();
7103
+ console.log("perpClient setPool error:: ", err_47);
7104
+ throw err_47;
7531
7105
  case 4: return [2, {
7532
7106
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7533
7107
  additionalSigners: additionalSigners
@@ -7536,7 +7110,7 @@ var PerpetualsClient = (function () {
7536
7110
  });
7537
7111
  }); };
7538
7112
  this.reimburse = function (tokenMint, amountIn, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7539
- var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_54;
7113
+ var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_48;
7540
7114
  var _f;
7541
7115
  return __generator(this, function (_g) {
7542
7116
  switch (_g.label) {
@@ -7597,9 +7171,9 @@ var PerpetualsClient = (function () {
7597
7171
  instructions.push(reimburse);
7598
7172
  return [3, 5];
7599
7173
  case 4:
7600
- err_54 = _g.sent();
7601
- console.log("perpClient setPool error:: ", err_54);
7602
- throw err_54;
7174
+ err_48 = _g.sent();
7175
+ console.log("perpClient setPool error:: ", err_48);
7176
+ throw err_48;
7603
7177
  case 5: return [2, {
7604
7178
  instructions: __spreadArray([], instructions, true),
7605
7179
  additionalSigners: additionalSigners
@@ -7608,7 +7182,7 @@ var PerpetualsClient = (function () {
7608
7182
  });
7609
7183
  }); };
7610
7184
  this.setInternalOraclePrice = function (tokenMint, useCurrentTime, price, expo, conf, ema, publishTime, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7611
- var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_55;
7185
+ var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_49;
7612
7186
  return __generator(this, function (_a) {
7613
7187
  switch (_a.label) {
7614
7188
  case 0:
@@ -7642,9 +7216,9 @@ var PerpetualsClient = (function () {
7642
7216
  instructions.push(setInternalOraclePrice);
7643
7217
  return [3, 4];
7644
7218
  case 3:
7645
- err_55 = _a.sent();
7646
- console.log("perpClient setInternalOracleAccount error:: ", err_55);
7647
- throw err_55;
7219
+ err_49 = _a.sent();
7220
+ console.log("perpClient setInternalOracleAccount error:: ", err_49);
7221
+ throw err_49;
7648
7222
  case 4: return [2, {
7649
7223
  instructions: __spreadArray([], instructions, true),
7650
7224
  additionalSigners: additionalSigners
@@ -7653,7 +7227,7 @@ var PerpetualsClient = (function () {
7653
7227
  });
7654
7228
  }); };
7655
7229
  this.setInternalOraclePriceBatch = function (useCurrentTime, tokenMintList, tokenInternalPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7656
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_56;
7230
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_50;
7657
7231
  return __generator(this, function (_a) {
7658
7232
  switch (_a.label) {
7659
7233
  case 0:
@@ -7699,9 +7273,9 @@ var PerpetualsClient = (function () {
7699
7273
  instructions.push(setInternalOraclePrice);
7700
7274
  return [3, 4];
7701
7275
  case 3:
7702
- err_56 = _a.sent();
7703
- console.log("perpClient setInternalOracleAccount error:: ", err_56);
7704
- throw err_56;
7276
+ err_50 = _a.sent();
7277
+ console.log("perpClient setInternalOracleAccount error:: ", err_50);
7278
+ throw err_50;
7705
7279
  case 4: return [2, {
7706
7280
  instructions: __spreadArray([], instructions, true),
7707
7281
  additionalSigners: additionalSigners
@@ -7710,7 +7284,7 @@ var PerpetualsClient = (function () {
7710
7284
  });
7711
7285
  }); };
7712
7286
  this.setInternalOracleEmaPriceBatch = function (tokenMintList, tokenInternalEmaPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7713
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_57;
7287
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_51;
7714
7288
  return __generator(this, function (_a) {
7715
7289
  switch (_a.label) {
7716
7290
  case 0:
@@ -7750,9 +7324,9 @@ var PerpetualsClient = (function () {
7750
7324
  instructions.push(setInternalOraclePrice);
7751
7325
  return [3, 4];
7752
7326
  case 3:
7753
- err_57 = _a.sent();
7754
- console.log("perpClient setInternalOracleAccount error:: ", err_57);
7755
- throw err_57;
7327
+ err_51 = _a.sent();
7328
+ console.log("perpClient setInternalOracleAccount error:: ", err_51);
7329
+ throw err_51;
7756
7330
  case 4: return [2, {
7757
7331
  instructions: __spreadArray([], instructions, true),
7758
7332
  additionalSigners: additionalSigners
@@ -7761,7 +7335,7 @@ var PerpetualsClient = (function () {
7761
7335
  });
7762
7336
  }); };
7763
7337
  this.renameFlp = function (flag, lpTokenName, lpTokenSymbol, lpTokenUri, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7764
- var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_58;
7338
+ var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_52;
7765
7339
  return __generator(this, function (_a) {
7766
7340
  switch (_a.label) {
7767
7341
  case 0:
@@ -7799,8 +7373,8 @@ var PerpetualsClient = (function () {
7799
7373
  instructions.push(renameFlp);
7800
7374
  return [3, 4];
7801
7375
  case 3:
7802
- err_58 = _a.sent();
7803
- console.log("perpClient renameFlp error:: ", err_58);
7376
+ err_52 = _a.sent();
7377
+ console.log("perpClient renameFlp error:: ", err_52);
7804
7378
  return [3, 4];
7805
7379
  case 4: return [2, {
7806
7380
  instructions: __spreadArray([], instructions, true),
@@ -7810,7 +7384,7 @@ var PerpetualsClient = (function () {
7810
7384
  });
7811
7385
  }); };
7812
7386
  this.initStake = function (stakingFeeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7813
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_59;
7387
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_53;
7814
7388
  return __generator(this, function (_a) {
7815
7389
  switch (_a.label) {
7816
7390
  case 0:
@@ -7848,9 +7422,9 @@ var PerpetualsClient = (function () {
7848
7422
  instructions.push(initStakeInstruction);
7849
7423
  return [3, 4];
7850
7424
  case 3:
7851
- err_59 = _a.sent();
7852
- console.log("perpClient InitStaking error:: ", err_59);
7853
- throw err_59;
7425
+ err_53 = _a.sent();
7426
+ console.log("perpClient InitStaking error:: ", err_53);
7427
+ throw err_53;
7854
7428
  case 4: return [2, {
7855
7429
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7856
7430
  additionalSigners: additionalSigners
@@ -7859,7 +7433,7 @@ var PerpetualsClient = (function () {
7859
7433
  });
7860
7434
  }); };
7861
7435
  this.initCompounding = function (feeShareBps, metadataTitle, metadataSymbol, metadataUri, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7862
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_60;
7436
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_54;
7863
7437
  return __generator(this, function (_a) {
7864
7438
  switch (_a.label) {
7865
7439
  case 0:
@@ -7888,7 +7462,6 @@ var PerpetualsClient = (function () {
7888
7462
  transferAuthority: poolConfig.transferAuthority,
7889
7463
  perpetuals: this.perpetuals.publicKey,
7890
7464
  pool: poolConfig.poolAddress,
7891
- custody: rewardCustodyConfig.custodyAccount,
7892
7465
  lpTokenMint: poolConfig.stakedLpTokenMint,
7893
7466
  compoundingVault: compoundingVault,
7894
7467
  compoundingTokenMint: compoundingTokenMint,
@@ -7904,9 +7477,9 @@ var PerpetualsClient = (function () {
7904
7477
  instructions.push(initCompoundingInstruction);
7905
7478
  return [3, 4];
7906
7479
  case 3:
7907
- err_60 = _a.sent();
7908
- console.log("perpClient initCompounding error:: ", err_60);
7909
- throw err_60;
7480
+ err_54 = _a.sent();
7481
+ console.log("perpClient initCompounding error:: ", err_54);
7482
+ throw err_54;
7910
7483
  case 4: return [2, {
7911
7484
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7912
7485
  additionalSigners: additionalSigners
@@ -7915,7 +7488,7 @@ var PerpetualsClient = (function () {
7915
7488
  });
7916
7489
  }); };
7917
7490
  this.initTokenVault = function (token_permissions, tokens_to_distribute, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7918
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_61;
7491
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_55;
7919
7492
  return __generator(this, function (_a) {
7920
7493
  switch (_a.label) {
7921
7494
  case 0:
@@ -7956,9 +7529,9 @@ var PerpetualsClient = (function () {
7956
7529
  instructions.push(initTokenVaultInstruction);
7957
7530
  return [3, 4];
7958
7531
  case 3:
7959
- err_61 = _a.sent();
7960
- console.log("perpClient InitTokenVaultInstruction error:: ", err_61);
7961
- throw err_61;
7532
+ err_55 = _a.sent();
7533
+ console.log("perpClient InitTokenVaultInstruction error:: ", err_55);
7534
+ throw err_55;
7962
7535
  case 4: return [2, {
7963
7536
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7964
7537
  additionalSigners: additionalSigners
@@ -7967,7 +7540,7 @@ var PerpetualsClient = (function () {
7967
7540
  });
7968
7541
  }); };
7969
7542
  this.setTokenVaultConfig = function (token_permissions, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7970
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_62;
7543
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_56;
7971
7544
  return __generator(this, function (_a) {
7972
7545
  switch (_a.label) {
7973
7546
  case 0:
@@ -7998,9 +7571,9 @@ var PerpetualsClient = (function () {
7998
7571
  instructions.push(setTokenVaultConfigInstruction);
7999
7572
  return [3, 4];
8000
7573
  case 3:
8001
- err_62 = _a.sent();
8002
- console.log("perpClient setTokenVaultConfigInstruction error:: ", err_62);
8003
- throw err_62;
7574
+ err_56 = _a.sent();
7575
+ console.log("perpClient setTokenVaultConfigInstruction error:: ", err_56);
7576
+ throw err_56;
8004
7577
  case 4: return [2, {
8005
7578
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8006
7579
  additionalSigners: additionalSigners
@@ -8009,7 +7582,7 @@ var PerpetualsClient = (function () {
8009
7582
  });
8010
7583
  }); };
8011
7584
  this.withdrawInstantFee = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8012
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_63;
7585
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_57;
8013
7586
  return __generator(this, function (_a) {
8014
7587
  switch (_a.label) {
8015
7588
  case 0:
@@ -8048,9 +7621,59 @@ var PerpetualsClient = (function () {
8048
7621
  instructions.push(withdrawInstantFeeInstruction);
8049
7622
  return [3, 6];
8050
7623
  case 5:
8051
- err_63 = _a.sent();
8052
- console.log("perpClient withdrawInstantFeeInstruction error:: ", err_63);
8053
- throw err_63;
7624
+ err_57 = _a.sent();
7625
+ console.log("perpClient withdrawInstantFeeInstruction error:: ", err_57);
7626
+ throw err_57;
7627
+ case 6: return [2, {
7628
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7629
+ additionalSigners: additionalSigners
7630
+ }];
7631
+ }
7632
+ });
7633
+ }); };
7634
+ this.withdrawUnclaimedTokens = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7635
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawUnclaimedTokensInstruction, err_58;
7636
+ return __generator(this, function (_a) {
7637
+ switch (_a.label) {
7638
+ case 0:
7639
+ publicKey = this.provider.wallet.publicKey;
7640
+ preInstructions = [];
7641
+ instructions = [];
7642
+ postInstructions = [];
7643
+ additionalSigners = [];
7644
+ _a.label = 1;
7645
+ case 1:
7646
+ _a.trys.push([1, 5, , 6]);
7647
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, publicKey, true)];
7648
+ case 2:
7649
+ receivingTokenAccount = _a.sent();
7650
+ return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
7651
+ case 3:
7652
+ if (!(_a.sent())) {
7653
+ preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, poolConfig.tokenMint));
7654
+ }
7655
+ return [4, this.program.methods
7656
+ .withdrawUnclaimedTokens({})
7657
+ .accounts({
7658
+ admin: publicKey,
7659
+ multisig: this.multisig.publicKey,
7660
+ perpetuals: this.perpetuals.publicKey,
7661
+ transferAuthority: poolConfig.transferAuthority,
7662
+ tokenVault: poolConfig.tokenVault,
7663
+ tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
7664
+ receivingTokenAccount: receivingTokenAccount,
7665
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7666
+ receivingTokenMint: poolConfig.tokenMint,
7667
+ })
7668
+ .instruction()];
7669
+ case 4:
7670
+ withdrawUnclaimedTokensInstruction = _a.sent();
7671
+ instructions.push(withdrawUnclaimedTokensInstruction);
7672
+ return [3, 6];
7673
+ case 5:
7674
+ err_58 = _a.sent();
7675
+ console.log("perpClient withdrawUnclaimedTokensInstruction error:: ", err_58);
7676
+ throw err_58;
8054
7677
  case 6: return [2, {
8055
7678
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8056
7679
  additionalSigners: additionalSigners
@@ -8059,7 +7682,7 @@ var PerpetualsClient = (function () {
8059
7682
  });
8060
7683
  }); };
8061
7684
  this.initRevenueTokenAccount = function (feeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8062
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_64;
7685
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_59;
8063
7686
  return __generator(this, function (_a) {
8064
7687
  switch (_a.label) {
8065
7688
  case 0:
@@ -8096,9 +7719,55 @@ var PerpetualsClient = (function () {
8096
7719
  instructions.push(initRevenueTokenAccountInstruction);
8097
7720
  return [3, 4];
8098
7721
  case 3:
8099
- err_64 = _a.sent();
8100
- console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_64);
8101
- throw err_64;
7722
+ err_59 = _a.sent();
7723
+ console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_59);
7724
+ throw err_59;
7725
+ case 4: return [2, {
7726
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7727
+ additionalSigners: additionalSigners
7728
+ }];
7729
+ }
7730
+ });
7731
+ }); };
7732
+ this.initRebateVault = function (allowRebatePayout, rebateSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7733
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateCustodyMint, initRebateVaultInstruction, err_60;
7734
+ return __generator(this, function (_a) {
7735
+ switch (_a.label) {
7736
+ case 0:
7737
+ publicKey = this.provider.wallet.publicKey;
7738
+ preInstructions = [];
7739
+ instructions = [];
7740
+ postInstructions = [];
7741
+ additionalSigners = [];
7742
+ _a.label = 1;
7743
+ case 1:
7744
+ _a.trys.push([1, 3, , 4]);
7745
+ rebateCustodyMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
7746
+ return [4, this.program.methods
7747
+ .initRebateVault({
7748
+ allowRebatePayout: allowRebatePayout
7749
+ })
7750
+ .accounts({
7751
+ admin: publicKey,
7752
+ multisig: this.multisig.publicKey,
7753
+ transferAuthority: poolConfig.transferAuthority,
7754
+ perpetuals: this.perpetuals.publicKey,
7755
+ rebateMint: rebateCustodyMint,
7756
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
7757
+ rebateVault: poolConfig.rebateVault,
7758
+ systemProgram: web3_js_1.SystemProgram.programId,
7759
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7760
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY
7761
+ })
7762
+ .instruction()];
7763
+ case 2:
7764
+ initRebateVaultInstruction = _a.sent();
7765
+ instructions.push(initRebateVaultInstruction);
7766
+ return [3, 4];
7767
+ case 3:
7768
+ err_60 = _a.sent();
7769
+ console.log("perpClient initRebateVaultInstruction error:: ", err_60);
7770
+ throw err_60;
8102
7771
  case 4: return [2, {
8103
7772
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8104
7773
  additionalSigners: additionalSigners
@@ -8107,7 +7776,7 @@ var PerpetualsClient = (function () {
8107
7776
  });
8108
7777
  }); };
8109
7778
  this.distributeTokenReward = function (amount, epochCount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8110
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_65;
7779
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_61;
8111
7780
  return __generator(this, function (_a) {
8112
7781
  switch (_a.label) {
8113
7782
  case 0:
@@ -8146,9 +7815,9 @@ var PerpetualsClient = (function () {
8146
7815
  instructions.push(distributeTokenRewardInstruction);
8147
7816
  return [3, 4];
8148
7817
  case 3:
8149
- err_65 = _a.sent();
8150
- console.log("perpClient distributeTokenRewardInstruction error:: ", err_65);
8151
- throw err_65;
7818
+ err_61 = _a.sent();
7819
+ console.log("perpClient distributeTokenRewardInstruction error:: ", err_61);
7820
+ throw err_61;
8152
7821
  case 4: return [2, {
8153
7822
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8154
7823
  additionalSigners: additionalSigners
@@ -8157,7 +7826,7 @@ var PerpetualsClient = (function () {
8157
7826
  });
8158
7827
  }); };
8159
7828
  this.setTokenStakeLevel = function (owner, stakeLevel) { return __awaiter(_this, void 0, void 0, function () {
8160
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_66;
7829
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_62;
8161
7830
  return __generator(this, function (_a) {
8162
7831
  switch (_a.label) {
8163
7832
  case 0:
@@ -8185,9 +7854,9 @@ var PerpetualsClient = (function () {
8185
7854
  instructions.push(setTokenStakeLevelInstruction);
8186
7855
  return [3, 4];
8187
7856
  case 3:
8188
- err_66 = _a.sent();
8189
- console.log("perpClient setTokenStakeLevelInstruction error:: ", err_66);
8190
- throw err_66;
7857
+ err_62 = _a.sent();
7858
+ console.log("perpClient setTokenStakeLevelInstruction error:: ", err_62);
7859
+ throw err_62;
8191
7860
  case 4: return [2, {
8192
7861
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8193
7862
  additionalSigners: additionalSigners
@@ -8196,7 +7865,7 @@ var PerpetualsClient = (function () {
8196
7865
  });
8197
7866
  }); };
8198
7867
  this.setTokenReward = function (owner, amount, epochCount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8199
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_67;
7868
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_63;
8200
7869
  return __generator(this, function (_a) {
8201
7870
  switch (_a.label) {
8202
7871
  case 0:
@@ -8228,9 +7897,9 @@ var PerpetualsClient = (function () {
8228
7897
  instructions.push(setTokenRewardInstruction);
8229
7898
  return [3, 4];
8230
7899
  case 3:
8231
- err_67 = _a.sent();
8232
- console.log("perpClient setTokenRewardInstruction error:: ", err_67);
8233
- throw err_67;
7900
+ err_63 = _a.sent();
7901
+ console.log("perpClient setTokenRewardInstruction error:: ", err_63);
7902
+ throw err_63;
8234
7903
  case 4: return [2, {
8235
7904
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8236
7905
  additionalSigners: additionalSigners
@@ -8239,7 +7908,7 @@ var PerpetualsClient = (function () {
8239
7908
  });
8240
7909
  }); };
8241
7910
  this.resizeInternalOracle = function (extOracle, tokenMint, intOracleAccount) { return __awaiter(_this, void 0, void 0, function () {
8242
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_68;
7911
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_64;
8243
7912
  return __generator(this, function (_a) {
8244
7913
  switch (_a.label) {
8245
7914
  case 0:
@@ -8268,9 +7937,9 @@ var PerpetualsClient = (function () {
8268
7937
  instructions.push(resizeInternalOracleInstruction);
8269
7938
  return [3, 4];
8270
7939
  case 3:
8271
- err_68 = _a.sent();
8272
- console.log("perpClient resizeInternalOracleInstruction error:: ", err_68);
8273
- throw err_68;
7940
+ err_64 = _a.sent();
7941
+ console.log("perpClient resizeInternalOracleInstruction error:: ", err_64);
7942
+ throw err_64;
8274
7943
  case 4: return [2, {
8275
7944
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8276
7945
  additionalSigners: additionalSigners