@metamask-previews/perps-controller 1.3.0-preview-a0caca0c0 → 1.3.0-preview-afe010990
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 +9 -0
- package/dist/PerpsController-method-action-types.cjs +3 -0
- package/dist/PerpsController-method-action-types.cjs.map +1 -0
- package/dist/PerpsController-method-action-types.d.cts +147 -0
- package/dist/PerpsController-method-action-types.d.cts.map +1 -0
- package/dist/PerpsController-method-action-types.d.mts +147 -0
- package/dist/PerpsController-method-action-types.d.mts.map +1 -0
- package/dist/PerpsController-method-action-types.mjs +2 -0
- package/dist/PerpsController-method-action-types.mjs.map +1 -0
- package/dist/PerpsController.cjs +488 -183
- package/dist/PerpsController.cjs.map +1 -1
- package/dist/PerpsController.d.cts +91 -131
- package/dist/PerpsController.d.cts.map +1 -1
- package/dist/PerpsController.d.mts +91 -131
- package/dist/PerpsController.d.mts.map +1 -1
- package/dist/PerpsController.mjs +485 -182
- package/dist/PerpsController.mjs.map +1 -1
- package/dist/constants/eventNames.cjs +26 -0
- package/dist/constants/eventNames.cjs.map +1 -1
- package/dist/constants/eventNames.d.cts +19 -0
- package/dist/constants/eventNames.d.cts.map +1 -1
- package/dist/constants/eventNames.d.mts +19 -0
- package/dist/constants/eventNames.d.mts.map +1 -1
- package/dist/constants/eventNames.mjs +26 -0
- package/dist/constants/eventNames.mjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.cjs +24 -4
- package/dist/constants/hyperLiquidConfig.cjs.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.cts +8 -3
- package/dist/constants/hyperLiquidConfig.d.cts.map +1 -1
- package/dist/constants/hyperLiquidConfig.d.mts +8 -3
- package/dist/constants/hyperLiquidConfig.d.mts.map +1 -1
- package/dist/constants/hyperLiquidConfig.mjs +23 -3
- package/dist/constants/hyperLiquidConfig.mjs.map +1 -1
- package/dist/constants/myxConfig.cjs +75 -51
- package/dist/constants/myxConfig.cjs.map +1 -1
- package/dist/constants/myxConfig.d.cts +58 -19
- package/dist/constants/myxConfig.d.cts.map +1 -1
- package/dist/constants/myxConfig.d.mts +58 -19
- package/dist/constants/myxConfig.d.mts.map +1 -1
- package/dist/constants/myxConfig.mjs +74 -50
- package/dist/constants/myxConfig.mjs.map +1 -1
- package/dist/constants/perpsConfig.cjs +6 -2
- package/dist/constants/perpsConfig.cjs.map +1 -1
- package/dist/constants/perpsConfig.d.cts +5 -1
- package/dist/constants/perpsConfig.d.cts.map +1 -1
- package/dist/constants/perpsConfig.d.mts +5 -1
- package/dist/constants/perpsConfig.d.mts.map +1 -1
- package/dist/constants/perpsConfig.mjs +5 -1
- package/dist/constants/perpsConfig.mjs.map +1 -1
- package/dist/index.cjs +243 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +48 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +48 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +36 -10
- package/dist/index.mjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.cjs +24 -0
- package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.cts +4 -0
- package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.d.mts +4 -0
- package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -1
- package/dist/providers/AggregatedPerpsProvider.mjs +24 -0
- package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +470 -154
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts +11 -2
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts +11 -2
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +471 -155
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/selectors.cjs +1 -1
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.mjs +1 -1
- package/dist/selectors.mjs.map +1 -1
- package/dist/services/AccountService.cjs +1 -1
- package/dist/services/AccountService.cjs.map +1 -1
- package/dist/services/AccountService.d.cts.map +1 -1
- package/dist/services/AccountService.d.mts.map +1 -1
- package/dist/services/AccountService.mjs +2 -2
- package/dist/services/AccountService.mjs.map +1 -1
- package/dist/services/DepositService.cjs +2 -1
- package/dist/services/DepositService.cjs.map +1 -1
- package/dist/services/DepositService.d.cts.map +1 -1
- package/dist/services/DepositService.d.mts.map +1 -1
- package/dist/services/DepositService.mjs +2 -1
- package/dist/services/DepositService.mjs.map +1 -1
- package/dist/services/EligibilityService.cjs +8 -103
- package/dist/services/EligibilityService.cjs.map +1 -1
- package/dist/services/EligibilityService.d.cts +4 -15
- package/dist/services/EligibilityService.d.cts.map +1 -1
- package/dist/services/EligibilityService.d.mts +4 -15
- package/dist/services/EligibilityService.d.mts.map +1 -1
- package/dist/services/EligibilityService.mjs +8 -103
- package/dist/services/EligibilityService.mjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.cjs +252 -46
- package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.cts +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.mts +1 -0
- package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.mjs +252 -46
- package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -1
- package/dist/services/MarketDataService.cjs +2 -4
- package/dist/services/MarketDataService.cjs.map +1 -1
- package/dist/services/MarketDataService.d.cts.map +1 -1
- package/dist/services/MarketDataService.d.mts.map +1 -1
- package/dist/services/MarketDataService.mjs +2 -4
- package/dist/services/MarketDataService.mjs.map +1 -1
- package/dist/services/TradingService.cjs +72 -6
- package/dist/services/TradingService.cjs.map +1 -1
- package/dist/services/TradingService.d.cts.map +1 -1
- package/dist/services/TradingService.d.mts.map +1 -1
- package/dist/services/TradingService.mjs +72 -6
- package/dist/services/TradingService.mjs.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +51 -3
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.mts +51 -3
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/types/messenger.cjs.map +1 -1
- package/dist/types/messenger.d.cts +2 -1
- package/dist/types/messenger.d.cts.map +1 -1
- package/dist/types/messenger.d.mts +2 -1
- package/dist/types/messenger.d.mts.map +1 -1
- package/dist/types/messenger.mjs.map +1 -1
- package/dist/types/myx-types.cjs +19 -3
- package/dist/types/myx-types.cjs.map +1 -1
- package/dist/types/myx-types.d.cts +33 -2
- package/dist/types/myx-types.d.cts.map +1 -1
- package/dist/types/myx-types.d.mts +33 -2
- package/dist/types/myx-types.d.mts.map +1 -1
- package/dist/types/myx-types.mjs +6 -2
- package/dist/types/myx-types.mjs.map +1 -1
- package/dist/types/perps-types.cjs +3 -0
- package/dist/types/perps-types.cjs.map +1 -1
- package/dist/types/perps-types.d.cts +3 -3
- package/dist/types/perps-types.d.cts.map +1 -1
- package/dist/types/perps-types.d.mts +3 -3
- package/dist/types/perps-types.d.mts.map +1 -1
- package/dist/types/perps-types.mjs +3 -0
- package/dist/types/perps-types.mjs.map +1 -1
- package/dist/utils/accountUtils.cjs.map +1 -1
- package/dist/utils/accountUtils.d.cts.map +1 -1
- package/dist/utils/accountUtils.d.mts.map +1 -1
- package/dist/utils/accountUtils.mjs.map +1 -1
- package/dist/utils/myxAdapter.cjs +360 -15
- package/dist/utils/myxAdapter.cjs.map +1 -1
- package/dist/utils/myxAdapter.d.cts +94 -7
- package/dist/utils/myxAdapter.d.cts.map +1 -1
- package/dist/utils/myxAdapter.d.mts +94 -7
- package/dist/utils/myxAdapter.d.mts.map +1 -1
- package/dist/utils/myxAdapter.mjs +351 -16
- package/dist/utils/myxAdapter.mjs.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TradingService.d.mts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,wCAAoC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;
|
|
1
|
+
{"version":3,"file":"TradingService.d.mts","sourceRoot":"","sources":["../../src/services/TradingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
var _TradingService_instances, _TradingService_deps, _TradingService_controllerDeps, _TradingService_getErrorContext, _TradingService_trackOrderResult, _TradingService_handleOrderSuccess, _TradingService_withFeeDiscount, _TradingService_loadPositionData, _TradingService_calculateCloseMetrics, _TradingService_buildCloseEventProperties, _TradingService_trackPositionCloseResult, _TradingService_handleDataLakeReporting, _TradingService_calculateFeeDiscountWithMeasurement;
|
|
13
13
|
import { v4 as uuidv4 } from "uuid";
|
|
14
14
|
import { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from "../constants/eventNames.mjs";
|
|
15
|
+
import { ESTIMATED_FEE_RATE } from "../constants/hyperLiquidConfig.mjs";
|
|
15
16
|
import { isTPSLOrder } from "../constants/orderTypes.mjs";
|
|
16
17
|
import { PerpsMeasurementName } from "../constants/performanceMetrics.mjs";
|
|
17
18
|
import { PERPS_CONSTANTS } from "../constants/perpsConfig.mjs";
|
|
@@ -71,7 +72,20 @@ export class TradingService {
|
|
|
71
72
|
const traceId = uuidv4();
|
|
72
73
|
const startTime = __classPrivateFieldGet(this, _TradingService_deps, "f").performance.now();
|
|
73
74
|
let traceData;
|
|
75
|
+
const paymentToken = params.trackingData?.tradeWithToken === true
|
|
76
|
+
? (params.trackingData.mmPayTokenSelected ?? 'unknown_token')
|
|
77
|
+
: 'perps_balance';
|
|
74
78
|
try {
|
|
79
|
+
__classPrivateFieldGet(this, _TradingService_deps, "f").tracer.addBreadcrumb({
|
|
80
|
+
category: 'perps',
|
|
81
|
+
message: 'Order execution started',
|
|
82
|
+
level: 'info',
|
|
83
|
+
data: {
|
|
84
|
+
payment_token: paymentToken,
|
|
85
|
+
market: params.symbol,
|
|
86
|
+
orderType: params.orderType,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
75
89
|
// Start trace for the entire operation
|
|
76
90
|
__classPrivateFieldGet(this, _TradingService_deps, "f").tracer.trace({
|
|
77
91
|
name: PerpsTraceNames.PlaceOrder,
|
|
@@ -83,10 +97,12 @@ export class TradingService {
|
|
|
83
97
|
market: params.symbol,
|
|
84
98
|
leverage: String(params.leverage ?? 1),
|
|
85
99
|
isTestnet: String(context.tracingContext.isTestnet),
|
|
100
|
+
payment_token: paymentToken,
|
|
86
101
|
},
|
|
87
102
|
data: {
|
|
88
103
|
isBuy: params.isBuy,
|
|
89
104
|
orderPrice: params.price ?? '',
|
|
105
|
+
payment_token: paymentToken,
|
|
90
106
|
},
|
|
91
107
|
});
|
|
92
108
|
// Calculate fee discount at execution time (fresh, secure)
|
|
@@ -851,6 +867,17 @@ export class TradingService {
|
|
|
851
867
|
// Determine if TP/SL are set
|
|
852
868
|
const hasTakeProfit = Boolean(params.takeProfitPrice);
|
|
853
869
|
const hasStopLoss = Boolean(params.stopLossPrice);
|
|
870
|
+
// Determine TP/SL action type
|
|
871
|
+
let tpslAction;
|
|
872
|
+
if (hasTakeProfit && hasStopLoss) {
|
|
873
|
+
tpslAction = PERPS_EVENT_VALUE.ACTION.TPSL;
|
|
874
|
+
}
|
|
875
|
+
else if (hasTakeProfit) {
|
|
876
|
+
tpslAction = PERPS_EVENT_VALUE.ACTION.TP;
|
|
877
|
+
}
|
|
878
|
+
else if (hasStopLoss) {
|
|
879
|
+
tpslAction = PERPS_EVENT_VALUE.ACTION.SL;
|
|
880
|
+
}
|
|
854
881
|
// Build comprehensive event properties
|
|
855
882
|
const eventProperties = {
|
|
856
883
|
[PERPS_EVENT_PROPERTY.STATUS]: result?.success
|
|
@@ -862,6 +889,9 @@ export class TradingService {
|
|
|
862
889
|
[PERPS_EVENT_PROPERTY.SCREEN_TYPE]: screenType,
|
|
863
890
|
[PERPS_EVENT_PROPERTY.HAS_TAKE_PROFIT]: hasTakeProfit,
|
|
864
891
|
[PERPS_EVENT_PROPERTY.HAS_STOP_LOSS]: hasStopLoss,
|
|
892
|
+
...(tpslAction && {
|
|
893
|
+
[PERPS_EVENT_PROPERTY.ACTION]: tpslAction,
|
|
894
|
+
}),
|
|
865
895
|
...(direction && {
|
|
866
896
|
[PERPS_EVENT_PROPERTY.DIRECTION]: direction === 'long'
|
|
867
897
|
? PERPS_EVENT_VALUE.DIRECTION.LONG
|
|
@@ -1013,7 +1043,7 @@ export class TradingService {
|
|
|
1013
1043
|
const entryPrice = parseFloat(position.entryPrice);
|
|
1014
1044
|
const flipSize = positionSize * 2;
|
|
1015
1045
|
const notionalValue = flipSize * entryPrice;
|
|
1016
|
-
const estimatedFees = notionalValue *
|
|
1046
|
+
const estimatedFees = notionalValue * ESTIMATED_FEE_RATE;
|
|
1017
1047
|
if (estimatedFees > availableBalance) {
|
|
1018
1048
|
throw new Error(`Insufficient balance for flip fees. Need $${estimatedFees.toFixed(2)}, have $${availableBalance.toFixed(2)}`);
|
|
1019
1049
|
}
|
|
@@ -1037,7 +1067,10 @@ export class TradingService {
|
|
|
1037
1067
|
state.lastUpdateTimestamp = Date.now();
|
|
1038
1068
|
});
|
|
1039
1069
|
}
|
|
1040
|
-
// Track success analytics
|
|
1070
|
+
// Track success analytics with direction-specific flip action
|
|
1071
|
+
const flipAction = isCurrentlyLong
|
|
1072
|
+
? PERPS_EVENT_VALUE.ACTION.FLIP_LONG_TO_SHORT
|
|
1073
|
+
: PERPS_EVENT_VALUE.ACTION.FLIP_SHORT_TO_LONG;
|
|
1041
1074
|
__classPrivateFieldGet(this, _TradingService_deps, "f").metrics.trackPerpsEvent(PerpsAnalyticsEvent.TradeTransaction, {
|
|
1042
1075
|
[PERPS_EVENT_PROPERTY.STATUS]: PERPS_EVENT_VALUE.STATUS.EXECUTED,
|
|
1043
1076
|
[PERPS_EVENT_PROPERTY.ASSET]: position.symbol,
|
|
@@ -1048,7 +1081,8 @@ export class TradingService {
|
|
|
1048
1081
|
[PERPS_EVENT_PROPERTY.LEVERAGE]: position.leverage?.value || 1,
|
|
1049
1082
|
[PERPS_EVENT_PROPERTY.ORDER_SIZE]: positionSize,
|
|
1050
1083
|
[PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: completionDuration,
|
|
1051
|
-
[PERPS_EVENT_PROPERTY.ACTION]:
|
|
1084
|
+
[PERPS_EVENT_PROPERTY.ACTION]: flipAction,
|
|
1085
|
+
[PERPS_EVENT_PROPERTY.ORDER_VALUE]: positionSize * parseFloat(position.entryPrice),
|
|
1052
1086
|
});
|
|
1053
1087
|
// Invalidate standalone caches so external hooks refresh
|
|
1054
1088
|
__classPrivateFieldGet(this, _TradingService_deps, "f").cacheInvalidator.invalidate({ cacheType: 'positions' });
|
|
@@ -1065,11 +1099,15 @@ export class TradingService {
|
|
|
1065
1099
|
const completionDuration = __classPrivateFieldGet(this, _TradingService_deps, "f").performance.now() - startTime;
|
|
1066
1100
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
1067
1101
|
__classPrivateFieldGet(this, _TradingService_deps, "f").logger.error(ensureError(error, 'TradingService.flipPosition'), __classPrivateFieldGet(this, _TradingService_instances, "m", _TradingService_getErrorContext).call(this, 'flipPosition', { symbol: position.symbol }));
|
|
1068
|
-
// Track failure analytics
|
|
1102
|
+
// Track failure analytics with direction-specific flip action
|
|
1103
|
+
const wasLong = parseFloat(position.size) > 0;
|
|
1104
|
+
const failFlipAction = wasLong
|
|
1105
|
+
? PERPS_EVENT_VALUE.ACTION.FLIP_LONG_TO_SHORT
|
|
1106
|
+
: PERPS_EVENT_VALUE.ACTION.FLIP_SHORT_TO_LONG;
|
|
1069
1107
|
__classPrivateFieldGet(this, _TradingService_deps, "f").metrics.trackPerpsEvent(PerpsAnalyticsEvent.TradeTransaction, {
|
|
1070
1108
|
[PERPS_EVENT_PROPERTY.STATUS]: PERPS_EVENT_VALUE.STATUS.FAILED,
|
|
1071
1109
|
[PERPS_EVENT_PROPERTY.ASSET]: position.symbol,
|
|
1072
|
-
[PERPS_EVENT_PROPERTY.ACTION]:
|
|
1110
|
+
[PERPS_EVENT_PROPERTY.ACTION]: failFlipAction,
|
|
1073
1111
|
[PERPS_EVENT_PROPERTY.COMPLETION_DURATION]: completionDuration,
|
|
1074
1112
|
[PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: errorMessage,
|
|
1075
1113
|
});
|
|
@@ -1127,7 +1165,7 @@ _TradingService_deps = new WeakMap(), _TradingService_controllerDeps = new WeakM
|
|
|
1127
1165
|
if (params.trackingData?.tradeAction) {
|
|
1128
1166
|
properties[PERPS_EVENT_PROPERTY.ACTION] = params.trackingData.tradeAction;
|
|
1129
1167
|
}
|
|
1130
|
-
// Pay with any token: trade_with_token (boolean); when true, include mm_pay_token_selected and mm_pay_network_selected
|
|
1168
|
+
// Pay with any token: trade_with_token (boolean); when true, include mm_pay_token_selected and mm_pay_network_selected; when false (Perps balance), include mm_pay_token_selected: "Perps Balance"
|
|
1131
1169
|
properties[PERPS_EVENT_PROPERTY.TRADE_WITH_TOKEN] =
|
|
1132
1170
|
params.trackingData?.tradeWithToken === true;
|
|
1133
1171
|
if (params.trackingData?.tradeWithToken === true) {
|
|
@@ -1140,6 +1178,18 @@ _TradingService_deps = new WeakMap(), _TradingService_controllerDeps = new WeakM
|
|
|
1140
1178
|
params.trackingData.mmPayNetworkSelected;
|
|
1141
1179
|
}
|
|
1142
1180
|
}
|
|
1181
|
+
else if (params.trackingData !== undefined) {
|
|
1182
|
+
properties[PERPS_EVENT_PROPERTY.MM_PAY_TOKEN_SELECTED] =
|
|
1183
|
+
PERPS_EVENT_VALUE.MM_PAY_TOKEN.PERPS_BALANCE;
|
|
1184
|
+
}
|
|
1185
|
+
// Calculate order value in USD (size * price)
|
|
1186
|
+
const orderSize = parseFloat(result?.filledSize ?? params.size);
|
|
1187
|
+
const assetPrice = result?.averagePrice
|
|
1188
|
+
? parseFloat(result.averagePrice)
|
|
1189
|
+
: params.trackingData?.marketPrice;
|
|
1190
|
+
if (assetPrice && orderSize) {
|
|
1191
|
+
properties[PERPS_EVENT_PROPERTY.ORDER_VALUE] = orderSize * assetPrice;
|
|
1192
|
+
}
|
|
1143
1193
|
// Add success-specific properties
|
|
1144
1194
|
if (status === PERPS_EVENT_VALUE.STATUS.EXECUTED) {
|
|
1145
1195
|
if (params.trackingData?.metamaskFee !== undefined) {
|
|
@@ -1345,18 +1395,34 @@ async function _TradingService_loadPositionData(options) {
|
|
|
1345
1395
|
...(params.trackingData?.receivedAmount !== undefined && {
|
|
1346
1396
|
[PERPS_EVENT_PROPERTY.RECEIVED_AMOUNT]: params.trackingData.receivedAmount,
|
|
1347
1397
|
}),
|
|
1398
|
+
...(params.trackingData?.source && {
|
|
1399
|
+
[PERPS_EVENT_PROPERTY.SOURCE]: params.trackingData.source,
|
|
1400
|
+
}),
|
|
1348
1401
|
};
|
|
1402
|
+
// Calculate and add order value in USD (size * price)
|
|
1403
|
+
const closeAssetPrice = result?.averagePrice
|
|
1404
|
+
? parseFloat(result.averagePrice)
|
|
1405
|
+
: params.trackingData?.marketPrice;
|
|
1406
|
+
const orderValue = closeAssetPrice && metrics.requestedSize
|
|
1407
|
+
? metrics.requestedSize * closeAssetPrice
|
|
1408
|
+
: undefined;
|
|
1349
1409
|
// Add success-specific properties
|
|
1350
1410
|
if (status === PERPS_EVENT_VALUE.STATUS.EXECUTED) {
|
|
1351
1411
|
return {
|
|
1352
1412
|
...baseProperties,
|
|
1353
1413
|
[PERPS_EVENT_PROPERTY.CLOSE_TYPE]: metrics.closeType,
|
|
1414
|
+
...(orderValue !== undefined && {
|
|
1415
|
+
[PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
|
|
1416
|
+
}),
|
|
1354
1417
|
};
|
|
1355
1418
|
}
|
|
1356
1419
|
// Add error for failures
|
|
1357
1420
|
return {
|
|
1358
1421
|
...baseProperties,
|
|
1359
1422
|
...(error && { [PERPS_EVENT_PROPERTY.ERROR_MESSAGE]: error }),
|
|
1423
|
+
...(orderValue !== undefined && {
|
|
1424
|
+
[PERPS_EVENT_PROPERTY.ORDER_VALUE]: orderValue,
|
|
1425
|
+
}),
|
|
1360
1426
|
};
|
|
1361
1427
|
}, _TradingService_trackPositionCloseResult = function _TradingService_trackPositionCloseResult(options) {
|
|
1362
1428
|
const { position, result, error, params, duration } = options;
|