@metamask-previews/perps-controller 17.4.0-preview-be4d68b → 17.4.0-preview-4f493fb
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.
- package/CHANGELOG.md +3 -0
- package/dist/PerpsController.d.ts.map +1 -1
- package/dist/PerpsController.js +3 -2
- package/dist/PerpsController.js.map +1 -1
- package/dist/constants/eventNames.d.ts +2 -0
- package/dist/constants/eventNames.d.ts.map +1 -1
- package/dist/constants/eventNames.js +1 -0
- package/dist/constants/eventNames.js.map +1 -1
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/perpsErrorCodes.d.ts +8 -0
- package/dist/perpsErrorCodes.d.ts.map +1 -1
- package/dist/perpsErrorCodes.js +11 -0
- package/dist/perpsErrorCodes.js.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.ts.map +1 -1
- package/dist/providers/HyperLiquidProvider.js +9 -3
- package/dist/providers/HyperLiquidProvider.js.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.ts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.js +6 -1
- package/dist/services/HyperLiquidSubscriptionService.js.map +1 -1
- package/dist/services/TradingService.d.ts.map +1 -1
- package/dist/services/TradingService.js +49 -3
- package/dist/services/TradingService.js.map +1 -1
- package/dist/types/index.d.ts +35 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/hyperLiquidAdapter.d.ts +21 -0
- package/dist/utils/hyperLiquidAdapter.d.ts.map +1 -1
- package/dist/utils/hyperLiquidAdapter.js +22 -0
- package/dist/utils/hyperLiquidAdapter.js.map +1 -1
- package/dist/utils/hyperLiquidValidation.d.ts +2 -1
- package/dist/utils/hyperLiquidValidation.d.ts.map +1 -1
- package/dist/utils/hyperLiquidValidation.js +16 -2
- package/dist/utils/hyperLiquidValidation.js.map +1 -1
- package/dist/utils/lighterAdapter.d.ts.map +1 -1
- package/dist/utils/lighterAdapter.js +3 -0
- package/dist/utils/lighterAdapter.js.map +1 -1
- package/dist/utils/orderCalculations.d.ts.map +1 -1
- package/dist/utils/orderCalculations.js +18 -7
- package/dist/utils/orderCalculations.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TradingService.d.ts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TradingService.d.ts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ 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';
|
|
7
9
|
import { PerpsAnalyticsEvent, PerpsTraceNames, PerpsTraceOperations, } from '../types/index.js';
|
|
8
10
|
import { ensureError } from '../utils/errorUtils.js';
|
|
9
11
|
import { isLimitExecutionOrderType, SCALE_ORDER_COUNT, } from '../utils/orderTypes.js';
|
|
@@ -86,6 +88,43 @@ export class TradingService {
|
|
|
86
88
|
}
|
|
87
89
|
return properties;
|
|
88
90
|
}
|
|
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
|
+
}
|
|
89
128
|
/**
|
|
90
129
|
* Build properties that identify the submitted order intent.
|
|
91
130
|
*
|
|
@@ -138,6 +177,7 @@ export class TradingService {
|
|
|
138
177
|
? PERPS_EVENT_VALUE.DIRECTION.LONG
|
|
139
178
|
: PERPS_EVENT_VALUE.DIRECTION.SHORT,
|
|
140
179
|
...this.#buildTradeIntentProperties(params),
|
|
180
|
+
...this.#buildSlippageProperties(params.trackingData, result, error),
|
|
141
181
|
[PERPS_EVENT_PROPERTY.LEVERAGE]: parseFloat(String(params.leverage ?? 1)),
|
|
142
182
|
[PERPS_EVENT_PROPERTY.ORDER_SIZE]: trackedOrderSize,
|
|
143
183
|
[PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: duration,
|
|
@@ -463,6 +503,7 @@ export class TradingService {
|
|
|
463
503
|
: PERPS_EVENT_VALUE.DIRECTION.SHORT,
|
|
464
504
|
...this.#buildTradeIntentProperties(params),
|
|
465
505
|
[PERPS_EVENT_PROPERTY.LEVERAGE]: parseFloat(String(params.leverage ?? 1)),
|
|
506
|
+
...this.#buildSlippageProperties(params.trackingData),
|
|
466
507
|
...this.#buildAttributionProperties(params.trackingData),
|
|
467
508
|
});
|
|
468
509
|
// Observational threshold: when the provider round-trip exceeds
|
|
@@ -688,6 +729,7 @@ export class TradingService {
|
|
|
688
729
|
[PERPS_EVENT_PROPERTY.DIRECTION]: metrics.direction,
|
|
689
730
|
[PERPS_EVENT_PROPERTY.ORDER_TYPE]: metrics.orderType,
|
|
690
731
|
[PERPS_EVENT_PROPERTY.ORDER_SIZE]: metrics.requestedSize,
|
|
732
|
+
[PERPS_EVENT_PROPERTY.CLOSE_TYPE]: metrics.closeType,
|
|
691
733
|
[PERPS_EVENT_PROPERTY.OPEN_POSITION_SIZE]: Math.abs(parseFloat(position.size)),
|
|
692
734
|
[PERPS_EVENT_PROPERTY.PERCENTAGE_CLOSED]: metrics.closePercentage,
|
|
693
735
|
...(position.unrealizedPnl && {
|
|
@@ -733,6 +775,7 @@ export class TradingService {
|
|
|
733
775
|
...(params.trackingData?.vipDiscount !== undefined && {
|
|
734
776
|
[PERPS_EVENT_PROPERTY.VIP_DISCOUNT]: params.trackingData.vipDiscount,
|
|
735
777
|
}),
|
|
778
|
+
...this.#buildSlippageProperties(params.trackingData, result, error instanceof Error ? error : undefined),
|
|
736
779
|
// Effective leverage on close events
|
|
737
780
|
...(effectiveLeverage !== undefined && {
|
|
738
781
|
[PERPS_EVENT_PROPERTY.LEVERAGE]: effectiveLeverage,
|
|
@@ -751,7 +794,6 @@ export class TradingService {
|
|
|
751
794
|
if (status === PERPS_EVENT_VALUE.STATUS.EXECUTED) {
|
|
752
795
|
return {
|
|
753
796
|
...baseProperties,
|
|
754
|
-
[PERPS_EVENT_PROPERTY.CLOSE_TYPE]: metrics.closeType,
|
|
755
797
|
...(orderValue !== undefined && {
|
|
756
798
|
[PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
|
|
757
799
|
}),
|
|
@@ -760,7 +802,9 @@ export class TradingService {
|
|
|
760
802
|
// Add error for failures
|
|
761
803
|
return {
|
|
762
804
|
...baseProperties,
|
|
763
|
-
...(error && {
|
|
805
|
+
...(error && {
|
|
806
|
+
[PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: error instanceof Error ? error.message : error,
|
|
807
|
+
}),
|
|
764
808
|
...(orderValue !== undefined && {
|
|
765
809
|
[PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
|
|
766
810
|
}),
|
|
@@ -801,6 +845,7 @@ export class TradingService {
|
|
|
801
845
|
...(errorMessage && {
|
|
802
846
|
[PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: errorMessage,
|
|
803
847
|
}),
|
|
848
|
+
...this.#buildSlippageProperties(params.trackingData, result, error),
|
|
804
849
|
...this.#buildAttributionProperties(params.trackingData),
|
|
805
850
|
...bulkActionProps,
|
|
806
851
|
});
|
|
@@ -841,7 +886,7 @@ export class TradingService {
|
|
|
841
886
|
: PERPS_EVENT_VALUE.STATUS.FAILED;
|
|
842
887
|
const errorMessage = error?.message ?? result?.error;
|
|
843
888
|
// Track main close event
|
|
844
|
-
const eventProperties = this.#buildCloseEventProperties(position, params, metrics, result, status, errorMessage);
|
|
889
|
+
const eventProperties = this.#buildCloseEventProperties(position, params, metrics, result, status, error ?? errorMessage);
|
|
845
890
|
this.#deps.metrics.trackPerpsEvent(PerpsAnalyticsEvent.PositionCloseTransaction, {
|
|
846
891
|
...eventProperties,
|
|
847
892
|
[PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: duration,
|
|
@@ -1537,6 +1582,7 @@ export class TradingService {
|
|
|
1537
1582
|
this.#trackSubmitted(PerpsAnalyticsEvent.PositionCloseTransaction, {
|
|
1538
1583
|
[PERPS_EVENT_PROPERTY.ASSET]: params.symbol,
|
|
1539
1584
|
[PERPS_EVENT_PROPERTY.ORDER_TYPE]: params.orderType ?? PERPS_EVENT_VALUE.ORDER_TYPE.MARKET,
|
|
1585
|
+
...this.#buildSlippageProperties(params.trackingData),
|
|
1540
1586
|
...this.#buildAttributionProperties(params.trackingData),
|
|
1541
1587
|
...(bulkActionId && {
|
|
1542
1588
|
[PERPS_EVENT_PROPERTY.BULK_ACTION_ID]: bulkActionId,
|