flash-sdk 10.5.0 → 10.5.1-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,41 @@ var PerpetualsClient = (function () {
638
638
  var averageEntryPrice = totalValue.div(totalSize);
639
639
  return averageEntryPrice;
640
640
  };
641
- this.getLeverageSync = function (sizeUsd, collateralAmount, collateralMinOraclePrice, collateralTokenDecimals, pnlUsd) {
642
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenDecimals);
643
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd);
644
- if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
645
- return sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentCollateralUsdIncludingPnl);
641
+ this.getLeverageContractHelper = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
642
+ var pnl = _this.getPnlSync(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
643
+ var exitFee = _this.getExitFeeSync(positionAccount, targetCustodyAccount, collateralCustodyAccount, collateralPrice, collateralEmaPrice);
644
+ var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
645
+ var unsettledFeesUsd = exitFee.exitFeeUsd.add(lockFeeUsd);
646
+ var lossUsd = pnl.lossUsd.add(unsettledFeesUsd);
647
+ var currentMarginUsd = constants_1.BN_ZERO;
648
+ if (isInitial) {
649
+ currentMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
650
+ }
651
+ else {
652
+ currentMarginUsd = positionAccount.collateralUsd.add(pnl.profitUsd).sub(lossUsd);
653
+ }
654
+ if (currentMarginUsd.gt(constants_1.BN_ZERO)) {
655
+ return positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentMarginUsd);
646
656
  }
647
657
  else {
648
658
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
649
659
  }
650
660
  };
651
- this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap, pnlUsd) {
661
+ this.getLeverageSync = function (positionAccount, finalCollateralUsd, finalSizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
662
+ positionAccount = positionAccount.clone();
663
+ positionAccount.sizeUsd = finalSizeUsd;
664
+ positionAccount.collateralUsd = finalCollateralUsd;
665
+ return _this.getLeverageContractHelper(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig);
666
+ };
667
+ this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, pnlUsd, enableDebuglogs) {
668
+ if (enableDebuglogs === void 0) { enableDebuglogs = false; }
652
669
  var finalCollateralAmount = constants_1.BN_ZERO;
653
670
  if (!inputDeltaAmount.isZero()) {
654
671
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
655
672
  finalCollateralAmount = inputDeltaAmount;
656
673
  }
657
674
  else {
658
- var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
675
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
659
676
  finalCollateralAmount = swapAmountOut;
660
677
  }
661
678
  }
@@ -681,11 +698,13 @@ var PerpetualsClient = (function () {
681
698
  entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
682
699
  }
683
700
  var collateralMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
684
- var collateralAmount = positionAccount.collateralAmount.add(finalCollateralAmount);
685
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenCustodyAccount.decimals);
686
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd).sub(openFeeUsd);
701
+ var finalCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(finalCollateralAmount, collateralTokenCustodyAccount.decimals).add(positionAccount.collateralUsd);
702
+ var currentCollateralUsdIncludingPnl = finalCollateralUsd.add(pnlUsd).sub(openFeeUsd);
687
703
  var sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
688
704
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
705
+ if (enableDebuglogs) {
706
+ 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());
707
+ }
689
708
  if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
690
709
  return sizeAmountUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentCollateralUsdIncludingPnl);
691
710
  }
@@ -693,81 +712,20 @@ var PerpetualsClient = (function () {
693
712
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
694
713
  }
695
714
  };
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
715
  this.getEntryPriceAndFeeSyncV2 = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps, enableLogs) {
759
716
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
760
717
  if (enableLogs === void 0) { enableLogs = false; }
761
718
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
762
719
  throw new Error("Delta Amounts cannot be negative.");
763
720
  }
764
- var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
765
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
721
+ var sizeDeltaUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
722
+ var entryDeltaOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeDeltaUsd);
723
+ var lockAndUnsettledFeeUsd = constants_1.BN_ZERO;
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 = entryDeltaOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
728
+ positionAccount.sizeUsd = sizeUsd;
771
729
  positionAccount.sizeDecimals = targetCustodyAccount.decimals;
772
730
  positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
773
731
  positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
@@ -780,16 +738,17 @@ var PerpetualsClient = (function () {
780
738
  confidence: constants_1.BN_ZERO,
781
739
  timestamp: constants_1.BN_ZERO
782
740
  });
783
- entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
784
- var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
785
- positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
741
+ lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
742
+ entryDeltaOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryDeltaOraclePrice.price, sizeDeltaAmount);
743
+ var sizeDeltaUsd_1 = entryDeltaOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
744
+ positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd_1);
786
745
  }
787
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
746
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
747
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
748
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
788
749
  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);
791
- var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
792
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
750
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(entryDeltaOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
751
+ var sizeAmountUsd = entryDeltaOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
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;
@@ -822,7 +781,7 @@ var PerpetualsClient = (function () {
822
781
  console.log("volitlity fee zero:", "divergenceBps", divergenceBps.toString(), "maxDivergenceBps", targetCustodyAccount.oracle.maxDivergenceBps.toString());
823
782
  }
824
783
  return {
825
- entryOraclePrice: entryOraclePrice,
784
+ entryOraclePrice: entryDeltaOraclePrice,
826
785
  feeUsd: feeUsd,
827
786
  feeAmount: feeAmount,
828
787
  vbFeeUsd: vbFeeUsd,
@@ -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;
1012
+ }
1013
+ else {
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;
1065
1021
  }
1066
1022
  else {
1067
- closeAmount = constants_1.BN_ZERO;
1068
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), collateralCustodyAccount.decimals);
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,144 @@ 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, entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount) {
1340
+ var newPositionAccount = positionAccount.clone();
1341
+ newPositionAccount.collateralUsd = collateralUsd;
1342
+ return _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, newPositionAccount);
1343
+ };
1344
+ this.getLiquidationPriceWithOrder = function (collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, side, targetCustodyAccount) {
1383
1345
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1384
1346
  price: constants_1.BN_ZERO,
1385
1347
  exponent: constants_1.BN_ZERO,
1386
1348
  confidence: constants_1.BN_ZERO,
1387
1349
  timestamp: constants_1.BN_ZERO
1388
1350
  });
1389
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1390
- return zeroOraclePrice;
1391
- }
1392
1351
  var exitFeeUsd = sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1393
1352
  var unsettledLossUsd = exitFeeUsd;
1394
1353
  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
1354
  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;
1355
+ if (collateralUsd.gte(liablitiesUsd)) {
1356
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1357
+ price: (collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1358
+ .div(sizeAmount),
1359
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1360
+ confidence: constants_1.BN_ZERO,
1361
+ timestamp: constants_1.BN_ZERO
1362
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1363
+ if ((0, types_1.isVariant)(side, 'long')) {
1364
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1365
+ price: limitOraclePrice.price.sub(priceDiffLossOracle.price),
1366
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1367
+ confidence: constants_1.BN_ZERO,
1368
+ timestamp: constants_1.BN_ZERO
1369
+ });
1402
1370
  }
1403
1371
  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));
1372
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1373
+ price: limitOraclePrice.price.add(priceDiffLossOracle.price),
1374
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1375
+ confidence: constants_1.BN_ZERO,
1376
+ timestamp: constants_1.BN_ZERO
1377
+ });
1407
1378
  }
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)),
1379
+ }
1380
+ else {
1381
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1382
+ price: (liablitiesUsd.sub(collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1383
+ .div(sizeAmount),
1411
1384
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1412
1385
  confidence: constants_1.BN_ZERO,
1413
1386
  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),
1387
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1388
+ if ((0, types_1.isVariant)(side, 'long')) {
1389
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1390
+ price: limitOraclePrice.price.add(priceDiffProfitOracle.price),
1391
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1424
1392
  confidence: constants_1.BN_ZERO,
1425
1393
  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
- }
1394
+ });
1443
1395
  }
1444
1396
  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),
1397
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1398
+ price: limitOraclePrice.price.sub(priceDiffProfitOracle.price),
1399
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1449
1400
  confidence: constants_1.BN_ZERO,
1450
1401
  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
- }
1402
+ });
1468
1403
  }
1469
1404
  }
1470
1405
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1471
1406
  };
1472
- this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, positionAccount) {
1407
+ this.getMaxProfitPriceSync = function (entryPrice, marketCorrelation, side, collateralPrice, positionAccount) {
1473
1408
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1474
1409
  price: constants_1.BN_ZERO,
1475
1410
  exponent: constants_1.BN_ZERO,
@@ -1480,7 +1415,7 @@ var PerpetualsClient = (function () {
1480
1415
  return zeroOraclePrice;
1481
1416
  }
1482
1417
  var priceDiffProfit = OraclePrice_1.OraclePrice.from({
1483
- price: positionAccount.lockedUsd.mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1418
+ price: (collateralPrice.price.mul(positionAccount.lockedAmount)).mul(new anchor_1.BN(10).pow(new anchor_1.BN(positionAccount.sizeDecimals + 3)))
1484
1419
  .div(positionAccount.sizeAmount),
1485
1420
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1486
1421
  confidence: constants_1.BN_ZERO,
@@ -1508,7 +1443,7 @@ var PerpetualsClient = (function () {
1508
1443
  }
1509
1444
  return maxProfitPrice.price.isNeg() ? zeroOraclePrice : maxProfitPrice;
1510
1445
  };
1511
- this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1446
+ this.getEstimateProfitLossforTpSlEntry = function (positionAccount, isTakeProfit, userEntrytpSlOraclePrice, collateralDeltaAmount, sizeDeltaAmount, side, marketCorrelation, maxPayOffBps, marketAccountPk, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, poolConfig) {
1512
1447
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
1513
1448
  throw new Error("Delta Amounts cannot be negative.");
1514
1449
  }
@@ -1538,10 +1473,9 @@ var PerpetualsClient = (function () {
1538
1473
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
1539
1474
  positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
1540
1475
  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);
1476
+ var collateralDeltaUsd = collateralPrice.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
1477
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
1478
+ positionAccount.lockedAmount = positionAccount.lockedAmount.add(collateralPrice.getTokenAmount(_this.getLockedUsd(sizeDeltaUsd, collateralDeltaUsd, side, marketCorrelation, maxPayOffBps), collateralCustodyAccount.decimals));
1545
1479
  var currentTime = new anchor_1.BN((0, utils_1.getUnixTs)());
1546
1480
  var pnl = _this.getPnlSync(positionAccount, userEntrytpSlOraclePrice, userEntrytpSlOraclePrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTime, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1547
1481
  var pnlUsd = pnl.profitUsd.sub(pnl.lossUsd);
@@ -1613,6 +1547,9 @@ var PerpetualsClient = (function () {
1613
1547
  });
1614
1548
  };
1615
1549
  this.getPnlSync = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1550
+ return _this.getPnlContractHelper(positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig);
1551
+ };
1552
+ this.getPnlContractHelper = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1616
1553
  if (positionAccount.sizeUsd.isZero() || positionAccount.entryPrice.price.isZero()) {
1617
1554
  return {
1618
1555
  profitUsd: constants_1.BN_ZERO,
@@ -1620,9 +1557,8 @@ var PerpetualsClient = (function () {
1620
1557
  };
1621
1558
  }
1622
1559
  var side = poolConfig.getMarketConfigByPk(positionAccount.market).side;
1623
- var sizeUsd = targetTokenPrice.getAssetAmountUsd(positionAccount.sizeAmount, targetCustodyAccount.decimals);
1560
+ var sizeUsd = positionAccount.sizeUsd;
1624
1561
  var exitOraclePrice = _this.getExitOraclePriceSync(side, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, sizeUsd);
1625
- var collateralMinPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
1626
1562
  var priceDiffProfit, priceDiffLoss;
1627
1563
  var positionEntryPrice = OraclePrice_1.OraclePrice.from({
1628
1564
  price: positionAccount.entryPrice.price,
@@ -1671,7 +1607,7 @@ var PerpetualsClient = (function () {
1671
1607
  }
1672
1608
  if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1673
1609
  return {
1674
- profitUsd: anchor_1.BN.min(priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals), collateralMinPrice.getAssetAmountUsd(positionAccount.lockedAmount, positionAccount.lockedDecimals)),
1610
+ profitUsd: priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1675
1611
  lossUsd: constants_1.BN_ZERO,
1676
1612
  };
1677
1613
  }
@@ -1762,6 +1698,9 @@ var PerpetualsClient = (function () {
1762
1698
  }
1763
1699
  };
1764
1700
  this.getAssetsUnderManagementUsdSync = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1701
+ return _this.getAssetsUnderManagementUsdContractHelper(poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig);
1702
+ };
1703
+ this.getAssetsUnderManagementUsdContractHelper = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1765
1704
  var poolAmountUsd = constants_1.BN_ZERO;
1766
1705
  for (var index = 0; index < custodies.length; index++) {
1767
1706
  if (custodies.length != poolAccount.custodies.length || !custodies[index].publicKey.equals(poolAccount.custodies[index])) {
@@ -1774,6 +1713,7 @@ var PerpetualsClient = (function () {
1774
1713
  var token_amount_usd = tokenMinMaxPrice.max.getAssetAmountUsd(custodies[index].assets.owned, custodies[index].decimals);
1775
1714
  poolAmountUsd = poolAmountUsd.add(token_amount_usd);
1776
1715
  }
1716
+ poolAmountUsd = poolAmountUsd.sub(poolAccount.feesObligationUsd.add(poolAccount.rebateObligationUsd));
1777
1717
  if (aumCalcMode === "includePnl") {
1778
1718
  var poolEquityUsd = poolAmountUsd;
1779
1719
  for (var index = 0; index < markets.length; index++) {
@@ -1783,11 +1723,12 @@ var PerpetualsClient = (function () {
1783
1723
  var targetCustodyId = poolAccount.getCustodyId(markets[index].targetCustody);
1784
1724
  var collateralCustodyId = poolAccount.getCustodyId(markets[index].collateralCustody);
1785
1725
  var position = markets[index].getCollectivePosition();
1726
+ poolEquityUsd = poolEquityUsd.sub(position.collateralUsd);
1786
1727
  var collectivePnl = _this.getPnlSync(position, tokenPrices[targetCustodyId], tokenEmaPrices[targetCustodyId], custodies[targetCustodyId], tokenPrices[collateralCustodyId], tokenEmaPrices[collateralCustodyId], custodies[collateralCustodyId], currentTime, custodies[targetCustodyId].pricing.delaySeconds, poolConfig);
1787
1728
  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);
1729
+ var collectiveLossUsd = anchor_1.BN.min(collectivePnl.lossUsd, position.collateralUsd);
1730
+ var collectiveProfitUsd = anchor_1.BN.min(collectivePnl.profitUsd, collateralMinMaxPrice.max.getAssetAmountUsd(position.lockedAmount, custodies[collateralCustodyId].decimals).sub(position.collateralUsd));
1731
+ poolEquityUsd = (poolEquityUsd.add(collectiveLossUsd)).sub(collectiveProfitUsd);
1791
1732
  }
1792
1733
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: poolEquityUsd };
1793
1734
  }
@@ -1795,14 +1736,6 @@ var PerpetualsClient = (function () {
1795
1736
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: constants_1.BN_ZERO };
1796
1737
  }
1797
1738
  };
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
1739
  this.getFeeDiscount = function (perpetualsAccount, tokenStakeAccount, currentTime) {
1807
1740
  if (tokenStakeAccount.level === 0) {
1808
1741
  return { discountBn: constants_1.BN_ZERO };
@@ -1887,7 +1820,7 @@ var PerpetualsClient = (function () {
1887
1820
  });
1888
1821
  };
1889
1822
  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;
1823
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_1, token, _a, custodies_2, custody, _b, _c, market, transaction, backUpOracleInstruction, setCULimitIx, result, index, res;
1891
1824
  var _d;
1892
1825
  return __generator(this, function (_e) {
1893
1826
  switch (_e.label) {
@@ -1935,6 +1868,8 @@ var PerpetualsClient = (function () {
1935
1868
  return [4, backUpOracleInstructionPromise];
1936
1869
  case 2:
1937
1870
  backUpOracleInstruction = _e.sent();
1871
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1872
+ transaction.instructions.unshift(setCULimitIx);
1938
1873
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
1939
1874
  return [4, this.viewHelper.simulateTransaction(transaction)];
1940
1875
  case 3:
@@ -2001,7 +1936,7 @@ var PerpetualsClient = (function () {
2001
1936
  args_1[_i - 4] = arguments[_i];
2002
1937
  }
2003
1938
  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;
1939
+ var custodies, custodyMetas, marketMetas, _a, custodies_5, token, _b, custodies_6, custody, _c, _d, market, depositCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2005
1940
  var _e;
2006
1941
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2007
1942
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2052,6 +1987,8 @@ var PerpetualsClient = (function () {
2052
1987
  .transaction()];
2053
1988
  case 1:
2054
1989
  transaction = _f.sent();
1990
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1991
+ transaction.instructions.unshift(setCULimitIx);
2055
1992
  if (!enableBackupOracle) return [3, 3];
2056
1993
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2057
1994
  case 2:
@@ -2061,6 +1998,14 @@ var PerpetualsClient = (function () {
2061
1998
  case 3: return [4, this.viewHelper.simulateTransaction(transaction, userPublicKey)];
2062
1999
  case 4:
2063
2000
  result = _f.sent();
2001
+ if (result.value.err) {
2002
+ console.error('error Simulation failed:::', result);
2003
+ return [2, {
2004
+ amount: undefined,
2005
+ fee: undefined,
2006
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2007
+ }];
2008
+ }
2064
2009
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getAddLiquidityAmountAndFee'; });
2065
2010
  res = this.viewHelper.decodeLogs(result, index, 'getAddLiquidityAmountAndFee');
2066
2011
  return [2, {
@@ -2077,7 +2022,7 @@ var PerpetualsClient = (function () {
2077
2022
  args_1[_i - 4] = arguments[_i];
2078
2023
  }
2079
2024
  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;
2025
+ var custodies, custodyMetas, marketMetas, _a, custodies_7, token, _b, custodies_8, custody, _c, _d, market, removeCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2081
2026
  var _e;
2082
2027
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2083
2028
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2128,6 +2073,8 @@ var PerpetualsClient = (function () {
2128
2073
  .transaction()];
2129
2074
  case 1:
2130
2075
  transaction = _f.sent();
2076
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2077
+ transaction.instructions.unshift(setCULimitIx);
2131
2078
  if (!enableBackupOracle) return [3, 3];
2132
2079
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2133
2080
  case 2:
@@ -2139,9 +2086,11 @@ var PerpetualsClient = (function () {
2139
2086
  result = _f.sent();
2140
2087
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getRemoveLiquidityAmountAndFee'; });
2141
2088
  if (result.value.err) {
2089
+ console.error('error Simulation failed:', result);
2142
2090
  return [2, {
2143
- amount: new anchor_1.BN(0),
2144
- fee: new anchor_1.BN(0),
2091
+ amount: undefined,
2092
+ fee: undefined,
2093
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2145
2094
  }];
2146
2095
  }
2147
2096
  res = this.viewHelper.decodeLogs(result, index, 'getRemoveLiquidityAmountAndFee');
@@ -2154,7 +2103,7 @@ var PerpetualsClient = (function () {
2154
2103
  });
2155
2104
  };
2156
2105
  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;
2106
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_9, token, _a, custodies_10, custody, _b, _c, market, backUpOracleInstruction, transaction, setCULimitIx, result, index, res;
2158
2107
  var _d;
2159
2108
  return __generator(this, function (_e) {
2160
2109
  switch (_e.label) {
@@ -2202,6 +2151,8 @@ var PerpetualsClient = (function () {
2202
2151
  .transaction()];
2203
2152
  case 2:
2204
2153
  transaction = _e.sent();
2154
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2155
+ transaction.instructions.unshift(setCULimitIx);
2205
2156
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
2206
2157
  return [4, this.viewHelper.simulateTransaction(transaction)];
2207
2158
  case 3:
@@ -2551,11 +2502,10 @@ var PerpetualsClient = (function () {
2551
2502
  for (var _i = 8; _i < arguments.length; _i++) {
2552
2503
  args_1[_i - 8] = arguments[_i];
2553
2504
  }
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) {
2505
+ 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
2506
  var publicKey, targetCustodyConfig, collateralCustodyConfig, collateralToken, marketAccount, userCollateralTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, params, instruction;
2556
2507
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2557
2508
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2558
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2559
2509
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2560
2510
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2561
2511
  return __generator(this, function (_c) {
@@ -2648,7 +2598,7 @@ var PerpetualsClient = (function () {
2648
2598
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
2649
2599
  fundingMint: collateralCustodyConfig.mintKey
2650
2600
  })
2651
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2601
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2652
2602
  .instruction()];
2653
2603
  case 7:
2654
2604
  instruction = _c.sent();
@@ -2666,11 +2616,10 @@ var PerpetualsClient = (function () {
2666
2616
  for (var _i = 6; _i < arguments.length; _i++) {
2667
2617
  args_1[_i - 6] = arguments[_i];
2668
2618
  }
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) {
2619
+ 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
2620
  var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, instruction, closeWsolATAIns, error_1;
2671
2621
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2672
2622
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2673
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2674
2623
  if (createUserATA === void 0) { createUserATA = true; }
2675
2624
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
2676
2625
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -2749,7 +2698,7 @@ var PerpetualsClient = (function () {
2749
2698
  collateralMint: collateralCustodyConfig.mintKey,
2750
2699
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2751
2700
  })
2752
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2701
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2753
2702
  .instruction()];
2754
2703
  case 6:
2755
2704
  instruction = _b.sent();
@@ -2771,16 +2720,15 @@ var PerpetualsClient = (function () {
2771
2720
  });
2772
2721
  });
2773
2722
  };
2774
- this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2723
+ this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2775
2724
  var args_1 = [];
2776
- for (var _i = 10; _i < arguments.length; _i++) {
2777
- args_1[_i - 10] = arguments[_i];
2725
+ for (var _i = 9; _i < arguments.length; _i++) {
2726
+ args_1[_i - 9] = arguments[_i];
2778
2727
  }
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;
2728
+ 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) {
2729
+ 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
2730
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2782
2731
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2783
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2784
2732
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2785
2733
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2786
2734
  return __generator(this, function (_c) {
@@ -2874,18 +2822,10 @@ var PerpetualsClient = (function () {
2874
2822
  }
2875
2823
  _c.label = 10;
2876
2824
  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]);
2825
+ _c.trys.push([10, 12, , 13]);
2885
2826
  return [4, this.program.methods
2886
2827
  .swapAndOpen({
2887
2828
  amountIn: amountIn,
2888
- minCollateralAmountOut: minCollateralAmountOut,
2889
2829
  priceWithSlippage: priceWithSlippage,
2890
2830
  sizeAmount: sizeAmount,
2891
2831
  privilege: privilege
@@ -2916,17 +2856,17 @@ var PerpetualsClient = (function () {
2916
2856
  collateralMint: collateralCustodyConfig.mintKey,
2917
2857
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralTokenSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2918
2858
  })
2919
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2859
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2920
2860
  .instruction()];
2921
- case 12:
2861
+ case 11:
2922
2862
  inx = _c.sent();
2923
2863
  instructions.push(inx);
2924
- return [3, 14];
2925
- case 13:
2864
+ return [3, 13];
2865
+ case 12:
2926
2866
  err_3 = _c.sent();
2927
2867
  console.error("perpClient SwapAndOpen error:: ", err_3);
2928
2868
  throw err_3;
2929
- case 14: return [2, {
2869
+ case 13: return [2, {
2930
2870
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
2931
2871
  additionalSigners: additionalSigners
2932
2872
  }];
@@ -2934,16 +2874,15 @@ var PerpetualsClient = (function () {
2934
2874
  });
2935
2875
  });
2936
2876
  };
2937
- this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2877
+ this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2938
2878
  var args_1 = [];
2939
- for (var _i = 8; _i < arguments.length; _i++) {
2940
- args_1[_i - 8] = arguments[_i];
2879
+ for (var _i = 7; _i < arguments.length; _i++) {
2880
+ args_1[_i - 7] = arguments[_i];
2941
2881
  }
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;
2882
+ 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) {
2883
+ var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, inx, err_4;
2944
2884
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2945
2885
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2946
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2947
2886
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2948
2887
  return __generator(this, function (_a) {
2949
2888
  switch (_a.label) {
@@ -3009,18 +2948,12 @@ var PerpetualsClient = (function () {
3009
2948
  if (!(_a.sent())) {
3010
2949
  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
2950
  }
3012
- rebateMintAccount = {
3013
- pubkey: collateralCustodyConfig.mintKey,
3014
- isSigner: false,
3015
- isWritable: false
3016
- };
3017
2951
  _a.label = 5;
3018
2952
  case 5:
3019
2953
  _a.trys.push([5, 7, , 8]);
3020
2954
  return [4, this.program.methods
3021
2955
  .closeAndSwap({
3022
2956
  priceWithSlippage: priceWithSlippage,
3023
- minSwapAmountOut: minSwapAmountOut,
3024
2957
  privilege: privilege
3025
2958
  })
3026
2959
  .accounts({
@@ -3049,7 +2982,7 @@ var PerpetualsClient = (function () {
3049
2982
  collateralMint: collateralCustodyConfig.mintKey,
3050
2983
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
3051
2984
  })
3052
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2985
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3053
2986
  .instruction()];
3054
2987
  case 6:
3055
2988
  inx = _a.sent();
@@ -3170,12 +3103,12 @@ var PerpetualsClient = (function () {
3170
3103
  });
3171
3104
  });
3172
3105
  };
3173
- this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1) {
3106
+ this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1) {
3174
3107
  var args_1 = [];
3175
- for (var _i = 8; _i < arguments.length; _i++) {
3176
- args_1[_i - 8] = arguments[_i];
3108
+ for (var _i = 7; _i < arguments.length; _i++) {
3109
+ args_1[_i - 7] = arguments[_i];
3177
3110
  }
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) {
3111
+ 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
3112
  var publicKey, collateralCustodyConfig, targetCustodyConfig, inputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userInputTokenAccount, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, userCollateralTokenAccount, marketAccount, instruction;
3180
3113
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
3181
3114
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -3254,7 +3187,6 @@ var PerpetualsClient = (function () {
3254
3187
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3255
3188
  return [4, this.program.methods.swapAndAddCollateral({
3256
3189
  amountIn: amountIn,
3257
- minCollateralAmountOut: minCollateralAmountOut,
3258
3190
  }).accounts({
3259
3191
  owner: publicKey,
3260
3192
  feePayer: publicKey,
@@ -3290,12 +3222,12 @@ var PerpetualsClient = (function () {
3290
3222
  });
3291
3223
  });
3292
3224
  };
3293
- this.removeCollateral = function (collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3225
+ this.removeCollateral = function (collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3294
3226
  var args_1 = [];
3295
3227
  for (var _i = 6; _i < arguments.length; _i++) {
3296
3228
  args_1[_i - 6] = arguments[_i];
3297
3229
  }
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) {
3230
+ 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
3231
  var publicKey, collateralCustodyConfig, targetCustodyConfig, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, marketAccount, instruction, closeWsolATAIns, error_2;
3300
3232
  if (createUserATA === void 0) { createUserATA = true; }
3301
3233
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
@@ -3359,7 +3291,7 @@ var PerpetualsClient = (function () {
3359
3291
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3360
3292
  return [4, this.program.methods
3361
3293
  .removeCollateral({
3362
- collateralDelta: collateralWithFee,
3294
+ collateralDeltaUsd: collateralDeltaUsd,
3363
3295
  })
3364
3296
  .accounts({
3365
3297
  owner: publicKey,
@@ -3401,12 +3333,12 @@ var PerpetualsClient = (function () {
3401
3333
  });
3402
3334
  });
3403
3335
  };
3404
- this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1) {
3336
+ this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1) {
3405
3337
  var args_1 = [];
3406
- for (var _i = 7; _i < arguments.length; _i++) {
3407
- args_1[_i - 7] = arguments[_i];
3338
+ for (var _i = 6; _i < arguments.length; _i++) {
3339
+ args_1[_i - 6] = arguments[_i];
3408
3340
  }
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) {
3341
+ 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
3342
  var publicKey, targetCustodyConfig, collateralCustodyConfig, outputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, lamports, userCollateralTokenAccount, marketAccount, positionAccount, instruction;
3411
3343
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
3412
3344
  return __generator(this, function (_a) {
@@ -3463,8 +3395,7 @@ var PerpetualsClient = (function () {
3463
3395
  positionAccount = poolConfig.getPositionFromMarketPk(publicKey, marketAccount);
3464
3396
  return [4, this.program.methods
3465
3397
  .removeCollateralAndSwap({
3466
- collateralDelta: collateralDelta,
3467
- minSwapAmountOut: minSwapAmountOut,
3398
+ collateralDeltaUsd: collateralDeltaUsd,
3468
3399
  })
3469
3400
  .accounts({
3470
3401
  owner: publicKey,
@@ -3509,11 +3440,10 @@ var PerpetualsClient = (function () {
3509
3440
  for (var _i = 8; _i < arguments.length; _i++) {
3510
3441
  args_1[_i - 8] = arguments[_i];
3511
3442
  }
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) {
3443
+ 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
3444
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3514
3445
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3515
3446
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3516
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3517
3447
  return __generator(this, function (_a) {
3518
3448
  switch (_a.label) {
3519
3449
  case 0:
@@ -3556,7 +3486,7 @@ var PerpetualsClient = (function () {
3556
3486
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3557
3487
  collateralMint: collateralCustodyConfig.mintKey
3558
3488
  })
3559
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3489
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3560
3490
  .instruction()];
3561
3491
  case 1:
3562
3492
  instruction = _a.sent();
@@ -3574,11 +3504,10 @@ var PerpetualsClient = (function () {
3574
3504
  for (var _i = 8; _i < arguments.length; _i++) {
3575
3505
  args_1[_i - 8] = arguments[_i];
3576
3506
  }
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) {
3507
+ 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
3508
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3579
3509
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3580
3510
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3581
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3582
3511
  return __generator(this, function (_a) {
3583
3512
  switch (_a.label) {
3584
3513
  case 0:
@@ -3621,7 +3550,7 @@ var PerpetualsClient = (function () {
3621
3550
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3622
3551
  collateralMint: collateralCustodyConfig.mintKey
3623
3552
  })
3624
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3553
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3625
3554
  .instruction()];
3626
3555
  case 1:
3627
3556
  instruction = _a.sent();
@@ -4088,119 +4017,8 @@ var PerpetualsClient = (function () {
4088
4017
  }
4089
4018
  });
4090
4019
  }); };
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
4020
  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;
4021
+ var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_8;
4204
4022
  return __generator(this, function (_a) {
4205
4023
  switch (_a.label) {
4206
4024
  case 0:
@@ -4242,9 +4060,9 @@ var PerpetualsClient = (function () {
4242
4060
  instructions.push(depositStakeInstruction);
4243
4061
  return [3, 5];
4244
4062
  case 4:
4245
- err_10 = _a.sent();
4246
- console.log("perpClient depositStaking error:: ", err_10);
4247
- throw err_10;
4063
+ err_8 = _a.sent();
4064
+ console.log("perpClient depositStaking error:: ", err_8);
4065
+ throw err_8;
4248
4066
  case 5: return [2, {
4249
4067
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4250
4068
  additionalSigners: additionalSigners
@@ -4253,7 +4071,7 @@ var PerpetualsClient = (function () {
4253
4071
  });
4254
4072
  }); };
4255
4073
  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;
4074
+ var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_9;
4257
4075
  return __generator(this, function (_c) {
4258
4076
  switch (_c.label) {
4259
4077
  case 0:
@@ -4300,9 +4118,9 @@ var PerpetualsClient = (function () {
4300
4118
  refreshStakeInstruction = _c.sent();
4301
4119
  return [2, refreshStakeInstruction];
4302
4120
  case 2:
4303
- err_11 = _c.sent();
4304
- console.log("perpClient refreshStaking error:: ", err_11);
4305
- throw err_11;
4121
+ err_9 = _c.sent();
4122
+ console.log("perpClient refreshStaking error:: ", err_9);
4123
+ throw err_9;
4306
4124
  case 3: return [2];
4307
4125
  }
4308
4126
  });
@@ -4313,7 +4131,7 @@ var PerpetualsClient = (function () {
4313
4131
  args_1[_i - 3] = arguments[_i];
4314
4132
  }
4315
4133
  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;
4134
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_10;
4317
4135
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4318
4136
  return __generator(this, function (_c) {
4319
4137
  switch (_c.label) {
@@ -4361,9 +4179,9 @@ var PerpetualsClient = (function () {
4361
4179
  refreshStakeInstruction = _c.sent();
4362
4180
  return [2, refreshStakeInstruction];
4363
4181
  case 2:
4364
- err_12 = _c.sent();
4365
- console.log("perpClient refreshStaking error:: ", err_12);
4366
- throw err_12;
4182
+ err_10 = _c.sent();
4183
+ console.log("perpClient refreshStaking error:: ", err_10);
4184
+ throw err_10;
4367
4185
  case 3: return [2];
4368
4186
  }
4369
4187
  });
@@ -4375,7 +4193,7 @@ var PerpetualsClient = (function () {
4375
4193
  args_1[_i - 3] = arguments[_i];
4376
4194
  }
4377
4195
  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;
4196
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_11;
4379
4197
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4380
4198
  return __generator(this, function (_b) {
4381
4199
  switch (_b.label) {
@@ -4427,9 +4245,9 @@ var PerpetualsClient = (function () {
4427
4245
  instructions.push(unstakeInstantInstruction);
4428
4246
  return [3, 6];
4429
4247
  case 5:
4430
- err_13 = _b.sent();
4431
- console.log("perpClient unstakeInstant error:: ", err_13);
4432
- throw err_13;
4248
+ err_11 = _b.sent();
4249
+ console.log("perpClient unstakeInstant error:: ", err_11);
4250
+ throw err_11;
4433
4251
  case 6: return [2, {
4434
4252
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4435
4253
  additionalSigners: additionalSigners
@@ -4439,7 +4257,7 @@ var PerpetualsClient = (function () {
4439
4257
  });
4440
4258
  };
4441
4259
  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;
4260
+ var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_12;
4443
4261
  return __generator(this, function (_c) {
4444
4262
  switch (_c.label) {
4445
4263
  case 0:
@@ -4483,15 +4301,15 @@ var PerpetualsClient = (function () {
4483
4301
  refreshStakeInstruction = _c.sent();
4484
4302
  return [2, refreshStakeInstruction];
4485
4303
  case 2:
4486
- err_14 = _c.sent();
4487
- console.log("perpClient refreshStaking error:: ", err_14);
4488
- throw err_14;
4304
+ err_12 = _c.sent();
4305
+ console.log("perpClient refreshStaking error:: ", err_12);
4306
+ throw err_12;
4489
4307
  case 3: return [2];
4490
4308
  }
4491
4309
  });
4492
4310
  }); };
4493
4311
  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;
4312
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_13;
4495
4313
  return __generator(this, function (_a) {
4496
4314
  switch (_a.label) {
4497
4315
  case 0:
@@ -4525,9 +4343,9 @@ var PerpetualsClient = (function () {
4525
4343
  instructions.push(unstakeRequestInstruction);
4526
4344
  return [3, 4];
4527
4345
  case 3:
4528
- err_15 = _a.sent();
4529
- console.log("perpClient unstakeRequest error:: ", err_15);
4530
- throw err_15;
4346
+ err_13 = _a.sent();
4347
+ console.log("perpClient unstakeRequest error:: ", err_13);
4348
+ throw err_13;
4531
4349
  case 4: return [2, {
4532
4350
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4533
4351
  additionalSigners: additionalSigners
@@ -4541,7 +4359,7 @@ var PerpetualsClient = (function () {
4541
4359
  args_1[_i - 1] = arguments[_i];
4542
4360
  }
4543
4361
  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;
4362
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_14;
4545
4363
  if (pendingActivation === void 0) { pendingActivation = true; }
4546
4364
  if (deactivated === void 0) { deactivated = true; }
4547
4365
  if (createUserLPTA === void 0) { createUserLPTA = true; }
@@ -4597,9 +4415,9 @@ var PerpetualsClient = (function () {
4597
4415
  instructions.push(withdrawStakeInstruction);
4598
4416
  return [3, 6];
4599
4417
  case 5:
4600
- err_16 = _b.sent();
4601
- console.log("perpClient withdrawStake error:: ", err_16);
4602
- throw err_16;
4418
+ err_14 = _b.sent();
4419
+ console.log("perpClient withdrawStake error:: ", err_14);
4420
+ throw err_14;
4603
4421
  case 6: return [2, {
4604
4422
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4605
4423
  additionalSigners: additionalSigners
@@ -4614,7 +4432,7 @@ var PerpetualsClient = (function () {
4614
4432
  args_1[_i - 3] = arguments[_i];
4615
4433
  }
4616
4434
  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;
4435
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_15;
4618
4436
  if (createUserATA === void 0) { createUserATA = true; }
4619
4437
  return __generator(this, function (_b) {
4620
4438
  switch (_b.label) {
@@ -4675,9 +4493,9 @@ var PerpetualsClient = (function () {
4675
4493
  instructions.push(withdrawStakeInstruction);
4676
4494
  return [3, 6];
4677
4495
  case 5:
4678
- err_17 = _b.sent();
4679
- console.log("perpClient withdrawStake error:: ", err_17);
4680
- throw err_17;
4496
+ err_15 = _b.sent();
4497
+ console.log("perpClient withdrawStake error:: ", err_15);
4498
+ throw err_15;
4681
4499
  case 6: return [2, {
4682
4500
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4683
4501
  additionalSigners: additionalSigners
@@ -4691,11 +4509,13 @@ var PerpetualsClient = (function () {
4691
4509
  for (var _i = 5; _i < arguments.length; _i++) {
4692
4510
  args_1[_i - 5] = arguments[_i];
4693
4511
  }
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;
4512
+ 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) {
4513
+ 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
4514
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
4697
4515
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4698
4516
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4517
+ if (enableHeapSizeIx === void 0) { enableHeapSizeIx = true; }
4518
+ if (enableDebugLogs === void 0) { enableDebugLogs = false; }
4699
4519
  return __generator(this, function (_f) {
4700
4520
  switch (_f.label) {
4701
4521
  case 0:
@@ -4786,6 +4606,15 @@ var PerpetualsClient = (function () {
4786
4606
  _f.label = 7;
4787
4607
  case 7:
4788
4608
  _f.trys.push([7, 9, , 10]);
4609
+ if (enableHeapSizeIx) {
4610
+ heapSizeIx = web3_js_1.ComputeBudgetProgram.requestHeapFrame({
4611
+ bytes: 64 * 1024,
4612
+ });
4613
+ if (enableDebugLogs) {
4614
+ console.log("SDK: adding 64 liq Data heapSizeIx for addCompoundingLiquidity");
4615
+ }
4616
+ preInstructions.push(heapSizeIx);
4617
+ }
4789
4618
  return [4, this.program.methods
4790
4619
  .addCompoundingLiquidity({
4791
4620
  amountIn: amountIn,
@@ -4820,8 +4649,8 @@ var PerpetualsClient = (function () {
4820
4649
  instructions.push(addCompoundingLiquidity);
4821
4650
  return [3, 10];
4822
4651
  case 9:
4823
- err_18 = _f.sent();
4824
- console.log("perpClient addCompoundingLiquidity error:: ", err_18);
4652
+ err_16 = _f.sent();
4653
+ console.log("perpClient addCompoundingLiquidity error:: ", err_16);
4825
4654
  return [3, 10];
4826
4655
  case 10: return [2, {
4827
4656
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4836,11 +4665,13 @@ var PerpetualsClient = (function () {
4836
4665
  for (var _i = 5; _i < arguments.length; _i++) {
4837
4666
  args_1[_i - 5] = arguments[_i];
4838
4667
  }
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;
4668
+ 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) {
4669
+ 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
4670
  if (createUserATA === void 0) { createUserATA = true; }
4842
4671
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4843
4672
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4673
+ if (enableHeapSizeIx === void 0) { enableHeapSizeIx = true; }
4674
+ if (enableDebugLogs === void 0) { enableDebugLogs = false; }
4844
4675
  return __generator(this, function (_f) {
4845
4676
  switch (_f.label) {
4846
4677
  case 0:
@@ -4915,6 +4746,15 @@ var PerpetualsClient = (function () {
4915
4746
  _f.label = 5;
4916
4747
  case 5:
4917
4748
  _f.trys.push([5, 7, , 8]);
4749
+ if (enableHeapSizeIx) {
4750
+ heapSizeIx = web3_js_1.ComputeBudgetProgram.requestHeapFrame({
4751
+ bytes: 64 * 1024,
4752
+ });
4753
+ if (enableDebugLogs) {
4754
+ console.log("SDK: adding 64 liq Data heapSizeIx for addCompoundingLiquidity");
4755
+ }
4756
+ preInstructions.push(heapSizeIx);
4757
+ }
4918
4758
  return [4, this.program.methods
4919
4759
  .removeCompoundingLiquidity({
4920
4760
  compoundingAmountIn: compoundingAmountIn,
@@ -4949,8 +4789,8 @@ var PerpetualsClient = (function () {
4949
4789
  instructions.push(removeCompoundingLiquidity);
4950
4790
  return [3, 8];
4951
4791
  case 7:
4952
- err_19 = _f.sent();
4953
- console.log("perpClient removeCompoundingLiquidity error:: ", err_19);
4792
+ err_17 = _f.sent();
4793
+ console.log("perpClient removeCompoundingLiquidity error:: ", err_17);
4954
4794
  return [3, 8];
4955
4795
  case 8: return [2, {
4956
4796
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4966,7 +4806,7 @@ var PerpetualsClient = (function () {
4966
4806
  args_1[_i - 3] = arguments[_i];
4967
4807
  }
4968
4808
  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;
4809
+ 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
4810
  if (createUserATA === void 0) { createUserATA = true; }
4971
4811
  return __generator(this, function (_g) {
4972
4812
  switch (_g.label) {
@@ -5064,8 +4904,8 @@ var PerpetualsClient = (function () {
5064
4904
  instructions.push(migrateStake);
5065
4905
  return [3, 8];
5066
4906
  case 7:
5067
- err_20 = _g.sent();
5068
- console.log("perpClient migrateStake error:: ", err_20);
4907
+ err_18 = _g.sent();
4908
+ console.log("perpClient migrateStake error:: ", err_18);
5069
4909
  return [3, 8];
5070
4910
  case 8: return [2, {
5071
4911
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5076,7 +4916,7 @@ var PerpetualsClient = (function () {
5076
4916
  });
5077
4917
  };
5078
4918
  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;
4919
+ 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
4920
  return __generator(this, function (_d) {
5081
4921
  switch (_d.label) {
5082
4922
  case 0:
@@ -5148,8 +4988,8 @@ var PerpetualsClient = (function () {
5148
4988
  instructions.push(migrateFlp);
5149
4989
  return [3, 4];
5150
4990
  case 3:
5151
- err_21 = _d.sent();
5152
- console.log("perpClient migrateFlp error:: ", err_21);
4991
+ err_19 = _d.sent();
4992
+ console.log("perpClient migrateFlp error:: ", err_19);
5153
4993
  return [3, 4];
5154
4994
  case 4: return [2, {
5155
4995
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5164,7 +5004,7 @@ var PerpetualsClient = (function () {
5164
5004
  args_1[_i - 1] = arguments[_i];
5165
5005
  }
5166
5006
  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;
5007
+ var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_20;
5168
5008
  if (rewardTokenSymbol === void 0) { rewardTokenSymbol = 'USDC'; }
5169
5009
  return __generator(this, function (_e) {
5170
5010
  switch (_e.label) {
@@ -5222,8 +5062,8 @@ var PerpetualsClient = (function () {
5222
5062
  instructions.push(compoundingFee);
5223
5063
  return [3, 4];
5224
5064
  case 3:
5225
- err_22 = _e.sent();
5226
- console.log("perpClient compoundingFee error:: ", err_22);
5065
+ err_20 = _e.sent();
5066
+ console.log("perpClient compoundingFee error:: ", err_20);
5227
5067
  return [3, 4];
5228
5068
  case 4: return [2, {
5229
5069
  instructions: __spreadArray([], instructions, true),
@@ -5233,146 +5073,8 @@ var PerpetualsClient = (function () {
5233
5073
  });
5234
5074
  });
5235
5075
  };
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
5076
  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;
5077
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_21;
5376
5078
  return __generator(this, function (_a) {
5377
5079
  switch (_a.label) {
5378
5080
  case 0:
@@ -5414,9 +5116,9 @@ var PerpetualsClient = (function () {
5414
5116
  instructions.push(depositTokenStakeInstruction);
5415
5117
  return [3, 5];
5416
5118
  case 4:
5417
- err_25 = _a.sent();
5418
- console.log("perpClient depositStakingInstruction error:: ", err_25);
5419
- throw err_25;
5119
+ err_21 = _a.sent();
5120
+ console.log("perpClient depositStakingInstruction error:: ", err_21);
5121
+ throw err_21;
5420
5122
  case 5: return [2, {
5421
5123
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5422
5124
  additionalSigners: additionalSigners
@@ -5425,7 +5127,7 @@ var PerpetualsClient = (function () {
5425
5127
  });
5426
5128
  }); };
5427
5129
  this.unstakeTokenRequest = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5428
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_26;
5130
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_22;
5429
5131
  return __generator(this, function (_a) {
5430
5132
  switch (_a.label) {
5431
5133
  case 0:
@@ -5454,9 +5156,9 @@ var PerpetualsClient = (function () {
5454
5156
  instructions.push(unstakeTokenRequestInstruction);
5455
5157
  return [3, 4];
5456
5158
  case 3:
5457
- err_26 = _a.sent();
5458
- console.log("perpClient unstakeTokenRequestInstruction error:: ", err_26);
5459
- throw err_26;
5159
+ err_22 = _a.sent();
5160
+ console.log("perpClient unstakeTokenRequestInstruction error:: ", err_22);
5161
+ throw err_22;
5460
5162
  case 4: return [2, {
5461
5163
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5462
5164
  additionalSigners: additionalSigners
@@ -5465,7 +5167,7 @@ var PerpetualsClient = (function () {
5465
5167
  });
5466
5168
  }); };
5467
5169
  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;
5170
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_23;
5469
5171
  return __generator(this, function (_a) {
5470
5172
  switch (_a.label) {
5471
5173
  case 0:
@@ -5506,9 +5208,9 @@ var PerpetualsClient = (function () {
5506
5208
  instructions.push(unstakeTokenInstantInstruction);
5507
5209
  return [3, 5];
5508
5210
  case 4:
5509
- err_27 = _a.sent();
5510
- console.log("perpClient unstakeTokenInstantInstruction error:: ", err_27);
5511
- throw err_27;
5211
+ err_23 = _a.sent();
5212
+ console.log("perpClient unstakeTokenInstantInstruction error:: ", err_23);
5213
+ throw err_23;
5512
5214
  case 5: return [2, {
5513
5215
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5514
5216
  additionalSigners: additionalSigners
@@ -5517,7 +5219,7 @@ var PerpetualsClient = (function () {
5517
5219
  });
5518
5220
  }); };
5519
5221
  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;
5222
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_24;
5521
5223
  return __generator(this, function (_a) {
5522
5224
  switch (_a.label) {
5523
5225
  case 0:
@@ -5558,9 +5260,9 @@ var PerpetualsClient = (function () {
5558
5260
  instructions.push(withdrawTokenInstruction);
5559
5261
  return [3, 5];
5560
5262
  case 4:
5561
- err_28 = _a.sent();
5562
- console.log("perpClient withdrawTokenInstruction error:: ", err_28);
5563
- throw err_28;
5263
+ err_24 = _a.sent();
5264
+ console.log("perpClient withdrawTokenInstruction error:: ", err_24);
5265
+ throw err_24;
5564
5266
  case 5: return [2, {
5565
5267
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5566
5268
  additionalSigners: additionalSigners
@@ -5569,7 +5271,7 @@ var PerpetualsClient = (function () {
5569
5271
  });
5570
5272
  }); };
5571
5273
  this.cancelUnstakeRequest = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5572
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_29;
5274
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_25;
5573
5275
  return __generator(this, function (_a) {
5574
5276
  switch (_a.label) {
5575
5277
  case 0:
@@ -5598,9 +5300,9 @@ var PerpetualsClient = (function () {
5598
5300
  instructions.push(cancelUnstakeRequestInstruction);
5599
5301
  return [3, 4];
5600
5302
  case 3:
5601
- err_29 = _a.sent();
5602
- console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_29);
5603
- throw err_29;
5303
+ err_25 = _a.sent();
5304
+ console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_25);
5305
+ throw err_25;
5604
5306
  case 4: return [2, {
5605
5307
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5606
5308
  additionalSigners: additionalSigners
@@ -5614,7 +5316,7 @@ var PerpetualsClient = (function () {
5614
5316
  args_1[_i - 2] = arguments[_i];
5615
5317
  }
5616
5318
  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;
5319
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_26;
5618
5320
  if (createUserATA === void 0) { createUserATA = true; }
5619
5321
  return __generator(this, function (_b) {
5620
5322
  switch (_b.label) {
@@ -5660,9 +5362,9 @@ var PerpetualsClient = (function () {
5660
5362
  instructions.push(collectTokenRewardInstruction);
5661
5363
  return [3, 6];
5662
5364
  case 5:
5663
- err_30 = _b.sent();
5664
- console.log("perpClient collectTokenRewardInstruction error:: ", err_30);
5665
- throw err_30;
5365
+ err_26 = _b.sent();
5366
+ console.log("perpClient collectTokenRewardInstruction error:: ", err_26);
5367
+ throw err_26;
5666
5368
  case 6: return [2, {
5667
5369
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5668
5370
  additionalSigners: additionalSigners
@@ -5677,7 +5379,7 @@ var PerpetualsClient = (function () {
5677
5379
  args_1[_i - 3] = arguments[_i];
5678
5380
  }
5679
5381
  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;
5382
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_27;
5681
5383
  if (createUserATA === void 0) { createUserATA = true; }
5682
5384
  return __generator(this, function (_b) {
5683
5385
  switch (_b.label) {
@@ -5724,9 +5426,9 @@ var PerpetualsClient = (function () {
5724
5426
  instructions.push(collectRevenueInstruction);
5725
5427
  return [3, 6];
5726
5428
  case 5:
5727
- err_31 = _b.sent();
5728
- console.log("perpClient collectRevenueInstruction error:: ", err_31);
5729
- throw err_31;
5429
+ err_27 = _b.sent();
5430
+ console.log("perpClient collectRevenueInstruction error:: ", err_27);
5431
+ throw err_27;
5730
5432
  case 6: return [2, {
5731
5433
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5732
5434
  additionalSigners: additionalSigners
@@ -5735,179 +5437,18 @@ var PerpetualsClient = (function () {
5735
5437
  });
5736
5438
  });
5737
5439
  };
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) {
5440
+ this.collectRebate = function (owner_1, rebateSymbol_1, poolConfig_1) {
5829
5441
  var args_1 = [];
5830
5442
  for (var _i = 3; _i < arguments.length; _i++) {
5831
5443
  args_1[_i - 3] = arguments[_i];
5832
5444
  }
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;
5445
+ return __awaiter(_this, __spreadArray([owner_1, rebateSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rebateSymbol, poolConfig, createUserATA) {
5446
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateMint, tokenStakeAccount, userTokenAccount, _a, collectRebateInstruction, err_28;
5835
5447
  if (createUserATA === void 0) { createUserATA = true; }
5836
5448
  return __generator(this, function (_b) {
5837
5449
  switch (_b.label) {
5838
5450
  case 0:
5839
5451
  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
5452
  preInstructions = [];
5912
5453
  instructions = [];
5913
5454
  postInstructions = [];
@@ -5915,59 +5456,43 @@ var PerpetualsClient = (function () {
5915
5456
  _b.label = 1;
5916
5457
  case 1:
5917
5458
  _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);
5459
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5460
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5461
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rebateMint, owner, true);
5921
5462
  _a = createUserATA;
5922
5463
  if (!_a) return [3, 3];
5923
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5464
+ return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5924
5465
  case 2:
5925
5466
  _a = !(_b.sent());
5926
5467
  _b.label = 3;
5927
5468
  case 3:
5928
5469
  if (_a) {
5929
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint));
5930
- }
5931
- tradingAccount = [];
5932
- if (nftTradingAccount) {
5933
- tradingAccount.push({
5934
- pubkey: nftTradingAccount,
5935
- isSigner: false,
5936
- isWritable: true,
5937
- });
5470
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userTokenAccount, publicKey, rebateMint));
5938
5471
  }
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()
5472
+ return [4, this.program.methods
5473
+ .collectRebate()
5943
5474
  .accounts({
5944
- perpProgram: this.programId,
5945
- owner: publicKey,
5946
- receivingTokenAccount: receivingTokenAccount,
5947
- transferAuthority: poolConfig.transferAuthority,
5475
+ owner: owner,
5476
+ receivingTokenAccount: userTokenAccount,
5948
5477
  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,
5478
+ transferAuthority: poolConfig.transferAuthority,
5479
+ rebateVault: poolConfig.rebateVault,
5480
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5481
+ tokenStakeAccount: tokenStakeAccount,
5954
5482
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5955
5483
  eventAuthority: this.eventAuthority.publicKey,
5956
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5957
- fbnftRewardsProgram: this.programFbnftReward.programId,
5958
- rewardVault: rewardVault,
5959
- rewardTokenAccount: rewardTokenAccount
5484
+ program: this.programId,
5485
+ receivingTokenMint: rebateMint,
5960
5486
  })
5961
- .remainingAccounts(tradingAccount)
5962
5487
  .instruction()];
5963
5488
  case 4:
5964
- withdrawStakeInstruction = _b.sent();
5965
- instructions.push(withdrawStakeInstruction);
5489
+ collectRebateInstruction = _b.sent();
5490
+ instructions.push(collectRebateInstruction);
5966
5491
  return [3, 6];
5967
5492
  case 5:
5968
- err_35 = _b.sent();
5969
- console.log("perpClient withdrawStake error:: ", err_35);
5970
- throw err_35;
5493
+ err_28 = _b.sent();
5494
+ console.log("perpClient collectRebateInstruction error:: ", err_28);
5495
+ throw err_28;
5971
5496
  case 6: return [2, {
5972
5497
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5973
5498
  additionalSigners: additionalSigners
@@ -5976,13 +5501,60 @@ var PerpetualsClient = (function () {
5976
5501
  });
5977
5502
  });
5978
5503
  };
5504
+ this.settleRebates = function (rebateSymbol, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5505
+ var preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, rebateMint, settleRebatesInstruction, err_29;
5506
+ return __generator(this, function (_a) {
5507
+ switch (_a.label) {
5508
+ case 0:
5509
+ preInstructions = [];
5510
+ instructions = [];
5511
+ postInstructions = [];
5512
+ additionalSigners = [];
5513
+ _a.label = 1;
5514
+ case 1:
5515
+ _a.trys.push([1, 3, , 4]);
5516
+ rewardCustody = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(rewardSymbol).mintKey); });
5517
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5518
+ return [4, this.program.methods
5519
+ .settleRebates()
5520
+ .accounts({
5521
+ transferAuthority: poolConfig.transferAuthority,
5522
+ perpetuals: this.perpetuals.publicKey,
5523
+ pool: poolConfig.poolAddress,
5524
+ rewardCustody: rewardCustody.custodyAccount,
5525
+ rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
5526
+ rewardCustodyTokenAccount: rewardCustody.tokenAccount,
5527
+ rebateVault: poolConfig.rebateVault,
5528
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5529
+ tokenMint: rebateMint,
5530
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5531
+ eventAuthority: this.eventAuthority.publicKey,
5532
+ program: this.programId,
5533
+ ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
5534
+ })
5535
+ .instruction()];
5536
+ case 2:
5537
+ settleRebatesInstruction = _a.sent();
5538
+ instructions.push(settleRebatesInstruction);
5539
+ return [3, 4];
5540
+ case 3:
5541
+ err_29 = _a.sent();
5542
+ console.log("perpClient settleRebatesInstruction error:: ", err_29);
5543
+ throw err_29;
5544
+ case 4: return [2, {
5545
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5546
+ additionalSigners: additionalSigners
5547
+ }];
5548
+ }
5549
+ });
5550
+ }); };
5979
5551
  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
5552
  var args_1 = [];
5981
5553
  for (var _i = 11; _i < arguments.length; _i++) {
5982
5554
  args_1[_i - 11] = arguments[_i];
5983
5555
  }
5984
5556
  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;
5557
+ 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
5558
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
5987
5559
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
5988
5560
  return __generator(this, function (_c) {
@@ -6088,9 +5660,9 @@ var PerpetualsClient = (function () {
6088
5660
  instructions.push(placeLimitOrder);
6089
5661
  return [3, 10];
6090
5662
  case 9:
6091
- err_36 = _c.sent();
6092
- console.log("perpClient placeLimitOrder error:: ", err_36);
6093
- throw err_36;
5663
+ err_30 = _c.sent();
5664
+ console.log("perpClient placeLimitOrder error:: ", err_30);
5665
+ throw err_30;
6094
5666
  case 10: return [2, {
6095
5667
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6096
5668
  additionalSigners: additionalSigners
@@ -6105,7 +5677,7 @@ var PerpetualsClient = (function () {
6105
5677
  args_1[_i - 11] = arguments[_i];
6106
5678
  }
6107
5679
  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;
5680
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_31;
6109
5681
  if (createUserATA === void 0) { createUserATA = true; }
6110
5682
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6111
5683
  return __generator(this, function (_b) {
@@ -6196,9 +5768,9 @@ var PerpetualsClient = (function () {
6196
5768
  instructions.push(editLimitOrder);
6197
5769
  return [3, 8];
6198
5770
  case 7:
6199
- err_37 = _b.sent();
6200
- console.log("perpClient editLimitOrder error:: ", err_37);
6201
- throw err_37;
5771
+ err_31 = _b.sent();
5772
+ console.log("perpClient editLimitOrder error:: ", err_31);
5773
+ throw err_31;
6202
5774
  case 8: return [2, {
6203
5775
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6204
5776
  additionalSigners: additionalSigners
@@ -6212,11 +5784,10 @@ var PerpetualsClient = (function () {
6212
5784
  for (var _i = 7; _i < arguments.length; _i++) {
6213
5785
  args_1[_i - 7] = arguments[_i];
6214
5786
  }
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;
5787
+ 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) {
5788
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_32;
6217
5789
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6218
5790
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6219
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6220
5791
  return __generator(this, function (_a) {
6221
5792
  switch (_a.label) {
6222
5793
  case 0:
@@ -6259,16 +5830,16 @@ var PerpetualsClient = (function () {
6259
5830
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6260
5831
  collateralMint: collateralCustodyConfig.mintKey,
6261
5832
  })
6262
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5833
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6263
5834
  .instruction()];
6264
5835
  case 2:
6265
5836
  executeLimitOrder = _a.sent();
6266
5837
  instructions.push(executeLimitOrder);
6267
5838
  return [3, 4];
6268
5839
  case 3:
6269
- err_38 = _a.sent();
6270
- console.log("perpClient executeLimitOrder error:: ", err_38);
6271
- throw err_38;
5840
+ err_32 = _a.sent();
5841
+ console.log("perpClient executeLimitOrder error:: ", err_32);
5842
+ throw err_32;
6272
5843
  case 4: return [2, {
6273
5844
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6274
5845
  additionalSigners: additionalSigners
@@ -6282,11 +5853,10 @@ var PerpetualsClient = (function () {
6282
5853
  for (var _i = 8; _i < arguments.length; _i++) {
6283
5854
  args_1[_i - 8] = arguments[_i];
6284
5855
  }
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;
5856
+ 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) {
5857
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_33;
6287
5858
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6288
5859
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6289
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6290
5860
  return __generator(this, function (_a) {
6291
5861
  switch (_a.label) {
6292
5862
  case 0:
@@ -6332,16 +5902,16 @@ var PerpetualsClient = (function () {
6332
5902
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6333
5903
  collateralMint: collateralCustodyConfig.mintKey,
6334
5904
  })
6335
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5905
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6336
5906
  .instruction()];
6337
5907
  case 2:
6338
5908
  executeLimitWithSwap = _a.sent();
6339
5909
  instructions.push(executeLimitWithSwap);
6340
5910
  return [3, 4];
6341
5911
  case 3:
6342
- err_39 = _a.sent();
6343
- console.log("perpClient executeLimitWithSwap error:: ", err_39);
6344
- throw err_39;
5912
+ err_33 = _a.sent();
5913
+ console.log("perpClient executeLimitWithSwap error:: ", err_33);
5914
+ throw err_33;
6345
5915
  case 4: return [2, {
6346
5916
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6347
5917
  additionalSigners: additionalSigners
@@ -6351,7 +5921,7 @@ var PerpetualsClient = (function () {
6351
5921
  });
6352
5922
  };
6353
5923
  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;
5924
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_34;
6355
5925
  return __generator(this, function (_a) {
6356
5926
  switch (_a.label) {
6357
5927
  case 0:
@@ -6399,9 +5969,9 @@ var PerpetualsClient = (function () {
6399
5969
  instructions.push(placeTriggerOrder);
6400
5970
  return [3, 4];
6401
5971
  case 3:
6402
- err_40 = _a.sent();
6403
- console.log("perpClient placeTriggerOrder error:: ", err_40);
6404
- throw err_40;
5972
+ err_34 = _a.sent();
5973
+ console.log("perpClient placeTriggerOrder error:: ", err_34);
5974
+ throw err_34;
6405
5975
  case 4: return [2, {
6406
5976
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6407
5977
  additionalSigners: additionalSigners
@@ -6410,7 +5980,7 @@ var PerpetualsClient = (function () {
6410
5980
  });
6411
5981
  }); };
6412
5982
  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;
5983
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_35;
6414
5984
  return __generator(this, function (_a) {
6415
5985
  switch (_a.label) {
6416
5986
  case 0:
@@ -6457,9 +6027,9 @@ var PerpetualsClient = (function () {
6457
6027
  instructions.push(editTriggerOrder);
6458
6028
  return [3, 4];
6459
6029
  case 3:
6460
- err_41 = _a.sent();
6461
- console.log("perpClient editTriggerOrder error:: ", err_41);
6462
- throw err_41;
6030
+ err_35 = _a.sent();
6031
+ console.log("perpClient editTriggerOrder error:: ", err_35);
6032
+ throw err_35;
6463
6033
  case 4: return [2, {
6464
6034
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6465
6035
  additionalSigners: additionalSigners
@@ -6468,7 +6038,7 @@ var PerpetualsClient = (function () {
6468
6038
  });
6469
6039
  }); };
6470
6040
  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;
6041
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_36;
6472
6042
  return __generator(this, function (_a) {
6473
6043
  switch (_a.label) {
6474
6044
  case 0:
@@ -6501,9 +6071,9 @@ var PerpetualsClient = (function () {
6501
6071
  instructions.push(cancelTriggerOrder);
6502
6072
  return [3, 4];
6503
6073
  case 3:
6504
- err_42 = _a.sent();
6505
- console.log("perpClient cancelTriggerOrder error:: ", err_42);
6506
- throw err_42;
6074
+ err_36 = _a.sent();
6075
+ console.log("perpClient cancelTriggerOrder error:: ", err_36);
6076
+ throw err_36;
6507
6077
  case 4: return [2, {
6508
6078
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6509
6079
  additionalSigners: additionalSigners
@@ -6512,7 +6082,7 @@ var PerpetualsClient = (function () {
6512
6082
  });
6513
6083
  }); };
6514
6084
  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;
6085
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_37;
6516
6086
  return __generator(this, function (_a) {
6517
6087
  switch (_a.label) {
6518
6088
  case 0:
@@ -6543,9 +6113,9 @@ var PerpetualsClient = (function () {
6543
6113
  instructions.push(cancelAllTriggerOrders);
6544
6114
  return [3, 4];
6545
6115
  case 3:
6546
- err_43 = _a.sent();
6547
- console.log("perpClient cancelAllTriggerOrders error:: ", err_43);
6548
- throw err_43;
6116
+ err_37 = _a.sent();
6117
+ console.log("perpClient cancelAllTriggerOrders error:: ", err_37);
6118
+ throw err_37;
6549
6119
  case 4: return [2, {
6550
6120
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6551
6121
  additionalSigners: additionalSigners
@@ -6558,13 +6128,12 @@ var PerpetualsClient = (function () {
6558
6128
  for (var _i = 9; _i < arguments.length; _i++) {
6559
6129
  args_1[_i - 9] = arguments[_i];
6560
6130
  }
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;
6131
+ 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) {
6132
+ 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
6133
  if (createUserATA === void 0) { createUserATA = true; }
6564
6134
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6565
6135
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6566
6136
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6567
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6568
6137
  return __generator(this, function (_e) {
6569
6138
  switch (_e.label) {
6570
6139
  case 0:
@@ -6659,16 +6228,16 @@ var PerpetualsClient = (function () {
6659
6228
  collateralMint: collateralCustodyConfig.mintKey,
6660
6229
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
6661
6230
  })
6662
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6231
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6663
6232
  .instruction()];
6664
6233
  case 8:
6665
6234
  executeTriggerWithSwap = _e.sent();
6666
6235
  instructions.push(executeTriggerWithSwap);
6667
6236
  return [3, 10];
6668
6237
  case 9:
6669
- err_44 = _e.sent();
6670
- console.log("perpClient executeTriggerWithSwap error:: ", err_44);
6671
- throw err_44;
6238
+ err_38 = _e.sent();
6239
+ console.log("perpClient executeTriggerWithSwap error:: ", err_38);
6240
+ throw err_38;
6672
6241
  case 10: return [2, {
6673
6242
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6674
6243
  additionalSigners: additionalSigners
@@ -6682,13 +6251,12 @@ var PerpetualsClient = (function () {
6682
6251
  for (var _i = 8; _i < arguments.length; _i++) {
6683
6252
  args_1[_i - 8] = arguments[_i];
6684
6253
  }
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;
6254
+ 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) {
6255
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_39;
6687
6256
  if (createUserATA === void 0) { createUserATA = true; }
6688
6257
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6689
6258
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6690
6259
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6691
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6692
6260
  return __generator(this, function (_b) {
6693
6261
  switch (_b.label) {
6694
6262
  case 0:
@@ -6748,16 +6316,16 @@ var PerpetualsClient = (function () {
6748
6316
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6749
6317
  receivingMint: collateralCustodyConfig.mintKey
6750
6318
  })
6751
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6319
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6752
6320
  .instruction()];
6753
6321
  case 6:
6754
6322
  executeTriggerOrder = _b.sent();
6755
6323
  instructions.push(executeTriggerOrder);
6756
6324
  return [3, 8];
6757
6325
  case 7:
6758
- err_45 = _b.sent();
6759
- console.log("perpClient executeTriggerOrder error:: ", err_45);
6760
- throw err_45;
6326
+ err_39 = _b.sent();
6327
+ console.log("perpClient executeTriggerOrder error:: ", err_39);
6328
+ throw err_39;
6761
6329
  case 8: return [2, {
6762
6330
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6763
6331
  additionalSigners: additionalSigners
@@ -6772,7 +6340,7 @@ var PerpetualsClient = (function () {
6772
6340
  args_1[_i - 5] = arguments[_i];
6773
6341
  }
6774
6342
  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;
6343
+ 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
6344
  if (useFeesPool === void 0) { useFeesPool = false; }
6777
6345
  if (createUserATA === void 0) { createUserATA = true; }
6778
6346
  if (unWrapSol === void 0) { unWrapSol = false; }
@@ -6977,9 +6545,9 @@ var PerpetualsClient = (function () {
6977
6545
  }
6978
6546
  return [3, 20];
6979
6547
  case 19:
6980
- err_46 = _g.sent();
6981
- console.error("perpClient Swap error:: ", err_46);
6982
- throw err_46;
6548
+ err_40 = _g.sent();
6549
+ console.error("perpClient Swap error:: ", err_40);
6550
+ throw err_40;
6983
6551
  case 20: return [2, {
6984
6552
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6985
6553
  additionalSigners: additionalSigners
@@ -6989,7 +6557,7 @@ var PerpetualsClient = (function () {
6989
6557
  });
6990
6558
  };
6991
6559
  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;
6560
+ var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_41;
6993
6561
  return __generator(this, function (_b) {
6994
6562
  switch (_b.label) {
6995
6563
  case 0:
@@ -7034,11 +6602,7 @@ var PerpetualsClient = (function () {
7034
6602
  rewardCustody: rewardCustody.custodyAccount,
7035
6603
  rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
7036
6604
  rewardCustodyTokenAccount: rewardCustody.tokenAccount,
7037
- custody: custody.custodyAccount,
7038
- custodyOracleAccount: this.useExtOracleAccount ? custody.extOracleAccount : custody.intOracleAccount,
7039
- custodyTokenAccount: custody.tokenAccount,
7040
6605
  eventAuthority: this.eventAuthority.publicKey,
7041
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7042
6606
  program: this.programId,
7043
6607
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
7044
6608
  })
@@ -7049,9 +6613,9 @@ var PerpetualsClient = (function () {
7049
6613
  instructions.push(inx);
7050
6614
  return [3, 4];
7051
6615
  case 3:
7052
- err_47 = _b.sent();
7053
- console.error("perpClient Swap error:: ", err_47);
7054
- throw err_47;
6616
+ err_41 = _b.sent();
6617
+ console.error("perpClient Swap error:: ", err_41);
6618
+ throw err_41;
7055
6619
  case 4: return [2, {
7056
6620
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7057
6621
  additionalSigners: additionalSigners
@@ -7060,7 +6624,7 @@ var PerpetualsClient = (function () {
7060
6624
  });
7061
6625
  }); };
7062
6626
  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;
6627
+ var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_42;
7064
6628
  return __generator(this, function (_d) {
7065
6629
  switch (_d.label) {
7066
6630
  case 0:
@@ -7108,9 +6672,9 @@ var PerpetualsClient = (function () {
7108
6672
  instructions.push(setLpTokenPriceInstruction);
7109
6673
  return [3, 4];
7110
6674
  case 3:
7111
- err_48 = _d.sent();
7112
- console.log("perpClient setLpTokenPriceInstruction error:: ", err_48);
7113
- throw err_48;
6675
+ err_42 = _d.sent();
6676
+ console.log("perpClient setLpTokenPriceInstruction error:: ", err_42);
6677
+ throw err_42;
7114
6678
  case 4: return [2, {
7115
6679
  instructions: __spreadArray([], instructions, true),
7116
6680
  additionalSigners: additionalSigners
@@ -7158,7 +6722,7 @@ var PerpetualsClient = (function () {
7158
6722
  });
7159
6723
  }); };
7160
6724
  this.setAdminSigners = function (admins, minSignatures) { return __awaiter(_this, void 0, void 0, function () {
7161
- var adminMetas, _i, admins_2, admin, err_49;
6725
+ var adminMetas, _i, admins_2, admin, err_43;
7162
6726
  return __generator(this, function (_a) {
7163
6727
  switch (_a.label) {
7164
6728
  case 0:
@@ -7188,16 +6752,16 @@ var PerpetualsClient = (function () {
7188
6752
  _a.sent();
7189
6753
  return [3, 4];
7190
6754
  case 3:
7191
- err_49 = _a.sent();
6755
+ err_43 = _a.sent();
7192
6756
  if (this.printErrors) {
7193
- console.error("setAdminSigners err:", err_49);
6757
+ console.error("setAdminSigners err:", err_43);
7194
6758
  }
7195
- throw err_49;
6759
+ throw err_43;
7196
6760
  case 4: return [2];
7197
6761
  }
7198
6762
  });
7199
6763
  }); };
7200
- this.addPool = function (name, maxAumUsd, permissions, metadataSymbol, metadataTitle, metadataUri, stakingFeeShareBps, vpVolumeFactor) { return __awaiter(_this, void 0, void 0, function () {
6764
+ this.addPool = function (name, maxAumUsd, permissions, metadataSymbol, metadataTitle, metadataUri, stakingFeeShareBps, vpVolumeFactor, stakingFeeBoostBps, minLpPriceUsd, maxLpPriceUsd, thresholdUsd) { return __awaiter(_this, void 0, void 0, function () {
7201
6765
  return __generator(this, function (_a) {
7202
6766
  switch (_a.label) {
7203
6767
  case 0: return [4, this.program.methods
@@ -7209,7 +6773,11 @@ var PerpetualsClient = (function () {
7209
6773
  metadataTitle: metadataTitle,
7210
6774
  metadataUri: metadataUri,
7211
6775
  stakingFeeShareBps: stakingFeeShareBps,
7212
- vpVolumeFactor: vpVolumeFactor
6776
+ vpVolumeFactor: vpVolumeFactor,
6777
+ stakingFeeBoostBps: stakingFeeBoostBps,
6778
+ minLpPriceUsd: minLpPriceUsd,
6779
+ maxLpPriceUsd: maxLpPriceUsd,
6780
+ thresholdUsd: thresholdUsd
7213
6781
  })
7214
6782
  .accounts({
7215
6783
  admin: this.provider.wallet.publicKey,
@@ -7257,7 +6825,7 @@ var PerpetualsClient = (function () {
7257
6825
  }
7258
6826
  });
7259
6827
  }); };
7260
- this.addCustody = function (poolName, tokenMint, isToken222, isStable, isVirtual, oracle, pricing, permissions, fees, borrowRate, ratios, depegAdjustment) { return __awaiter(_this, void 0, void 0, function () {
6828
+ 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
6829
  var trx_id, error_3;
7262
6830
  return __generator(this, function (_a) {
7263
6831
  switch (_a.label) {
@@ -7275,6 +6843,9 @@ var PerpetualsClient = (function () {
7275
6843
  fees: fees,
7276
6844
  borrowRate: borrowRate,
7277
6845
  ratios: ratios,
6846
+ rewardThreshold: rewardThreshold,
6847
+ minReserveUsd: minReserveUsd,
6848
+ limitPriceBufferBps: limitPriceBufferBps
7278
6849
  })
7279
6850
  .accounts({
7280
6851
  admin: this.admin,
@@ -7381,7 +6952,7 @@ var PerpetualsClient = (function () {
7381
6952
  });
7382
6953
  }); };
7383
6954
  this.protocolWithdrawFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7384
- var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_50;
6955
+ var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_44;
7385
6956
  return __generator(this, function (_a) {
7386
6957
  switch (_a.label) {
7387
6958
  case 0:
@@ -7414,9 +6985,9 @@ var PerpetualsClient = (function () {
7414
6985
  instructions.push(withdrawFeesIx);
7415
6986
  return [3, 5];
7416
6987
  case 4:
7417
- err_50 = _a.sent();
7418
- console.log("perpClient setPool error:: ", err_50);
7419
- throw err_50;
6988
+ err_44 = _a.sent();
6989
+ console.log("perpClient setPool error:: ", err_44);
6990
+ throw err_44;
7420
6991
  case 5: return [2, {
7421
6992
  instructions: __spreadArray([], instructions, true),
7422
6993
  additionalSigners: additionalSigners
@@ -7425,7 +6996,7 @@ var PerpetualsClient = (function () {
7425
6996
  });
7426
6997
  }); };
7427
6998
  this.moveProtocolFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7428
- var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_51;
6999
+ var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_45;
7429
7000
  return __generator(this, function (_a) {
7430
7001
  switch (_a.label) {
7431
7002
  case 0:
@@ -7459,9 +7030,9 @@ var PerpetualsClient = (function () {
7459
7030
  instructions.push(moveProtocolFeesIx);
7460
7031
  return [3, 4];
7461
7032
  case 3:
7462
- err_51 = _a.sent();
7463
- console.log("perpClient setPool error:: ", err_51);
7464
- throw err_51;
7033
+ err_45 = _a.sent();
7034
+ console.log("perpClient setPool error:: ", err_45);
7035
+ throw err_45;
7465
7036
  case 4: return [2, {
7466
7037
  instructions: __spreadArray([], instructions, true),
7467
7038
  additionalSigners: additionalSigners
@@ -7470,7 +7041,7 @@ var PerpetualsClient = (function () {
7470
7041
  });
7471
7042
  }); };
7472
7043
  this.setProtocolFeeShareBps = function (feeShareBps, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7473
- var publicKey, setProtocolFeeShareBpsIx, err_52;
7044
+ var publicKey, setProtocolFeeShareBpsIx, err_46;
7474
7045
  return __generator(this, function (_a) {
7475
7046
  switch (_a.label) {
7476
7047
  case 0:
@@ -7490,15 +7061,15 @@ var PerpetualsClient = (function () {
7490
7061
  setProtocolFeeShareBpsIx = _a.sent();
7491
7062
  return [2, setProtocolFeeShareBpsIx];
7492
7063
  case 2:
7493
- err_52 = _a.sent();
7494
- console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_52);
7495
- throw err_52;
7064
+ err_46 = _a.sent();
7065
+ console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_46);
7066
+ throw err_46;
7496
7067
  case 3: return [2];
7497
7068
  }
7498
7069
  });
7499
7070
  }); };
7500
7071
  this.setPermissions = function (permissions) { return __awaiter(_this, void 0, void 0, function () {
7501
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_53;
7072
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_47;
7502
7073
  return __generator(this, function (_a) {
7503
7074
  switch (_a.label) {
7504
7075
  case 0:
@@ -7525,9 +7096,9 @@ var PerpetualsClient = (function () {
7525
7096
  instructions.push(setPermissionsInstruction);
7526
7097
  return [3, 4];
7527
7098
  case 3:
7528
- err_53 = _a.sent();
7529
- console.log("perpClient setPool error:: ", err_53);
7530
- throw err_53;
7099
+ err_47 = _a.sent();
7100
+ console.log("perpClient setPool error:: ", err_47);
7101
+ throw err_47;
7531
7102
  case 4: return [2, {
7532
7103
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7533
7104
  additionalSigners: additionalSigners
@@ -7536,7 +7107,7 @@ var PerpetualsClient = (function () {
7536
7107
  });
7537
7108
  }); };
7538
7109
  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;
7110
+ var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_48;
7540
7111
  var _f;
7541
7112
  return __generator(this, function (_g) {
7542
7113
  switch (_g.label) {
@@ -7597,9 +7168,9 @@ var PerpetualsClient = (function () {
7597
7168
  instructions.push(reimburse);
7598
7169
  return [3, 5];
7599
7170
  case 4:
7600
- err_54 = _g.sent();
7601
- console.log("perpClient setPool error:: ", err_54);
7602
- throw err_54;
7171
+ err_48 = _g.sent();
7172
+ console.log("perpClient setPool error:: ", err_48);
7173
+ throw err_48;
7603
7174
  case 5: return [2, {
7604
7175
  instructions: __spreadArray([], instructions, true),
7605
7176
  additionalSigners: additionalSigners
@@ -7608,7 +7179,7 @@ var PerpetualsClient = (function () {
7608
7179
  });
7609
7180
  }); };
7610
7181
  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;
7182
+ var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_49;
7612
7183
  return __generator(this, function (_a) {
7613
7184
  switch (_a.label) {
7614
7185
  case 0:
@@ -7642,9 +7213,9 @@ var PerpetualsClient = (function () {
7642
7213
  instructions.push(setInternalOraclePrice);
7643
7214
  return [3, 4];
7644
7215
  case 3:
7645
- err_55 = _a.sent();
7646
- console.log("perpClient setInternalOracleAccount error:: ", err_55);
7647
- throw err_55;
7216
+ err_49 = _a.sent();
7217
+ console.log("perpClient setInternalOracleAccount error:: ", err_49);
7218
+ throw err_49;
7648
7219
  case 4: return [2, {
7649
7220
  instructions: __spreadArray([], instructions, true),
7650
7221
  additionalSigners: additionalSigners
@@ -7653,7 +7224,7 @@ var PerpetualsClient = (function () {
7653
7224
  });
7654
7225
  }); };
7655
7226
  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;
7227
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_50;
7657
7228
  return __generator(this, function (_a) {
7658
7229
  switch (_a.label) {
7659
7230
  case 0:
@@ -7699,9 +7270,9 @@ var PerpetualsClient = (function () {
7699
7270
  instructions.push(setInternalOraclePrice);
7700
7271
  return [3, 4];
7701
7272
  case 3:
7702
- err_56 = _a.sent();
7703
- console.log("perpClient setInternalOracleAccount error:: ", err_56);
7704
- throw err_56;
7273
+ err_50 = _a.sent();
7274
+ console.log("perpClient setInternalOracleAccount error:: ", err_50);
7275
+ throw err_50;
7705
7276
  case 4: return [2, {
7706
7277
  instructions: __spreadArray([], instructions, true),
7707
7278
  additionalSigners: additionalSigners
@@ -7710,7 +7281,7 @@ var PerpetualsClient = (function () {
7710
7281
  });
7711
7282
  }); };
7712
7283
  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;
7284
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_51;
7714
7285
  return __generator(this, function (_a) {
7715
7286
  switch (_a.label) {
7716
7287
  case 0:
@@ -7750,9 +7321,9 @@ var PerpetualsClient = (function () {
7750
7321
  instructions.push(setInternalOraclePrice);
7751
7322
  return [3, 4];
7752
7323
  case 3:
7753
- err_57 = _a.sent();
7754
- console.log("perpClient setInternalOracleAccount error:: ", err_57);
7755
- throw err_57;
7324
+ err_51 = _a.sent();
7325
+ console.log("perpClient setInternalOracleAccount error:: ", err_51);
7326
+ throw err_51;
7756
7327
  case 4: return [2, {
7757
7328
  instructions: __spreadArray([], instructions, true),
7758
7329
  additionalSigners: additionalSigners
@@ -7761,7 +7332,7 @@ var PerpetualsClient = (function () {
7761
7332
  });
7762
7333
  }); };
7763
7334
  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;
7335
+ var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_52;
7765
7336
  return __generator(this, function (_a) {
7766
7337
  switch (_a.label) {
7767
7338
  case 0:
@@ -7799,8 +7370,8 @@ var PerpetualsClient = (function () {
7799
7370
  instructions.push(renameFlp);
7800
7371
  return [3, 4];
7801
7372
  case 3:
7802
- err_58 = _a.sent();
7803
- console.log("perpClient renameFlp error:: ", err_58);
7373
+ err_52 = _a.sent();
7374
+ console.log("perpClient renameFlp error:: ", err_52);
7804
7375
  return [3, 4];
7805
7376
  case 4: return [2, {
7806
7377
  instructions: __spreadArray([], instructions, true),
@@ -7810,7 +7381,7 @@ var PerpetualsClient = (function () {
7810
7381
  });
7811
7382
  }); };
7812
7383
  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;
7384
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_53;
7814
7385
  return __generator(this, function (_a) {
7815
7386
  switch (_a.label) {
7816
7387
  case 0:
@@ -7848,9 +7419,9 @@ var PerpetualsClient = (function () {
7848
7419
  instructions.push(initStakeInstruction);
7849
7420
  return [3, 4];
7850
7421
  case 3:
7851
- err_59 = _a.sent();
7852
- console.log("perpClient InitStaking error:: ", err_59);
7853
- throw err_59;
7422
+ err_53 = _a.sent();
7423
+ console.log("perpClient InitStaking error:: ", err_53);
7424
+ throw err_53;
7854
7425
  case 4: return [2, {
7855
7426
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7856
7427
  additionalSigners: additionalSigners
@@ -7859,7 +7430,7 @@ var PerpetualsClient = (function () {
7859
7430
  });
7860
7431
  }); };
7861
7432
  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;
7433
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_54;
7863
7434
  return __generator(this, function (_a) {
7864
7435
  switch (_a.label) {
7865
7436
  case 0:
@@ -7888,7 +7459,6 @@ var PerpetualsClient = (function () {
7888
7459
  transferAuthority: poolConfig.transferAuthority,
7889
7460
  perpetuals: this.perpetuals.publicKey,
7890
7461
  pool: poolConfig.poolAddress,
7891
- custody: rewardCustodyConfig.custodyAccount,
7892
7462
  lpTokenMint: poolConfig.stakedLpTokenMint,
7893
7463
  compoundingVault: compoundingVault,
7894
7464
  compoundingTokenMint: compoundingTokenMint,
@@ -7904,9 +7474,9 @@ var PerpetualsClient = (function () {
7904
7474
  instructions.push(initCompoundingInstruction);
7905
7475
  return [3, 4];
7906
7476
  case 3:
7907
- err_60 = _a.sent();
7908
- console.log("perpClient initCompounding error:: ", err_60);
7909
- throw err_60;
7477
+ err_54 = _a.sent();
7478
+ console.log("perpClient initCompounding error:: ", err_54);
7479
+ throw err_54;
7910
7480
  case 4: return [2, {
7911
7481
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7912
7482
  additionalSigners: additionalSigners
@@ -7915,7 +7485,7 @@ var PerpetualsClient = (function () {
7915
7485
  });
7916
7486
  }); };
7917
7487
  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;
7488
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_55;
7919
7489
  return __generator(this, function (_a) {
7920
7490
  switch (_a.label) {
7921
7491
  case 0:
@@ -7956,9 +7526,9 @@ var PerpetualsClient = (function () {
7956
7526
  instructions.push(initTokenVaultInstruction);
7957
7527
  return [3, 4];
7958
7528
  case 3:
7959
- err_61 = _a.sent();
7960
- console.log("perpClient InitTokenVaultInstruction error:: ", err_61);
7961
- throw err_61;
7529
+ err_55 = _a.sent();
7530
+ console.log("perpClient InitTokenVaultInstruction error:: ", err_55);
7531
+ throw err_55;
7962
7532
  case 4: return [2, {
7963
7533
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7964
7534
  additionalSigners: additionalSigners
@@ -7967,7 +7537,7 @@ var PerpetualsClient = (function () {
7967
7537
  });
7968
7538
  }); };
7969
7539
  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;
7540
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_56;
7971
7541
  return __generator(this, function (_a) {
7972
7542
  switch (_a.label) {
7973
7543
  case 0:
@@ -7998,9 +7568,9 @@ var PerpetualsClient = (function () {
7998
7568
  instructions.push(setTokenVaultConfigInstruction);
7999
7569
  return [3, 4];
8000
7570
  case 3:
8001
- err_62 = _a.sent();
8002
- console.log("perpClient setTokenVaultConfigInstruction error:: ", err_62);
8003
- throw err_62;
7571
+ err_56 = _a.sent();
7572
+ console.log("perpClient setTokenVaultConfigInstruction error:: ", err_56);
7573
+ throw err_56;
8004
7574
  case 4: return [2, {
8005
7575
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8006
7576
  additionalSigners: additionalSigners
@@ -8009,7 +7579,7 @@ var PerpetualsClient = (function () {
8009
7579
  });
8010
7580
  }); };
8011
7581
  this.withdrawInstantFee = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8012
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_63;
7582
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_57;
8013
7583
  return __generator(this, function (_a) {
8014
7584
  switch (_a.label) {
8015
7585
  case 0:
@@ -8048,9 +7618,59 @@ var PerpetualsClient = (function () {
8048
7618
  instructions.push(withdrawInstantFeeInstruction);
8049
7619
  return [3, 6];
8050
7620
  case 5:
8051
- err_63 = _a.sent();
8052
- console.log("perpClient withdrawInstantFeeInstruction error:: ", err_63);
8053
- throw err_63;
7621
+ err_57 = _a.sent();
7622
+ console.log("perpClient withdrawInstantFeeInstruction error:: ", err_57);
7623
+ throw err_57;
7624
+ case 6: return [2, {
7625
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7626
+ additionalSigners: additionalSigners
7627
+ }];
7628
+ }
7629
+ });
7630
+ }); };
7631
+ this.withdrawUnclaimedTokens = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7632
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawUnclaimedTokensInstruction, err_58;
7633
+ return __generator(this, function (_a) {
7634
+ switch (_a.label) {
7635
+ case 0:
7636
+ publicKey = this.provider.wallet.publicKey;
7637
+ preInstructions = [];
7638
+ instructions = [];
7639
+ postInstructions = [];
7640
+ additionalSigners = [];
7641
+ _a.label = 1;
7642
+ case 1:
7643
+ _a.trys.push([1, 5, , 6]);
7644
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, publicKey, true)];
7645
+ case 2:
7646
+ receivingTokenAccount = _a.sent();
7647
+ return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
7648
+ case 3:
7649
+ if (!(_a.sent())) {
7650
+ preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, poolConfig.tokenMint));
7651
+ }
7652
+ return [4, this.program.methods
7653
+ .withdrawUnclaimedTokens({})
7654
+ .accounts({
7655
+ admin: publicKey,
7656
+ multisig: this.multisig.publicKey,
7657
+ perpetuals: this.perpetuals.publicKey,
7658
+ transferAuthority: poolConfig.transferAuthority,
7659
+ tokenVault: poolConfig.tokenVault,
7660
+ tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
7661
+ receivingTokenAccount: receivingTokenAccount,
7662
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7663
+ receivingTokenMint: poolConfig.tokenMint,
7664
+ })
7665
+ .instruction()];
7666
+ case 4:
7667
+ withdrawUnclaimedTokensInstruction = _a.sent();
7668
+ instructions.push(withdrawUnclaimedTokensInstruction);
7669
+ return [3, 6];
7670
+ case 5:
7671
+ err_58 = _a.sent();
7672
+ console.log("perpClient withdrawUnclaimedTokensInstruction error:: ", err_58);
7673
+ throw err_58;
8054
7674
  case 6: return [2, {
8055
7675
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8056
7676
  additionalSigners: additionalSigners
@@ -8059,7 +7679,7 @@ var PerpetualsClient = (function () {
8059
7679
  });
8060
7680
  }); };
8061
7681
  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;
7682
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_59;
8063
7683
  return __generator(this, function (_a) {
8064
7684
  switch (_a.label) {
8065
7685
  case 0:
@@ -8096,9 +7716,55 @@ var PerpetualsClient = (function () {
8096
7716
  instructions.push(initRevenueTokenAccountInstruction);
8097
7717
  return [3, 4];
8098
7718
  case 3:
8099
- err_64 = _a.sent();
8100
- console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_64);
8101
- throw err_64;
7719
+ err_59 = _a.sent();
7720
+ console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_59);
7721
+ throw err_59;
7722
+ case 4: return [2, {
7723
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7724
+ additionalSigners: additionalSigners
7725
+ }];
7726
+ }
7727
+ });
7728
+ }); };
7729
+ this.initRebateVault = function (allowRebatePayout, rebateSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7730
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateCustodyMint, initRebateVaultInstruction, err_60;
7731
+ return __generator(this, function (_a) {
7732
+ switch (_a.label) {
7733
+ case 0:
7734
+ publicKey = this.provider.wallet.publicKey;
7735
+ preInstructions = [];
7736
+ instructions = [];
7737
+ postInstructions = [];
7738
+ additionalSigners = [];
7739
+ _a.label = 1;
7740
+ case 1:
7741
+ _a.trys.push([1, 3, , 4]);
7742
+ rebateCustodyMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
7743
+ return [4, this.program.methods
7744
+ .initRebateVault({
7745
+ allowRebatePayout: allowRebatePayout
7746
+ })
7747
+ .accounts({
7748
+ admin: publicKey,
7749
+ multisig: this.multisig.publicKey,
7750
+ transferAuthority: poolConfig.transferAuthority,
7751
+ perpetuals: this.perpetuals.publicKey,
7752
+ rebateMint: rebateCustodyMint,
7753
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
7754
+ rebateVault: poolConfig.rebateVault,
7755
+ systemProgram: web3_js_1.SystemProgram.programId,
7756
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7757
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY
7758
+ })
7759
+ .instruction()];
7760
+ case 2:
7761
+ initRebateVaultInstruction = _a.sent();
7762
+ instructions.push(initRebateVaultInstruction);
7763
+ return [3, 4];
7764
+ case 3:
7765
+ err_60 = _a.sent();
7766
+ console.log("perpClient initRebateVaultInstruction error:: ", err_60);
7767
+ throw err_60;
8102
7768
  case 4: return [2, {
8103
7769
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8104
7770
  additionalSigners: additionalSigners
@@ -8107,7 +7773,7 @@ var PerpetualsClient = (function () {
8107
7773
  });
8108
7774
  }); };
8109
7775
  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;
7776
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_61;
8111
7777
  return __generator(this, function (_a) {
8112
7778
  switch (_a.label) {
8113
7779
  case 0:
@@ -8146,9 +7812,9 @@ var PerpetualsClient = (function () {
8146
7812
  instructions.push(distributeTokenRewardInstruction);
8147
7813
  return [3, 4];
8148
7814
  case 3:
8149
- err_65 = _a.sent();
8150
- console.log("perpClient distributeTokenRewardInstruction error:: ", err_65);
8151
- throw err_65;
7815
+ err_61 = _a.sent();
7816
+ console.log("perpClient distributeTokenRewardInstruction error:: ", err_61);
7817
+ throw err_61;
8152
7818
  case 4: return [2, {
8153
7819
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8154
7820
  additionalSigners: additionalSigners
@@ -8157,7 +7823,7 @@ var PerpetualsClient = (function () {
8157
7823
  });
8158
7824
  }); };
8159
7825
  this.setTokenStakeLevel = function (owner, stakeLevel) { return __awaiter(_this, void 0, void 0, function () {
8160
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_66;
7826
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_62;
8161
7827
  return __generator(this, function (_a) {
8162
7828
  switch (_a.label) {
8163
7829
  case 0:
@@ -8185,9 +7851,9 @@ var PerpetualsClient = (function () {
8185
7851
  instructions.push(setTokenStakeLevelInstruction);
8186
7852
  return [3, 4];
8187
7853
  case 3:
8188
- err_66 = _a.sent();
8189
- console.log("perpClient setTokenStakeLevelInstruction error:: ", err_66);
8190
- throw err_66;
7854
+ err_62 = _a.sent();
7855
+ console.log("perpClient setTokenStakeLevelInstruction error:: ", err_62);
7856
+ throw err_62;
8191
7857
  case 4: return [2, {
8192
7858
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8193
7859
  additionalSigners: additionalSigners
@@ -8196,7 +7862,7 @@ var PerpetualsClient = (function () {
8196
7862
  });
8197
7863
  }); };
8198
7864
  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;
7865
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_63;
8200
7866
  return __generator(this, function (_a) {
8201
7867
  switch (_a.label) {
8202
7868
  case 0:
@@ -8228,9 +7894,9 @@ var PerpetualsClient = (function () {
8228
7894
  instructions.push(setTokenRewardInstruction);
8229
7895
  return [3, 4];
8230
7896
  case 3:
8231
- err_67 = _a.sent();
8232
- console.log("perpClient setTokenRewardInstruction error:: ", err_67);
8233
- throw err_67;
7897
+ err_63 = _a.sent();
7898
+ console.log("perpClient setTokenRewardInstruction error:: ", err_63);
7899
+ throw err_63;
8234
7900
  case 4: return [2, {
8235
7901
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8236
7902
  additionalSigners: additionalSigners
@@ -8239,7 +7905,7 @@ var PerpetualsClient = (function () {
8239
7905
  });
8240
7906
  }); };
8241
7907
  this.resizeInternalOracle = function (extOracle, tokenMint, intOracleAccount) { return __awaiter(_this, void 0, void 0, function () {
8242
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_68;
7908
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_64;
8243
7909
  return __generator(this, function (_a) {
8244
7910
  switch (_a.label) {
8245
7911
  case 0:
@@ -8268,9 +7934,9 @@ var PerpetualsClient = (function () {
8268
7934
  instructions.push(resizeInternalOracleInstruction);
8269
7935
  return [3, 4];
8270
7936
  case 3:
8271
- err_68 = _a.sent();
8272
- console.log("perpClient resizeInternalOracleInstruction error:: ", err_68);
8273
- throw err_68;
7937
+ err_64 = _a.sent();
7938
+ console.log("perpClient resizeInternalOracleInstruction error:: ", err_64);
7939
+ throw err_64;
8274
7940
  case 4: return [2, {
8275
7941
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8276
7942
  additionalSigners: additionalSigners