@metamask-previews/perps-controller 17.4.0-preview-68d7430 → 18.0.0-preview-d2ea3cc

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.
@@ -1 +1 @@
1
- {"version":3,"file":"TradingService.d.ts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TradingService.d.ts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,6 @@ import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE, } from '../constants/eventName
4
4
  import { isTPSLOrder } from '../constants/orderTypes.js';
5
5
  import { PerpsMeasurementName } from '../constants/performanceMetrics.js';
6
6
  import { PERPS_CONSTANTS } from '../constants/perpsConfig.js';
7
- import { PerpsControllerError } from '../errors.js';
8
- import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js';
9
7
  import { PerpsAnalyticsEvent, PerpsTraceNames, PerpsTraceOperations, } from '../types/index.js';
10
8
  import { ensureError } from '../utils/errorUtils.js';
11
9
  import { isLimitExecutionOrderType, SCALE_ORDER_COUNT, } from '../utils/orderTypes.js';
@@ -88,43 +86,6 @@ export class TradingService {
88
86
  }
89
87
  return properties;
90
88
  }
91
- /**
92
- * Build normalized slippage and failure properties without removing the
93
- * existing raw error message used by current analytics dashboards.
94
- *
95
- * @param trackingData - Optional caller-provided slippage context.
96
- * @param result - Provider result, when available.
97
- * @param error - Thrown provider error, when available.
98
- * @returns Slippage and normalized failure properties.
99
- */
100
- #buildSlippageProperties(trackingData, result, error) {
101
- const properties = {};
102
- if (trackingData?.maxSlippageBps !== undefined) {
103
- properties[PERPS_EVENT_PROPERTY.MAX_SLIPPAGE_PCT] =
104
- trackingData.maxSlippageBps / 100;
105
- }
106
- if (trackingData?.maxSlippageSource !== undefined) {
107
- properties[PERPS_EVENT_PROPERTY.MAX_SLIPPAGE_SOURCE] =
108
- trackingData.maxSlippageSource;
109
- }
110
- if (trackingData?.estimatedSlippageBps !== undefined) {
111
- properties[PERPS_EVENT_PROPERTY.ESTIMATED_SLIPPAGE_PCT] =
112
- trackingData.estimatedSlippageBps / 100;
113
- }
114
- const errorCode = result?.errorCode ??
115
- (error instanceof PerpsControllerError ? error.errorCode : undefined);
116
- const errorDetails = result?.errorDetails ??
117
- (error instanceof PerpsControllerError ? error.errorDetails : undefined);
118
- if (errorCode !== undefined) {
119
- properties[PERPS_EVENT_PROPERTY.FAILURE_REASON] = errorCode;
120
- }
121
- if (errorDetails?.code === PERPS_ERROR_CODES.PRICE_MOVED &&
122
- Number.isFinite(errorDetails.priceDeltaBps)) {
123
- properties[PERPS_EVENT_PROPERTY.PRICE_DELTA_BPS] =
124
- errorDetails.priceDeltaBps;
125
- }
126
- return properties;
127
- }
128
89
  /**
129
90
  * Build properties that identify the submitted order intent.
130
91
  *
@@ -177,7 +138,6 @@ export class TradingService {
177
138
  ? PERPS_EVENT_VALUE.DIRECTION.LONG
178
139
  : PERPS_EVENT_VALUE.DIRECTION.SHORT,
179
140
  ...this.#buildTradeIntentProperties(params),
180
- ...this.#buildSlippageProperties(params.trackingData, result, error),
181
141
  [PERPS_EVENT_PROPERTY.LEVERAGE]: parseFloat(String(params.leverage ?? 1)),
182
142
  [PERPS_EVENT_PROPERTY.ORDER_SIZE]: trackedOrderSize,
183
143
  [PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: duration,
@@ -503,7 +463,6 @@ export class TradingService {
503
463
  : PERPS_EVENT_VALUE.DIRECTION.SHORT,
504
464
  ...this.#buildTradeIntentProperties(params),
505
465
  [PERPS_EVENT_PROPERTY.LEVERAGE]: parseFloat(String(params.leverage ?? 1)),
506
- ...this.#buildSlippageProperties(params.trackingData),
507
466
  ...this.#buildAttributionProperties(params.trackingData),
508
467
  });
509
468
  // Observational threshold: when the provider round-trip exceeds
@@ -729,7 +688,6 @@ export class TradingService {
729
688
  [PERPS_EVENT_PROPERTY.DIRECTION]: metrics.direction,
730
689
  [PERPS_EVENT_PROPERTY.ORDER_TYPE]: metrics.orderType,
731
690
  [PERPS_EVENT_PROPERTY.ORDER_SIZE]: metrics.requestedSize,
732
- [PERPS_EVENT_PROPERTY.CLOSE_TYPE]: metrics.closeType,
733
691
  [PERPS_EVENT_PROPERTY.OPEN_POSITION_SIZE]: Math.abs(parseFloat(position.size)),
734
692
  [PERPS_EVENT_PROPERTY.PERCENTAGE_CLOSED]: metrics.closePercentage,
735
693
  ...(position.unrealizedPnl && {
@@ -775,7 +733,6 @@ export class TradingService {
775
733
  ...(params.trackingData?.vipDiscount !== undefined && {
776
734
  [PERPS_EVENT_PROPERTY.VIP_DISCOUNT]: params.trackingData.vipDiscount,
777
735
  }),
778
- ...this.#buildSlippageProperties(params.trackingData, result, error instanceof Error ? error : undefined),
779
736
  // Effective leverage on close events
780
737
  ...(effectiveLeverage !== undefined && {
781
738
  [PERPS_EVENT_PROPERTY.LEVERAGE]: effectiveLeverage,
@@ -794,6 +751,7 @@ export class TradingService {
794
751
  if (status === PERPS_EVENT_VALUE.STATUS.EXECUTED) {
795
752
  return {
796
753
  ...baseProperties,
754
+ [PERPS_EVENT_PROPERTY.CLOSE_TYPE]: metrics.closeType,
797
755
  ...(orderValue !== undefined && {
798
756
  [PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
799
757
  }),
@@ -802,9 +760,7 @@ export class TradingService {
802
760
  // Add error for failures
803
761
  return {
804
762
  ...baseProperties,
805
- ...(error && {
806
- [PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: error instanceof Error ? error.message : error,
807
- }),
763
+ ...(error && { [PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: error }),
808
764
  ...(orderValue !== undefined && {
809
765
  [PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
810
766
  }),
@@ -845,7 +801,6 @@ export class TradingService {
845
801
  ...(errorMessage && {
846
802
  [PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: errorMessage,
847
803
  }),
848
- ...this.#buildSlippageProperties(params.trackingData, result, error),
849
804
  ...this.#buildAttributionProperties(params.trackingData),
850
805
  ...bulkActionProps,
851
806
  });
@@ -886,7 +841,7 @@ export class TradingService {
886
841
  : PERPS_EVENT_VALUE.STATUS.FAILED;
887
842
  const errorMessage = error?.message ?? result?.error;
888
843
  // Track main close event
889
- const eventProperties = this.#buildCloseEventProperties(position, params, metrics, result, status, error ?? errorMessage);
844
+ const eventProperties = this.#buildCloseEventProperties(position, params, metrics, result, status, errorMessage);
890
845
  this.#deps.metrics.trackPerpsEvent(PerpsAnalyticsEvent.PositionCloseTransaction, {
891
846
  ...eventProperties,
892
847
  [PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: duration,
@@ -1582,7 +1537,6 @@ export class TradingService {
1582
1537
  this.#trackSubmitted(PerpsAnalyticsEvent.PositionCloseTransaction, {
1583
1538
  [PERPS_EVENT_PROPERTY.ASSET]: params.symbol,
1584
1539
  [PERPS_EVENT_PROPERTY.ORDER_TYPE]: params.orderType ?? PERPS_EVENT_VALUE.ORDER_TYPE.MARKET,
1585
- ...this.#buildSlippageProperties(params.trackingData),
1586
1540
  ...this.#buildAttributionProperties(params.trackingData),
1587
1541
  ...(bulkActionId && {
1588
1542
  [PERPS_EVENT_PROPERTY.BULK_ACTION_ID]: bulkActionId,