flash-sdk 9.0.0 → 9.0.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -638,24 +638,41 @@ var PerpetualsClient = (function () {
638
638
  var averageEntryPrice = totalValue.div(totalSize);
639
639
  return averageEntryPrice;
640
640
  };
641
- this.getLeverageSync = function (sizeUsd, collateralAmount, collateralMinOraclePrice, collateralTokenDecimals, pnlUsd) {
642
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenDecimals);
643
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd);
644
- if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
645
- return sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentCollateralUsdIncludingPnl);
641
+ this.getLeverageContractHelper = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
642
+ var pnl = _this.getPnlSync(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
643
+ var exitFee = _this.getExitFeeSync(positionAccount, targetCustodyAccount, collateralCustodyAccount, collateralPrice, collateralEmaPrice);
644
+ var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
645
+ var unsettledFeesUsd = exitFee.exitFeeUsd.add(lockFeeUsd);
646
+ var lossUsd = pnl.lossUsd.add(unsettledFeesUsd);
647
+ var currentMarginUsd = constants_1.BN_ZERO;
648
+ if (isInitial) {
649
+ currentMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
650
+ }
651
+ else {
652
+ currentMarginUsd = positionAccount.collateralUsd.add(pnl.profitUsd).sub(lossUsd);
653
+ }
654
+ if (currentMarginUsd.gt(constants_1.BN_ZERO)) {
655
+ return positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentMarginUsd);
646
656
  }
647
657
  else {
648
658
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
649
659
  }
650
660
  };
651
- this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap, pnlUsd) {
661
+ this.getLeverageSync = function (positionAccount, finalCollateralUsd, finalSizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig) {
662
+ positionAccount = positionAccount.clone();
663
+ positionAccount.sizeUsd = finalSizeUsd;
664
+ positionAccount.sizeAmount = targetPrice.getTokenAmount(finalSizeUsd, targetCustodyAccount.decimals);
665
+ positionAccount.collateralUsd = finalCollateralUsd;
666
+ return _this.getLeverageContractHelper(positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, isInitial, poolConfig);
667
+ };
668
+ this.getLeverageAtAmountEntryWithSwapSync = function (positionAccount, inputDeltaAmount, sizeDeltaAmount, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, pnlUsd) {
652
669
  var finalCollateralAmount = constants_1.BN_ZERO;
653
670
  if (!inputDeltaAmount.isZero()) {
654
671
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
655
672
  finalCollateralAmount = inputDeltaAmount;
656
673
  }
657
674
  else {
658
- var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
675
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(inputDeltaAmount, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
659
676
  finalCollateralAmount = swapAmountOut;
660
677
  }
661
678
  }
@@ -681,9 +698,8 @@ var PerpetualsClient = (function () {
681
698
  entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
682
699
  }
683
700
  var collateralMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
684
- var collateralAmount = positionAccount.collateralAmount.add(finalCollateralAmount);
685
- var currentCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(collateralAmount, collateralTokenCustodyAccount.decimals);
686
- var currentCollateralUsdIncludingPnl = currentCollateralUsd.add(pnlUsd).sub(openFeeUsd);
701
+ var finalCollateralUsd = collateralMinOraclePrice.getAssetAmountUsd(finalCollateralAmount, collateralTokenCustodyAccount.decimals);
702
+ var currentCollateralUsdIncludingPnl = finalCollateralUsd.add(pnlUsd).sub(openFeeUsd);
687
703
  var sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
688
704
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
689
705
  if (currentCollateralUsdIncludingPnl.gt(constants_1.BN_ZERO)) {
@@ -693,68 +709,6 @@ var PerpetualsClient = (function () {
693
709
  return new anchor_1.BN(Number.MAX_SAFE_INTEGER);
694
710
  }
695
711
  };
696
- this.getEntryPriceAndFeeSync = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps) {
697
- if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
698
- if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
699
- throw new Error("Delta Amounts cannot be negative.");
700
- }
701
- var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
702
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
703
- if (positionAccount === null) {
704
- var data = __assign({}, types_1.DEFAULT_POSITION);
705
- positionAccount = PositionAccount_1.PositionAccount.from(web3_js_1.PublicKey.default, data);
706
- var sizeUsd_1 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
707
- positionAccount.sizeUsd = sizeUsd_1;
708
- positionAccount.sizeDecimals = targetCustodyAccount.decimals;
709
- positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
710
- positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
711
- }
712
- else {
713
- positionAccount = positionAccount.clone();
714
- var positionEntryPrice = OraclePrice_1.OraclePrice.from({
715
- price: positionAccount.entryPrice.price,
716
- exponent: new anchor_1.BN(positionAccount.entryPrice.exponent),
717
- confidence: constants_1.BN_ZERO,
718
- timestamp: constants_1.BN_ZERO
719
- });
720
- entryOraclePrice.price = _this.getAveragePriceSync(positionEntryPrice.price, positionAccount.sizeAmount, entryOraclePrice.price, sizeDeltaAmount);
721
- var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
722
- positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
723
- }
724
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
725
- positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
726
- var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
727
- var liquidationPrice = _this.getLiquidationPriceSync(positionAccount.collateralAmount, positionAccount.sizeAmount, entryOraclePrice, lockFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
728
- var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
729
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
730
- var feeUsd = constants_1.BN_ZERO;
731
- var feeAmount = constants_1.BN_ZERO;
732
- var feeUsdAfterDiscount = constants_1.BN_ZERO;
733
- var feeAmountAfterDiscount = constants_1.BN_ZERO;
734
- if (positionAccount !== null && sizeDeltaAmount.isZero()) {
735
- }
736
- else {
737
- feeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.openPosition).div(new anchor_1.BN(constants_1.RATE_POWER));
738
- feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
739
- if (discountBps.gt(constants_1.BN_ZERO)) {
740
- feeUsdAfterDiscount = feeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
741
- feeUsdAfterDiscount = feeUsd.sub(feeUsdAfterDiscount);
742
- feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
743
- }
744
- else {
745
- feeUsdAfterDiscount = feeUsd;
746
- feeAmountAfterDiscount = feeAmount;
747
- }
748
- }
749
- return {
750
- entryOraclePrice: entryOraclePrice,
751
- feeUsd: feeUsd,
752
- feeAmount: feeAmount,
753
- feeUsdAfterDiscount: feeUsdAfterDiscount,
754
- feeAmountAfterDiscount: feeAmountAfterDiscount,
755
- liquidationPrice: liquidationPrice
756
- };
757
- };
758
712
  this.getEntryPriceAndFeeSyncV2 = function (positionAccount, marketCorrelation, collateralDeltaAmount, sizeDeltaAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, discountBps, enableLogs) {
759
713
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
760
714
  if (enableLogs === void 0) { enableLogs = false; }
@@ -766,8 +720,8 @@ var PerpetualsClient = (function () {
766
720
  if (positionAccount === null) {
767
721
  var data = __assign({}, types_1.DEFAULT_POSITION);
768
722
  positionAccount = PositionAccount_1.PositionAccount.from(web3_js_1.PublicKey.default, data);
769
- var sizeUsd_2 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
770
- positionAccount.sizeUsd = sizeUsd_2;
723
+ var sizeUsd_1 = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
724
+ positionAccount.sizeUsd = sizeUsd_1;
771
725
  positionAccount.sizeDecimals = targetCustodyAccount.decimals;
772
726
  positionAccount.collateralDecimals = collateralCustodyAccount.decimals;
773
727
  positionAccount.lockedDecimals = collateralCustodyAccount.decimals;
@@ -784,12 +738,13 @@ var PerpetualsClient = (function () {
784
738
  var sizeDeltaUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
785
739
  positionAccount.sizeUsd = positionAccount.sizeUsd.add(sizeDeltaUsd);
786
740
  }
787
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
741
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
742
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
743
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
788
744
  positionAccount.sizeAmount = positionAccount.sizeAmount.add(sizeDeltaAmount);
789
- var lockFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
790
- var liquidationPrice = _this.getLiquidationPriceSync(positionAccount.collateralAmount, positionAccount.sizeAmount, entryOraclePrice, lockFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
745
+ var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
746
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
791
747
  var sizeAmountUsd = entryOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
792
- var collateralTokenMinOraclePrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
793
748
  var feeUsd = constants_1.BN_ZERO;
794
749
  var feeAmount = constants_1.BN_ZERO;
795
750
  var feeUsdAfterDiscount = constants_1.BN_ZERO;
@@ -798,11 +753,11 @@ var PerpetualsClient = (function () {
798
753
  }
799
754
  else {
800
755
  feeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.openPosition).div(new anchor_1.BN(constants_1.RATE_POWER));
801
- feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
756
+ feeAmount = feeUsd.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
802
757
  if (discountBps.gt(constants_1.BN_ZERO)) {
803
758
  feeUsdAfterDiscount = feeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
804
759
  feeUsdAfterDiscount = feeUsd.sub(feeUsdAfterDiscount);
805
- feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralTokenMinOraclePrice.price);
760
+ feeAmountAfterDiscount = feeUsdAfterDiscount.mul(new anchor_1.BN(Math.pow(10, collateralCustodyAccount.decimals))).div(collateralMinMaxPrice.min.price);
806
761
  }
807
762
  else {
808
763
  feeUsdAfterDiscount = feeUsd;
@@ -861,25 +816,26 @@ var PerpetualsClient = (function () {
861
816
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
862
817
  throw new Error("Delta Amounts cannot be negative ");
863
818
  }
864
- resultingPositionAccount.collateralAmount = resultingPositionAccount.collateralAmount.sub(collateralDeltaAmount);
865
- resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
866
819
  if (resultingPositionAccount.collateralAmount.isNeg() || resultingPositionAccount.sizeAmount.isNeg()) {
867
820
  throw new Error("cannot remove/close more than collateral/Size");
868
821
  }
869
822
  var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
870
823
  var exitOraclePrice = _this.getExitOraclePriceSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
871
- var _a = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount), collateralTokenMinOraclePrice = _a.min, collateralTokenMaxOraclePrice = _a.max;
824
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
825
+ var collateralDeltaUsd = collateralMinMaxPrice.min.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
826
+ resultingPositionAccount.collateralUsd = resultingPositionAccount.collateralUsd.sub(collateralDeltaUsd);
827
+ resultingPositionAccount.sizeAmount = resultingPositionAccount.sizeAmount.sub(sizeDeltaAmount);
872
828
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(resultingPositionAccount, collateralCustodyAccount, currentTimestamp);
873
- var lockAndUnsettledFee = collateralTokenMinOraclePrice.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
829
+ var lockAndUnsettledFee = collateralMinMaxPrice.min.getTokenAmount(lockAndUnsettledFeeUsd, collateralCustodyAccount.decimals);
874
830
  var sizeAmountUsd = exitOraclePrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
875
831
  var exitFeeUsd = sizeAmountUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
876
- var exitFeeAmount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
832
+ var exitFeeAmount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsd, collateralCustodyAccount.decimals);
877
833
  var exitFeeUsdAfterDiscount = constants_1.BN_ZERO;
878
834
  var exitFeeAmountAfterDiscount = constants_1.BN_ZERO;
879
835
  if (discountBps.gt(constants_1.BN_ZERO)) {
880
836
  exitFeeUsdAfterDiscount = exitFeeUsd.mul(discountBps).div(new anchor_1.BN(constants_1.BPS_POWER));
881
837
  exitFeeUsdAfterDiscount = exitFeeUsd.sub(exitFeeUsdAfterDiscount);
882
- exitFeeAmountAfterDiscount = collateralTokenMaxOraclePrice.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
838
+ exitFeeAmountAfterDiscount = collateralMinMaxPrice.max.getTokenAmount(exitFeeUsdAfterDiscount, collateralCustodyAccount.decimals);
883
839
  }
884
840
  else {
885
841
  exitFeeUsdAfterDiscount = exitFeeUsd;
@@ -889,7 +845,7 @@ var PerpetualsClient = (function () {
889
845
  price: positionAccount.entryPrice.price, exponent: new anchor_1.BN(positionAccount.entryPrice.exponent), confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO
890
846
  });
891
847
  resultingPositionAccount.sizeUsd = positionEntryOraclePrice.getAssetAmountUsd(resultingPositionAccount.sizeAmount, targetCustodyAccount.decimals);
892
- var liquidationPrice = _this.getLiquidationPriceSync(resultingPositionAccount.collateralAmount, resultingPositionAccount.sizeAmount, positionEntryOraclePrice, lockAndUnsettledFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount);
848
+ var liquidationPrice = _this.getLiquidationPriceContractHelper(positionEntryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
893
849
  return {
894
850
  exitOraclePrice: exitOraclePrice,
895
851
  borrowFeeUsd: lockAndUnsettledFeeUsd,
@@ -902,13 +858,11 @@ var PerpetualsClient = (function () {
902
858
  };
903
859
  };
904
860
  this.getTradeSpread = function (targetCustodyAccount, sizeUsd) {
905
- if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero()
906
- ||
907
- sizeUsd.isZero()) {
861
+ if (targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin).isZero() || sizeUsd.isZero()) {
908
862
  return constants_1.BN_ZERO;
909
863
  }
910
864
  var slope = ((targetCustodyAccount.pricing.tradeSpreadMax.sub(targetCustodyAccount.pricing.tradeSpreadMin)).mul(new anchor_1.BN(Math.pow(10, (constants_1.RATE_DECIMALS + constants_1.BPS_DECIMALS)))))
911
- .div(targetCustodyAccount.pricing.maxPositionLockedUsd);
865
+ .div(targetCustodyAccount.pricing.maxPositionSizeUsd);
912
866
  var variable = (slope.mul(sizeUsd)).div(new anchor_1.BN(Math.pow(10, (constants_1.RATE_DECIMALS + constants_1.BPS_DECIMALS))));
913
867
  var finalSpread = targetCustodyAccount.pricing.tradeSpreadMin.add(variable);
914
868
  return finalSpread;
@@ -923,21 +877,11 @@ var PerpetualsClient = (function () {
923
877
  var exitOraclePrice = OraclePrice_1.OraclePrice.from({ price: exitPriceBN, exponent: maxPrice.exponent, confidence: maxPrice.confidence, timestamp: maxPrice.timestamp });
924
878
  return exitOraclePrice;
925
879
  };
926
- this.getExitOraclePriceWithoutSpreadSync = function (side, targetPrice, targetEmaPrice, targetCustodyAccount) {
927
- var _a = _this.getMinAndMaxOraclePriceSync(targetPrice, targetEmaPrice, targetCustodyAccount), minPrice = _a.min, maxPrice = _a.max;
928
- if ((0, types_1.isVariant)(side, 'long')) {
929
- return minPrice;
930
- }
931
- else {
932
- return maxPrice;
933
- }
934
- };
935
880
  this.getSizeAmountFromLeverageAndCollateral = function (collateralAmtWithFee, leverage, marketToken, collateralToken, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, discountBps) {
936
881
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
937
882
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount).min;
938
883
  var collateralTokenMinPriceUi = new bignumber_js_1.default(collateralTokenMinPrice.toString()).dividedBy(Math.pow(10, constants_1.USD_DECIMALS));
939
- var collateralAmtMinUsdUi = new bignumber_js_1.default(collateralAmtWithFee.toString()).dividedBy(Math.pow(10, collateralToken.decimals))
940
- .multipliedBy(collateralTokenMinPriceUi);
884
+ var collateralAmtMinUsdUi = new bignumber_js_1.default(collateralAmtWithFee.toString()).dividedBy(Math.pow(10, collateralToken.decimals)).multipliedBy(collateralTokenMinPriceUi);
941
885
  var openPosFeeRateUi = new bignumber_js_1.default(targetCustodyAccount.fees.openPosition.toString()).dividedBy(Math.pow(10, constants_1.RATE_DECIMALS));
942
886
  if (!discountBps.isZero()) {
943
887
  var discountBpsUi = new bignumber_js_1.default(discountBps.toString()).dividedBy(Math.pow(10, constants_1.BPS_DECIMALS));
@@ -945,20 +889,20 @@ var PerpetualsClient = (function () {
945
889
  }
946
890
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
947
891
  .dividedBy(new bignumber_js_1.default(1).plus((new bignumber_js_1.default(2).multipliedBy(openPosFeeRateUi)).multipliedBy(leverage)));
948
- var lockedUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toString(), constants_1.USD_DECIMALS);
949
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, lockedUsd);
892
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toString(), constants_1.USD_DECIMALS);
893
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetPrice, targetEmaPrice, targetCustodyAccount, sizeUsd);
950
894
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
951
895
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
952
896
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(marketToken.decimals, bignumber_js_1.default.ROUND_DOWN), marketToken.decimals);
953
897
  };
954
- this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap, discountBps) {
898
+ this.getSizeAmountWithSwapSync = function (amountIn, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig, discountBps) {
955
899
  if (discountBps === void 0) { discountBps = constants_1.BN_ZERO; }
956
900
  var finalCollateralAmount = constants_1.BN_ZERO;
957
901
  if (inputTokenCustodyAccount.publicKey.equals(collateralTokenCustodyAccount.publicKey)) {
958
902
  finalCollateralAmount = amountIn;
959
903
  }
960
904
  else {
961
- var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountOut;
905
+ var swapAmountOut = _this.getSwapAmountAndFeesSync(amountIn, constants_1.BN_ZERO, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountOut;
962
906
  finalCollateralAmount = swapAmountOut;
963
907
  }
964
908
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
@@ -972,8 +916,8 @@ var PerpetualsClient = (function () {
972
916
  }
973
917
  var sizeUsdUi = collateralAmtMinUsdUi.multipliedBy(leverage)
974
918
  .dividedBy(new bignumber_js_1.default(1).plus((new bignumber_js_1.default(2).multipliedBy(openPosFeeRateUi)).multipliedBy(leverage)));
975
- var lockedUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toFixed(constants_1.USD_DECIMALS), constants_1.USD_DECIMALS);
976
- var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, lockedUsd);
919
+ var sizeUsd = (0, utils_1.uiDecimalsToNative)(sizeUsdUi.toFixed(constants_1.USD_DECIMALS), constants_1.USD_DECIMALS);
920
+ var entryOraclePrice = _this.getEntryPriceUsdSync(side, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, sizeUsd);
977
921
  var entryPriceUsdUi = new bignumber_js_1.default(entryOraclePrice.toUiPrice(constants_1.ORACLE_EXPONENT));
978
922
  var sizeAmountUi = sizeUsdUi.dividedBy(entryPriceUsdUi);
979
923
  return (0, utils_1.uiDecimalsToNative)(sizeAmountUi.toFixed(targetTokenCustodyAccount.decimals, bignumber_js_1.default.ROUND_DOWN), targetTokenCustodyAccount.decimals);
@@ -996,7 +940,7 @@ var PerpetualsClient = (function () {
996
940
  var collateralAmtWithFeeUi = collateralWithFeeUsdUi.dividedBy(collateralTokenMinPriceUi);
997
941
  return (0, utils_1.uiDecimalsToNative)(collateralAmtWithFeeUi.toFixed(collateralToken.decimals, bignumber_js_1.default.ROUND_DOWN), collateralToken.decimals);
998
942
  };
999
- this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfigPosition, poolConfigSwap) {
943
+ this.getCollateralAmountWithSwapSync = function (sizeAmount, leverage, side, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount, targetTokenPrice, targetTokenEmaPrice, targetTokenCustodyAccount, swapPoolAumUsdMax, poolConfig) {
1000
944
  var collateralTokenMinPrice = _this.getMinAndMaxPriceSync(collateralTokenPrice, collateralTokenEmaPrice, collateralTokenCustodyAccount).min;
1001
945
  var collateralTokenMinPriceUi = new bignumber_js_1.default(collateralTokenMinPrice.toString()).dividedBy(Math.pow(10, constants_1.USD_DECIMALS));
1002
946
  var sizeUsd = targetTokenPrice.getAssetAmountUsd(sizeAmount, targetTokenCustodyAccount.decimals);
@@ -1013,7 +957,7 @@ var PerpetualsClient = (function () {
1013
957
  collateralInInputToken = collateralAmountWithFee;
1014
958
  }
1015
959
  else {
1016
- collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfigSwap).minAmountIn;
960
+ collateralInInputToken = _this.getSwapAmountAndFeesSync(constants_1.BN_ZERO, collateralAmountWithFee, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, swapOutTokenPrice, swapOutTokenEmaPrice, swapOutTokenCustodyAccount, swapPoolAumUsdMax, poolConfig).minAmountIn;
1017
961
  }
1018
962
  return collateralInInputToken;
1019
963
  };
@@ -1039,10 +983,10 @@ var PerpetualsClient = (function () {
1039
983
  var decimalPower = new anchor_1.BN(Math.pow(10, targetCustodyAccount.decimals));
1040
984
  var closeRatio = (positionDelta.sizeAmount.mul(decimalPower)).div(positionAccount.sizeAmount);
1041
985
  positionDelta.sizeUsd = (positionAccount.sizeUsd.mul(closeRatio)).div(decimalPower);
1042
- positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1043
986
  positionDelta.lockedAmount = (positionAccount.lockedAmount.mul(closeRatio)).div(decimalPower);
1044
987
  positionDelta.lockedUsd = (positionAccount.lockedUsd.mul(closeRatio)).div(decimalPower);
1045
- positionDelta.collateralAmount = (positionAccount.collateralAmount.mul(closeRatio)).div(decimalPower);
988
+ positionDelta.collateralUsd = (positionAccount.collateralUsd.mul(closeRatio)).div(decimalPower);
989
+ positionDelta.unsettledFeesUsd = (positionAccount.unsettledFeesUsd.mul(closeRatio)).div(decimalPower);
1046
990
  positionDelta.degenSizeUsd = positionAccount.degenSizeUsd.mul(closeRatio).div(decimalPower);
1047
991
  var newPnl = _this.getPnlSync(positionDelta, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1048
992
  var exitFeeUsd = positionDelta.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
@@ -1052,29 +996,29 @@ var PerpetualsClient = (function () {
1052
996
  }
1053
997
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionDelta, collateralCustodyAccount, currentTimestamp);
1054
998
  var totalFeesUsd = (exitFeeUsd.add(lockAndUnsettledFeeUsd));
1055
- var currentCollateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(positionDelta.collateralAmount, collateralCustodyAccount.decimals);
999
+ var currentCollateralUsd = positionDelta.collateralUsd;
1056
1000
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1057
- var assetsUsd = newPnl.profitUsd.add(currentCollateralUsd);
1058
- var closeAmount, feesAmount;
1001
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(currentCollateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionDelta.lockedAmount, collateralCustodyAccount.decimals));
1059
1002
  if (debugLogs) {
1060
1003
  console.log("assetsUsd.sub(liabilityUsd):", collateralCustodyAccount.decimals, assetsUsd.toString(), liabilityUsd.toString(), assetsUsd.sub(liabilityUsd).toString());
1061
1004
  }
1005
+ var closeAmountUsd, feesAmountUsd;
1062
1006
  if (assetsUsd.gte(liabilityUsd)) {
1063
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), collateralCustodyAccount.decimals);
1064
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, collateralCustodyAccount.decimals);
1007
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1008
+ feesAmountUsd = totalFeesUsd;
1065
1009
  }
1066
1010
  else {
1067
- closeAmount = constants_1.BN_ZERO;
1068
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), collateralCustodyAccount.decimals);
1011
+ closeAmountUsd = constants_1.BN_ZERO;
1012
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1069
1013
  }
1014
+ var closeAmount = collateralMinMaxPrice.max.getTokenAmount(closeAmountUsd, collateralCustodyAccount.decimals);
1070
1015
  var newPosition = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1071
1016
  newPosition.sizeAmount = positionAccount.sizeAmount.sub(positionDelta.sizeAmount);
1072
1017
  newPosition.sizeUsd = positionAccount.sizeUsd.sub(positionDelta.sizeUsd);
1073
1018
  newPosition.lockedUsd = positionAccount.lockedUsd.sub(positionDelta.lockedUsd);
1074
1019
  newPosition.lockedAmount = positionAccount.lockedAmount.sub(positionDelta.lockedAmount);
1075
- newPosition.collateralAmount = positionAccount.collateralAmount.sub(positionDelta.collateralAmount);
1020
+ newPosition.collateralUsd = positionAccount.collateralUsd.sub(positionDelta.collateralUsd);
1076
1021
  newPosition.unsettledFeesUsd = positionAccount.unsettledFeesUsd.sub(positionDelta.unsettledFeesUsd);
1077
- newPosition.collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(newPosition.collateralAmount, collateralCustodyAccount.decimals);
1078
1022
  newPosition.degenSizeUsd = positionAccount.degenSizeUsd.sub(positionDelta.degenSizeUsd);
1079
1023
  var feeUsdWithDiscount = constants_1.BN_ZERO;
1080
1024
  var feeUsd = sizeDeltaUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
@@ -1089,8 +1033,8 @@ var PerpetualsClient = (function () {
1089
1033
  feeUsdWithDiscount = feeUsdWithDiscount.add(lockAndUnsettledFeeUsd);
1090
1034
  if (keepLevSame) {
1091
1035
  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;
1036
+ var collateralAmountRecievedUsd = closeAmountUsd;
1037
+ var _a = _this.getMaxWithdrawableAmountSyncInternal(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, closeAmountUsd), maxWithdrawableAmount = _a.maxWithdrawableAmount, diff = _a.diff;
1094
1038
  if (debugLogs) {
1095
1039
  console.log("maxWithdrawableAmount ", maxWithdrawableAmount.toString(), keepLevSame);
1096
1040
  console.log("collateralAmountReceived ", collateralAmountReceived.toString(), keepLevSame);
@@ -1107,11 +1051,11 @@ var PerpetualsClient = (function () {
1107
1051
  collateralAmountRecievedUsd = collateralMinMaxPrice.min.getAssetAmountUsd(maxWithdrawableAmount, collateralCustodyAccount.decimals);
1108
1052
  }
1109
1053
  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);
1054
+ var lockAndUnsettledFeeUsdNew = _this.getLockFeeAndUnsettledUsdForPosition(newPosition, collateralCustodyAccount, currentTimestamp);
1055
+ var finalLiquidationPrice = _this.getLiquidationPriceContractHelper(entryPrice, lockAndUnsettledFeeUsdNew, side, targetCustodyAccount, newPosition);
1112
1056
  var finalPnl = _this.getPnlSync(newPosition, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1113
1057
  var finalPnlUsd = finalPnl.profitUsd.sub(finalPnl.lossUsd);
1114
- var newLev = _this.getLeverageSync(newPosition.sizeUsd, newPosition.collateralAmount, collateralMinMaxPrice.min, collateralCustodyAccount.decimals, constants_1.BN_ZERO);
1058
+ var newLev = _this.getLeverageSync(newPosition, newPosition.collateralUsd, newPosition.sizeUsd, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, false, poolConfig);
1115
1059
  return {
1116
1060
  newSizeUsd: newPosition.sizeUsd,
1117
1061
  feeUsd: feeUsd,
@@ -1120,6 +1064,7 @@ var PerpetualsClient = (function () {
1120
1064
  newLev: newLev,
1121
1065
  liquidationPrice: finalLiquidationPrice,
1122
1066
  collateralAmountRecieved: collateralAmountReceived,
1067
+ collateralAmountRecievedUsd: collateralAmountRecievedUsd,
1123
1068
  newCollateralAmount: newPosition.collateralAmount.add(diff),
1124
1069
  newPnl: finalPnlUsd
1125
1070
  };
@@ -1128,8 +1073,8 @@ var PerpetualsClient = (function () {
1128
1073
  throw "only same leverage is supported for now";
1129
1074
  }
1130
1075
  };
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; }
1076
+ this.getMaxWithdrawableAmountSyncInternal = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, closeAmountUsd, errorBandwidthPercentageUi) {
1077
+ if (closeAmountUsd === void 0) { closeAmountUsd = constants_1.BN_ZERO; }
1133
1078
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
1134
1079
  if (errorBandwidthPercentageUi > 100 || errorBandwidthPercentageUi < 0) {
1135
1080
  throw new Error("errorBandwidthPercentageUi cannot be >100 or <0");
@@ -1138,24 +1083,25 @@ var PerpetualsClient = (function () {
1138
1083
  (new anchor_1.BN(targetCustodyAccount.pricing.maxInitDegenLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100))
1139
1084
  : (new anchor_1.BN(targetCustodyAccount.pricing.maxInitLeverage)).mul(new anchor_1.BN(100 - errorBandwidthPercentageUi)).div(new anchor_1.BN(100));
1140
1085
  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;
1086
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1142
1087
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1143
1088
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1144
1089
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1145
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount.add(closeAmount), collateralCustodyAccount.decimals);
1090
+ var currentCollateralUsd = positionAccount.collateralUsd.sub(closeAmountUsd);
1146
1091
  var availableInitMarginUsd = constants_1.BN_ZERO;
1147
1092
  if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1148
1093
  availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1149
1094
  }
1150
1095
  else {
1151
1096
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1152
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1097
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1153
1098
  }
1154
1099
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1155
1100
  if (maxRemovableCollateralUsd.isNeg()) {
1156
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1101
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1157
1102
  }
1158
1103
  var maxWithdrawableAmount = constants_1.BN_ZERO;
1104
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1159
1105
  var diff = constants_1.BN_ZERO;
1160
1106
  var remainingCollateralUsd = availableInitMarginUsd.sub(maxRemovableCollateralUsd);
1161
1107
  var isDegenMode = positionAccount.isDegenMode();
@@ -1163,36 +1109,37 @@ var PerpetualsClient = (function () {
1163
1109
  diff = (new anchor_1.BN(isDegenMode ? targetCustodyAccount.pricing.minDegenCollateralUsd : targetCustodyAccount.pricing.minCollateralUsd)).sub(remainingCollateralUsd);
1164
1110
  var updatedMaxRemovableCollateralUsd = maxRemovableCollateralUsd.sub(diff);
1165
1111
  if (updatedMaxRemovableCollateralUsd.isNeg()) {
1166
- return { maxWithdrawableAmount: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1112
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO, diff: constants_1.BN_ZERO };
1167
1113
  }
1168
1114
  else {
1169
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1115
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(updatedMaxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1116
+ maxWithdrawableAmountUsd = updatedMaxRemovableCollateralUsd;
1170
1117
  }
1171
1118
  }
1172
1119
  else {
1173
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1120
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1121
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1174
1122
  }
1175
- return { maxWithdrawableAmount: maxWithdrawableAmount, diff: diff };
1123
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd, diff: diff };
1176
1124
  };
1177
- this.getFinalCloseAmountSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1125
+ this.getFinalCloseAmountUsdSync = function (positionAccount, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig) {
1178
1126
  var position = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1179
1127
  var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1180
- var collateralUsd = collateralMinMaxPrice.min.getAssetAmountUsd(position.collateralAmount, collateralCustodyAccount.decimals);
1181
1128
  var newPnl = _this.getPnlSync(position, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1182
1129
  var exitPriceAndFee = _this.getExitPriceAndFeeSync(positionAccount, marketCorrelation, positionAccount.collateralAmount, positionAccount.sizeAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp);
1183
1130
  var totalFeesUsd = (exitPriceAndFee.exitFeeUsd.add(exitPriceAndFee.borrowFeeUsd));
1184
1131
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1185
- var assetsUsd = newPnl.profitUsd.add(collateralMinMaxPrice.min.getAssetAmountUsd(positionAccount.collateralAmount, positionAccount.collateralDecimals));
1186
- var closeAmount, feesAmount;
1132
+ var assetsUsd = anchor_1.BN.min(newPnl.profitUsd.add(positionAccount.collateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionAccount.lockedAmount, collateralCustodyAccount.decimals));
1133
+ var closeAmountUsd, feesAmountUsd;
1187
1134
  if (assetsUsd.gt(liabilityUsd)) {
1188
- closeAmount = collateralMinMaxPrice.max.getTokenAmount(assetsUsd.sub(liabilityUsd), position.collateralDecimals);
1189
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(totalFeesUsd, positionAccount.collateralDecimals);
1135
+ closeAmountUsd = assetsUsd.sub(liabilityUsd);
1136
+ feesAmountUsd = totalFeesUsd;
1190
1137
  }
1191
1138
  else {
1192
- closeAmount = constants_1.BN_ZERO;
1193
- feesAmount = collateralMinMaxPrice.min.getTokenAmount(assetsUsd.sub(newPnl.lossUsd), positionAccount.collateralDecimals);
1139
+ closeAmountUsd = constants_1.BN_ZERO;
1140
+ feesAmountUsd = assetsUsd.sub(newPnl.lossUsd);
1194
1141
  }
1195
- return { closeAmount: closeAmount, feesAmount: feesAmount };
1142
+ return { closeAmountUsd: closeAmountUsd, feesAmountUsd: feesAmountUsd };
1196
1143
  };
1197
1144
  this.getMaxWithdrawableAmountSync = function (positionAccount, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, poolConfig, errorBandwidthPercentageUi) {
1198
1145
  if (errorBandwidthPercentageUi === void 0) { errorBandwidthPercentageUi = 5; }
@@ -1205,34 +1152,37 @@ var PerpetualsClient = (function () {
1205
1152
  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
1153
  if (maxRemoveableCollateralUsdAfterMinRequired.isNeg()) {
1207
1154
  console.log("THIS cannot happen but still");
1208
- return constants_1.BN_ZERO;
1155
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1209
1156
  }
1210
1157
  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;
1158
+ var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1212
1159
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1213
1160
  var lockAndUnsettledFeeUsd = _this.getLockFeeAndUnsettledUsdForPosition(positionAccount, collateralCustodyAccount, currentTimestamp);
1214
1161
  var lossUsd = profitLoss.lossUsd.add(exitFeeUsd).add(lockAndUnsettledFeeUsd);
1215
- var currentCollateralUsd = collateralMinPrice.getAssetAmountUsd(positionAccount.collateralAmount, collateralCustodyAccount.decimals);
1162
+ var currentCollateralUsd = positionAccount.collateralUsd;
1216
1163
  var availableInitMarginUsd = constants_1.BN_ZERO;
1217
1164
  if (profitLoss.lossUsd.lt(currentCollateralUsd)) {
1218
1165
  availableInitMarginUsd = currentCollateralUsd.sub(lossUsd);
1219
1166
  }
1220
1167
  else {
1221
1168
  console.log("profitLoss.lossUsd > coll :: should have been liquidated");
1222
- return constants_1.BN_ZERO;
1169
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1223
1170
  }
1224
1171
  var maxRemovableCollateralUsd = availableInitMarginUsd.sub(positionAccount.sizeUsd.muln(constants_1.BPS_POWER).div(MAX_INIT_LEVERAGE));
1225
1172
  if (maxRemovableCollateralUsd.isNeg()) {
1226
- return constants_1.BN_ZERO;
1173
+ return { maxWithdrawableAmount: constants_1.BN_ZERO, maxWithdrawableAmountUsd: constants_1.BN_ZERO };
1227
1174
  }
1228
1175
  var maxWithdrawableAmount;
1176
+ var maxWithdrawableAmountUsd = constants_1.BN_ZERO;
1229
1177
  if (maxRemoveableCollateralUsdAfterMinRequired.lt(maxRemovableCollateralUsd)) {
1230
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1178
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemoveableCollateralUsdAfterMinRequired, collateralCustodyAccount.decimals);
1179
+ maxWithdrawableAmountUsd = maxRemoveableCollateralUsdAfterMinRequired;
1231
1180
  }
1232
1181
  else {
1233
- maxWithdrawableAmount = collateralMaxPrice.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1182
+ maxWithdrawableAmount = collateralMinMaxPrice.max.getTokenAmount(maxRemovableCollateralUsd, collateralCustodyAccount.decimals);
1183
+ maxWithdrawableAmountUsd = maxRemovableCollateralUsd;
1234
1184
  }
1235
- return maxWithdrawableAmount;
1185
+ return { maxWithdrawableAmount: maxWithdrawableAmount, maxWithdrawableAmountUsd: maxWithdrawableAmountUsd };
1236
1186
  };
1237
1187
  this.getCumulativeLockFeeSync = function (custodyAccount, currentTimestamp) {
1238
1188
  var cumulativeLockFee = constants_1.BN_ZERO;
@@ -1286,185 +1236,138 @@ var PerpetualsClient = (function () {
1286
1236
  var lockedUsd = (sideUsd.mul(maxPayOffBpsNew)).div(new anchor_1.BN(constants_1.BPS_POWER));
1287
1237
  return lockedUsd;
1288
1238
  };
1289
- this.getLiquidationPriceSync = function (collateralAmount, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, positionAccount) {
1239
+ this.getLiquidationPriceContractHelper = function (entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount) {
1290
1240
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1291
1241
  price: constants_1.BN_ZERO,
1292
1242
  exponent: constants_1.BN_ZERO,
1293
1243
  confidence: constants_1.BN_ZERO,
1294
1244
  timestamp: constants_1.BN_ZERO
1295
1245
  });
1296
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1297
- return zeroOraclePrice;
1298
- }
1299
1246
  if (positionAccount.entryPrice.exponent && !entryOraclePrice.exponent.eq(new anchor_1.BN(positionAccount.entryPrice.exponent))) {
1300
1247
  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
1248
  }
1302
1249
  var exitFeeUsd = positionAccount.sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1303
1250
  var unsettledLossUsd = exitFeeUsd.add(lockAndUnsettledFeeUsd);
1304
1251
  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
1252
  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;
1253
+ if (positionAccount.collateralUsd.gte(liablitiesUsd)) {
1254
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1255
+ price: (positionAccount.collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1256
+ .div(positionAccount.sizeAmount),
1257
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1258
+ confidence: constants_1.BN_ZERO,
1259
+ timestamp: constants_1.BN_ZERO
1260
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1261
+ if ((0, types_1.isVariant)(side, 'long')) {
1262
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1263
+ price: entryOraclePrice.price.sub(priceDiffLossOracle.price),
1264
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1265
+ confidence: constants_1.BN_ZERO,
1266
+ timestamp: constants_1.BN_ZERO
1267
+ });
1312
1268
  }
1313
1269
  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));
1270
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1271
+ price: entryOraclePrice.price.add(priceDiffLossOracle.price),
1272
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1273
+ confidence: constants_1.BN_ZERO,
1274
+ timestamp: constants_1.BN_ZERO
1275
+ });
1317
1276
  }
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)),
1277
+ }
1278
+ else {
1279
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1280
+ price: (liablitiesUsd.sub(positionAccount.collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (positionAccount.sizeDecimals + 3))))
1281
+ .div(positionAccount.sizeAmount),
1321
1282
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1322
1283
  confidence: constants_1.BN_ZERO,
1323
1284
  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),
1285
+ }).scale_to_exponent(new anchor_1.BN(entryOraclePrice.exponent));
1286
+ if ((0, types_1.isVariant)(side, 'long')) {
1287
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1288
+ price: entryOraclePrice.price.add(priceDiffProfitOracle.price),
1289
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1334
1290
  confidence: constants_1.BN_ZERO,
1335
1291
  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
- }
1292
+ });
1353
1293
  }
1354
1294
  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),
1295
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1296
+ price: entryOraclePrice.price.sub(priceDiffProfitOracle.price),
1297
+ exponent: new anchor_1.BN(entryOraclePrice.exponent),
1359
1298
  confidence: constants_1.BN_ZERO,
1360
1299
  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
- }
1300
+ });
1378
1301
  }
1379
1302
  }
1380
1303
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
1381
1304
  };
1382
- this.getLiquidationPriceWithOrder = function (collateralAmount, collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, marketCorrelation, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount) {
1305
+ this.getLiquidationPriceSync = function (collateralUsd, sizeAmount, entryOraclePrice, lockAndUnsettledFeeUsd, side, targetPrice, targetCustodyAccount, positionAccount) {
1306
+ var newPositionAccount = positionAccount.clone();
1307
+ newPositionAccount.sizeAmount = sizeAmount;
1308
+ newPositionAccount.sizeUsd = targetPrice.getAssetAmountUsd(sizeAmount, targetCustodyAccount.decimals);
1309
+ newPositionAccount.collateralUsd = collateralUsd;
1310
+ return _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, newPositionAccount);
1311
+ };
1312
+ this.getLiquidationPriceWithOrder = function (collateralUsd, sizeAmount, sizeUsd, sizeDecimals, limitOraclePrice, side, targetCustodyAccount) {
1383
1313
  var zeroOraclePrice = OraclePrice_1.OraclePrice.from({
1384
1314
  price: constants_1.BN_ZERO,
1385
1315
  exponent: constants_1.BN_ZERO,
1386
1316
  confidence: constants_1.BN_ZERO,
1387
1317
  timestamp: constants_1.BN_ZERO
1388
1318
  });
1389
- if (collateralAmount.isZero() || sizeAmount.isZero()) {
1390
- return zeroOraclePrice;
1391
- }
1392
1319
  var exitFeeUsd = sizeUsd.mul(targetCustodyAccount.fees.closePosition).div(new anchor_1.BN(constants_1.RATE_POWER));
1393
1320
  var unsettledLossUsd = exitFeeUsd;
1394
1321
  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
1322
  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;
1323
+ if (collateralUsd.gte(liablitiesUsd)) {
1324
+ var priceDiffLossOracle = OraclePrice_1.OraclePrice.from({
1325
+ price: (collateralUsd.sub(liablitiesUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1326
+ .div(sizeAmount),
1327
+ exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1328
+ confidence: constants_1.BN_ZERO,
1329
+ timestamp: constants_1.BN_ZERO
1330
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1331
+ if ((0, types_1.isVariant)(side, 'long')) {
1332
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1333
+ price: limitOraclePrice.price.sub(priceDiffLossOracle.price),
1334
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1335
+ confidence: constants_1.BN_ZERO,
1336
+ timestamp: constants_1.BN_ZERO
1337
+ });
1402
1338
  }
1403
1339
  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));
1340
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1341
+ price: limitOraclePrice.price.add(priceDiffLossOracle.price),
1342
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1343
+ confidence: constants_1.BN_ZERO,
1344
+ timestamp: constants_1.BN_ZERO
1345
+ });
1407
1346
  }
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)),
1347
+ }
1348
+ else {
1349
+ var priceDiffProfitOracle = OraclePrice_1.OraclePrice.from({
1350
+ price: (liablitiesUsd.sub(collateralUsd)).mul(new anchor_1.BN(Math.pow(10, (sizeDecimals + 3))))
1351
+ .div(sizeAmount),
1411
1352
  exponent: new anchor_1.BN(-1 * constants_1.RATE_DECIMALS),
1412
1353
  confidence: constants_1.BN_ZERO,
1413
1354
  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),
1355
+ }).scale_to_exponent(new anchor_1.BN(limitOraclePrice.exponent));
1356
+ if ((0, types_1.isVariant)(side, 'long')) {
1357
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1358
+ price: limitOraclePrice.price.add(priceDiffProfitOracle.price),
1359
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1424
1360
  confidence: constants_1.BN_ZERO,
1425
1361
  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
- }
1362
+ });
1443
1363
  }
1444
1364
  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),
1365
+ liquidationPrice = OraclePrice_1.OraclePrice.from({
1366
+ price: limitOraclePrice.price.sub(priceDiffProfitOracle.price),
1367
+ exponent: new anchor_1.BN(limitOraclePrice.exponent),
1449
1368
  confidence: constants_1.BN_ZERO,
1450
1369
  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
- }
1370
+ });
1468
1371
  }
1469
1372
  }
1470
1373
  return liquidationPrice.price.isNeg() ? zeroOraclePrice : liquidationPrice;
@@ -1540,8 +1443,8 @@ var PerpetualsClient = (function () {
1540
1443
  positionAccount.market = marketAccountPk;
1541
1444
  positionAccount.lockedUsd = targetTokenPrice.getAssetAmountUsd(positionAccount.sizeAmount, targetCustodyAccount.decimals);
1542
1445
  positionAccount.lockedAmount = collateralPrice.getTokenAmount(positionAccount.lockedUsd, collateralCustodyAccount.decimals);
1543
- positionAccount.collateralAmount = positionAccount.collateralAmount.add(collateralDeltaAmount);
1544
- positionAccount.collateralUsd = collateralPrice.getAssetAmountUsd(positionAccount.collateralAmount, collateralCustodyAccount.decimals);
1446
+ var collateralDeltaUsd = collateralPrice.getAssetAmountUsd(collateralDeltaAmount, collateralCustodyAccount.decimals);
1447
+ positionAccount.collateralUsd = positionAccount.collateralUsd.add(collateralDeltaUsd);
1545
1448
  var currentTime = new anchor_1.BN((0, utils_1.getUnixTs)());
1546
1449
  var pnl = _this.getPnlSync(positionAccount, userEntrytpSlOraclePrice, userEntrytpSlOraclePrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTime, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1547
1450
  var pnlUsd = pnl.profitUsd.sub(pnl.lossUsd);
@@ -1613,6 +1516,9 @@ var PerpetualsClient = (function () {
1613
1516
  });
1614
1517
  };
1615
1518
  this.getPnlSync = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1519
+ return _this.getPnlContractHelper(positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig);
1520
+ };
1521
+ this.getPnlContractHelper = function (positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, delay, poolConfig) {
1616
1522
  if (positionAccount.sizeUsd.isZero() || positionAccount.entryPrice.price.isZero()) {
1617
1523
  return {
1618
1524
  profitUsd: constants_1.BN_ZERO,
@@ -1671,7 +1577,7 @@ var PerpetualsClient = (function () {
1671
1577
  }
1672
1578
  if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1673
1579
  return {
1674
- profitUsd: anchor_1.BN.min(priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals), collateralMinPrice.getAssetAmountUsd(positionAccount.lockedAmount, positionAccount.lockedDecimals)),
1580
+ profitUsd: priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1675
1581
  lossUsd: constants_1.BN_ZERO,
1676
1582
  };
1677
1583
  }
@@ -1762,6 +1668,9 @@ var PerpetualsClient = (function () {
1762
1668
  }
1763
1669
  };
1764
1670
  this.getAssetsUnderManagementUsdSync = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1671
+ return _this.getAssetsUnderManagementUsdContractHelper(poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig);
1672
+ };
1673
+ this.getAssetsUnderManagementUsdContractHelper = function (poolAccount, tokenPrices, tokenEmaPrices, custodies, markets, aumCalcMode, currentTime, poolConfig) {
1765
1674
  var poolAmountUsd = constants_1.BN_ZERO;
1766
1675
  for (var index = 0; index < custodies.length; index++) {
1767
1676
  if (custodies.length != poolAccount.custodies.length || !custodies[index].publicKey.equals(poolAccount.custodies[index])) {
@@ -1774,6 +1683,7 @@ var PerpetualsClient = (function () {
1774
1683
  var token_amount_usd = tokenMinMaxPrice.max.getAssetAmountUsd(custodies[index].assets.owned, custodies[index].decimals);
1775
1684
  poolAmountUsd = poolAmountUsd.add(token_amount_usd);
1776
1685
  }
1686
+ poolAmountUsd = poolAmountUsd.sub(poolAccount.feesObligationUsd.add(poolAccount.rebateObligationUsd));
1777
1687
  if (aumCalcMode === "includePnl") {
1778
1688
  var poolEquityUsd = poolAmountUsd;
1779
1689
  for (var index = 0; index < markets.length; index++) {
@@ -1783,11 +1693,12 @@ var PerpetualsClient = (function () {
1783
1693
  var targetCustodyId = poolAccount.getCustodyId(markets[index].targetCustody);
1784
1694
  var collateralCustodyId = poolAccount.getCustodyId(markets[index].collateralCustody);
1785
1695
  var position = markets[index].getCollectivePosition();
1696
+ poolEquityUsd = poolEquityUsd.sub(position.collateralUsd);
1786
1697
  var collectivePnl = _this.getPnlSync(position, tokenPrices[targetCustodyId], tokenEmaPrices[targetCustodyId], custodies[targetCustodyId], tokenPrices[collateralCustodyId], tokenEmaPrices[collateralCustodyId], custodies[collateralCustodyId], currentTime, custodies[targetCustodyId].pricing.delaySeconds, poolConfig);
1787
1698
  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);
1699
+ var collectiveLossUsd = anchor_1.BN.min(collectivePnl.lossUsd, position.collateralUsd);
1700
+ var collectiveProfitUsd = anchor_1.BN.min(collectivePnl.profitUsd, collateralMinMaxPrice.max.getAssetAmountUsd(position.lockedAmount, custodies[collateralCustodyId].decimals).sub(position.collateralUsd));
1701
+ poolEquityUsd = (poolEquityUsd.add(collectiveLossUsd)).sub(collectiveProfitUsd);
1791
1702
  }
1792
1703
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: poolEquityUsd };
1793
1704
  }
@@ -1795,14 +1706,6 @@ var PerpetualsClient = (function () {
1795
1706
  return { poolAmountUsd: poolAmountUsd, poolEquityUsd: constants_1.BN_ZERO };
1796
1707
  }
1797
1708
  };
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
1709
  this.getFeeDiscount = function (perpetualsAccount, tokenStakeAccount, currentTime) {
1807
1710
  if (tokenStakeAccount.level === 0) {
1808
1711
  return { discountBn: constants_1.BN_ZERO };
@@ -1887,7 +1790,7 @@ var PerpetualsClient = (function () {
1887
1790
  });
1888
1791
  };
1889
1792
  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;
1793
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_1, token, _a, custodies_2, custody, _b, _c, market, transaction, backUpOracleInstruction, setCULimitIx, result, index, res;
1891
1794
  var _d;
1892
1795
  return __generator(this, function (_e) {
1893
1796
  switch (_e.label) {
@@ -1935,6 +1838,8 @@ var PerpetualsClient = (function () {
1935
1838
  return [4, backUpOracleInstructionPromise];
1936
1839
  case 2:
1937
1840
  backUpOracleInstruction = _e.sent();
1841
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1842
+ transaction.instructions.unshift(setCULimitIx);
1938
1843
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
1939
1844
  return [4, this.viewHelper.simulateTransaction(transaction)];
1940
1845
  case 3:
@@ -2001,7 +1906,7 @@ var PerpetualsClient = (function () {
2001
1906
  args_1[_i - 4] = arguments[_i];
2002
1907
  }
2003
1908
  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;
1909
+ var custodies, custodyMetas, marketMetas, _a, custodies_5, token, _b, custodies_6, custody, _c, _d, market, depositCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2005
1910
  var _e;
2006
1911
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2007
1912
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2052,6 +1957,8 @@ var PerpetualsClient = (function () {
2052
1957
  .transaction()];
2053
1958
  case 1:
2054
1959
  transaction = _f.sent();
1960
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
1961
+ transaction.instructions.unshift(setCULimitIx);
2055
1962
  if (!enableBackupOracle) return [3, 3];
2056
1963
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2057
1964
  case 2:
@@ -2061,6 +1968,14 @@ var PerpetualsClient = (function () {
2061
1968
  case 3: return [4, this.viewHelper.simulateTransaction(transaction, userPublicKey)];
2062
1969
  case 4:
2063
1970
  result = _f.sent();
1971
+ if (result.value.err) {
1972
+ console.error('error Simulation failed:::', result);
1973
+ return [2, {
1974
+ amount: undefined,
1975
+ fee: undefined,
1976
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
1977
+ }];
1978
+ }
2064
1979
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getAddLiquidityAmountAndFee'; });
2065
1980
  res = this.viewHelper.decodeLogs(result, index, 'getAddLiquidityAmountAndFee');
2066
1981
  return [2, {
@@ -2077,7 +1992,7 @@ var PerpetualsClient = (function () {
2077
1992
  args_1[_i - 4] = arguments[_i];
2078
1993
  }
2079
1994
  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;
1995
+ var custodies, custodyMetas, marketMetas, _a, custodies_7, token, _b, custodies_8, custody, _c, _d, market, removeCustodyConfig, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2081
1996
  var _e;
2082
1997
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2083
1998
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2128,6 +2043,8 @@ var PerpetualsClient = (function () {
2128
2043
  .transaction()];
2129
2044
  case 1:
2130
2045
  transaction = _f.sent();
2046
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2047
+ transaction.instructions.unshift(setCULimitIx);
2131
2048
  if (!enableBackupOracle) return [3, 3];
2132
2049
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2133
2050
  case 2:
@@ -2139,9 +2056,11 @@ var PerpetualsClient = (function () {
2139
2056
  result = _f.sent();
2140
2057
  index = perpetuals_1.IDL.instructions.findIndex(function (f) { return f.name === 'getRemoveLiquidityAmountAndFee'; });
2141
2058
  if (result.value.err) {
2059
+ console.error('error Simulation failed:', result);
2142
2060
  return [2, {
2143
- amount: new anchor_1.BN(0),
2144
- fee: new anchor_1.BN(0),
2061
+ amount: undefined,
2062
+ fee: undefined,
2063
+ error: 'Simulation failed: ' + JSON.stringify(result.value.err),
2145
2064
  }];
2146
2065
  }
2147
2066
  res = this.viewHelper.decodeLogs(result, index, 'getRemoveLiquidityAmountAndFee');
@@ -2154,7 +2073,7 @@ var PerpetualsClient = (function () {
2154
2073
  });
2155
2074
  };
2156
2075
  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;
2076
+ var backUpOracleInstructionPromise, custodies, custodyMetas, marketMetas, _i, custodies_9, token, _a, custodies_10, custody, _b, _c, market, backUpOracleInstruction, transaction, setCULimitIx, result, index, res;
2158
2077
  var _d;
2159
2078
  return __generator(this, function (_e) {
2160
2079
  switch (_e.label) {
@@ -2202,6 +2121,8 @@ var PerpetualsClient = (function () {
2202
2121
  .transaction()];
2203
2122
  case 2:
2204
2123
  transaction = _e.sent();
2124
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2125
+ transaction.instructions.unshift(setCULimitIx);
2205
2126
  (_d = transaction.instructions).unshift.apply(_d, backUpOracleInstruction);
2206
2127
  return [4, this.viewHelper.simulateTransaction(transaction)];
2207
2128
  case 3:
@@ -2218,7 +2139,7 @@ var PerpetualsClient = (function () {
2218
2139
  args_1[_i - 4] = arguments[_i];
2219
2140
  }
2220
2141
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, depositCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, depositCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2221
- var custodies, custodyMetas, marketMetas, _a, custodies_11, token, _b, custodies_12, custody, _c, _d, market, depositCustodyConfig, rewardCustody, transaction, backUpOracleInstruction, result, index, res;
2142
+ var custodies, custodyMetas, marketMetas, _a, custodies_11, token, _b, custodies_12, custody, _c, _d, market, depositCustodyConfig, rewardCustody, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2222
2143
  var _e;
2223
2144
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2224
2145
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2273,6 +2194,8 @@ var PerpetualsClient = (function () {
2273
2194
  .transaction()];
2274
2195
  case 1:
2275
2196
  transaction = _f.sent();
2197
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2198
+ transaction.instructions.unshift(setCULimitIx);
2276
2199
  if (!enableBackupOracle) return [3, 3];
2277
2200
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2278
2201
  case 2:
@@ -2298,7 +2221,7 @@ var PerpetualsClient = (function () {
2298
2221
  args_1[_i - 4] = arguments[_i];
2299
2222
  }
2300
2223
  return __awaiter(_this, __spreadArray([amount_1, poolKey_1, removeTokenCustodyKey_1, POOL_CONFIG_1], args_1, true), void 0, function (amount, poolKey, removeTokenCustodyKey, POOL_CONFIG, userPublicKey, enableBackupOracle) {
2301
- var custodies, custodyMetas, marketMetas, _a, custodies_13, token, _b, custodies_14, custody, _c, _d, market, removeCustodyConfig, rewardCustody, transaction, backUpOracleInstruction, result, index, res;
2224
+ var custodies, custodyMetas, marketMetas, _a, custodies_13, token, _b, custodies_14, custody, _c, _d, market, removeCustodyConfig, rewardCustody, transaction, setCULimitIx, backUpOracleInstruction, result, index, res;
2302
2225
  var _e;
2303
2226
  if (userPublicKey === void 0) { userPublicKey = undefined; }
2304
2227
  if (enableBackupOracle === void 0) { enableBackupOracle = false; }
@@ -2353,6 +2276,8 @@ var PerpetualsClient = (function () {
2353
2276
  .transaction()];
2354
2277
  case 1:
2355
2278
  transaction = _f.sent();
2279
+ setCULimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 450000 });
2280
+ transaction.instructions.unshift(setCULimitIx);
2356
2281
  if (!enableBackupOracle) return [3, 3];
2357
2282
  return [4, (0, backupOracle_1.createBackupOracleInstruction)(POOL_CONFIG.poolAddress.toBase58(), true)];
2358
2283
  case 2:
@@ -2547,11 +2472,10 @@ var PerpetualsClient = (function () {
2547
2472
  for (var _i = 8; _i < arguments.length; _i++) {
2548
2473
  args_1[_i - 8] = arguments[_i];
2549
2474
  }
2550
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, priceWithSlippage_1, collateralWithfee_1, size_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, priceWithSlippage, collateralWithfee, size, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2475
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, priceWithSlippage_1, collateralWithfee_1, size_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, priceWithSlippage, collateralWithfee, size, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2551
2476
  var publicKey, targetCustodyConfig, collateralCustodyConfig, collateralToken, marketAccount, userCollateralTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, params, instruction;
2552
2477
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2553
2478
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2554
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2555
2479
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2556
2480
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2557
2481
  return __generator(this, function (_c) {
@@ -2644,7 +2568,7 @@ var PerpetualsClient = (function () {
2644
2568
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
2645
2569
  fundingMint: collateralCustodyConfig.mintKey
2646
2570
  })
2647
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2571
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2648
2572
  .instruction()];
2649
2573
  case 7:
2650
2574
  instruction = _c.sent();
@@ -2662,11 +2586,10 @@ var PerpetualsClient = (function () {
2662
2586
  for (var _i = 6; _i < arguments.length; _i++) {
2663
2587
  args_1[_i - 6] = arguments[_i];
2664
2588
  }
2665
- return __awaiter(_this, __spreadArray([marketSymbol_1, collateralSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (marketSymbol, collateralSymbol, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
2589
+ return __awaiter(_this, __spreadArray([marketSymbol_1, collateralSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (marketSymbol, collateralSymbol, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
2666
2590
  var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, instruction, closeWsolATAIns, error_1;
2667
2591
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2668
2592
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2669
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2670
2593
  if (createUserATA === void 0) { createUserATA = true; }
2671
2594
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
2672
2595
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -2745,7 +2668,7 @@ var PerpetualsClient = (function () {
2745
2668
  collateralMint: collateralCustodyConfig.mintKey,
2746
2669
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2747
2670
  })
2748
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2671
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2749
2672
  .instruction()];
2750
2673
  case 6:
2751
2674
  instruction = _b.sent();
@@ -2767,16 +2690,15 @@ var PerpetualsClient = (function () {
2767
2690
  });
2768
2691
  });
2769
2692
  };
2770
- this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2693
+ this.swapAndOpen = function (targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1) {
2771
2694
  var args_1 = [];
2772
- for (var _i = 10; _i < arguments.length; _i++) {
2773
- args_1[_i - 10] = arguments[_i];
2695
+ for (var _i = 9; _i < arguments.length; _i++) {
2696
+ args_1[_i - 9] = arguments[_i];
2774
2697
  }
2775
- return __awaiter(_this, __spreadArray([targetTokenSymbol_1, collateralTokenSymbol_1, userInputTokenSymbol_1, amountIn_1, minCollateralAmountOut_1, priceWithSlippage_1, sizeAmount_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, collateralTokenSymbol, userInputTokenSymbol, amountIn, minCollateralAmountOut, priceWithSlippage, sizeAmount, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, skipBalanceChecks, ephemeralSignerPubkey) {
2776
- var publicKey, userInputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, targetToken, userInputTokenAccount, userInputToken, lamports, unWrappedSolBalance, _a, userOutputTokenAccount, tokenAccountBalance, _b, userOutputTokenAccount, rebateMintAccount, inx, err_3;
2698
+ 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) {
2699
+ var publicKey, userInputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, targetToken, userInputTokenAccount, userInputToken, lamports, unWrappedSolBalance, _a, userOutputTokenAccount, tokenAccountBalance, _b, userOutputTokenAccount, inx, err_3;
2777
2700
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2778
2701
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2779
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2780
2702
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
2781
2703
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2782
2704
  return __generator(this, function (_c) {
@@ -2870,18 +2792,10 @@ var PerpetualsClient = (function () {
2870
2792
  }
2871
2793
  _c.label = 10;
2872
2794
  case 10:
2873
- rebateMintAccount = {
2874
- pubkey: collateralCustodyConfig.mintKey,
2875
- isSigner: false,
2876
- isWritable: false
2877
- };
2878
- _c.label = 11;
2879
- case 11:
2880
- _c.trys.push([11, 13, , 14]);
2795
+ _c.trys.push([10, 12, , 13]);
2881
2796
  return [4, this.program.methods
2882
2797
  .swapAndOpen({
2883
2798
  amountIn: amountIn,
2884
- minCollateralAmountOut: minCollateralAmountOut,
2885
2799
  priceWithSlippage: priceWithSlippage,
2886
2800
  sizeAmount: sizeAmount,
2887
2801
  privilege: privilege
@@ -2912,17 +2826,17 @@ var PerpetualsClient = (function () {
2912
2826
  collateralMint: collateralCustodyConfig.mintKey,
2913
2827
  collateralTokenProgram: poolConfig.getTokenFromSymbol(collateralTokenSymbol).isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
2914
2828
  })
2915
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2829
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
2916
2830
  .instruction()];
2917
- case 12:
2831
+ case 11:
2918
2832
  inx = _c.sent();
2919
2833
  instructions.push(inx);
2920
- return [3, 14];
2921
- case 13:
2834
+ return [3, 13];
2835
+ case 12:
2922
2836
  err_3 = _c.sent();
2923
2837
  console.error("perpClient SwapAndOpen error:: ", err_3);
2924
2838
  throw err_3;
2925
- case 14: return [2, {
2839
+ case 13: return [2, {
2926
2840
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
2927
2841
  additionalSigners: additionalSigners
2928
2842
  }];
@@ -2930,16 +2844,15 @@ var PerpetualsClient = (function () {
2930
2844
  });
2931
2845
  });
2932
2846
  };
2933
- this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2847
+ this.closeAndSwap = function (targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1) {
2934
2848
  var args_1 = [];
2935
- for (var _i = 8; _i < arguments.length; _i++) {
2936
- args_1[_i - 8] = arguments[_i];
2849
+ for (var _i = 7; _i < arguments.length; _i++) {
2850
+ args_1[_i - 7] = arguments[_i];
2937
2851
  }
2938
- return __awaiter(_this, __spreadArray([targetTokenSymbol_1, userOutputTokenSymbol_1, collateralTokenSymbol_1, minSwapAmountOut_1, priceWithSlippage_1, side_1, poolConfig_1, privilege_1], args_1, true), void 0, function (targetTokenSymbol, userOutputTokenSymbol, collateralTokenSymbol, minSwapAmountOut, priceWithSlippage, side, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount, ephemeralSignerPubkey) {
2939
- var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, rebateMintAccount, inx, err_4;
2852
+ 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) {
2853
+ var publicKey, userOutputCustodyConfig, collateralCustodyConfig, targetCustodyConfig, marketAccount, positionAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, collateralToken, userOutputToken, lamports, userCollateralTokenAccount, inx, err_4;
2940
2854
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
2941
2855
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
2942
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
2943
2856
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
2944
2857
  return __generator(this, function (_a) {
2945
2858
  switch (_a.label) {
@@ -3005,18 +2918,12 @@ var PerpetualsClient = (function () {
3005
2918
  if (!(_a.sent())) {
3006
2919
  preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userCollateralTokenAccount, publicKey, collateralToken.mintKey, collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID));
3007
2920
  }
3008
- rebateMintAccount = {
3009
- pubkey: collateralCustodyConfig.mintKey,
3010
- isSigner: false,
3011
- isWritable: false
3012
- };
3013
2921
  _a.label = 5;
3014
2922
  case 5:
3015
2923
  _a.trys.push([5, 7, , 8]);
3016
2924
  return [4, this.program.methods
3017
2925
  .closeAndSwap({
3018
2926
  priceWithSlippage: priceWithSlippage,
3019
- minSwapAmountOut: minSwapAmountOut,
3020
2927
  privilege: privilege
3021
2928
  })
3022
2929
  .accounts({
@@ -3045,7 +2952,7 @@ var PerpetualsClient = (function () {
3045
2952
  collateralMint: collateralCustodyConfig.mintKey,
3046
2953
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
3047
2954
  })
3048
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
2955
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3049
2956
  .instruction()];
3050
2957
  case 6:
3051
2958
  inx = _a.sent();
@@ -3166,12 +3073,12 @@ var PerpetualsClient = (function () {
3166
3073
  });
3167
3074
  });
3168
3075
  };
3169
- this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1) {
3076
+ this.swapAndAddCollateral = function (targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1) {
3170
3077
  var args_1 = [];
3171
- for (var _i = 8; _i < arguments.length; _i++) {
3172
- args_1[_i - 8] = arguments[_i];
3078
+ for (var _i = 7; _i < arguments.length; _i++) {
3079
+ args_1[_i - 7] = arguments[_i];
3173
3080
  }
3174
- return __awaiter(_this, __spreadArray([targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, minCollateralAmountOut_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, inputSymbol, collateralSymbol, amountIn, minCollateralAmountOut, side, positionPubKey, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
3081
+ return __awaiter(_this, __spreadArray([targetSymbol_1, inputSymbol_1, collateralSymbol_1, amountIn_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, inputSymbol, collateralSymbol, amountIn, side, positionPubKey, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
3175
3082
  var publicKey, collateralCustodyConfig, targetCustodyConfig, inputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userInputTokenAccount, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, userCollateralTokenAccount, marketAccount, instruction;
3176
3083
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
3177
3084
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
@@ -3250,7 +3157,6 @@ var PerpetualsClient = (function () {
3250
3157
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3251
3158
  return [4, this.program.methods.swapAndAddCollateral({
3252
3159
  amountIn: amountIn,
3253
- minCollateralAmountOut: minCollateralAmountOut,
3254
3160
  }).accounts({
3255
3161
  owner: publicKey,
3256
3162
  feePayer: publicKey,
@@ -3286,12 +3192,12 @@ var PerpetualsClient = (function () {
3286
3192
  });
3287
3193
  });
3288
3194
  };
3289
- this.removeCollateral = function (collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3195
+ this.removeCollateral = function (collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1) {
3290
3196
  var args_1 = [];
3291
3197
  for (var _i = 6; _i < arguments.length; _i++) {
3292
3198
  args_1[_i - 6] = arguments[_i];
3293
3199
  }
3294
- return __awaiter(_this, __spreadArray([collateralWithFee_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (collateralWithFee, marketSymbol, collateralSymbol, side, positionPubKey, poolConfig, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
3200
+ return __awaiter(_this, __spreadArray([collateralDeltaUsd_1, marketSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1], args_1, true), void 0, function (collateralDeltaUsd, marketSymbol, collateralSymbol, side, positionPubKey, poolConfig, createUserATA, closeUsersWSOLATA, ephemeralSignerPubkey) {
3295
3201
  var publicKey, collateralCustodyConfig, targetCustodyConfig, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, lamports, _a, marketAccount, instruction, closeWsolATAIns, error_2;
3296
3202
  if (createUserATA === void 0) { createUserATA = true; }
3297
3203
  if (closeUsersWSOLATA === void 0) { closeUsersWSOLATA = false; }
@@ -3355,7 +3261,7 @@ var PerpetualsClient = (function () {
3355
3261
  marketAccount = poolConfig.getMarketPk(targetCustodyConfig.custodyAccount, collateralCustodyConfig.custodyAccount, side);
3356
3262
  return [4, this.program.methods
3357
3263
  .removeCollateral({
3358
- collateralDelta: collateralWithFee,
3264
+ collateralDeltaUsd: collateralDeltaUsd,
3359
3265
  })
3360
3266
  .accounts({
3361
3267
  owner: publicKey,
@@ -3397,12 +3303,12 @@ var PerpetualsClient = (function () {
3397
3303
  });
3398
3304
  });
3399
3305
  };
3400
- this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1) {
3306
+ this.removeCollateralAndSwap = function (targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1) {
3401
3307
  var args_1 = [];
3402
- for (var _i = 7; _i < arguments.length; _i++) {
3403
- args_1[_i - 7] = arguments[_i];
3308
+ for (var _i = 6; _i < arguments.length; _i++) {
3309
+ args_1[_i - 6] = arguments[_i];
3404
3310
  }
3405
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, outputSymbol_1, minSwapAmountOut_1, collateralDelta_1, side_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, outputSymbol, minSwapAmountOut, collateralDelta, side, poolConfig, ephemeralSignerPubkey) {
3311
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, outputSymbol_1, collateralDeltaUsd_1, side_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, outputSymbol, collateralDeltaUsd, side, poolConfig, ephemeralSignerPubkey) {
3406
3312
  var publicKey, targetCustodyConfig, collateralCustodyConfig, outputCustodyConfig, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userReceivingTokenAccount, lamports, userCollateralTokenAccount, marketAccount, positionAccount, instruction;
3407
3313
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
3408
3314
  return __generator(this, function (_a) {
@@ -3459,8 +3365,7 @@ var PerpetualsClient = (function () {
3459
3365
  positionAccount = poolConfig.getPositionFromMarketPk(publicKey, marketAccount);
3460
3366
  return [4, this.program.methods
3461
3367
  .removeCollateralAndSwap({
3462
- collateralDelta: collateralDelta,
3463
- minSwapAmountOut: minSwapAmountOut,
3368
+ collateralDeltaUsd: collateralDeltaUsd,
3464
3369
  })
3465
3370
  .accounts({
3466
3371
  owner: publicKey,
@@ -3505,11 +3410,10 @@ var PerpetualsClient = (function () {
3505
3410
  for (var _i = 8; _i < arguments.length; _i++) {
3506
3411
  args_1[_i - 8] = arguments[_i];
3507
3412
  }
3508
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, positionPubKey_1, side_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, positionPubKey, side, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
3413
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, positionPubKey_1, side_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, positionPubKey, side, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount) {
3509
3414
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3510
3415
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3511
3416
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3512
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3513
3417
  return __generator(this, function (_a) {
3514
3418
  switch (_a.label) {
3515
3419
  case 0:
@@ -3552,7 +3456,7 @@ var PerpetualsClient = (function () {
3552
3456
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3553
3457
  collateralMint: collateralCustodyConfig.mintKey
3554
3458
  })
3555
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3459
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3556
3460
  .instruction()];
3557
3461
  case 1:
3558
3462
  instruction = _a.sent();
@@ -3570,11 +3474,10 @@ var PerpetualsClient = (function () {
3570
3474
  for (var _i = 8; _i < arguments.length; _i++) {
3571
3475
  args_1[_i - 8] = arguments[_i];
3572
3476
  }
3573
- return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, side, positionPubKey, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
3477
+ return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, side_1, positionPubKey_1, poolConfig_1, priceWithSlippage_1, sizeDelta_1, privilege_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, side, positionPubKey, poolConfig, priceWithSlippage, sizeDelta, privilege, tokenStakeAccount, userReferralAccount) {
3574
3478
  var publicKey, collateralCustodyConfig, targetCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, instruction;
3575
3479
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
3576
3480
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
3577
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
3578
3481
  return __generator(this, function (_a) {
3579
3482
  switch (_a.label) {
3580
3483
  case 0:
@@ -3617,7 +3520,7 @@ var PerpetualsClient = (function () {
3617
3520
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
3618
3521
  collateralMint: collateralCustodyConfig.mintKey
3619
3522
  })
3620
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
3523
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
3621
3524
  .instruction()];
3622
3525
  case 1:
3623
3526
  instruction = _a.sent();
@@ -4084,119 +3987,8 @@ var PerpetualsClient = (function () {
4084
3987
  }
4085
3988
  });
4086
3989
  }); };
4087
- this.updateNftAccount = function (nftMint, updateReferer, updateBooster, flpStakeAccounts) { return __awaiter(_this, void 0, void 0, function () {
4088
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, nftReferralAccount, nftTokenAccount, flpStakeAccountMetas, _i, flpStakeAccounts_1, flpStakeAccountPk, updateNftTradingAccountInstruction, err_8;
4089
- return __generator(this, function (_a) {
4090
- switch (_a.label) {
4091
- case 0:
4092
- publicKey = this.provider.wallet.publicKey;
4093
- preInstructions = [];
4094
- instructions = [];
4095
- postInstructions = [];
4096
- additionalSigners = [];
4097
- _a.label = 1;
4098
- case 1:
4099
- _a.trys.push([1, 4, , 5]);
4100
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4101
- Buffer.from("trading"),
4102
- nftMint.toBuffer(),
4103
- ], this.programId)[0];
4104
- nftReferralAccount = web3_js_1.PublicKey.findProgramAddressSync([
4105
- Buffer.from("referral"),
4106
- publicKey.toBuffer(),
4107
- ], this.programId)[0];
4108
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, publicKey, true)];
4109
- case 2:
4110
- nftTokenAccount = _a.sent();
4111
- flpStakeAccountMetas = [];
4112
- for (_i = 0, flpStakeAccounts_1 = flpStakeAccounts; _i < flpStakeAccounts_1.length; _i++) {
4113
- flpStakeAccountPk = flpStakeAccounts_1[_i];
4114
- flpStakeAccountMetas.push({
4115
- pubkey: flpStakeAccountPk,
4116
- isSigner: false,
4117
- isWritable: true,
4118
- });
4119
- }
4120
- return [4, this.program.methods
4121
- .updateTradingAccount({
4122
- updateReferer: updateReferer,
4123
- updateBooster: updateBooster
4124
- })
4125
- .accounts({
4126
- owner: publicKey,
4127
- feePayer: publicKey,
4128
- nftTokenAccount: nftTokenAccount,
4129
- referralAccount: nftReferralAccount,
4130
- tradingAccount: nftTradingAccount
4131
- })
4132
- .instruction()];
4133
- case 3:
4134
- updateNftTradingAccountInstruction = _a.sent();
4135
- instructions.push(updateNftTradingAccountInstruction);
4136
- return [3, 5];
4137
- case 4:
4138
- err_8 = _a.sent();
4139
- console.log("perpClient updateNftAccount error:: ", err_8);
4140
- throw err_8;
4141
- case 5: return [2, {
4142
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4143
- additionalSigners: additionalSigners
4144
- }];
4145
- }
4146
- });
4147
- }); };
4148
- this.levelUp = function (poolConfig, nftMint, authorizationRulesAccount) { return __awaiter(_this, void 0, void 0, function () {
4149
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, nftTradingAccount, metadataAccount, levelUpInstruction, err_9;
4150
- return __generator(this, function (_a) {
4151
- switch (_a.label) {
4152
- case 0:
4153
- publicKey = this.provider.wallet.publicKey;
4154
- preInstructions = [];
4155
- instructions = [];
4156
- postInstructions = [];
4157
- additionalSigners = [];
4158
- _a.label = 1;
4159
- case 1:
4160
- _a.trys.push([1, 3, , 4]);
4161
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
4162
- Buffer.from("trading"),
4163
- nftMint.toBuffer(),
4164
- ], this.programId)[0];
4165
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
4166
- return [4, this.program.methods
4167
- .levelUp({})
4168
- .accounts({
4169
- owner: publicKey,
4170
- perpetuals: this.perpetuals.publicKey,
4171
- pool: poolConfig.poolAddress,
4172
- metadataAccount: metadataAccount,
4173
- nftMint: nftMint,
4174
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
4175
- tradingAccount: nftTradingAccount,
4176
- transferAuthority: this.authority.publicKey,
4177
- authorizationRulesAccount: authorizationRulesAccount,
4178
- authorizationRulesProgram: new web3_js_1.PublicKey('auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3rboVmgg'),
4179
- systemProgram: web3_js_1.SystemProgram.programId,
4180
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
4181
- })
4182
- .instruction()];
4183
- case 2:
4184
- levelUpInstruction = _a.sent();
4185
- instructions.push(levelUpInstruction);
4186
- return [3, 4];
4187
- case 3:
4188
- err_9 = _a.sent();
4189
- console.log("perpClient levelUp error:: ", err_9);
4190
- throw err_9;
4191
- case 4: return [2, {
4192
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4193
- additionalSigners: additionalSigners
4194
- }];
4195
- }
4196
- });
4197
- }); };
4198
3990
  this.depositStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4199
- var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_10;
3991
+ var preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, depositStakeInstruction, err_8;
4200
3992
  return __generator(this, function (_a) {
4201
3993
  switch (_a.label) {
4202
3994
  case 0:
@@ -4238,9 +4030,9 @@ var PerpetualsClient = (function () {
4238
4030
  instructions.push(depositStakeInstruction);
4239
4031
  return [3, 5];
4240
4032
  case 4:
4241
- err_10 = _a.sent();
4242
- console.log("perpClient depositStaking error:: ", err_10);
4243
- throw err_10;
4033
+ err_8 = _a.sent();
4034
+ console.log("perpClient depositStaking error:: ", err_8);
4035
+ throw err_8;
4244
4036
  case 5: return [2, {
4245
4037
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4246
4038
  additionalSigners: additionalSigners
@@ -4249,7 +4041,7 @@ var PerpetualsClient = (function () {
4249
4041
  });
4250
4042
  }); };
4251
4043
  this.refreshStakeWithAllFlpStakeAccounts = function (rewardSymbol, poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4252
- var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_11;
4044
+ var rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_1, flpStakeAccountPk, refreshStakeInstruction, err_9;
4253
4045
  return __generator(this, function (_c) {
4254
4046
  switch (_c.label) {
4255
4047
  case 0:
@@ -4296,9 +4088,9 @@ var PerpetualsClient = (function () {
4296
4088
  refreshStakeInstruction = _c.sent();
4297
4089
  return [2, refreshStakeInstruction];
4298
4090
  case 2:
4299
- err_11 = _c.sent();
4300
- console.log("perpClient refreshStaking error:: ", err_11);
4301
- throw err_11;
4091
+ err_9 = _c.sent();
4092
+ console.log("perpClient refreshStaking error:: ", err_9);
4093
+ throw err_9;
4302
4094
  case 3: return [2];
4303
4095
  }
4304
4096
  });
@@ -4309,7 +4101,7 @@ var PerpetualsClient = (function () {
4309
4101
  args_1[_i - 3] = arguments[_i];
4310
4102
  }
4311
4103
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, flpStakeAccountPk_1], args_1, true), void 0, function (rewardSymbol, poolConfig, flpStakeAccountPk, userPublicKey) {
4312
- var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_12;
4104
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, pool, feeDistributionTokenAccount, custodyAccountMetas, _a, _b, custody, stakeAccountMetas, tokenStakeAccount, refreshStakeInstruction, err_10;
4313
4105
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4314
4106
  return __generator(this, function (_c) {
4315
4107
  switch (_c.label) {
@@ -4357,9 +4149,9 @@ var PerpetualsClient = (function () {
4357
4149
  refreshStakeInstruction = _c.sent();
4358
4150
  return [2, refreshStakeInstruction];
4359
4151
  case 2:
4360
- err_12 = _c.sent();
4361
- console.log("perpClient refreshStaking error:: ", err_12);
4362
- throw err_12;
4152
+ err_10 = _c.sent();
4153
+ console.log("perpClient refreshStaking error:: ", err_10);
4154
+ throw err_10;
4363
4155
  case 3: return [2];
4364
4156
  }
4365
4157
  });
@@ -4371,7 +4163,7 @@ var PerpetualsClient = (function () {
4371
4163
  args_1[_i - 3] = arguments[_i];
4372
4164
  }
4373
4165
  return __awaiter(_this, __spreadArray([rewardSymbol_1, unstakeAmount_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, unstakeAmount, poolConfig, userPublicKey) {
4374
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_13;
4166
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, pool, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _a, unstakeInstantInstruction, err_11;
4375
4167
  if (userPublicKey === void 0) { userPublicKey = undefined; }
4376
4168
  return __generator(this, function (_b) {
4377
4169
  switch (_b.label) {
@@ -4423,9 +4215,9 @@ var PerpetualsClient = (function () {
4423
4215
  instructions.push(unstakeInstantInstruction);
4424
4216
  return [3, 6];
4425
4217
  case 5:
4426
- err_13 = _b.sent();
4427
- console.log("perpClient unstakeInstant error:: ", err_13);
4428
- throw err_13;
4218
+ err_11 = _b.sent();
4219
+ console.log("perpClient unstakeInstant error:: ", err_11);
4220
+ throw err_11;
4429
4221
  case 6: return [2, {
4430
4222
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4431
4223
  additionalSigners: additionalSigners
@@ -4435,7 +4227,7 @@ var PerpetualsClient = (function () {
4435
4227
  });
4436
4228
  };
4437
4229
  this.setFeeShareBps = function (poolConfig, flpStakeAccountPks) { return __awaiter(_this, void 0, void 0, function () {
4438
- var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_14;
4230
+ var publicKey, pool, custodyAccountMetas, _i, _a, custody, maxFlpStakeAccountPkLength, flpStakeAccountMetas, _b, flpStakeAccountPks_2, flpStakeAccountPk, refreshStakeInstruction, err_12;
4439
4231
  return __generator(this, function (_c) {
4440
4232
  switch (_c.label) {
4441
4233
  case 0:
@@ -4479,15 +4271,15 @@ var PerpetualsClient = (function () {
4479
4271
  refreshStakeInstruction = _c.sent();
4480
4272
  return [2, refreshStakeInstruction];
4481
4273
  case 2:
4482
- err_14 = _c.sent();
4483
- console.log("perpClient refreshStaking error:: ", err_14);
4484
- throw err_14;
4274
+ err_12 = _c.sent();
4275
+ console.log("perpClient refreshStaking error:: ", err_12);
4276
+ throw err_12;
4485
4277
  case 3: return [2];
4486
4278
  }
4487
4279
  });
4488
4280
  }); };
4489
4281
  this.unstakeRequest = function (unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
4490
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_15;
4282
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, unstakeRequestInstruction, err_13;
4491
4283
  return __generator(this, function (_a) {
4492
4284
  switch (_a.label) {
4493
4285
  case 0:
@@ -4521,9 +4313,9 @@ var PerpetualsClient = (function () {
4521
4313
  instructions.push(unstakeRequestInstruction);
4522
4314
  return [3, 4];
4523
4315
  case 3:
4524
- err_15 = _a.sent();
4525
- console.log("perpClient unstakeRequest error:: ", err_15);
4526
- throw err_15;
4316
+ err_13 = _a.sent();
4317
+ console.log("perpClient unstakeRequest error:: ", err_13);
4318
+ throw err_13;
4527
4319
  case 4: return [2, {
4528
4320
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4529
4321
  additionalSigners: additionalSigners
@@ -4537,7 +4329,7 @@ var PerpetualsClient = (function () {
4537
4329
  args_1[_i - 1] = arguments[_i];
4538
4330
  }
4539
4331
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, pendingActivation, deactivated, createUserLPTA, userPublicKey) {
4540
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_16;
4332
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, pool, poolStakedLpVault, flpStakeAccount, userLpTokenAccount, _a, withdrawStakeInstruction, err_14;
4541
4333
  if (pendingActivation === void 0) { pendingActivation = true; }
4542
4334
  if (deactivated === void 0) { deactivated = true; }
4543
4335
  if (createUserLPTA === void 0) { createUserLPTA = true; }
@@ -4593,9 +4385,9 @@ var PerpetualsClient = (function () {
4593
4385
  instructions.push(withdrawStakeInstruction);
4594
4386
  return [3, 6];
4595
4387
  case 5:
4596
- err_16 = _b.sent();
4597
- console.log("perpClient withdrawStake error:: ", err_16);
4598
- throw err_16;
4388
+ err_14 = _b.sent();
4389
+ console.log("perpClient withdrawStake error:: ", err_14);
4390
+ throw err_14;
4599
4391
  case 6: return [2, {
4600
4392
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4601
4393
  additionalSigners: additionalSigners
@@ -4610,7 +4402,7 @@ var PerpetualsClient = (function () {
4610
4402
  args_1[_i - 3] = arguments[_i];
4611
4403
  }
4612
4404
  return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, tokenStakeAccount_1], args_1, true), void 0, function (rewardSymbol, poolConfig, tokenStakeAccount, createUserATA) {
4613
- var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_17;
4405
+ var publicKey, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tokenStakeAccounts, withdrawStakeInstruction, err_15;
4614
4406
  if (createUserATA === void 0) { createUserATA = true; }
4615
4407
  return __generator(this, function (_b) {
4616
4408
  switch (_b.label) {
@@ -4671,9 +4463,9 @@ var PerpetualsClient = (function () {
4671
4463
  instructions.push(withdrawStakeInstruction);
4672
4464
  return [3, 6];
4673
4465
  case 5:
4674
- err_17 = _b.sent();
4675
- console.log("perpClient withdrawStake error:: ", err_17);
4676
- throw err_17;
4466
+ err_15 = _b.sent();
4467
+ console.log("perpClient withdrawStake error:: ", err_15);
4468
+ throw err_15;
4677
4469
  case 6: return [2, {
4678
4470
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
4679
4471
  additionalSigners: additionalSigners
@@ -4688,7 +4480,7 @@ var PerpetualsClient = (function () {
4688
4480
  args_1[_i - 5] = arguments[_i];
4689
4481
  }
4690
4482
  return __awaiter(_this, __spreadArray([amountIn_1, minCompoundingAmountOut_1, inTokenSymbol_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (amountIn, minCompoundingAmountOut, inTokenSymbol, rewardTokenMint, poolConfig, skipBalanceChecks, ephemeralSignerPubkey, userPublicKey) {
4691
- var publicKey, preInstructions, instructions, additionalSigners, postInstructions, rewardCustody, inCustodyConfig, lpTokenMint, compoundingTokenMint, wrappedSolAccount, lpTokenAccount, compoundingTokenAccount, fundingAccount, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, lamports, unWrappedSolBalance, _e, addCompoundingLiquidity, err_18;
4483
+ var publicKey, preInstructions, instructions, additionalSigners, postInstructions, rewardCustody, inCustodyConfig, lpTokenMint, compoundingTokenMint, wrappedSolAccount, lpTokenAccount, compoundingTokenAccount, fundingAccount, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, lamports, unWrappedSolBalance, _e, addCompoundingLiquidity, err_16;
4692
4484
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
4693
4485
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4694
4486
  if (userPublicKey === void 0) { userPublicKey = undefined; }
@@ -4816,8 +4608,8 @@ var PerpetualsClient = (function () {
4816
4608
  instructions.push(addCompoundingLiquidity);
4817
4609
  return [3, 10];
4818
4610
  case 9:
4819
- err_18 = _f.sent();
4820
- console.log("perpClient addCompoundingLiquidity error:: ", err_18);
4611
+ err_16 = _f.sent();
4612
+ console.log("perpClient addCompoundingLiquidity error:: ", err_16);
4821
4613
  return [3, 10];
4822
4614
  case 10: return [2, {
4823
4615
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4833,7 +4625,7 @@ var PerpetualsClient = (function () {
4833
4625
  args_1[_i - 5] = arguments[_i];
4834
4626
  }
4835
4627
  return __awaiter(_this, __spreadArray([compoundingAmountIn_1, minAmountOut_1, outTokenSymbol_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (compoundingAmountIn, minAmountOut, outTokenSymbol, rewardTokenMint, poolConfig, createUserATA, ephemeralSignerPubkey, userPublicKey) {
4836
- var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, outCustodyConfig, lpTokenMint, compoundingTokenMint, lamports, _a, custodyAccountMetas, custodyOracleAccountMetas, markets, _b, _c, custody, _d, _e, market, compoundingTokenAccount, removeCompoundingLiquidity, err_19;
4628
+ var publicKey, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, outCustodyConfig, lpTokenMint, compoundingTokenMint, lamports, _a, custodyAccountMetas, custodyOracleAccountMetas, markets, _b, _c, custody, _d, _e, market, compoundingTokenAccount, removeCompoundingLiquidity, err_17;
4837
4629
  if (createUserATA === void 0) { createUserATA = true; }
4838
4630
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
4839
4631
  if (userPublicKey === void 0) { userPublicKey = undefined; }
@@ -4945,8 +4737,8 @@ var PerpetualsClient = (function () {
4945
4737
  instructions.push(removeCompoundingLiquidity);
4946
4738
  return [3, 8];
4947
4739
  case 7:
4948
- err_19 = _f.sent();
4949
- console.log("perpClient removeCompoundingLiquidity error:: ", err_19);
4740
+ err_17 = _f.sent();
4741
+ console.log("perpClient removeCompoundingLiquidity error:: ", err_17);
4950
4742
  return [3, 8];
4951
4743
  case 8: return [2, {
4952
4744
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -4962,7 +4754,7 @@ var PerpetualsClient = (function () {
4962
4754
  args_1[_i - 3] = arguments[_i];
4963
4755
  }
4964
4756
  return __awaiter(_this, __spreadArray([amount_1, rewardTokenMint_1, poolConfig_1], args_1, true), void 0, function (amount, rewardTokenMint, poolConfig, createUserATA) {
4965
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, _a, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _b, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _c, _d, custody, _e, _f, market, migrateStake, err_20;
4757
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, _a, flpStakeAccount, tokenStakeAccount, tokenStakeAccounts, _b, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _c, _d, custody, _e, _f, market, migrateStake, err_18;
4966
4758
  if (createUserATA === void 0) { createUserATA = true; }
4967
4759
  return __generator(this, function (_g) {
4968
4760
  switch (_g.label) {
@@ -5060,8 +4852,8 @@ var PerpetualsClient = (function () {
5060
4852
  instructions.push(migrateStake);
5061
4853
  return [3, 8];
5062
4854
  case 7:
5063
- err_20 = _g.sent();
5064
- console.log("perpClient migrateStake error:: ", err_20);
4855
+ err_18 = _g.sent();
4856
+ console.log("perpClient migrateStake error:: ", err_18);
5065
4857
  return [3, 8];
5066
4858
  case 8: return [2, {
5067
4859
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5072,7 +4864,7 @@ var PerpetualsClient = (function () {
5072
4864
  });
5073
4865
  };
5074
4866
  this.migrateFlp = function (amount, rewardTokenMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5075
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_21;
4867
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, lpTokenMint, compoundingTokenMint, compoudingTokenAccount, flpStakeAccount, poolStakedLpVault, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, migrateFlp, err_19;
5076
4868
  return __generator(this, function (_d) {
5077
4869
  switch (_d.label) {
5078
4870
  case 0:
@@ -5144,8 +4936,8 @@ var PerpetualsClient = (function () {
5144
4936
  instructions.push(migrateFlp);
5145
4937
  return [3, 4];
5146
4938
  case 3:
5147
- err_21 = _d.sent();
5148
- console.log("perpClient migrateFlp error:: ", err_21);
4939
+ err_19 = _d.sent();
4940
+ console.log("perpClient migrateFlp error:: ", err_19);
5149
4941
  return [3, 4];
5150
4942
  case 4: return [2, {
5151
4943
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
@@ -5160,7 +4952,7 @@ var PerpetualsClient = (function () {
5160
4952
  args_1[_i - 1] = arguments[_i];
5161
4953
  }
5162
4954
  return __awaiter(_this, __spreadArray([poolConfig_1], args_1, true), void 0, function (poolConfig, rewardTokenSymbol) {
5163
- var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_22;
4955
+ var instructions, additionalSigners, rewardCustody, lpTokenMint, custodyAccountMetas, custodyOracleAccountMetas, markets, _a, _b, custody, _c, _d, market, compoundingFee, err_20;
5164
4956
  if (rewardTokenSymbol === void 0) { rewardTokenSymbol = 'USDC'; }
5165
4957
  return __generator(this, function (_e) {
5166
4958
  switch (_e.label) {
@@ -5218,8 +5010,8 @@ var PerpetualsClient = (function () {
5218
5010
  instructions.push(compoundingFee);
5219
5011
  return [3, 4];
5220
5012
  case 3:
5221
- err_22 = _e.sent();
5222
- console.log("perpClient compoundingFee error:: ", err_22);
5013
+ err_20 = _e.sent();
5014
+ console.log("perpClient compoundingFee error:: ", err_20);
5223
5015
  return [3, 4];
5224
5016
  case 4: return [2, {
5225
5017
  instructions: __spreadArray([], instructions, true),
@@ -5229,162 +5021,24 @@ var PerpetualsClient = (function () {
5229
5021
  });
5230
5022
  });
5231
5023
  };
5232
- this.burnAndClaim = function (owner, nftMint, poolConfig, createAta) { return __awaiter(_this, void 0, void 0, function () {
5233
- var preInstructions, instructions, postInstructions, additionalSigners, userTokenAccount, _a, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndClaimInstruction, err_23;
5234
- return __generator(this, function (_b) {
5235
- switch (_b.label) {
5024
+ this.depositTokenStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5025
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_21;
5026
+ return __generator(this, function (_a) {
5027
+ switch (_a.label) {
5236
5028
  case 0:
5237
5029
  preInstructions = [];
5238
5030
  instructions = [];
5239
5031
  postInstructions = [];
5240
5032
  additionalSigners = [];
5241
- _b.label = 1;
5033
+ _a.label = 1;
5242
5034
  case 1:
5243
- _b.trys.push([1, 7, , 8]);
5244
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, owner, true)];
5245
- case 2:
5246
- userTokenAccount = _b.sent();
5247
- _a = createAta;
5248
- if (!_a) return [3, 4];
5035
+ _a.trys.push([1, 4, , 5]);
5036
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5037
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(poolConfig.tokenMint, owner, true);
5249
5038
  return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5250
- case 3:
5251
- _a = !(_b.sent());
5252
- _b.label = 4;
5253
- case 4:
5254
- if (_a) {
5255
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(owner, userTokenAccount, owner, poolConfig.tokenMint));
5256
- }
5257
- return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, owner, true)];
5258
- case 5:
5259
- nftTokenAccount = _b.sent();
5260
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5261
- Buffer.from("trading"),
5262
- nftMint.toBuffer(),
5263
- ], this.programId)[0];
5264
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5265
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5266
- edition = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("edition")], constants_1.METAPLEX_PROGRAM_ID)[0];
5267
- tokenRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("token_record"), nftTokenAccount.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5268
- return [4, this.program.methods
5269
- .burnAndClaim({})
5270
- .accounts({
5271
- owner: owner,
5272
- receivingTokenAccount: userTokenAccount,
5273
- perpetuals: this.perpetuals.publicKey,
5274
- tokenVault: poolConfig.tokenVault,
5275
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5276
- metadataAccount: metadataAccount,
5277
- collectionMetadata: collectionMetadata,
5278
- edition: edition,
5279
- tokenRecord: tokenRecord,
5280
- tradingAccount: nftTradingAccount,
5281
- transferAuthority: poolConfig.transferAuthority,
5282
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5283
- nftMint: nftMint,
5284
- nftTokenAccount: nftTokenAccount,
5285
- systemProgram: web3_js_1.SystemProgram.programId,
5286
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5287
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5288
- eventAuthority: this.eventAuthority.publicKey,
5289
- program: this.programId,
5290
- receivingTokenMint: poolConfig.tokenMint,
5291
- })
5292
- .instruction()];
5293
- case 6:
5294
- burnAndClaimInstruction = _b.sent();
5295
- instructions.push(burnAndClaimInstruction);
5296
- return [3, 8];
5297
- case 7:
5298
- err_23 = _b.sent();
5299
- console.log("perpClient burnAndClaimInstruction error:: ", err_23);
5300
- throw err_23;
5301
- case 8: return [2, {
5302
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5303
- additionalSigners: additionalSigners
5304
- }];
5305
- }
5306
- });
5307
- }); };
5308
- this.burnAndStake = function (owner, feePayer, nftMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5309
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, nftTokenAccount, nftTradingAccount, metadataAccount, collectionMetadata, edition, tokenRecord, burnAndStakeInstruction, err_24;
5310
- return __generator(this, function (_a) {
5311
- switch (_a.label) {
5312
- case 0:
5313
- preInstructions = [];
5314
- instructions = [];
5315
- postInstructions = [];
5316
- additionalSigners = [];
5317
- _a.label = 1;
5318
- case 1:
5319
- _a.trys.push([1, 3, , 4]);
5320
- tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5321
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, owner, true);
5322
- nftTradingAccount = web3_js_1.PublicKey.findProgramAddressSync([
5323
- Buffer.from("trading"),
5324
- nftMint.toBuffer(),
5325
- ], this.programId)[0];
5326
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5327
- collectionMetadata = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), poolConfig.nftCollectionAddress.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5328
- edition = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("edition")], constants_1.METAPLEX_PROGRAM_ID)[0];
5329
- tokenRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer(), Buffer.from("token_record"), nftTokenAccount.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5330
- return [4, this.program.methods
5331
- .burnAndStake({})
5332
- .accounts({
5333
- owner: owner,
5334
- feePayer: feePayer,
5335
- perpetuals: this.perpetuals.publicKey,
5336
- tokenVault: poolConfig.tokenVault,
5337
- tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
5338
- tokenStakeAccount: tokenStakeAccount,
5339
- metadataAccount: metadataAccount,
5340
- collectionMetadata: collectionMetadata,
5341
- edition: edition,
5342
- tokenRecord: tokenRecord,
5343
- tradingAccount: nftTradingAccount,
5344
- transferAuthority: poolConfig.transferAuthority,
5345
- metadataProgram: constants_1.METAPLEX_PROGRAM_ID,
5346
- nftMint: nftMint,
5347
- nftTokenAccount: nftTokenAccount,
5348
- systemProgram: web3_js_1.SystemProgram.programId,
5349
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5350
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5351
- eventAuthority: this.eventAuthority.publicKey,
5352
- program: this.programId
5353
- })
5354
- .instruction()];
5355
- case 2:
5356
- burnAndStakeInstruction = _a.sent();
5357
- instructions.push(burnAndStakeInstruction);
5358
- return [3, 4];
5359
- case 3:
5360
- err_24 = _a.sent();
5361
- console.log("perpClient burnAndStakeInstruction error:: ", err_24);
5362
- throw err_24;
5363
- case 4: return [2, {
5364
- instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5365
- additionalSigners: additionalSigners
5366
- }];
5367
- }
5368
- });
5369
- }); };
5370
- this.depositTokenStake = function (owner, feePayer, depositAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5371
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, depositTokenStakeInstruction, err_25;
5372
- return __generator(this, function (_a) {
5373
- switch (_a.label) {
5374
- case 0:
5375
- preInstructions = [];
5376
- instructions = [];
5377
- postInstructions = [];
5378
- additionalSigners = [];
5379
- _a.label = 1;
5380
- case 1:
5381
- _a.trys.push([1, 4, , 5]);
5382
- tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5383
- userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(poolConfig.tokenMint, owner, true);
5384
- return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5385
- case 2:
5386
- if (!(_a.sent())) {
5387
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(feePayer, userTokenAccount, owner, poolConfig.tokenMint));
5039
+ case 2:
5040
+ if (!(_a.sent())) {
5041
+ preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(feePayer, userTokenAccount, owner, poolConfig.tokenMint));
5388
5042
  }
5389
5043
  return [4, this.program.methods
5390
5044
  .depositTokenStake({
@@ -5410,9 +5064,9 @@ var PerpetualsClient = (function () {
5410
5064
  instructions.push(depositTokenStakeInstruction);
5411
5065
  return [3, 5];
5412
5066
  case 4:
5413
- err_25 = _a.sent();
5414
- console.log("perpClient depositStakingInstruction error:: ", err_25);
5415
- throw err_25;
5067
+ err_21 = _a.sent();
5068
+ console.log("perpClient depositStakingInstruction error:: ", err_21);
5069
+ throw err_21;
5416
5070
  case 5: return [2, {
5417
5071
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5418
5072
  additionalSigners: additionalSigners
@@ -5421,7 +5075,7 @@ var PerpetualsClient = (function () {
5421
5075
  });
5422
5076
  }); };
5423
5077
  this.unstakeTokenRequest = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5424
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_26;
5078
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, unstakeTokenRequestInstruction, err_22;
5425
5079
  return __generator(this, function (_a) {
5426
5080
  switch (_a.label) {
5427
5081
  case 0:
@@ -5450,9 +5104,9 @@ var PerpetualsClient = (function () {
5450
5104
  instructions.push(unstakeTokenRequestInstruction);
5451
5105
  return [3, 4];
5452
5106
  case 3:
5453
- err_26 = _a.sent();
5454
- console.log("perpClient unstakeTokenRequestInstruction error:: ", err_26);
5455
- throw err_26;
5107
+ err_22 = _a.sent();
5108
+ console.log("perpClient unstakeTokenRequestInstruction error:: ", err_22);
5109
+ throw err_22;
5456
5110
  case 4: return [2, {
5457
5111
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5458
5112
  additionalSigners: additionalSigners
@@ -5461,7 +5115,7 @@ var PerpetualsClient = (function () {
5461
5115
  });
5462
5116
  }); };
5463
5117
  this.unstakeTokenInstant = function (owner, unstakeAmount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5464
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_27;
5118
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, unstakeTokenInstantInstruction, err_23;
5465
5119
  return __generator(this, function (_a) {
5466
5120
  switch (_a.label) {
5467
5121
  case 0:
@@ -5502,9 +5156,9 @@ var PerpetualsClient = (function () {
5502
5156
  instructions.push(unstakeTokenInstantInstruction);
5503
5157
  return [3, 5];
5504
5158
  case 4:
5505
- err_27 = _a.sent();
5506
- console.log("perpClient unstakeTokenInstantInstruction error:: ", err_27);
5507
- throw err_27;
5159
+ err_23 = _a.sent();
5160
+ console.log("perpClient unstakeTokenInstantInstruction error:: ", err_23);
5161
+ throw err_23;
5508
5162
  case 5: return [2, {
5509
5163
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5510
5164
  additionalSigners: additionalSigners
@@ -5513,7 +5167,7 @@ var PerpetualsClient = (function () {
5513
5167
  });
5514
5168
  }); };
5515
5169
  this.withdrawToken = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5516
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_28;
5170
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, withdrawTokenInstruction, err_24;
5517
5171
  return __generator(this, function (_a) {
5518
5172
  switch (_a.label) {
5519
5173
  case 0:
@@ -5554,9 +5208,9 @@ var PerpetualsClient = (function () {
5554
5208
  instructions.push(withdrawTokenInstruction);
5555
5209
  return [3, 5];
5556
5210
  case 4:
5557
- err_28 = _a.sent();
5558
- console.log("perpClient withdrawTokenInstruction error:: ", err_28);
5559
- throw err_28;
5211
+ err_24 = _a.sent();
5212
+ console.log("perpClient withdrawTokenInstruction error:: ", err_24);
5213
+ throw err_24;
5560
5214
  case 5: return [2, {
5561
5215
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5562
5216
  additionalSigners: additionalSigners
@@ -5565,7 +5219,7 @@ var PerpetualsClient = (function () {
5565
5219
  });
5566
5220
  }); };
5567
5221
  this.cancelUnstakeRequest = function (owner, withdrawRequestId, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5568
- var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_29;
5222
+ var preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, cancelUnstakeRequestInstruction, err_25;
5569
5223
  return __generator(this, function (_a) {
5570
5224
  switch (_a.label) {
5571
5225
  case 0:
@@ -5594,9 +5248,9 @@ var PerpetualsClient = (function () {
5594
5248
  instructions.push(cancelUnstakeRequestInstruction);
5595
5249
  return [3, 4];
5596
5250
  case 3:
5597
- err_29 = _a.sent();
5598
- console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_29);
5599
- throw err_29;
5251
+ err_25 = _a.sent();
5252
+ console.log("perpClient cancelUnstakeRequestInstruction error:: ", err_25);
5253
+ throw err_25;
5600
5254
  case 4: return [2, {
5601
5255
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5602
5256
  additionalSigners: additionalSigners
@@ -5610,7 +5264,7 @@ var PerpetualsClient = (function () {
5610
5264
  args_1[_i - 2] = arguments[_i];
5611
5265
  }
5612
5266
  return __awaiter(_this, __spreadArray([owner_1, poolConfig_1], args_1, true), void 0, function (owner, poolConfig, createUserATA) {
5613
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_30;
5267
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, userTokenAccount, _a, collectTokenRewardInstruction, err_26;
5614
5268
  if (createUserATA === void 0) { createUserATA = true; }
5615
5269
  return __generator(this, function (_b) {
5616
5270
  switch (_b.label) {
@@ -5656,9 +5310,9 @@ var PerpetualsClient = (function () {
5656
5310
  instructions.push(collectTokenRewardInstruction);
5657
5311
  return [3, 6];
5658
5312
  case 5:
5659
- err_30 = _b.sent();
5660
- console.log("perpClient collectTokenRewardInstruction error:: ", err_30);
5661
- throw err_30;
5313
+ err_26 = _b.sent();
5314
+ console.log("perpClient collectTokenRewardInstruction error:: ", err_26);
5315
+ throw err_26;
5662
5316
  case 6: return [2, {
5663
5317
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5664
5318
  additionalSigners: additionalSigners
@@ -5673,7 +5327,7 @@ var PerpetualsClient = (function () {
5673
5327
  args_1[_i - 3] = arguments[_i];
5674
5328
  }
5675
5329
  return __awaiter(_this, __spreadArray([owner_1, rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rewardSymbol, poolConfig, createUserATA) {
5676
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_31;
5330
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, tokenStakeAccount, userTokenAccount, _a, collectRevenueInstruction, err_27;
5677
5331
  if (createUserATA === void 0) { createUserATA = true; }
5678
5332
  return __generator(this, function (_b) {
5679
5333
  switch (_b.label) {
@@ -5720,9 +5374,9 @@ var PerpetualsClient = (function () {
5720
5374
  instructions.push(collectRevenueInstruction);
5721
5375
  return [3, 6];
5722
5376
  case 5:
5723
- err_31 = _b.sent();
5724
- console.log("perpClient collectRevenueInstruction error:: ", err_31);
5725
- throw err_31;
5377
+ err_27 = _b.sent();
5378
+ console.log("perpClient collectRevenueInstruction error:: ", err_27);
5379
+ throw err_27;
5726
5380
  case 6: return [2, {
5727
5381
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5728
5382
  additionalSigners: additionalSigners
@@ -5731,179 +5385,82 @@ var PerpetualsClient = (function () {
5731
5385
  });
5732
5386
  });
5733
5387
  };
5734
- this.initRewardVault = function (nftCount, rewardSymbol, collectionMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5735
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fbNftProgramData, rewardVault, rewardTokenAccount, nftTransferAuthority, initRewardVault, err_32;
5736
- return __generator(this, function (_a) {
5737
- switch (_a.label) {
5738
- case 0:
5739
- publicKey = this.provider.wallet.publicKey;
5740
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5741
- instructions = [];
5742
- additionalSigners = [];
5743
- _a.label = 1;
5744
- case 1:
5745
- _a.trys.push([1, 3, , 4]);
5746
- fbNftProgramData = web3_js_1.PublicKey.findProgramAddressSync([this.programFbnftReward.programId.toBuffer()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0];
5747
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5748
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5749
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5750
- return [4, this.programFbnftReward.methods
5751
- .initRewardVault({
5752
- nftCount: nftCount
5753
- })
5754
- .accounts({
5755
- admin: publicKey,
5756
- transferAuthority: nftTransferAuthority,
5757
- rewardVault: rewardVault,
5758
- rewardMint: rewardCustodyMint,
5759
- rewardTokenAccount: rewardTokenAccount,
5760
- collectionMint: collectionMint,
5761
- programData: fbNftProgramData,
5762
- systemProgram: web3_js_1.SystemProgram.programId,
5763
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5764
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
5765
- })
5766
- .instruction()];
5767
- case 2:
5768
- initRewardVault = _a.sent();
5769
- instructions.push(initRewardVault);
5770
- return [3, 4];
5771
- case 3:
5772
- err_32 = _a.sent();
5773
- console.log("perpClient InitRewardVault error:: ", err_32);
5774
- throw err_32;
5775
- case 4: return [2, {
5776
- instructions: __spreadArray([], instructions, true),
5777
- additionalSigners: additionalSigners
5778
- }];
5779
- }
5780
- });
5781
- }); };
5782
- this.distributeReward = function (rewardAmount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
5783
- var publicKey, rewardCustodyMint, instructions, additionalSigners, fundingAccount, rewardVault, rewardTokenAccount, distributeReward, err_33;
5784
- return __generator(this, function (_a) {
5785
- switch (_a.label) {
5786
- case 0:
5787
- publicKey = this.provider.wallet.publicKey;
5788
- rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
5789
- instructions = [];
5790
- additionalSigners = [];
5791
- _a.label = 1;
5792
- case 1:
5793
- _a.trys.push([1, 3, , 4]);
5794
- fundingAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true);
5795
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5796
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5797
- return [4, this.programFbnftReward.methods
5798
- .distributeRewards({
5799
- rewardAmount: rewardAmount
5800
- })
5801
- .accounts({
5802
- admin: publicKey,
5803
- fundingAccount: fundingAccount,
5804
- rewardVault: rewardVault,
5805
- rewardTokenAccount: rewardTokenAccount,
5806
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5807
- })
5808
- .instruction()];
5809
- case 2:
5810
- distributeReward = _a.sent();
5811
- instructions.push(distributeReward);
5812
- return [3, 4];
5813
- case 3:
5814
- err_33 = _a.sent();
5815
- console.log("perpClient distributeReward error:: ", err_33);
5816
- throw err_33;
5817
- case 4: return [2, {
5818
- instructions: __spreadArray([], instructions, true),
5819
- additionalSigners: additionalSigners
5820
- }];
5821
- }
5822
- });
5823
- }); };
5824
- this.collectNftReward = function (rewardSymbol_1, poolConfig_1, nftMint_1) {
5388
+ this.collectRebate = function (owner_1, rebateSymbol_1, poolConfig_1) {
5825
5389
  var args_1 = [];
5826
5390
  for (var _i = 3; _i < arguments.length; _i++) {
5827
5391
  args_1[_i - 3] = arguments[_i];
5828
5392
  }
5829
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1, nftMint_1], args_1, true), void 0, function (rewardSymbol, poolConfig, nftMint, createUserATA) {
5830
- var publicKey, rewardToken, rewardCustodyMint, instructions, additionalSigners, nftTokenAccount, metadataAccount, receivingTokenAccount, _a, rewardRecord, rewardVault, rewardTokenAccount, nftTransferAuthority, collectNftReward, err_34;
5393
+ return __awaiter(_this, __spreadArray([owner_1, rebateSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rebateSymbol, poolConfig, createUserATA) {
5394
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rebateMint, tokenStakeAccount, userTokenAccount, _a, collectRebateInstruction, err_28;
5831
5395
  if (createUserATA === void 0) { createUserATA = true; }
5832
5396
  return __generator(this, function (_b) {
5833
5397
  switch (_b.label) {
5834
5398
  case 0:
5835
5399
  publicKey = this.provider.wallet.publicKey;
5836
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5837
- rewardCustodyMint = rewardToken.mintKey;
5400
+ preInstructions = [];
5838
5401
  instructions = [];
5402
+ postInstructions = [];
5839
5403
  additionalSigners = [];
5840
5404
  _b.label = 1;
5841
5405
  case 1:
5842
5406
  _b.trys.push([1, 5, , 6]);
5843
- nftTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(nftMint, publicKey, true);
5844
- metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
5845
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5407
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5408
+ tokenStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("token_stake"), owner.toBuffer()], this.programId)[0];
5409
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rebateMint, owner, true);
5846
5410
  _a = createUserATA;
5847
5411
  if (!_a) return [3, 3];
5848
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5412
+ return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5849
5413
  case 2:
5850
5414
  _a = !(_b.sent());
5851
5415
  _b.label = 3;
5852
5416
  case 3:
5853
5417
  if (_a) {
5854
- instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID));
5855
- }
5856
- rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), nftMint.toBuffer()], this.programFbnftReward.programId)[0];
5857
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5858
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5859
- nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
5860
- return [4, this.programFbnftReward.methods
5861
- .collectReward()
5418
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userTokenAccount, publicKey, rebateMint));
5419
+ }
5420
+ return [4, this.program.methods
5421
+ .collectRebate()
5862
5422
  .accounts({
5863
- owner: publicKey,
5864
- feePayer: publicKey,
5865
- nftMint: nftMint,
5866
- nftTokenAccount: nftTokenAccount,
5867
- metadataAccount: metadataAccount,
5868
- receivingAccount: receivingTokenAccount,
5869
- rewardRecord: rewardRecord,
5870
- rewardVault: rewardVault,
5871
- rewardTokenAccount: rewardTokenAccount,
5872
- transferAuthority: nftTransferAuthority,
5873
- systemProgram: web3_js_1.SystemProgram.programId,
5874
- tokenProgram: rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID,
5423
+ owner: owner,
5424
+ receivingTokenAccount: userTokenAccount,
5425
+ perpetuals: this.perpetuals.publicKey,
5426
+ transferAuthority: poolConfig.transferAuthority,
5427
+ rebateVault: poolConfig.rebateVault,
5428
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5429
+ tokenStakeAccount: tokenStakeAccount,
5430
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5431
+ eventAuthority: this.eventAuthority.publicKey,
5432
+ program: this.programId,
5433
+ receivingTokenMint: rebateMint,
5875
5434
  })
5876
5435
  .instruction()];
5877
5436
  case 4:
5878
- collectNftReward = _b.sent();
5879
- instructions.push(collectNftReward);
5437
+ collectRebateInstruction = _b.sent();
5438
+ instructions.push(collectRebateInstruction);
5880
5439
  return [3, 6];
5881
5440
  case 5:
5882
- err_34 = _b.sent();
5883
- throw err_34;
5441
+ err_28 = _b.sent();
5442
+ console.log("perpClient collectRebateInstruction error:: ", err_28);
5443
+ throw err_28;
5884
5444
  case 6: return [2, {
5885
- instructions: __spreadArray([], instructions, true),
5445
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5886
5446
  additionalSigners: additionalSigners
5887
5447
  }];
5888
5448
  }
5889
5449
  });
5890
5450
  });
5891
5451
  };
5892
- this.collectAndDistributeFee = function (rewardSymbol_1, poolConfig_1) {
5452
+ this.settleRebates = function (owner_1, rebateSymbol_1, rewardSymbol_1, poolConfig_1) {
5893
5453
  var args_1 = [];
5894
- for (var _i = 2; _i < arguments.length; _i++) {
5895
- args_1[_i - 2] = arguments[_i];
5454
+ for (var _i = 4; _i < arguments.length; _i++) {
5455
+ args_1[_i - 4] = arguments[_i];
5896
5456
  }
5897
- return __awaiter(_this, __spreadArray([rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (rewardSymbol, poolConfig, createUserATA, nftTradingAccount) {
5898
- var publicKey, rewardToken, rewardCustodyMint, rewardCustodyConfig, preInstructions, instructions, postInstructions, additionalSigners, pool, flpStakeAccount, receivingTokenAccount, _a, tradingAccount, rewardVault, rewardTokenAccount, withdrawStakeInstruction, err_35;
5457
+ return __awaiter(_this, __spreadArray([owner_1, rebateSymbol_1, rewardSymbol_1, poolConfig_1], args_1, true), void 0, function (owner, rebateSymbol, rewardSymbol, poolConfig, createUserATA) {
5458
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustody, rebateMint, userTokenAccount, _a, settleRebatesInstruction, err_29;
5899
5459
  if (createUserATA === void 0) { createUserATA = true; }
5900
5460
  return __generator(this, function (_b) {
5901
5461
  switch (_b.label) {
5902
5462
  case 0:
5903
5463
  publicKey = this.provider.wallet.publicKey;
5904
- rewardToken = poolConfig.getTokenFromSymbol(rewardSymbol);
5905
- rewardCustodyMint = rewardToken.mintKey;
5906
- rewardCustodyConfig = poolConfig.custodies.find(function (i) { return i.mintKey.equals(rewardToken.mintKey); });
5907
5464
  preInstructions = [];
5908
5465
  instructions = [];
5909
5466
  postInstructions = [];
@@ -5911,59 +5468,45 @@ var PerpetualsClient = (function () {
5911
5468
  _b.label = 1;
5912
5469
  case 1:
5913
5470
  _b.trys.push([1, 5, , 6]);
5914
- pool = poolConfig.poolAddress;
5915
- flpStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("stake"), publicKey.toBuffer(), pool.toBuffer()], this.program.programId)[0];
5916
- receivingTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rewardCustodyMint, publicKey, true, rewardToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID);
5471
+ rewardCustody = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(rewardSymbol).mintKey); });
5472
+ rebateMint = poolConfig.getTokenFromSymbol(rebateSymbol).mintKey;
5473
+ userTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(rebateMint, owner, true);
5917
5474
  _a = createUserATA;
5918
5475
  if (!_a) return [3, 3];
5919
- return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
5476
+ return [4, (0, utils_1.checkIfAccountExists)(userTokenAccount, this.provider.connection)];
5920
5477
  case 2:
5921
5478
  _a = !(_b.sent());
5922
5479
  _b.label = 3;
5923
5480
  case 3:
5924
5481
  if (_a) {
5925
- preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint));
5926
- }
5927
- tradingAccount = [];
5928
- if (nftTradingAccount) {
5929
- tradingAccount.push({
5930
- pubkey: nftTradingAccount,
5931
- isSigner: false,
5932
- isWritable: true,
5933
- });
5482
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, userTokenAccount, publicKey, rebateMint));
5934
5483
  }
5935
- rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
5936
- rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
5937
- return [4, this.programPerpComposability.methods
5938
- .collectAndDistributeFee()
5484
+ return [4, this.program.methods
5485
+ .settleRebates()
5939
5486
  .accounts({
5940
- perpProgram: this.programId,
5941
- owner: publicKey,
5942
- receivingTokenAccount: receivingTokenAccount,
5943
5487
  transferAuthority: poolConfig.transferAuthority,
5944
5488
  perpetuals: this.perpetuals.publicKey,
5945
- pool: pool,
5946
- feeCustody: rewardCustodyConfig.custodyAccount,
5947
- flpStakeAccount: flpStakeAccount,
5948
- feeCustodyTokenAccount: rewardCustodyConfig.tokenAccount,
5949
- systemProgram: web3_js_1.SystemProgram.programId,
5489
+ pool: poolConfig.poolAddress,
5490
+ rewardCustody: rewardCustody.custodyAccount,
5491
+ rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
5492
+ rewardCustodyTokenAccount: rewardCustody.tokenAccount,
5493
+ rebateVault: poolConfig.rebateVault,
5494
+ rebateTokenAccount: poolConfig.rebateTokenAccount,
5495
+ tokenMint: rebateMint,
5950
5496
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
5951
5497
  eventAuthority: this.eventAuthority.publicKey,
5952
- ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
5953
- fbnftRewardsProgram: this.programFbnftReward.programId,
5954
- rewardVault: rewardVault,
5955
- rewardTokenAccount: rewardTokenAccount
5498
+ program: this.programId,
5499
+ ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
5956
5500
  })
5957
- .remainingAccounts(tradingAccount)
5958
5501
  .instruction()];
5959
5502
  case 4:
5960
- withdrawStakeInstruction = _b.sent();
5961
- instructions.push(withdrawStakeInstruction);
5503
+ settleRebatesInstruction = _b.sent();
5504
+ instructions.push(settleRebatesInstruction);
5962
5505
  return [3, 6];
5963
5506
  case 5:
5964
- err_35 = _b.sent();
5965
- console.log("perpClient withdrawStake error:: ", err_35);
5966
- throw err_35;
5507
+ err_29 = _b.sent();
5508
+ console.log("perpClient settleRebatesInstruction error:: ", err_29);
5509
+ throw err_29;
5967
5510
  case 6: return [2, {
5968
5511
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
5969
5512
  additionalSigners: additionalSigners
@@ -5978,7 +5521,7 @@ var PerpetualsClient = (function () {
5978
5521
  args_1[_i - 11] = arguments[_i];
5979
5522
  }
5980
5523
  return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, reserveSymbol_1, receiveSymbol_1, side_1, limitPrice_1, reserveAmount_1, sizeAmount_1, stopLossPrice_1, takeProfitPrice_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, reserveSymbol, receiveSymbol, side, limitPrice, reserveAmount, sizeAmount, stopLossPrice, takeProfitPrice, poolConfig, skipBalanceChecks, ephemeralSignerPubkey) {
5981
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_36;
5524
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, userReserveTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, positionAccount, orderAccount, placeLimitOrder, err_30;
5982
5525
  if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
5983
5526
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
5984
5527
  return __generator(this, function (_c) {
@@ -6084,9 +5627,9 @@ var PerpetualsClient = (function () {
6084
5627
  instructions.push(placeLimitOrder);
6085
5628
  return [3, 10];
6086
5629
  case 9:
6087
- err_36 = _c.sent();
6088
- console.log("perpClient placeLimitOrder error:: ", err_36);
6089
- throw err_36;
5630
+ err_30 = _c.sent();
5631
+ console.log("perpClient placeLimitOrder error:: ", err_30);
5632
+ throw err_30;
6090
5633
  case 10: return [2, {
6091
5634
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6092
5635
  additionalSigners: additionalSigners
@@ -6101,7 +5644,7 @@ var PerpetualsClient = (function () {
6101
5644
  args_1[_i - 11] = arguments[_i];
6102
5645
  }
6103
5646
  return __awaiter(_this, __spreadArray([targetSymbol_1, collateralSymbol_1, reserveSymbol_1, receiveSymbol_1, side_1, orderId_1, limitPrice_1, sizeAmount_1, stopLossPrice_1, takeProfitPrice_1, poolConfig_1], args_1, true), void 0, function (targetSymbol, collateralSymbol, reserveSymbol, receiveSymbol, side, orderId, limitPrice, sizeAmount, stopLossPrice, takeProfitPrice, poolConfig, createUserATA, ephemeralSignerPubkey) {
6104
- var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_37;
5647
+ var publicKey, targetCustodyConfig, reserveCustodyConfig, collateralCustodyConfig, receiveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, wrappedSolAccount, userReceivingTokenAccount, lamports, _a, positionAccount, orderAccount, editLimitOrder, err_31;
6105
5648
  if (createUserATA === void 0) { createUserATA = true; }
6106
5649
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6107
5650
  return __generator(this, function (_b) {
@@ -6192,9 +5735,9 @@ var PerpetualsClient = (function () {
6192
5735
  instructions.push(editLimitOrder);
6193
5736
  return [3, 8];
6194
5737
  case 7:
6195
- err_37 = _b.sent();
6196
- console.log("perpClient editLimitOrder error:: ", err_37);
6197
- throw err_37;
5738
+ err_31 = _b.sent();
5739
+ console.log("perpClient editLimitOrder error:: ", err_31);
5740
+ throw err_31;
6198
5741
  case 8: return [2, {
6199
5742
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6200
5743
  additionalSigners: additionalSigners
@@ -6208,11 +5751,10 @@ var PerpetualsClient = (function () {
6208
5751
  for (var _i = 7; _i < arguments.length; _i++) {
6209
5752
  args_1[_i - 7] = arguments[_i];
6210
5753
  }
6211
- return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6212
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_38;
5754
+ 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) {
5755
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitOrder, err_32;
6213
5756
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6214
5757
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6215
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6216
5758
  return __generator(this, function (_a) {
6217
5759
  switch (_a.label) {
6218
5760
  case 0:
@@ -6255,16 +5797,16 @@ var PerpetualsClient = (function () {
6255
5797
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6256
5798
  collateralMint: collateralCustodyConfig.mintKey,
6257
5799
  })
6258
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5800
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6259
5801
  .instruction()];
6260
5802
  case 2:
6261
5803
  executeLimitOrder = _a.sent();
6262
5804
  instructions.push(executeLimitOrder);
6263
5805
  return [3, 4];
6264
5806
  case 3:
6265
- err_38 = _a.sent();
6266
- console.log("perpClient executeLimitOrder error:: ", err_38);
6267
- throw err_38;
5807
+ err_32 = _a.sent();
5808
+ console.log("perpClient executeLimitOrder error:: ", err_32);
5809
+ throw err_32;
6268
5810
  case 4: return [2, {
6269
5811
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6270
5812
  additionalSigners: additionalSigners
@@ -6278,11 +5820,10 @@ var PerpetualsClient = (function () {
6278
5820
  for (var _i = 8; _i < arguments.length; _i++) {
6279
5821
  args_1[_i - 8] = arguments[_i];
6280
5822
  }
6281
- return __awaiter(_this, __spreadArray([userPubkey_1, targetSymbol_1, collateralSymbol_1, reserveSymbol_1, side_1, orderId_1, poolConfig_1, privilege_1], args_1, true), void 0, function (userPubkey, targetSymbol, collateralSymbol, reserveSymbol, side, orderId, poolConfig, privilege, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6282
- var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_39;
5823
+ 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) {
5824
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, reserveCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, executeLimitWithSwap, err_33;
6283
5825
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6284
5826
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6285
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6286
5827
  return __generator(this, function (_a) {
6287
5828
  switch (_a.label) {
6288
5829
  case 0:
@@ -6328,16 +5869,16 @@ var PerpetualsClient = (function () {
6328
5869
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6329
5870
  collateralMint: collateralCustodyConfig.mintKey,
6330
5871
  })
6331
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
5872
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6332
5873
  .instruction()];
6333
5874
  case 2:
6334
5875
  executeLimitWithSwap = _a.sent();
6335
5876
  instructions.push(executeLimitWithSwap);
6336
5877
  return [3, 4];
6337
5878
  case 3:
6338
- err_39 = _a.sent();
6339
- console.log("perpClient executeLimitWithSwap error:: ", err_39);
6340
- throw err_39;
5879
+ err_33 = _a.sent();
5880
+ console.log("perpClient executeLimitWithSwap error:: ", err_33);
5881
+ throw err_33;
6341
5882
  case 4: return [2, {
6342
5883
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6343
5884
  additionalSigners: additionalSigners
@@ -6347,7 +5888,7 @@ var PerpetualsClient = (function () {
6347
5888
  });
6348
5889
  };
6349
5890
  this.placeTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6350
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_40;
5891
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, placeTriggerOrder, err_34;
6351
5892
  return __generator(this, function (_a) {
6352
5893
  switch (_a.label) {
6353
5894
  case 0:
@@ -6395,9 +5936,9 @@ var PerpetualsClient = (function () {
6395
5936
  instructions.push(placeTriggerOrder);
6396
5937
  return [3, 4];
6397
5938
  case 3:
6398
- err_40 = _a.sent();
6399
- console.log("perpClient placeTriggerOrder error:: ", err_40);
6400
- throw err_40;
5939
+ err_34 = _a.sent();
5940
+ console.log("perpClient placeTriggerOrder error:: ", err_34);
5941
+ throw err_34;
6401
5942
  case 4: return [2, {
6402
5943
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6403
5944
  additionalSigners: additionalSigners
@@ -6406,7 +5947,7 @@ var PerpetualsClient = (function () {
6406
5947
  });
6407
5948
  }); };
6408
5949
  this.editTriggerOrder = function (targetSymbol, collateralSymbol, receiveSymbol, side, orderId, triggerPrice, deltaSizeAmount, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6409
- var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_41;
5950
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, positionAccount, orderAccount, editTriggerOrder, err_35;
6410
5951
  return __generator(this, function (_a) {
6411
5952
  switch (_a.label) {
6412
5953
  case 0:
@@ -6453,9 +5994,9 @@ var PerpetualsClient = (function () {
6453
5994
  instructions.push(editTriggerOrder);
6454
5995
  return [3, 4];
6455
5996
  case 3:
6456
- err_41 = _a.sent();
6457
- console.log("perpClient editTriggerOrder error:: ", err_41);
6458
- throw err_41;
5997
+ err_35 = _a.sent();
5998
+ console.log("perpClient editTriggerOrder error:: ", err_35);
5999
+ throw err_35;
6459
6000
  case 4: return [2, {
6460
6001
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6461
6002
  additionalSigners: additionalSigners
@@ -6464,7 +6005,7 @@ var PerpetualsClient = (function () {
6464
6005
  });
6465
6006
  }); };
6466
6007
  this.cancelTriggerOrder = function (targetSymbol, collateralSymbol, side, orderId, isStopLoss, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6467
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_42;
6008
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, cancelTriggerOrder, err_36;
6468
6009
  return __generator(this, function (_a) {
6469
6010
  switch (_a.label) {
6470
6011
  case 0:
@@ -6497,9 +6038,9 @@ var PerpetualsClient = (function () {
6497
6038
  instructions.push(cancelTriggerOrder);
6498
6039
  return [3, 4];
6499
6040
  case 3:
6500
- err_42 = _a.sent();
6501
- console.log("perpClient cancelTriggerOrder error:: ", err_42);
6502
- throw err_42;
6041
+ err_36 = _a.sent();
6042
+ console.log("perpClient cancelTriggerOrder error:: ", err_36);
6043
+ throw err_36;
6503
6044
  case 4: return [2, {
6504
6045
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6505
6046
  additionalSigners: additionalSigners
@@ -6508,7 +6049,7 @@ var PerpetualsClient = (function () {
6508
6049
  });
6509
6050
  }); };
6510
6051
  this.cancelAllTriggerOrders = function (targetSymbol, collateralSymbol, side, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6511
- var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_43;
6052
+ var publicKey, targetCustodyConfig, collateralCustodyConfig, marketAccount, preInstructions, instructions, postInstructions, additionalSigners, orderAccount, positionAccount, cancelAllTriggerOrders, err_37;
6512
6053
  return __generator(this, function (_a) {
6513
6054
  switch (_a.label) {
6514
6055
  case 0:
@@ -6539,9 +6080,9 @@ var PerpetualsClient = (function () {
6539
6080
  instructions.push(cancelAllTriggerOrders);
6540
6081
  return [3, 4];
6541
6082
  case 3:
6542
- err_43 = _a.sent();
6543
- console.log("perpClient cancelAllTriggerOrders error:: ", err_43);
6544
- throw err_43;
6083
+ err_37 = _a.sent();
6084
+ console.log("perpClient cancelAllTriggerOrders error:: ", err_37);
6085
+ throw err_37;
6545
6086
  case 4: return [2, {
6546
6087
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6547
6088
  additionalSigners: additionalSigners
@@ -6554,13 +6095,12 @@ var PerpetualsClient = (function () {
6554
6095
  for (var _i = 9; _i < arguments.length; _i++) {
6555
6096
  args_1[_i - 9] = arguments[_i];
6556
6097
  }
6557
- return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, receivingSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, receivingSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6558
- var payerPubkey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, userReceivingTokenAccount, userReceivingTokenAccountCollateral, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, collateralToken, receivingToken, _a, _b, positionAccount, orderAccount, custodyAccountMetas, custodyOracleAccountMetas, _c, _d, custody, executeTriggerWithSwap, err_44;
6098
+ 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) {
6099
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, receivingCustodyConfig, marketAccount, userReceivingTokenAccount, userReceivingTokenAccountCollateral, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, collateralToken, receivingToken, _a, _b, positionAccount, orderAccount, custodyAccountMetas, custodyOracleAccountMetas, _c, _d, custody, executeTriggerWithSwap, err_38;
6559
6100
  if (createUserATA === void 0) { createUserATA = true; }
6560
6101
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6561
6102
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6562
6103
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6563
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6564
6104
  return __generator(this, function (_e) {
6565
6105
  switch (_e.label) {
6566
6106
  case 0:
@@ -6655,16 +6195,16 @@ var PerpetualsClient = (function () {
6655
6195
  collateralMint: collateralCustodyConfig.mintKey,
6656
6196
  collateralTokenProgram: collateralToken.isToken2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID
6657
6197
  })
6658
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6198
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6659
6199
  .instruction()];
6660
6200
  case 8:
6661
6201
  executeTriggerWithSwap = _e.sent();
6662
6202
  instructions.push(executeTriggerWithSwap);
6663
6203
  return [3, 10];
6664
6204
  case 9:
6665
- err_44 = _e.sent();
6666
- console.log("perpClient executeTriggerWithSwap error:: ", err_44);
6667
- throw err_44;
6205
+ err_38 = _e.sent();
6206
+ console.log("perpClient executeTriggerWithSwap error:: ", err_38);
6207
+ throw err_38;
6668
6208
  case 10: return [2, {
6669
6209
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6670
6210
  additionalSigners: additionalSigners
@@ -6678,13 +6218,12 @@ var PerpetualsClient = (function () {
6678
6218
  for (var _i = 8; _i < arguments.length; _i++) {
6679
6219
  args_1[_i - 8] = arguments[_i];
6680
6220
  }
6681
- return __awaiter(_this, __spreadArray([owner_1, targetSymbol_1, collateralSymbol_1, side_1, orderId_1, isStopLoss_1, privilege_1, poolConfig_1], args_1, true), void 0, function (owner, targetSymbol, collateralSymbol, side, orderId, isStopLoss, privilege, poolConfig, createUserATA, ephemeralSignerPubkey, tokenStakeAccount, userReferralAccount, rebateTokenAccount) {
6682
- var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_45;
6221
+ 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) {
6222
+ var payerPubkey, targetCustodyConfig, collateralCustodyConfig, marketAccount, userReceivingTokenAccount, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, _a, positionAccount, orderAccount, executeTriggerOrder, err_39;
6683
6223
  if (createUserATA === void 0) { createUserATA = true; }
6684
6224
  if (ephemeralSignerPubkey === void 0) { ephemeralSignerPubkey = undefined; }
6685
6225
  if (tokenStakeAccount === void 0) { tokenStakeAccount = web3_js_1.PublicKey.default; }
6686
6226
  if (userReferralAccount === void 0) { userReferralAccount = web3_js_1.PublicKey.default; }
6687
- if (rebateTokenAccount === void 0) { rebateTokenAccount = web3_js_1.PublicKey.default; }
6688
6227
  return __generator(this, function (_b) {
6689
6228
  switch (_b.label) {
6690
6229
  case 0:
@@ -6744,16 +6283,16 @@ var PerpetualsClient = (function () {
6744
6283
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
6745
6284
  receivingMint: collateralCustodyConfig.mintKey
6746
6285
  })
6747
- .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, rebateTokenAccount, privilege), true))
6286
+ .remainingAccounts(__spreadArray([], (0, getReferralAccounts_1.getReferralAccounts)(tokenStakeAccount, userReferralAccount, privilege), true))
6748
6287
  .instruction()];
6749
6288
  case 6:
6750
6289
  executeTriggerOrder = _b.sent();
6751
6290
  instructions.push(executeTriggerOrder);
6752
6291
  return [3, 8];
6753
6292
  case 7:
6754
- err_45 = _b.sent();
6755
- console.log("perpClient executeTriggerOrder error:: ", err_45);
6756
- throw err_45;
6293
+ err_39 = _b.sent();
6294
+ console.log("perpClient executeTriggerOrder error:: ", err_39);
6295
+ throw err_39;
6757
6296
  case 8: return [2, {
6758
6297
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6759
6298
  additionalSigners: additionalSigners
@@ -6768,7 +6307,7 @@ var PerpetualsClient = (function () {
6768
6307
  args_1[_i - 5] = arguments[_i];
6769
6308
  }
6770
6309
  return __awaiter(_this, __spreadArray([userInputTokenSymbol_1, userOutputTokenSymbol_1, amountIn_1, minAmountOut_1, poolConfig_1], args_1, true), void 0, function (userInputTokenSymbol, userOutputTokenSymbol, amountIn, minAmountOut, poolConfig, useFeesPool, createUserATA, unWrapSol, skipBalanceChecks, ephemeralSignerPubkey) {
6771
- var userInputCustodyConfig, userOutputCustodyConfig, publicKey, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userOutputTokenAccount, userInputTokenAccount, wsolAssociatedTokenAccount, wsolATAExist, unWrappedSolBalance, _a, wsolAssociatedTokenAccount, closeWsolATAIns, accCreationLamports, lamports, unWrappedSolBalance, _b, tokenAccountBalance, _c, lamports, _d, custodyAccountMetas, custodyOracleAccountMetas, _e, _f, custody, params, inx, closeWsolATAIns, err_46;
6310
+ var userInputCustodyConfig, userOutputCustodyConfig, publicKey, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userOutputTokenAccount, userInputTokenAccount, wsolAssociatedTokenAccount, wsolATAExist, unWrappedSolBalance, _a, wsolAssociatedTokenAccount, closeWsolATAIns, accCreationLamports, lamports, unWrappedSolBalance, _b, tokenAccountBalance, _c, lamports, _d, custodyAccountMetas, custodyOracleAccountMetas, _e, _f, custody, params, inx, closeWsolATAIns, err_40;
6772
6311
  if (useFeesPool === void 0) { useFeesPool = false; }
6773
6312
  if (createUserATA === void 0) { createUserATA = true; }
6774
6313
  if (unWrapSol === void 0) { unWrapSol = false; }
@@ -6973,9 +6512,9 @@ var PerpetualsClient = (function () {
6973
6512
  }
6974
6513
  return [3, 20];
6975
6514
  case 19:
6976
- err_46 = _g.sent();
6977
- console.error("perpClient Swap error:: ", err_46);
6978
- throw err_46;
6515
+ err_40 = _g.sent();
6516
+ console.error("perpClient Swap error:: ", err_40);
6517
+ throw err_40;
6979
6518
  case 20: return [2, {
6980
6519
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
6981
6520
  additionalSigners: additionalSigners
@@ -6985,7 +6524,7 @@ var PerpetualsClient = (function () {
6985
6524
  });
6986
6525
  };
6987
6526
  this.swapFeeInternal = function (rewardTokenSymbol, swapTokenSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
6988
- var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_47;
6527
+ var rewardCustody, custody, publicKey, preInstructions, instructions, postInstructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, _i, _a, custody_1, params, inx, err_41;
6989
6528
  return __generator(this, function (_b) {
6990
6529
  switch (_b.label) {
6991
6530
  case 0:
@@ -7030,11 +6569,7 @@ var PerpetualsClient = (function () {
7030
6569
  rewardCustody: rewardCustody.custodyAccount,
7031
6570
  rewardCustodyOracleAccount: this.useExtOracleAccount ? rewardCustody.extOracleAccount : rewardCustody.intOracleAccount,
7032
6571
  rewardCustodyTokenAccount: rewardCustody.tokenAccount,
7033
- custody: custody.custodyAccount,
7034
- custodyOracleAccount: this.useExtOracleAccount ? custody.extOracleAccount : custody.intOracleAccount,
7035
- custodyTokenAccount: custody.tokenAccount,
7036
6572
  eventAuthority: this.eventAuthority.publicKey,
7037
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7038
6573
  program: this.programId,
7039
6574
  ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
7040
6575
  })
@@ -7045,9 +6580,9 @@ var PerpetualsClient = (function () {
7045
6580
  instructions.push(inx);
7046
6581
  return [3, 4];
7047
6582
  case 3:
7048
- err_47 = _b.sent();
7049
- console.error("perpClient Swap error:: ", err_47);
7050
- throw err_47;
6583
+ err_41 = _b.sent();
6584
+ console.error("perpClient Swap error:: ", err_41);
6585
+ throw err_41;
7051
6586
  case 4: return [2, {
7052
6587
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7053
6588
  additionalSigners: additionalSigners
@@ -7056,7 +6591,7 @@ var PerpetualsClient = (function () {
7056
6591
  });
7057
6592
  }); };
7058
6593
  this.setLpTokenPrice = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7059
- var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_48;
6594
+ var instructions, additionalSigners, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, setLpTokenPriceInstruction, err_42;
7060
6595
  return __generator(this, function (_d) {
7061
6596
  switch (_d.label) {
7062
6597
  case 0:
@@ -7104,9 +6639,9 @@ var PerpetualsClient = (function () {
7104
6639
  instructions.push(setLpTokenPriceInstruction);
7105
6640
  return [3, 4];
7106
6641
  case 3:
7107
- err_48 = _d.sent();
7108
- console.log("perpClient setLpTokenPriceInstruction error:: ", err_48);
7109
- throw err_48;
6642
+ err_42 = _d.sent();
6643
+ console.log("perpClient setLpTokenPriceInstruction error:: ", err_42);
6644
+ throw err_42;
7110
6645
  case 4: return [2, {
7111
6646
  instructions: __spreadArray([], instructions, true),
7112
6647
  additionalSigners: additionalSigners
@@ -7154,7 +6689,7 @@ var PerpetualsClient = (function () {
7154
6689
  });
7155
6690
  }); };
7156
6691
  this.setAdminSigners = function (admins, minSignatures) { return __awaiter(_this, void 0, void 0, function () {
7157
- var adminMetas, _i, admins_2, admin, err_49;
6692
+ var adminMetas, _i, admins_2, admin, err_43;
7158
6693
  return __generator(this, function (_a) {
7159
6694
  switch (_a.label) {
7160
6695
  case 0:
@@ -7184,11 +6719,11 @@ var PerpetualsClient = (function () {
7184
6719
  _a.sent();
7185
6720
  return [3, 4];
7186
6721
  case 3:
7187
- err_49 = _a.sent();
6722
+ err_43 = _a.sent();
7188
6723
  if (this.printErrors) {
7189
- console.error("setAdminSigners err:", err_49);
6724
+ console.error("setAdminSigners err:", err_43);
7190
6725
  }
7191
- throw err_49;
6726
+ throw err_43;
7192
6727
  case 4: return [2];
7193
6728
  }
7194
6729
  });
@@ -7377,7 +6912,7 @@ var PerpetualsClient = (function () {
7377
6912
  });
7378
6913
  }); };
7379
6914
  this.protocolWithdrawFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7380
- var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_50;
6915
+ var publicKey, custodyConfig, receivingTokenAccount, instructions, additionalSigners, withdrawFeesIx, err_44;
7381
6916
  return __generator(this, function (_a) {
7382
6917
  switch (_a.label) {
7383
6918
  case 0:
@@ -7410,9 +6945,9 @@ var PerpetualsClient = (function () {
7410
6945
  instructions.push(withdrawFeesIx);
7411
6946
  return [3, 5];
7412
6947
  case 4:
7413
- err_50 = _a.sent();
7414
- console.log("perpClient setPool error:: ", err_50);
7415
- throw err_50;
6948
+ err_44 = _a.sent();
6949
+ console.log("perpClient setPool error:: ", err_44);
6950
+ throw err_44;
7416
6951
  case 5: return [2, {
7417
6952
  instructions: __spreadArray([], instructions, true),
7418
6953
  additionalSigners: additionalSigners
@@ -7421,7 +6956,7 @@ var PerpetualsClient = (function () {
7421
6956
  });
7422
6957
  }); };
7423
6958
  this.moveProtocolFees = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7424
- var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_51;
6959
+ var publicKey, custodyConfig, instructions, additionalSigners, moveProtocolFeesIx, err_45;
7425
6960
  return __generator(this, function (_a) {
7426
6961
  switch (_a.label) {
7427
6962
  case 0:
@@ -7455,9 +6990,9 @@ var PerpetualsClient = (function () {
7455
6990
  instructions.push(moveProtocolFeesIx);
7456
6991
  return [3, 4];
7457
6992
  case 3:
7458
- err_51 = _a.sent();
7459
- console.log("perpClient setPool error:: ", err_51);
7460
- throw err_51;
6993
+ err_45 = _a.sent();
6994
+ console.log("perpClient setPool error:: ", err_45);
6995
+ throw err_45;
7461
6996
  case 4: return [2, {
7462
6997
  instructions: __spreadArray([], instructions, true),
7463
6998
  additionalSigners: additionalSigners
@@ -7466,7 +7001,7 @@ var PerpetualsClient = (function () {
7466
7001
  });
7467
7002
  }); };
7468
7003
  this.setProtocolFeeShareBps = function (feeShareBps, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7469
- var publicKey, setProtocolFeeShareBpsIx, err_52;
7004
+ var publicKey, setProtocolFeeShareBpsIx, err_46;
7470
7005
  return __generator(this, function (_a) {
7471
7006
  switch (_a.label) {
7472
7007
  case 0:
@@ -7486,15 +7021,15 @@ var PerpetualsClient = (function () {
7486
7021
  setProtocolFeeShareBpsIx = _a.sent();
7487
7022
  return [2, setProtocolFeeShareBpsIx];
7488
7023
  case 2:
7489
- err_52 = _a.sent();
7490
- console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_52);
7491
- throw err_52;
7024
+ err_46 = _a.sent();
7025
+ console.log("perpClient setProtocolFeeShareBpsIx error:: ", err_46);
7026
+ throw err_46;
7492
7027
  case 3: return [2];
7493
7028
  }
7494
7029
  });
7495
7030
  }); };
7496
7031
  this.setPermissions = function (permissions) { return __awaiter(_this, void 0, void 0, function () {
7497
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_53;
7032
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_47;
7498
7033
  return __generator(this, function (_a) {
7499
7034
  switch (_a.label) {
7500
7035
  case 0:
@@ -7521,9 +7056,9 @@ var PerpetualsClient = (function () {
7521
7056
  instructions.push(setPermissionsInstruction);
7522
7057
  return [3, 4];
7523
7058
  case 3:
7524
- err_53 = _a.sent();
7525
- console.log("perpClient setPool error:: ", err_53);
7526
- throw err_53;
7059
+ err_47 = _a.sent();
7060
+ console.log("perpClient setPool error:: ", err_47);
7061
+ throw err_47;
7527
7062
  case 4: return [2, {
7528
7063
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7529
7064
  additionalSigners: additionalSigners
@@ -7532,7 +7067,7 @@ var PerpetualsClient = (function () {
7532
7067
  });
7533
7068
  }); };
7534
7069
  this.reimburse = function (tokenMint, amountIn, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7535
- var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_54;
7070
+ var custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _a, custody, _b, _c, market, instructions, additionalSigners, custodyConfig, reimburse, _d, _e, err_48;
7536
7071
  var _f;
7537
7072
  return __generator(this, function (_g) {
7538
7073
  switch (_g.label) {
@@ -7593,9 +7128,9 @@ var PerpetualsClient = (function () {
7593
7128
  instructions.push(reimburse);
7594
7129
  return [3, 5];
7595
7130
  case 4:
7596
- err_54 = _g.sent();
7597
- console.log("perpClient setPool error:: ", err_54);
7598
- throw err_54;
7131
+ err_48 = _g.sent();
7132
+ console.log("perpClient setPool error:: ", err_48);
7133
+ throw err_48;
7599
7134
  case 5: return [2, {
7600
7135
  instructions: __spreadArray([], instructions, true),
7601
7136
  additionalSigners: additionalSigners
@@ -7603,8 +7138,8 @@ var PerpetualsClient = (function () {
7603
7138
  }
7604
7139
  });
7605
7140
  }); };
7606
- this.setInternalOraclePrice = function (tokenMint, price, expo, conf, ema, publishTime, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7607
- var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_55;
7141
+ this.setInternalOraclePrice = function (tokenMint, useCurrentTime, price, expo, conf, ema, publishTime, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7142
+ var instructions, additionalSigners, custodyConfig, setInternalOraclePrice, err_49;
7608
7143
  return __generator(this, function (_a) {
7609
7144
  switch (_a.label) {
7610
7145
  case 0:
@@ -7616,6 +7151,7 @@ var PerpetualsClient = (function () {
7616
7151
  _a.trys.push([1, 3, , 4]);
7617
7152
  return [4, this.program.methods
7618
7153
  .setInternalOraclePrice({
7154
+ useCurrentTime: useCurrentTime,
7619
7155
  price: price,
7620
7156
  expo: expo,
7621
7157
  conf: conf,
@@ -7637,9 +7173,9 @@ var PerpetualsClient = (function () {
7637
7173
  instructions.push(setInternalOraclePrice);
7638
7174
  return [3, 4];
7639
7175
  case 3:
7640
- err_55 = _a.sent();
7641
- console.log("perpClient setInternalOracleAccount error:: ", err_55);
7642
- throw err_55;
7176
+ err_49 = _a.sent();
7177
+ console.log("perpClient setInternalOracleAccount error:: ", err_49);
7178
+ throw err_49;
7643
7179
  case 4: return [2, {
7644
7180
  instructions: __spreadArray([], instructions, true),
7645
7181
  additionalSigners: additionalSigners
@@ -7647,8 +7183,8 @@ var PerpetualsClient = (function () {
7647
7183
  }
7648
7184
  });
7649
7185
  }); };
7650
- this.setInternalOraclePriceBatch = function (tokenMintList, tokenInternalPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7651
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_56;
7186
+ this.setInternalOraclePriceBatch = function (useCurrentTime, tokenMintList, tokenInternalPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7187
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_1, _i, tokenMintList_1, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_50;
7652
7188
  return __generator(this, function (_a) {
7653
7189
  switch (_a.label) {
7654
7190
  case 0:
@@ -7659,11 +7195,6 @@ var PerpetualsClient = (function () {
7659
7195
  accountMetas = [];
7660
7196
  _loop_1 = function (tokenMint) {
7661
7197
  var custody = ALL_CUSTODY_CONFIGS.find(function (i) { return i.mintKey.equals(tokenMint); });
7662
- accountMetas.push({
7663
- pubkey: custody.custodyAccount,
7664
- isSigner: false,
7665
- isWritable: false,
7666
- });
7667
7198
  accountMetas.push({
7668
7199
  pubkey: custody.intOracleAccount,
7669
7200
  isSigner: false,
@@ -7686,6 +7217,7 @@ var PerpetualsClient = (function () {
7686
7217
  _a.trys.push([1, 3, , 4]);
7687
7218
  return [4, this.program.methods
7688
7219
  .setInternalCurrentPrice({
7220
+ useCurrentTime: useCurrentTime,
7689
7221
  prices: tokenInternalPrices
7690
7222
  })
7691
7223
  .accounts({
@@ -7698,9 +7230,9 @@ var PerpetualsClient = (function () {
7698
7230
  instructions.push(setInternalOraclePrice);
7699
7231
  return [3, 4];
7700
7232
  case 3:
7701
- err_56 = _a.sent();
7702
- console.log("perpClient setInternalOracleAccount error:: ", err_56);
7703
- throw err_56;
7233
+ err_50 = _a.sent();
7234
+ console.log("perpClient setInternalOracleAccount error:: ", err_50);
7235
+ throw err_50;
7704
7236
  case 4: return [2, {
7705
7237
  instructions: __spreadArray([], instructions, true),
7706
7238
  additionalSigners: additionalSigners
@@ -7709,7 +7241,7 @@ var PerpetualsClient = (function () {
7709
7241
  });
7710
7242
  }); };
7711
7243
  this.setInternalOracleEmaPriceBatch = function (tokenMintList, tokenInternalEmaPrices, POOL_CONFIGS) { return __awaiter(_this, void 0, void 0, function () {
7712
- var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_57;
7244
+ var ALL_CUSTODY_CONFIGS, accountMetas, _loop_2, _i, tokenMintList_2, tokenMint, instructions, additionalSigners, setInternalOraclePrice, err_51;
7713
7245
  return __generator(this, function (_a) {
7714
7246
  switch (_a.label) {
7715
7247
  case 0:
@@ -7720,21 +7252,11 @@ var PerpetualsClient = (function () {
7720
7252
  accountMetas = [];
7721
7253
  _loop_2 = function (tokenMint) {
7722
7254
  var custody = ALL_CUSTODY_CONFIGS.find(function (i) { return i.mintKey.equals(tokenMint); });
7723
- accountMetas.push({
7724
- pubkey: custody.custodyAccount,
7725
- isSigner: false,
7726
- isWritable: false,
7727
- });
7728
7255
  accountMetas.push({
7729
7256
  pubkey: custody.intOracleAccount,
7730
7257
  isSigner: false,
7731
7258
  isWritable: true,
7732
7259
  });
7733
- accountMetas.push({
7734
- pubkey: custody.extOracleAccount,
7735
- isSigner: false,
7736
- isWritable: false,
7737
- });
7738
7260
  };
7739
7261
  for (_i = 0, tokenMintList_2 = tokenMintList; _i < tokenMintList_2.length; _i++) {
7740
7262
  tokenMint = tokenMintList_2[_i];
@@ -7759,9 +7281,9 @@ var PerpetualsClient = (function () {
7759
7281
  instructions.push(setInternalOraclePrice);
7760
7282
  return [3, 4];
7761
7283
  case 3:
7762
- err_57 = _a.sent();
7763
- console.log("perpClient setInternalOracleAccount error:: ", err_57);
7764
- throw err_57;
7284
+ err_51 = _a.sent();
7285
+ console.log("perpClient setInternalOracleAccount error:: ", err_51);
7286
+ throw err_51;
7765
7287
  case 4: return [2, {
7766
7288
  instructions: __spreadArray([], instructions, true),
7767
7289
  additionalSigners: additionalSigners
@@ -7770,7 +7292,7 @@ var PerpetualsClient = (function () {
7770
7292
  });
7771
7293
  }); };
7772
7294
  this.renameFlp = function (flag, lpTokenName, lpTokenSymbol, lpTokenUri, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7773
- var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_58;
7295
+ var publicKey, instructions, additionalSigners, lpTokenMint, lpMetadataAccount, renameFlp, err_52;
7774
7296
  return __generator(this, function (_a) {
7775
7297
  switch (_a.label) {
7776
7298
  case 0:
@@ -7808,8 +7330,8 @@ var PerpetualsClient = (function () {
7808
7330
  instructions.push(renameFlp);
7809
7331
  return [3, 4];
7810
7332
  case 3:
7811
- err_58 = _a.sent();
7812
- console.log("perpClient renameFlp error:: ", err_58);
7333
+ err_52 = _a.sent();
7334
+ console.log("perpClient renameFlp error:: ", err_52);
7813
7335
  return [3, 4];
7814
7336
  case 4: return [2, {
7815
7337
  instructions: __spreadArray([], instructions, true),
@@ -7819,7 +7341,7 @@ var PerpetualsClient = (function () {
7819
7341
  });
7820
7342
  }); };
7821
7343
  this.initStake = function (stakingFeeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7822
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_59;
7344
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, lpTokenMint, stakedLpTokenAccount, rewardCustodyConfig, initStakeInstruction, err_53;
7823
7345
  return __generator(this, function (_a) {
7824
7346
  switch (_a.label) {
7825
7347
  case 0:
@@ -7857,9 +7379,9 @@ var PerpetualsClient = (function () {
7857
7379
  instructions.push(initStakeInstruction);
7858
7380
  return [3, 4];
7859
7381
  case 3:
7860
- err_59 = _a.sent();
7861
- console.log("perpClient InitStaking error:: ", err_59);
7862
- throw err_59;
7382
+ err_53 = _a.sent();
7383
+ console.log("perpClient InitStaking error:: ", err_53);
7384
+ throw err_53;
7863
7385
  case 4: return [2, {
7864
7386
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7865
7387
  additionalSigners: additionalSigners
@@ -7868,7 +7390,7 @@ var PerpetualsClient = (function () {
7868
7390
  });
7869
7391
  }); };
7870
7392
  this.initCompounding = function (feeShareBps, metadataTitle, metadataSymbol, metadataUri, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7871
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_60;
7393
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyConfig, compoundingTokenMint, compoundingVault, metadataAccount, initCompoundingInstruction, err_54;
7872
7394
  return __generator(this, function (_a) {
7873
7395
  switch (_a.label) {
7874
7396
  case 0:
@@ -7913,9 +7435,9 @@ var PerpetualsClient = (function () {
7913
7435
  instructions.push(initCompoundingInstruction);
7914
7436
  return [3, 4];
7915
7437
  case 3:
7916
- err_60 = _a.sent();
7917
- console.log("perpClient initCompounding error:: ", err_60);
7918
- throw err_60;
7438
+ err_54 = _a.sent();
7439
+ console.log("perpClient initCompounding error:: ", err_54);
7440
+ throw err_54;
7919
7441
  case 4: return [2, {
7920
7442
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7921
7443
  additionalSigners: additionalSigners
@@ -7924,7 +7446,7 @@ var PerpetualsClient = (function () {
7924
7446
  });
7925
7447
  }); };
7926
7448
  this.initTokenVault = function (token_permissions, tokens_to_distribute, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7927
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_61;
7449
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenMint, fundingTokenAccount, initTokenVaultInstruction, err_55;
7928
7450
  return __generator(this, function (_a) {
7929
7451
  switch (_a.label) {
7930
7452
  case 0:
@@ -7965,9 +7487,9 @@ var PerpetualsClient = (function () {
7965
7487
  instructions.push(initTokenVaultInstruction);
7966
7488
  return [3, 4];
7967
7489
  case 3:
7968
- err_61 = _a.sent();
7969
- console.log("perpClient InitTokenVaultInstruction error:: ", err_61);
7970
- throw err_61;
7490
+ err_55 = _a.sent();
7491
+ console.log("perpClient InitTokenVaultInstruction error:: ", err_55);
7492
+ throw err_55;
7971
7493
  case 4: return [2, {
7972
7494
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7973
7495
  additionalSigners: additionalSigners
@@ -7976,7 +7498,7 @@ var PerpetualsClient = (function () {
7976
7498
  });
7977
7499
  }); };
7978
7500
  this.setTokenVaultConfig = function (token_permissions, withdrawTimeLimit, withdrawInstantFee, stakeLevel, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7979
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_62;
7501
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setTokenVaultConfigInstruction, err_56;
7980
7502
  return __generator(this, function (_a) {
7981
7503
  switch (_a.label) {
7982
7504
  case 0:
@@ -8007,9 +7529,9 @@ var PerpetualsClient = (function () {
8007
7529
  instructions.push(setTokenVaultConfigInstruction);
8008
7530
  return [3, 4];
8009
7531
  case 3:
8010
- err_62 = _a.sent();
8011
- console.log("perpClient setTokenVaultConfigInstruction error:: ", err_62);
8012
- throw err_62;
7532
+ err_56 = _a.sent();
7533
+ console.log("perpClient setTokenVaultConfigInstruction error:: ", err_56);
7534
+ throw err_56;
8013
7535
  case 4: return [2, {
8014
7536
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8015
7537
  additionalSigners: additionalSigners
@@ -8018,7 +7540,7 @@ var PerpetualsClient = (function () {
8018
7540
  });
8019
7541
  }); };
8020
7542
  this.withdrawInstantFee = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8021
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_63;
7543
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawInstantFeeInstruction, err_57;
8022
7544
  return __generator(this, function (_a) {
8023
7545
  switch (_a.label) {
8024
7546
  case 0:
@@ -8057,9 +7579,59 @@ var PerpetualsClient = (function () {
8057
7579
  instructions.push(withdrawInstantFeeInstruction);
8058
7580
  return [3, 6];
8059
7581
  case 5:
8060
- err_63 = _a.sent();
8061
- console.log("perpClient withdrawInstantFeeInstruction error:: ", err_63);
8062
- throw err_63;
7582
+ err_57 = _a.sent();
7583
+ console.log("perpClient withdrawInstantFeeInstruction error:: ", err_57);
7584
+ throw err_57;
7585
+ case 6: return [2, {
7586
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7587
+ additionalSigners: additionalSigners
7588
+ }];
7589
+ }
7590
+ });
7591
+ }); };
7592
+ this.withdrawUnclaimedTokens = function (poolConfig) { return __awaiter(_this, void 0, void 0, function () {
7593
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, receivingTokenAccount, withdrawUnclaimedTokensInstruction, err_58;
7594
+ return __generator(this, function (_a) {
7595
+ switch (_a.label) {
7596
+ case 0:
7597
+ publicKey = this.provider.wallet.publicKey;
7598
+ preInstructions = [];
7599
+ instructions = [];
7600
+ postInstructions = [];
7601
+ additionalSigners = [];
7602
+ _a.label = 1;
7603
+ case 1:
7604
+ _a.trys.push([1, 5, , 6]);
7605
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(poolConfig.tokenMint, publicKey, true)];
7606
+ case 2:
7607
+ receivingTokenAccount = _a.sent();
7608
+ return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
7609
+ case 3:
7610
+ if (!(_a.sent())) {
7611
+ preInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, poolConfig.tokenMint));
7612
+ }
7613
+ return [4, this.program.methods
7614
+ .withdrawUnclaimedTokens({})
7615
+ .accounts({
7616
+ admin: publicKey,
7617
+ multisig: this.multisig.publicKey,
7618
+ perpetuals: this.perpetuals.publicKey,
7619
+ transferAuthority: poolConfig.transferAuthority,
7620
+ tokenVault: poolConfig.tokenVault,
7621
+ tokenVaultTokenAccount: poolConfig.tokenVaultTokenAccount,
7622
+ receivingTokenAccount: receivingTokenAccount,
7623
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
7624
+ receivingTokenMint: poolConfig.tokenMint,
7625
+ })
7626
+ .instruction()];
7627
+ case 4:
7628
+ withdrawUnclaimedTokensInstruction = _a.sent();
7629
+ instructions.push(withdrawUnclaimedTokensInstruction);
7630
+ return [3, 6];
7631
+ case 5:
7632
+ err_58 = _a.sent();
7633
+ console.log("perpClient withdrawUnclaimedTokensInstruction error:: ", err_58);
7634
+ throw err_58;
8063
7635
  case 6: return [2, {
8064
7636
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8065
7637
  additionalSigners: additionalSigners
@@ -8068,7 +7640,7 @@ var PerpetualsClient = (function () {
8068
7640
  });
8069
7641
  }); };
8070
7642
  this.initRevenueTokenAccount = function (feeShareBps, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8071
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_64;
7643
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, initRevenueTokenAccountInstruction, err_59;
8072
7644
  return __generator(this, function (_a) {
8073
7645
  switch (_a.label) {
8074
7646
  case 0:
@@ -8105,9 +7677,9 @@ var PerpetualsClient = (function () {
8105
7677
  instructions.push(initRevenueTokenAccountInstruction);
8106
7678
  return [3, 4];
8107
7679
  case 3:
8108
- err_64 = _a.sent();
8109
- console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_64);
8110
- throw err_64;
7680
+ err_59 = _a.sent();
7681
+ console.log("perpClient initRevenueTokenAccountInstruction error:: ", err_59);
7682
+ throw err_59;
8111
7683
  case 4: return [2, {
8112
7684
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8113
7685
  additionalSigners: additionalSigners
@@ -8116,7 +7688,7 @@ var PerpetualsClient = (function () {
8116
7688
  });
8117
7689
  }); };
8118
7690
  this.distributeTokenReward = function (amount, epochCount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8119
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_65;
7691
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, rewardCustodyMint, fundingTokenAccount, revenueFundingTokenAccount, distributeTokenRewardInstruction, err_60;
8120
7692
  return __generator(this, function (_a) {
8121
7693
  switch (_a.label) {
8122
7694
  case 0:
@@ -8155,9 +7727,9 @@ var PerpetualsClient = (function () {
8155
7727
  instructions.push(distributeTokenRewardInstruction);
8156
7728
  return [3, 4];
8157
7729
  case 3:
8158
- err_65 = _a.sent();
8159
- console.log("perpClient distributeTokenRewardInstruction error:: ", err_65);
8160
- throw err_65;
7730
+ err_60 = _a.sent();
7731
+ console.log("perpClient distributeTokenRewardInstruction error:: ", err_60);
7732
+ throw err_60;
8161
7733
  case 4: return [2, {
8162
7734
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8163
7735
  additionalSigners: additionalSigners
@@ -8166,7 +7738,7 @@ var PerpetualsClient = (function () {
8166
7738
  });
8167
7739
  }); };
8168
7740
  this.setTokenStakeLevel = function (owner, stakeLevel) { return __awaiter(_this, void 0, void 0, function () {
8169
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_66;
7741
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenStakeLevelInstruction, err_61;
8170
7742
  return __generator(this, function (_a) {
8171
7743
  switch (_a.label) {
8172
7744
  case 0:
@@ -8194,9 +7766,9 @@ var PerpetualsClient = (function () {
8194
7766
  instructions.push(setTokenStakeLevelInstruction);
8195
7767
  return [3, 4];
8196
7768
  case 3:
8197
- err_66 = _a.sent();
8198
- console.log("perpClient setTokenStakeLevelInstruction error:: ", err_66);
8199
- throw err_66;
7769
+ err_61 = _a.sent();
7770
+ console.log("perpClient setTokenStakeLevelInstruction error:: ", err_61);
7771
+ throw err_61;
8200
7772
  case 4: return [2, {
8201
7773
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8202
7774
  additionalSigners: additionalSigners
@@ -8205,7 +7777,7 @@ var PerpetualsClient = (function () {
8205
7777
  });
8206
7778
  }); };
8207
7779
  this.setTokenReward = function (owner, amount, epochCount, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
8208
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_67;
7780
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, tokenStakeAccount, setTokenRewardInstruction, err_62;
8209
7781
  return __generator(this, function (_a) {
8210
7782
  switch (_a.label) {
8211
7783
  case 0:
@@ -8237,9 +7809,49 @@ var PerpetualsClient = (function () {
8237
7809
  instructions.push(setTokenRewardInstruction);
8238
7810
  return [3, 4];
8239
7811
  case 3:
8240
- err_67 = _a.sent();
8241
- console.log("perpClient setTokenRewardInstruction error:: ", err_67);
8242
- throw err_67;
7812
+ err_62 = _a.sent();
7813
+ console.log("perpClient setTokenRewardInstruction error:: ", err_62);
7814
+ throw err_62;
7815
+ case 4: return [2, {
7816
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
7817
+ additionalSigners: additionalSigners
7818
+ }];
7819
+ }
7820
+ });
7821
+ }); };
7822
+ this.resizeInternalOracle = function (extOracle, tokenMint, intOracleAccount) { return __awaiter(_this, void 0, void 0, function () {
7823
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, resizeInternalOracleInstruction, err_63;
7824
+ return __generator(this, function (_a) {
7825
+ switch (_a.label) {
7826
+ case 0:
7827
+ publicKey = this.provider.wallet.publicKey;
7828
+ preInstructions = [];
7829
+ instructions = [];
7830
+ postInstructions = [];
7831
+ additionalSigners = [];
7832
+ _a.label = 1;
7833
+ case 1:
7834
+ _a.trys.push([1, 3, , 4]);
7835
+ return [4, this.program.methods
7836
+ .resizeInternalOracle({
7837
+ extOracle: extOracle
7838
+ })
7839
+ .accounts({
7840
+ admin: publicKey,
7841
+ multisig: this.multisig.publicKey,
7842
+ custodyTokenMint: tokenMint,
7843
+ intOracleAccount: intOracleAccount,
7844
+ systemProgram: web3_js_1.SystemProgram.programId,
7845
+ })
7846
+ .instruction()];
7847
+ case 2:
7848
+ resizeInternalOracleInstruction = _a.sent();
7849
+ instructions.push(resizeInternalOracleInstruction);
7850
+ return [3, 4];
7851
+ case 3:
7852
+ err_63 = _a.sent();
7853
+ console.log("perpClient resizeInternalOracleInstruction error:: ", err_63);
7854
+ throw err_63;
8243
7855
  case 4: return [2, {
8244
7856
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
8245
7857
  additionalSigners: additionalSigners