flash-sdk 11.10.1-alpha.0 → 11.10.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.
@@ -22,8 +22,9 @@ export interface PositionMetrics {
22
22
  pnl: {
23
23
  profitUsd: BN;
24
24
  lossUsd: BN;
25
- penaltyUsd: BN;
26
- finalProfitUsd: BN;
25
+ priceImpactUsd: BN;
26
+ maxPriceImpactUsd: BN;
27
+ netProfitUsd: BN;
27
28
  };
28
29
  leverage: BN;
29
30
  liquidationPrice: OraclePrice;
@@ -314,7 +315,7 @@ export declare class PerpetualsClient {
314
315
  }[];
315
316
  markets: PublicKey[];
316
317
  maxAumUsd: BN;
317
- buffer: BN | number[];
318
+ buffer: BN | number[] | number[];
318
319
  rawAumUsd: BN;
319
320
  equityUsd: BN;
320
321
  totalStaked: {
@@ -359,7 +360,7 @@ export declare class PerpetualsClient {
359
360
  sizeUsd: BN;
360
361
  lockedAmount: BN;
361
362
  lockedUsd: BN;
362
- collateralAmount: BN;
363
+ priceImpactUsd: BN;
363
364
  collateralUsd: BN;
364
365
  unsettledValueUsd: BN;
365
366
  unsettledFeesUsd: BN;
@@ -369,8 +370,7 @@ export declare class PerpetualsClient {
369
370
  price: BN;
370
371
  exponent: number;
371
372
  };
372
- oraclePenalty: number;
373
- previousPenalty: number;
373
+ priceImpactSet: boolean;
374
374
  sizeDecimals: number;
375
375
  lockedDecimals: number;
376
376
  collateralDecimals: number;
@@ -672,7 +672,7 @@ export declare class PerpetualsClient {
672
672
  }[];
673
673
  markets: PublicKey[];
674
674
  maxAumUsd: BN;
675
- buffer: BN | number[];
675
+ buffer: BN | number[] | number[];
676
676
  rawAumUsd: BN;
677
677
  equityUsd: BN;
678
678
  totalStaked: {
@@ -717,7 +717,7 @@ export declare class PerpetualsClient {
717
717
  sizeUsd: BN;
718
718
  lockedAmount: BN;
719
719
  lockedUsd: BN;
720
- collateralAmount: BN;
720
+ priceImpactUsd: BN;
721
721
  collateralUsd: BN;
722
722
  unsettledValueUsd: BN;
723
723
  unsettledFeesUsd: BN;
@@ -727,8 +727,7 @@ export declare class PerpetualsClient {
727
727
  price: BN;
728
728
  exponent: number;
729
729
  };
730
- oraclePenalty: number;
731
- previousPenalty: number;
730
+ priceImpactSet: boolean;
732
731
  sizeDecimals: number;
733
732
  lockedDecimals: number;
734
733
  collateralDecimals: number;
@@ -1029,7 +1028,7 @@ export declare class PerpetualsClient {
1029
1028
  }[];
1030
1029
  markets: PublicKey[];
1031
1030
  maxAumUsd: BN;
1032
- buffer: BN | number[];
1031
+ buffer: BN | number[] | number[];
1033
1032
  rawAumUsd: BN;
1034
1033
  equityUsd: BN;
1035
1034
  totalStaked: {
@@ -1074,7 +1073,7 @@ export declare class PerpetualsClient {
1074
1073
  sizeUsd: BN;
1075
1074
  lockedAmount: BN;
1076
1075
  lockedUsd: BN;
1077
- collateralAmount: BN;
1076
+ priceImpactUsd: BN;
1078
1077
  collateralUsd: BN;
1079
1078
  unsettledValueUsd: BN;
1080
1079
  unsettledFeesUsd: BN;
@@ -1084,8 +1083,7 @@ export declare class PerpetualsClient {
1084
1083
  price: BN;
1085
1084
  exponent: number;
1086
1085
  };
1087
- oraclePenalty: number;
1088
- previousPenalty: number;
1086
+ priceImpactSet: boolean;
1089
1087
  sizeDecimals: number;
1090
1088
  lockedDecimals: number;
1091
1089
  collateralDecimals: number;
@@ -1390,7 +1388,7 @@ export declare class PerpetualsClient {
1390
1388
  }[];
1391
1389
  markets: PublicKey[];
1392
1390
  maxAumUsd: BN;
1393
- buffer: BN | number[];
1391
+ buffer: BN | number[] | number[];
1394
1392
  rawAumUsd: BN;
1395
1393
  equityUsd: BN;
1396
1394
  totalStaked: {
@@ -1435,7 +1433,7 @@ export declare class PerpetualsClient {
1435
1433
  sizeUsd: BN;
1436
1434
  lockedAmount: BN;
1437
1435
  lockedUsd: BN;
1438
- collateralAmount: BN;
1436
+ priceImpactUsd: BN;
1439
1437
  collateralUsd: BN;
1440
1438
  unsettledValueUsd: BN;
1441
1439
  unsettledFeesUsd: BN;
@@ -1445,8 +1443,7 @@ export declare class PerpetualsClient {
1445
1443
  price: BN;
1446
1444
  exponent: number;
1447
1445
  };
1448
- oraclePenalty: number;
1449
- previousPenalty: number;
1446
+ priceImpactSet: boolean;
1450
1447
  sizeDecimals: number;
1451
1448
  lockedDecimals: number;
1452
1449
  collateralDecimals: number;
@@ -1750,7 +1747,7 @@ export declare class PerpetualsClient {
1750
1747
  }[];
1751
1748
  markets: PublicKey[];
1752
1749
  maxAumUsd: BN;
1753
- buffer: BN | number[];
1750
+ buffer: BN | number[] | number[];
1754
1751
  rawAumUsd: BN;
1755
1752
  equityUsd: BN;
1756
1753
  totalStaked: {
@@ -1795,7 +1792,7 @@ export declare class PerpetualsClient {
1795
1792
  sizeUsd: BN;
1796
1793
  lockedAmount: BN;
1797
1794
  lockedUsd: BN;
1798
- collateralAmount: BN;
1795
+ priceImpactUsd: BN;
1799
1796
  collateralUsd: BN;
1800
1797
  unsettledValueUsd: BN;
1801
1798
  unsettledFeesUsd: BN;
@@ -1805,8 +1802,7 @@ export declare class PerpetualsClient {
1805
1802
  price: BN;
1806
1803
  exponent: number;
1807
1804
  };
1808
- oraclePenalty: number;
1809
- previousPenalty: number;
1805
+ priceImpactSet: boolean;
1810
1806
  sizeDecimals: number;
1811
1807
  lockedDecimals: number;
1812
1808
  collateralDecimals: number;
@@ -2108,7 +2104,7 @@ export declare class PerpetualsClient {
2108
2104
  }[];
2109
2105
  markets: PublicKey[];
2110
2106
  maxAumUsd: BN;
2111
- buffer: BN | number[];
2107
+ buffer: BN | number[] | number[];
2112
2108
  rawAumUsd: BN;
2113
2109
  equityUsd: BN;
2114
2110
  totalStaked: {
@@ -2153,7 +2149,7 @@ export declare class PerpetualsClient {
2153
2149
  sizeUsd: BN;
2154
2150
  lockedAmount: BN;
2155
2151
  lockedUsd: BN;
2156
- collateralAmount: BN;
2152
+ priceImpactUsd: BN;
2157
2153
  collateralUsd: BN;
2158
2154
  unsettledValueUsd: BN;
2159
2155
  unsettledFeesUsd: BN;
@@ -2163,8 +2159,7 @@ export declare class PerpetualsClient {
2163
2159
  price: BN;
2164
2160
  exponent: number;
2165
2161
  };
2166
- oraclePenalty: number;
2167
- previousPenalty: number;
2162
+ priceImpactSet: boolean;
2168
2163
  sizeDecimals: number;
2169
2164
  lockedDecimals: number;
2170
2165
  collateralDecimals: number;
@@ -2465,7 +2460,7 @@ export declare class PerpetualsClient {
2465
2460
  }[];
2466
2461
  markets: PublicKey[];
2467
2462
  maxAumUsd: BN;
2468
- buffer: BN | number[];
2463
+ buffer: BN | number[] | number[];
2469
2464
  rawAumUsd: BN;
2470
2465
  equityUsd: BN;
2471
2466
  totalStaked: {
@@ -2510,7 +2505,7 @@ export declare class PerpetualsClient {
2510
2505
  sizeUsd: BN;
2511
2506
  lockedAmount: BN;
2512
2507
  lockedUsd: BN;
2513
- collateralAmount: BN;
2508
+ priceImpactUsd: BN;
2514
2509
  collateralUsd: BN;
2515
2510
  unsettledValueUsd: BN;
2516
2511
  unsettledFeesUsd: BN;
@@ -2520,8 +2515,7 @@ export declare class PerpetualsClient {
2520
2515
  price: BN;
2521
2516
  exponent: number;
2522
2517
  };
2523
- oraclePenalty: number;
2524
- previousPenalty: number;
2518
+ priceImpactSet: boolean;
2525
2519
  sizeDecimals: number;
2526
2520
  lockedDecimals: number;
2527
2521
  collateralDecimals: number;
@@ -2822,7 +2816,7 @@ export declare class PerpetualsClient {
2822
2816
  }[];
2823
2817
  markets: PublicKey[];
2824
2818
  maxAumUsd: BN;
2825
- buffer: BN | number[];
2819
+ buffer: BN | number[] | number[];
2826
2820
  rawAumUsd: BN;
2827
2821
  equityUsd: BN;
2828
2822
  totalStaked: {
@@ -2867,7 +2861,7 @@ export declare class PerpetualsClient {
2867
2861
  sizeUsd: BN;
2868
2862
  lockedAmount: BN;
2869
2863
  lockedUsd: BN;
2870
- collateralAmount: BN;
2864
+ priceImpactUsd: BN;
2871
2865
  collateralUsd: BN;
2872
2866
  unsettledValueUsd: BN;
2873
2867
  unsettledFeesUsd: BN;
@@ -2877,8 +2871,7 @@ export declare class PerpetualsClient {
2877
2871
  price: BN;
2878
2872
  exponent: number;
2879
2873
  };
2880
- oraclePenalty: number;
2881
- previousPenalty: number;
2874
+ priceImpactSet: boolean;
2882
2875
  sizeDecimals: number;
2883
2876
  lockedDecimals: number;
2884
2877
  collateralDecimals: number;
@@ -2962,7 +2955,7 @@ export declare class PerpetualsClient {
2962
2955
  sizeUsd: BN;
2963
2956
  lockedAmount: BN;
2964
2957
  lockedUsd: BN;
2965
- collateralAmount: BN;
2958
+ priceImpactUsd: BN;
2966
2959
  collateralUsd: BN;
2967
2960
  unsettledValueUsd: BN;
2968
2961
  unsettledFeesUsd: BN;
@@ -2972,8 +2965,8 @@ export declare class PerpetualsClient {
2972
2965
  price: BN;
2973
2966
  exponent: number;
2974
2967
  };
2975
- oraclePenalty: number;
2976
- previousPenalty: number;
2968
+ buffer: number[];
2969
+ priceImpactSet: boolean;
2977
2970
  sizeDecimals: number;
2978
2971
  lockedDecimals: number;
2979
2972
  collateralDecimals: number;
@@ -3231,7 +3224,7 @@ export declare class PerpetualsClient {
3231
3224
  }[];
3232
3225
  markets: PublicKey[];
3233
3226
  maxAumUsd: BN;
3234
- buffer: BN | number[];
3227
+ buffer: BN | number[] | number[];
3235
3228
  rawAumUsd: BN;
3236
3229
  equityUsd: BN;
3237
3230
  totalStaked: {
@@ -3276,7 +3269,7 @@ export declare class PerpetualsClient {
3276
3269
  sizeUsd: BN;
3277
3270
  lockedAmount: BN;
3278
3271
  lockedUsd: BN;
3279
- collateralAmount: BN;
3272
+ priceImpactUsd: BN;
3280
3273
  collateralUsd: BN;
3281
3274
  unsettledValueUsd: BN;
3282
3275
  unsettledFeesUsd: BN;
@@ -3286,8 +3279,7 @@ export declare class PerpetualsClient {
3286
3279
  price: BN;
3287
3280
  exponent: number;
3288
3281
  };
3289
- oraclePenalty: number;
3290
- previousPenalty: number;
3282
+ priceImpactSet: boolean;
3291
3283
  sizeDecimals: number;
3292
3284
  lockedDecimals: number;
3293
3285
  collateralDecimals: number;
@@ -3588,7 +3580,7 @@ export declare class PerpetualsClient {
3588
3580
  }[];
3589
3581
  markets: PublicKey[];
3590
3582
  maxAumUsd: BN;
3591
- buffer: BN | number[];
3583
+ buffer: BN | number[] | number[];
3592
3584
  rawAumUsd: BN;
3593
3585
  equityUsd: BN;
3594
3586
  totalStaked: {
@@ -3633,7 +3625,7 @@ export declare class PerpetualsClient {
3633
3625
  sizeUsd: BN;
3634
3626
  lockedAmount: BN;
3635
3627
  lockedUsd: BN;
3636
- collateralAmount: BN;
3628
+ priceImpactUsd: BN;
3637
3629
  collateralUsd: BN;
3638
3630
  unsettledValueUsd: BN;
3639
3631
  unsettledFeesUsd: BN;
@@ -3643,8 +3635,7 @@ export declare class PerpetualsClient {
3643
3635
  price: BN;
3644
3636
  exponent: number;
3645
3637
  };
3646
- oraclePenalty: number;
3647
- previousPenalty: number;
3638
+ priceImpactSet: boolean;
3648
3639
  sizeDecimals: number;
3649
3640
  lockedDecimals: number;
3650
3641
  collateralDecimals: number;
@@ -3945,7 +3936,7 @@ export declare class PerpetualsClient {
3945
3936
  }[];
3946
3937
  markets: PublicKey[];
3947
3938
  maxAumUsd: BN;
3948
- buffer: BN | number[];
3939
+ buffer: BN | number[] | number[];
3949
3940
  rawAumUsd: BN;
3950
3941
  equityUsd: BN;
3951
3942
  totalStaked: {
@@ -3990,7 +3981,7 @@ export declare class PerpetualsClient {
3990
3981
  sizeUsd: BN;
3991
3982
  lockedAmount: BN;
3992
3983
  lockedUsd: BN;
3993
- collateralAmount: BN;
3984
+ priceImpactUsd: BN;
3994
3985
  collateralUsd: BN;
3995
3986
  unsettledValueUsd: BN;
3996
3987
  unsettledFeesUsd: BN;
@@ -4000,8 +3991,7 @@ export declare class PerpetualsClient {
4000
3991
  price: BN;
4001
3992
  exponent: number;
4002
3993
  };
4003
- oraclePenalty: number;
4004
- previousPenalty: number;
3994
+ priceImpactSet: boolean;
4005
3995
  sizeDecimals: number;
4006
3996
  lockedDecimals: number;
4007
3997
  collateralDecimals: number;
@@ -4302,7 +4292,7 @@ export declare class PerpetualsClient {
4302
4292
  }[];
4303
4293
  markets: PublicKey[];
4304
4294
  maxAumUsd: BN;
4305
- buffer: BN | number[];
4295
+ buffer: BN | number[] | number[];
4306
4296
  rawAumUsd: BN;
4307
4297
  equityUsd: BN;
4308
4298
  totalStaked: {
@@ -4347,7 +4337,7 @@ export declare class PerpetualsClient {
4347
4337
  sizeUsd: BN;
4348
4338
  lockedAmount: BN;
4349
4339
  lockedUsd: BN;
4350
- collateralAmount: BN;
4340
+ priceImpactUsd: BN;
4351
4341
  collateralUsd: BN;
4352
4342
  unsettledValueUsd: BN;
4353
4343
  unsettledFeesUsd: BN;
@@ -4357,8 +4347,7 @@ export declare class PerpetualsClient {
4357
4347
  price: BN;
4358
4348
  exponent: number;
4359
4349
  };
4360
- oraclePenalty: number;
4361
- previousPenalty: number;
4350
+ priceImpactSet: boolean;
4362
4351
  sizeDecimals: number;
4363
4352
  lockedDecimals: number;
4364
4353
  collateralDecimals: number;
@@ -4659,7 +4648,7 @@ export declare class PerpetualsClient {
4659
4648
  }[];
4660
4649
  markets: PublicKey[];
4661
4650
  maxAumUsd: BN;
4662
- buffer: BN | number[];
4651
+ buffer: BN | number[] | number[];
4663
4652
  rawAumUsd: BN;
4664
4653
  equityUsd: BN;
4665
4654
  totalStaked: {
@@ -4704,7 +4693,7 @@ export declare class PerpetualsClient {
4704
4693
  sizeUsd: BN;
4705
4694
  lockedAmount: BN;
4706
4695
  lockedUsd: BN;
4707
- collateralAmount: BN;
4696
+ priceImpactUsd: BN;
4708
4697
  collateralUsd: BN;
4709
4698
  unsettledValueUsd: BN;
4710
4699
  unsettledFeesUsd: BN;
@@ -4714,8 +4703,7 @@ export declare class PerpetualsClient {
4714
4703
  price: BN;
4715
4704
  exponent: number;
4716
4705
  };
4717
- oraclePenalty: number;
4718
- previousPenalty: number;
4706
+ priceImpactSet: boolean;
4719
4707
  sizeDecimals: number;
4720
4708
  lockedDecimals: number;
4721
4709
  collateralDecimals: number;
@@ -4856,14 +4844,16 @@ export declare class PerpetualsClient {
4856
4844
  getPnlSync: (positionAccount: PositionAccount, targetTokenPrice: OraclePrice, targetTokenEmaPrice: OraclePrice, targetCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount, currentTimestamp: BN, delay: BN, poolConfig: PoolConfig) => {
4857
4845
  profitUsd: BN;
4858
4846
  lossUsd: BN;
4859
- penaltyUsd: BN;
4860
- finalProfitUsd: BN;
4847
+ priceImpactUsd: BN;
4848
+ maxPriceImpactUsd: BN;
4849
+ netProfitUsd: BN;
4861
4850
  };
4862
4851
  getPnlContractHelper: (positionAccount: PositionAccount, targetTokenPrice: OraclePrice, targetTokenEmaPrice: OraclePrice, targetCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount, currentTimestamp: BN, delay: BN, poolConfig: PoolConfig) => {
4863
4852
  profitUsd: BN;
4864
4853
  lossUsd: BN;
4865
- penaltyUsd: BN;
4866
- finalProfitUsd: BN;
4854
+ priceImpactUsd: BN;
4855
+ maxPriceImpactUsd: BN;
4856
+ netProfitUsd: BN;
4867
4857
  };
4868
4858
  getPositionMetrics: (positionAccount: PositionAccount, targetTokenPrice: OraclePrice, targetTokenEmaPrice: OraclePrice, targetCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount, currentTimestamp: BN, poolConfig: PoolConfig) => PositionMetrics;
4869
4859
  getPositionsMetricsBatch: (positions: Array<{
@@ -5147,7 +5137,7 @@ export declare class PerpetualsClient {
5147
5137
  instructions: TransactionInstruction[];
5148
5138
  additionalSigners: Signer[];
5149
5139
  }>;
5150
- setPositionPenalty: (positionPubkey: PublicKey, oraclePenalty: number, oracleAuthority: PublicKey) => Promise<{
5140
+ setPositionPriceImpact: (positionPubkey: PublicKey, priceImpactUsd: BN, penaltyAuthority: PublicKey) => Promise<{
5151
5141
  instructions: TransactionInstruction[];
5152
5142
  additionalSigners: Signer[];
5153
5143
  }>;
@@ -701,7 +701,7 @@ var PerpetualsClient = (function () {
701
701
  currentMarginUsd = positionAccount.collateralUsd.sub(lossUsd);
702
702
  }
703
703
  else {
704
- currentMarginUsd = positionAccount.collateralUsd.add(pnl.finalProfitUsd).sub(lossUsd);
704
+ currentMarginUsd = positionAccount.collateralUsd.add(pnl.netProfitUsd).sub(lossUsd);
705
705
  }
706
706
  if (currentMarginUsd.gt(constants_1.BN_ZERO)) {
707
707
  return positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentMarginUsd);
@@ -875,7 +875,7 @@ var PerpetualsClient = (function () {
875
875
  if (collateralDeltaAmount.isNeg() || sizeDeltaAmount.isNeg()) {
876
876
  throw new Error("Delta Amounts cannot be negative ");
877
877
  }
878
- if (resultingPositionAccount.collateralAmount.isNeg() || resultingPositionAccount.sizeAmount.isNeg()) {
878
+ if (resultingPositionAccount.collateralUsd.isNeg() || resultingPositionAccount.sizeAmount.isNeg()) {
879
879
  throw new Error("cannot remove/close more than collateral/Size");
880
880
  }
881
881
  var sizeUsd = targetPrice.getAssetAmountUsd(sizeDeltaAmount, targetCustodyAccount.decimals);
@@ -1056,7 +1056,7 @@ var PerpetualsClient = (function () {
1056
1056
  var totalFeesUsd = (exitFeeUsd.add(lockAndUnsettledFeeUsd));
1057
1057
  var currentCollateralUsd = positionDelta.collateralUsd;
1058
1058
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1059
- var assetsUsd = anchor_1.BN.min(newPnl.finalProfitUsd.add(currentCollateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionDelta.lockedAmount, collateralCustodyAccount.decimals));
1059
+ var assetsUsd = anchor_1.BN.min(newPnl.netProfitUsd.add(currentCollateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionDelta.lockedAmount, collateralCustodyAccount.decimals));
1060
1060
  if (debugLogs) {
1061
1061
  console.log("assetsUsd.sub(liabilityUsd):", collateralCustodyAccount.decimals, assetsUsd.toString(), liabilityUsd.toString(), assetsUsd.sub(liabilityUsd).toString());
1062
1062
  }
@@ -1190,10 +1190,11 @@ var PerpetualsClient = (function () {
1190
1190
  var position = PositionAccount_1.PositionAccount.from(positionAccount.publicKey, __assign({}, positionAccount));
1191
1191
  var collateralMinMaxPrice = _this.getMinAndMaxOraclePriceSync(collateralPrice, collateralEmaPrice, collateralCustodyAccount);
1192
1192
  var newPnl = _this.getPnlSync(position, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1193
- var exitPriceAndFee = _this.getExitPriceAndFeeSync(positionAccount, marketCorrelation, positionAccount.collateralAmount, positionAccount.sizeAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp);
1193
+ var collateralAmount = collateralPrice.getTokenAmount(positionAccount.collateralUsd, collateralCustodyAccount.decimals);
1194
+ var exitPriceAndFee = _this.getExitPriceAndFeeSync(positionAccount, marketCorrelation, collateralAmount, positionAccount.sizeAmount, side, targetPrice, targetEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp);
1194
1195
  var totalFeesUsd = (exitPriceAndFee.exitFeeUsd.add(exitPriceAndFee.borrowFeeUsd));
1195
1196
  var liabilityUsd = newPnl.lossUsd.add(totalFeesUsd);
1196
- var assetsUsd = anchor_1.BN.min(newPnl.finalProfitUsd.add(positionAccount.collateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionAccount.lockedAmount, collateralCustodyAccount.decimals));
1197
+ var assetsUsd = anchor_1.BN.min(newPnl.netProfitUsd.add(positionAccount.collateralUsd), collateralMinMaxPrice.max.getAssetAmountUsd(positionAccount.lockedAmount, collateralCustodyAccount.decimals));
1197
1198
  var closeAmountUsd, feesAmountUsd;
1198
1199
  if (assetsUsd.gt(liabilityUsd)) {
1199
1200
  closeAmountUsd = assetsUsd.sub(liabilityUsd);
@@ -1609,8 +1610,9 @@ var PerpetualsClient = (function () {
1609
1610
  return {
1610
1611
  profitUsd: constants_1.BN_ZERO,
1611
1612
  lossUsd: constants_1.BN_ZERO,
1612
- penaltyUsd: constants_1.BN_ZERO,
1613
- finalProfitUsd: constants_1.BN_ZERO,
1613
+ priceImpactUsd: constants_1.BN_ZERO,
1614
+ maxPriceImpactUsd: constants_1.BN_ZERO,
1615
+ netProfitUsd: constants_1.BN_ZERO
1614
1616
  };
1615
1617
  }
1616
1618
  var side = poolConfig.getMarketConfigByPk(positionAccount.market).side;
@@ -1674,34 +1676,28 @@ var PerpetualsClient = (function () {
1674
1676
  if (!priceDiffProfit.exponent.eq(priceDiffLoss.exponent)) {
1675
1677
  throw new Error("exponent mistach");
1676
1678
  }
1677
- var totalPenaltyBps = positionAccount.oraclePenalty + positionAccount.previousPenalty;
1679
+ var maxPriceImpactUsd = positionAccount.priceImpactUsd;
1678
1680
  if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1679
1681
  var grossProfitUsd = priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals);
1680
- var penaltyUsd = constants_1.BN_ZERO;
1681
- var finalProfitUsd = grossProfitUsd;
1682
- if (totalPenaltyBps > 0 && grossProfitUsd.gt(constants_1.BN_ZERO)) {
1683
- penaltyUsd = grossProfitUsd.muln(totalPenaltyBps).divn(constants_1.BPS_POWER);
1684
- if (penaltyUsd.gte(grossProfitUsd)) {
1685
- penaltyUsd = grossProfitUsd;
1686
- finalProfitUsd = constants_1.BN_ZERO;
1687
- }
1688
- else {
1689
- finalProfitUsd = grossProfitUsd.sub(penaltyUsd);
1690
- }
1691
- }
1682
+ var priceImpactUsd = positionAccount.priceImpactUsd.gt(constants_1.BN_ZERO)
1683
+ ? anchor_1.BN.min(positionAccount.priceImpactUsd, grossProfitUsd)
1684
+ : constants_1.BN_ZERO;
1685
+ var netProfitUsd = grossProfitUsd.sub(priceImpactUsd);
1692
1686
  return {
1693
1687
  profitUsd: grossProfitUsd,
1694
1688
  lossUsd: constants_1.BN_ZERO,
1695
- penaltyUsd: penaltyUsd,
1696
- finalProfitUsd: finalProfitUsd,
1689
+ priceImpactUsd: priceImpactUsd,
1690
+ maxPriceImpactUsd: maxPriceImpactUsd,
1691
+ netProfitUsd: netProfitUsd,
1697
1692
  };
1698
1693
  }
1699
1694
  else {
1700
1695
  return {
1701
1696
  profitUsd: constants_1.BN_ZERO,
1702
1697
  lossUsd: priceDiffLoss.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1703
- penaltyUsd: constants_1.BN_ZERO,
1704
- finalProfitUsd: constants_1.BN_ZERO,
1698
+ priceImpactUsd: constants_1.BN_ZERO,
1699
+ maxPriceImpactUsd: maxPriceImpactUsd,
1700
+ netProfitUsd: constants_1.BN_ZERO,
1705
1701
  };
1706
1702
  }
1707
1703
  };
@@ -1714,7 +1710,7 @@ var PerpetualsClient = (function () {
1714
1710
  timestamp: constants_1.BN_ZERO
1715
1711
  });
1716
1712
  return {
1717
- pnl: { profitUsd: constants_1.BN_ZERO, lossUsd: constants_1.BN_ZERO, penaltyUsd: constants_1.BN_ZERO, finalProfitUsd: constants_1.BN_ZERO },
1713
+ pnl: { profitUsd: constants_1.BN_ZERO, lossUsd: constants_1.BN_ZERO, priceImpactUsd: constants_1.BN_ZERO, maxPriceImpactUsd: constants_1.BN_ZERO, netProfitUsd: constants_1.BN_ZERO },
1718
1714
  leverage: constants_1.BN_ZERO,
1719
1715
  liquidationPrice: zeroOraclePrice,
1720
1716
  fees: { exitFeeUsd: constants_1.BN_ZERO, exitFeeAmount: constants_1.BN_ZERO, lockAndUnsettledFeeUsd: constants_1.BN_ZERO }
@@ -1734,86 +1730,18 @@ var PerpetualsClient = (function () {
1734
1730
  if (!exitOraclePrice.exponent.eq(entryOraclePrice.exponent)) {
1735
1731
  throw new Error("exponent mismatch");
1736
1732
  }
1737
- var priceDiffProfit, priceDiffLoss;
1738
- var delay = targetCustodyAccount.pricing.delaySeconds;
1739
- if ((0, types_1.isVariant)(side, 'long')) {
1740
- if (exitOraclePrice.price.gt(entryOraclePrice.price)) {
1741
- if (currentTimestamp.gt(positionAccount.updateTime.add(delay))) {
1742
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: exitOraclePrice.price.sub(entryOraclePrice.price), exponent: exitOraclePrice.exponent, confidence: exitOraclePrice.confidence, timestamp: constants_1.BN_ZERO });
1743
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1744
- }
1745
- else {
1746
- if (positionAccount.referencePrice.price.gt(entryOraclePrice.price)) {
1747
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: positionAccount.referencePrice.price.sub(entryOraclePrice.price), exponent: entryOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1748
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1749
- }
1750
- else {
1751
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1752
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1753
- }
1754
- }
1755
- }
1756
- else {
1757
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1758
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: entryOraclePrice.price.sub(exitOraclePrice.price), exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1759
- }
1760
- }
1761
- else {
1762
- if (exitOraclePrice.price.lt(entryOraclePrice.price)) {
1763
- if (currentTimestamp.gt(positionAccount.updateTime.add(delay))) {
1764
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: entryOraclePrice.price.sub(exitOraclePrice.price), exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1765
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1766
- }
1767
- else {
1768
- if (entryOraclePrice.price.gt(positionAccount.referencePrice.price)) {
1769
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: entryOraclePrice.price.sub(positionAccount.referencePrice.price), exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1770
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1771
- }
1772
- else {
1773
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1774
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1775
- }
1776
- }
1777
- }
1778
- else {
1779
- priceDiffProfit = new OraclePrice_1.OraclePrice({ price: constants_1.BN_ZERO, exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1780
- priceDiffLoss = new OraclePrice_1.OraclePrice({ price: exitOraclePrice.price.sub(entryOraclePrice.price), exponent: exitOraclePrice.exponent, confidence: constants_1.BN_ZERO, timestamp: constants_1.BN_ZERO });
1781
- }
1782
- }
1783
- var totalPenaltyBps = positionAccount.oraclePenalty + positionAccount.previousPenalty;
1784
- if (priceDiffProfit.price.gt(constants_1.BN_ZERO)) {
1785
- var grossProfitUsd = priceDiffProfit.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals);
1786
- var penaltyUsd = constants_1.BN_ZERO;
1787
- var finalProfitUsd = grossProfitUsd;
1788
- if (totalPenaltyBps > 0 && grossProfitUsd.gt(constants_1.BN_ZERO)) {
1789
- penaltyUsd = grossProfitUsd.muln(totalPenaltyBps).divn(constants_1.BPS_POWER);
1790
- if (penaltyUsd.gte(grossProfitUsd)) {
1791
- penaltyUsd = grossProfitUsd;
1792
- finalProfitUsd = constants_1.BN_ZERO;
1793
- }
1794
- else {
1795
- finalProfitUsd = grossProfitUsd.sub(penaltyUsd);
1796
- }
1797
- }
1798
- pnl = {
1799
- profitUsd: grossProfitUsd,
1800
- lossUsd: constants_1.BN_ZERO,
1801
- penaltyUsd: penaltyUsd,
1802
- finalProfitUsd: finalProfitUsd,
1803
- };
1804
- }
1805
- else {
1806
- pnl = {
1807
- profitUsd: constants_1.BN_ZERO,
1808
- lossUsd: priceDiffLoss.getAssetAmountUsd(positionAccount.sizeAmount, positionAccount.sizeDecimals),
1809
- penaltyUsd: constants_1.BN_ZERO,
1810
- finalProfitUsd: constants_1.BN_ZERO,
1811
- };
1812
- }
1733
+ var pnlResult = _this.getPnlContractHelper(positionAccount, targetTokenPrice, targetTokenEmaPrice, targetCustodyAccount, collateralPrice, collateralEmaPrice, collateralCustodyAccount, currentTimestamp, targetCustodyAccount.pricing.delaySeconds, poolConfig);
1734
+ pnl = {
1735
+ profitUsd: pnlResult.profitUsd,
1736
+ lossUsd: pnlResult.lossUsd,
1737
+ priceImpactUsd: pnlResult.priceImpactUsd,
1738
+ maxPriceImpactUsd: pnlResult.maxPriceImpactUsd,
1739
+ netProfitUsd: pnlResult.netProfitUsd
1740
+ };
1813
1741
  var liquidationPrice = _this.getLiquidationPriceContractHelper(entryOraclePrice, lockAndUnsettledFeeUsd, side, targetCustodyAccount, positionAccount);
1814
1742
  var unsettledFeesUsd = exitFeeUsd.add(lockAndUnsettledFeeUsd);
1815
1743
  var lossUsd = pnl.lossUsd.add(unsettledFeesUsd);
1816
- var currentMarginUsd = positionAccount.collateralUsd.add(pnl.finalProfitUsd).sub(lossUsd);
1744
+ var currentMarginUsd = positionAccount.collateralUsd.add(pnl.netProfitUsd).sub(lossUsd);
1817
1745
  var leverage;
1818
1746
  if (currentMarginUsd.gt(constants_1.BN_ZERO)) {
1819
1747
  leverage = positionAccount.sizeUsd.mul(new anchor_1.BN(constants_1.BPS_POWER)).div(currentMarginUsd);
@@ -7631,8 +7559,8 @@ var PerpetualsClient = (function () {
7631
7559
  }
7632
7560
  });
7633
7561
  }); };
7634
- this.setPositionPenalty = function (positionPubkey, oraclePenalty, oracleAuthority) { return __awaiter(_this, void 0, void 0, function () {
7635
- var instructions, additionalSigners, setPositionPenaltyIx, err_52;
7562
+ this.setPositionPriceImpact = function (positionPubkey, priceImpactUsd, penaltyAuthority) { return __awaiter(_this, void 0, void 0, function () {
7563
+ var instructions, additionalSigners, setPositionPriceImpactIx, err_52;
7636
7564
  return __generator(this, function (_a) {
7637
7565
  switch (_a.label) {
7638
7566
  case 0:
@@ -7642,23 +7570,23 @@ var PerpetualsClient = (function () {
7642
7570
  case 1:
7643
7571
  _a.trys.push([1, 3, , 4]);
7644
7572
  return [4, this.program.methods
7645
- .setPositionPenalty({
7646
- oraclePenalty: oraclePenalty,
7573
+ .setPositionPriceImpact({
7574
+ priceImpactUsd: priceImpactUsd,
7647
7575
  })
7648
7576
  .accounts({
7649
- authority: oracleAuthority,
7577
+ authority: penaltyAuthority,
7650
7578
  position: positionPubkey,
7651
7579
  eventAuthority: this.eventAuthority.publicKey,
7652
7580
  program: this.program.programId,
7653
7581
  })
7654
7582
  .instruction()];
7655
7583
  case 2:
7656
- setPositionPenaltyIx = _a.sent();
7657
- instructions.push(setPositionPenaltyIx);
7584
+ setPositionPriceImpactIx = _a.sent();
7585
+ instructions.push(setPositionPriceImpactIx);
7658
7586
  return [3, 4];
7659
7587
  case 3:
7660
7588
  err_52 = _a.sent();
7661
- console.log("perpClient setPositionPenalty error:: ", err_52);
7589
+ console.log("perpClient setPositionPriceImpact error:: ", err_52);
7662
7590
  throw err_52;
7663
7591
  case 4: return [2, {
7664
7592
  instructions: __spreadArray([], instructions, true),