@metamask-previews/perps-controller 20.0.0-preview-44b7ded21 → 20.0.0-preview-2750df1dc
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 +8 -0
- package/dist/PerpsController.d.ts.map +1 -1
- package/dist/PerpsController.js +82 -52
- package/dist/PerpsController.js.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.ts +3 -2
- package/dist/providers/HyperLiquidProvider.d.ts.map +1 -1
- package/dist/providers/HyperLiquidProvider.js +89 -29
- package/dist/providers/HyperLiquidProvider.js.map +1 -1
- package/dist/providers/LighterProvider.d.ts +1 -1
- package/dist/providers/LighterProvider.d.ts.map +1 -1
- package/dist/providers/LighterProvider.js +113 -24
- package/dist/providers/LighterProvider.js.map +1 -1
- package/dist/services/AccountService.d.ts.map +1 -1
- package/dist/services/AccountService.js +26 -19
- package/dist/services/AccountService.js.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.d.ts.map +1 -1
- package/dist/services/HyperLiquidSubscriptionService.js +13 -14
- package/dist/services/HyperLiquidSubscriptionService.js.map +1 -1
- package/dist/services/TradingService.d.ts.map +1 -1
- package/dist/services/TradingService.js +143 -92
- package/dist/services/TradingService.js.map +1 -1
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/errorContext.d.ts +78 -0
- package/dist/utils/errorContext.d.ts.map +1 -0
- package/dist/utils/errorContext.js +92 -0
- package/dist/utils/errorContext.js.map +1 -0
- package/package.json +1 -1
|
@@ -165,7 +165,7 @@ export declare class LighterProvider implements PerpsProvider {
|
|
|
165
165
|
* @returns Venue observations; missing rows and linkage remain unknown.
|
|
166
166
|
*/
|
|
167
167
|
reviewAttachedOrderGroups(): Promise<AttachedOrderGroup[]>;
|
|
168
|
-
placeOrder(input: OrderParams, inheritedGeneration?: number): Promise<OrderResult>;
|
|
168
|
+
placeOrder(input: OrderParams, inheritedGeneration?: number, reportFailure?: boolean): Promise<OrderResult>;
|
|
169
169
|
/**
|
|
170
170
|
* Collect owned native schedules without registering keys or financial writes.
|
|
171
171
|
* Raw observations preserve mapping uncertainty for the bounded runtime probe.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LighterProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LighterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"LighterProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LighterProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { BigNumber } from 'bignumber.js';
|
|
17
17
|
import { computeLighterMinOrderSize, LIGHTER_MAX_BASE_AMOUNT, LIGHTER_NATIVE_PROBE_MAX_NOTIONAL, LIGHTER_NATIVE_PROBE_PAGE_LIMIT, LIGHTER_NATIVE_PROBE_PAGE_SIZE, LIGHTER_CHASE_DEFAULT_INTERVAL_MS, LIGHTER_CHASE_DEFAULT_DURATION_MS, LIGHTER_CHASE_DEFAULT_REPRICINGS, LIGHTER_CHASE_DEFAULT_DISTANCE_BPS, LIGHTER_CHASE_MIN_INTERVAL_MS, LIGHTER_CHASE_MAX_DURATION_MS, LIGHTER_CHASE_MAX_REPRICINGS, LIGHTER_CHASE_MAX_DISTANCE_BPS, LIGHTER_CHASE_QUOTE_MAX_AGE_MS, LIGHTER_POST_ONLY_QUOTE_MAX_AGE_MS, fromLighterInteger, getLighterChainId, getLighterTransactionOutcome, LIGHTER_RESOLUTION_MS, LIGHTER_MAX_WIRE_PRICE, LIGHTER_RECOVERY_ACCOUNT_INDEX_LIMIT, LIGHTER_SUPPORTED_RESOLUTIONS, LIGHTER_DEFAULT_API_KEY_INDEX, LIGHTER_MIN_TRADING_API_KEY_INDEX, LIGHTER_TX_EXPIRY_SLACK_MS, LIGHTER_MAX_TRADING_API_KEY_INDEX, LIGHTER_TRADING_API_KEY_COUNT, LIGHTER_KEY_REGISTRATION_VISIBILITY_TIMEOUT_MS, LIGHTER_KEY_REGISTRATION_VISIBILITY_POLL_MS, LIGHTER_KEY_REGISTRATION_VISIBILITY_MAX_ATTEMPTS, LIGHTER_FILL_REPLAY_LIMIT, LIGHTER_NO_TRIGGER_PRICE, LIGHTER_ORDER_EXPIRY_NONE, LIGHTER_ORDER_TYPE_LIMIT, LIGHTER_ORDER_TYPE_MARKET, LIGHTER_TIME_IN_FORCE_GOOD_TILL_TIME, LIGHTER_TIME_IN_FORCE_POST_ONLY, getLighterWsEndpoint, LIGHTER_PRICE_POLLING_INTERVAL_MS, LIGHTER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL, LIGHTER_BRIDGE_CONFIG, LIGHTER_TX_TYPE_CANCEL_ORDER, LIGHTER_TX_TYPE_MODIFY_ORDER, LIGHTER_TX_TYPE_CHANGE_PUB_KEY, LIGHTER_GROUPING_ONE_CANCELS_THE_OTHER, LIGHTER_GROUPING_ONE_TRIGGERS_THE_OTHER, LIGHTER_GROUPING_ONE_TRIGGERS_OCO, LIGHTER_ORDER_TYPE_STOP_LOSS, LIGHTER_ORDER_TYPE_STOP_LOSS_LIMIT, LIGHTER_ORDER_TYPE_TAKE_PROFIT, LIGHTER_ORDER_TYPE_TAKE_PROFIT_LIMIT, LIGHTER_TX_TYPE_CREATE_GROUPED_ORDERS, LIGHTER_TX_TYPE_CREATE_ORDER, LIGHTER_TX_TYPE_UPDATE_LEVERAGE, LIGHTER_TX_TYPE_UPDATE_MARGIN, LIGHTER_TX_TYPE_WITHDRAW, LIGHTER_MARGIN_MODE_CROSS, LIGHTER_MARGIN_MODE_ISOLATED, LIGHTER_UNSUPPORTED_CAPABILITY_PREFIX, LIGHTER_USDC_ASSET_INDEX, LIGHTER_DATA_INTEGRITY_PREFIX, LIGHTER_MARGIN_METADATA_TTL_MS, LIGHTER_SCALE_SETTLEMENT_WINDOW_MS, LIGHTER_SCALE_SETTLEMENT_POLL_MS, parseLighterStrictDecimal, toLighterInteger, } from '../constants/lighterConfig.js';
|
|
18
|
-
import { PERPS_CONSTANTS } from '../constants/perpsConfig.js';
|
|
19
18
|
import { PERPS_ERROR_CODES } from '../perpsErrorCodes.js';
|
|
20
19
|
import { hasErrorInCauseChain } from '../services/causeChain.js';
|
|
21
20
|
import { LighterChaseService, LighterChaseObservationPendingError, toLighterChaseOrder, } from '../services/LighterChaseService.js';
|
|
@@ -24,6 +23,7 @@ import { requireSignedTxIdentity, isLighterTxExpiry, } from '../services/lighter
|
|
|
24
23
|
import { LighterTwapService } from '../services/LighterTwapService.js';
|
|
25
24
|
import { LighterWalletService } from '../services/LighterWalletService.js';
|
|
26
25
|
import { WebSocketConnectionState } from '../types/index.js';
|
|
26
|
+
import { PERPS_ERROR_ACTION, PERPS_ERROR_COMPONENT, PERPS_ERROR_OPERATION, createPerpsErrorContext, markProviderErrorReported, } from '../utils/errorContext.js';
|
|
27
27
|
import { ensureError, isKeyringLockedError } from '../utils/errorUtils.js';
|
|
28
28
|
import { adaptAccountStateFromLighter, adaptAccountStateFromLighterUserStats, adaptFillFromLighterTrade, adaptMarketDataFromLighter, adaptMarketFromLighter, adaptOrderFromLighter, adaptOrderStatus, adaptPositionFromLighter, adaptPriceUpdateFromLighter, adaptPriceUpdateFromLighterWsStat, } from '../utils/lighterAdapter.js';
|
|
29
29
|
import { LIGHTER_ATTACHED_MAX_GROUPS, LIGHTER_ATTACHED_HANDLE_PREFIX, parseLighterAttachedGroups, correlateLighterAttachedOrders, toAttachedOrderGroup, } from '../utils/lighterAttachedOrders.js';
|
|
@@ -911,6 +911,15 @@ class LighterAccountNotFoundError extends Error {
|
|
|
911
911
|
this.name = 'LighterAccountNotFoundError';
|
|
912
912
|
}
|
|
913
913
|
}
|
|
914
|
+
const SILENT_LIGHTER_TRADING_ERRORS = new Set([
|
|
915
|
+
PERPS_ERROR_CODES.ORDER_MARGIN_MODE_INVALID,
|
|
916
|
+
PERPS_ERROR_CODES.ORDER_MARGIN_MODE_UNSUPPORTED,
|
|
917
|
+
PERPS_ERROR_CODES.ORDER_LEVERAGE_INVALID,
|
|
918
|
+
PERPS_ERROR_CODES.ORDER_SCALE_PREVIEW_STALE,
|
|
919
|
+
'Partial pair linkage requires a supported explicitly sized TP/SL pair',
|
|
920
|
+
'A partial protection size requires its trigger price',
|
|
921
|
+
'Lighter margin adjustment requires exact micro-USDC precision',
|
|
922
|
+
]);
|
|
914
923
|
/**
|
|
915
924
|
* Session-bound work stopped because the provider disconnected or the wallet
|
|
916
925
|
* switched accounts while it ran.
|
|
@@ -954,6 +963,7 @@ const EMPTY_ACCOUNT_STATE = {
|
|
|
954
963
|
* Lighter provider implementation (POC).
|
|
955
964
|
*/
|
|
956
965
|
export class LighterProvider {
|
|
966
|
+
#reportedTradingErrors = new WeakSet();
|
|
957
967
|
protocolId = 'lighter';
|
|
958
968
|
#deps;
|
|
959
969
|
#clientService;
|
|
@@ -1104,21 +1114,52 @@ export class LighterProvider {
|
|
|
1104
1114
|
// ============================================================================
|
|
1105
1115
|
// Error Context Helper
|
|
1106
1116
|
// ============================================================================
|
|
1107
|
-
#getErrorContext = (method, extra) => {
|
|
1108
|
-
return {
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
isTestnet: this.#isTestnet,
|
|
1118
|
-
...extra,
|
|
1119
|
-
},
|
|
1117
|
+
#getErrorContext = (method, extra, errorTags) => {
|
|
1118
|
+
return createPerpsErrorContext({
|
|
1119
|
+
contextName: `LighterProvider.${method}`,
|
|
1120
|
+
method,
|
|
1121
|
+
provider: 'LighterProvider',
|
|
1122
|
+
network: this.#isTestnet ? 'testnet' : 'mainnet',
|
|
1123
|
+
errorTags,
|
|
1124
|
+
data: {
|
|
1125
|
+
isTestnet: this.#isTestnet,
|
|
1126
|
+
...extra,
|
|
1120
1127
|
},
|
|
1121
|
-
};
|
|
1128
|
+
});
|
|
1129
|
+
};
|
|
1130
|
+
/**
|
|
1131
|
+
* Whether a trading failure is an expected signer, account, session, or
|
|
1132
|
+
* local-validation outcome. Those stay out of Sentry.
|
|
1133
|
+
*
|
|
1134
|
+
* @param error - Normalized provider error.
|
|
1135
|
+
* @returns True when the provider owns silence for this failure.
|
|
1136
|
+
*/
|
|
1137
|
+
#isSilentTradingError(error) {
|
|
1138
|
+
return (isKeyringLockedError(error) ||
|
|
1139
|
+
error instanceof LighterSessionCancelledError ||
|
|
1140
|
+
error instanceof LighterAccountNotFoundError ||
|
|
1141
|
+
SILENT_LIGHTER_TRADING_ERRORS.has(error.message));
|
|
1142
|
+
}
|
|
1143
|
+
/**
|
|
1144
|
+
* Forward a failed trading operation to the platform logger without
|
|
1145
|
+
* classifying or rewriting the provider error.
|
|
1146
|
+
*
|
|
1147
|
+
* Retryable keyring/session failures, missing accounts, and local intent
|
|
1148
|
+
* validation remain caller-visible but are not reported.
|
|
1149
|
+
*
|
|
1150
|
+
* @param error - The provider or venue failure.
|
|
1151
|
+
* @param method - The provider method that failed.
|
|
1152
|
+
* @param errorTags - Bounded operation and action tags.
|
|
1153
|
+
* @param extra - Diagnostic context that must not become tags.
|
|
1154
|
+
* @returns The normalized Error used by the caller result.
|
|
1155
|
+
*/
|
|
1156
|
+
#reportTradingError = (error, method, errorTags, extra) => {
|
|
1157
|
+
const wrappedError = ensureError(error, `LighterProvider.${method}`);
|
|
1158
|
+
if (!this.#isSilentTradingError(wrappedError)) {
|
|
1159
|
+
this.#deps.logger.error(wrappedError, this.#getErrorContext(method, extra, errorTags));
|
|
1160
|
+
this.#reportedTradingErrors.add(wrappedError);
|
|
1161
|
+
}
|
|
1162
|
+
return wrappedError;
|
|
1122
1163
|
};
|
|
1123
1164
|
// ============================================================================
|
|
1124
1165
|
// Initialization & Lifecycle
|
|
@@ -1231,7 +1272,11 @@ export class LighterProvider {
|
|
|
1231
1272
|
};
|
|
1232
1273
|
}
|
|
1233
1274
|
const error = ensureError(caughtError, 'LighterProvider.prepareTradingWallet');
|
|
1234
|
-
this.#deps.logger.error(error, this.#getErrorContext('prepareTradingWallet'
|
|
1275
|
+
this.#deps.logger.error(error, this.#getErrorContext('prepareTradingWallet', undefined, {
|
|
1276
|
+
operation: PERPS_ERROR_OPERATION.ConnectionManagement,
|
|
1277
|
+
component: PERPS_ERROR_COMPONENT.ConnectionManager,
|
|
1278
|
+
action: PERPS_ERROR_ACTION.ConnectionConnection,
|
|
1279
|
+
}));
|
|
1235
1280
|
return { ready: false, error: error.message };
|
|
1236
1281
|
}
|
|
1237
1282
|
}
|
|
@@ -6742,6 +6787,13 @@ export class LighterProvider {
|
|
|
6742
6787
|
}, capturedGeneration);
|
|
6743
6788
|
}
|
|
6744
6789
|
catch (error) {
|
|
6790
|
+
const wrappedError = this.#reportTradingError(error, 'placeScaleOrder', {
|
|
6791
|
+
operation: PERPS_ERROR_OPERATION.OrderManagement,
|
|
6792
|
+
action: PERPS_ERROR_ACTION.PlaceOrder,
|
|
6793
|
+
}, {
|
|
6794
|
+
symbol: params.symbol,
|
|
6795
|
+
orderType: params.orderType,
|
|
6796
|
+
});
|
|
6745
6797
|
if (group && key !== undefined && generation !== undefined) {
|
|
6746
6798
|
group.placementStopped = true;
|
|
6747
6799
|
try {
|
|
@@ -6754,7 +6806,7 @@ export class LighterProvider {
|
|
|
6754
6806
|
return {
|
|
6755
6807
|
...(group ? toLighterScaleGroup(group) : {}),
|
|
6756
6808
|
success: false,
|
|
6757
|
-
error:
|
|
6809
|
+
error: wrappedError.message,
|
|
6758
6810
|
...(leverageCommitted
|
|
6759
6811
|
? { partialState: { leverageUpdated: Number(params.leverage) } }
|
|
6760
6812
|
: {}),
|
|
@@ -7818,8 +7870,11 @@ export class LighterProvider {
|
|
|
7818
7870
|
}
|
|
7819
7871
|
}
|
|
7820
7872
|
}
|
|
7821
|
-
async placeOrder(input, inheritedGeneration) {
|
|
7873
|
+
async placeOrder(input, inheritedGeneration, reportFailure = true) {
|
|
7874
|
+
const deferProviderErrorReport = input.deferProviderErrorReport === true;
|
|
7822
7875
|
const params = { ...input };
|
|
7876
|
+
delete params.deferProviderErrorReport;
|
|
7877
|
+
const shouldReportFailure = reportFailure && !deferProviderErrorReport;
|
|
7823
7878
|
if (params.expectedScaleLadder !== undefined &&
|
|
7824
7879
|
params.orderType !== 'scale') {
|
|
7825
7880
|
return {
|
|
@@ -8285,7 +8340,15 @@ export class LighterProvider {
|
|
|
8285
8340
|
};
|
|
8286
8341
|
}
|
|
8287
8342
|
catch (caughtError) {
|
|
8288
|
-
const wrappedError =
|
|
8343
|
+
const wrappedError = shouldReportFailure
|
|
8344
|
+
? this.#reportTradingError(caughtError, 'placeOrder', {
|
|
8345
|
+
operation: PERPS_ERROR_OPERATION.OrderManagement,
|
|
8346
|
+
action: PERPS_ERROR_ACTION.PlaceOrder,
|
|
8347
|
+
}, {
|
|
8348
|
+
symbol: params.symbol,
|
|
8349
|
+
orderType: params.orderType,
|
|
8350
|
+
})
|
|
8351
|
+
: ensureError(caughtError, 'LighterProvider.placeOrder');
|
|
8289
8352
|
this.#deps.debugLogger.log('[LighterProvider] placeOrder failed', {
|
|
8290
8353
|
error: String(wrappedError),
|
|
8291
8354
|
...this.#getErrorContext('placeOrder', { symbol: params.symbol }),
|
|
@@ -8296,7 +8359,7 @@ export class LighterProvider {
|
|
|
8296
8359
|
const partialPrefix = leverageCommitted
|
|
8297
8360
|
? `PARTIAL STATE: leverage for ${params.symbol} was already updated to ${String(params.leverage)}x before the order failed. `
|
|
8298
8361
|
: '';
|
|
8299
|
-
|
|
8362
|
+
const failureResult = {
|
|
8300
8363
|
success: false,
|
|
8301
8364
|
error: `${partialPrefix}${wrappedError.message}`,
|
|
8302
8365
|
...(attachedGroup && attachedGroupPersisted
|
|
@@ -8309,6 +8372,12 @@ export class LighterProvider {
|
|
|
8309
8372
|
? { partialState: { leverageUpdated: Number(params.leverage) } }
|
|
8310
8373
|
: {}),
|
|
8311
8374
|
};
|
|
8375
|
+
const providerOwnsReporting = shouldReportFailure
|
|
8376
|
+
? this.#reportedTradingErrors.has(wrappedError)
|
|
8377
|
+
: deferProviderErrorReport && this.#isSilentTradingError(wrappedError);
|
|
8378
|
+
return providerOwnsReporting
|
|
8379
|
+
? markProviderErrorReported(failureResult)
|
|
8380
|
+
: failureResult;
|
|
8312
8381
|
}
|
|
8313
8382
|
}
|
|
8314
8383
|
/**
|
|
@@ -9955,7 +10024,14 @@ export class LighterProvider {
|
|
|
9955
10024
|
}
|
|
9956
10025
|
});
|
|
9957
10026
|
}
|
|
9958
|
-
catch {
|
|
10027
|
+
catch (error) {
|
|
10028
|
+
this.#reportTradingError(error, 'editOrder', {
|
|
10029
|
+
operation: PERPS_ERROR_OPERATION.OrderManagement,
|
|
10030
|
+
action: PERPS_ERROR_ACTION.EditOrder,
|
|
10031
|
+
}, {
|
|
10032
|
+
symbol: params.newOrder.symbol,
|
|
10033
|
+
orderId: params.orderId,
|
|
10034
|
+
});
|
|
9959
10035
|
// Project only retained intent and observations. Do not leak signer
|
|
9960
10036
|
// or transport failures, or mutate a cancelled issuing session.
|
|
9961
10037
|
if (journal) {
|
|
@@ -10136,7 +10212,7 @@ export class LighterProvider {
|
|
|
10136
10212
|
currentPrice: params.currentPrice,
|
|
10137
10213
|
priceAtCalculation: params.priceAtCalculation,
|
|
10138
10214
|
maxSlippageBps: params.maxSlippageBps,
|
|
10139
|
-
}, generationAtIntent);
|
|
10215
|
+
}, generationAtIntent, false);
|
|
10140
10216
|
}
|
|
10141
10217
|
catch (error) {
|
|
10142
10218
|
const wrappedError = ensureError(error, 'LighterProvider.closePosition');
|
|
@@ -11654,7 +11730,14 @@ export class LighterProvider {
|
|
|
11654
11730
|
};
|
|
11655
11731
|
}
|
|
11656
11732
|
catch (error) {
|
|
11657
|
-
const wrappedError =
|
|
11733
|
+
const wrappedError = this.#reportTradingError(error, 'updatePositionTPSL', {
|
|
11734
|
+
operation: PERPS_ERROR_OPERATION.PositionManagement,
|
|
11735
|
+
action: PERPS_ERROR_ACTION.PositionTpslUpdate,
|
|
11736
|
+
}, {
|
|
11737
|
+
symbol: params.symbol,
|
|
11738
|
+
hasTakeProfit: params.takeProfitPrice !== undefined,
|
|
11739
|
+
hasStopLoss: params.stopLossPrice !== undefined,
|
|
11740
|
+
});
|
|
11658
11741
|
this.#deps.debugLogger.log('[LighterProvider] updatePositionTPSL failed', {
|
|
11659
11742
|
error: String(wrappedError),
|
|
11660
11743
|
...this.#getErrorContext('updatePositionTPSL'),
|
|
@@ -11796,7 +11879,13 @@ export class LighterProvider {
|
|
|
11796
11879
|
return { success: true };
|
|
11797
11880
|
}
|
|
11798
11881
|
catch (error) {
|
|
11799
|
-
const wrappedError =
|
|
11882
|
+
const wrappedError = this.#reportTradingError(error, 'updateMargin', {
|
|
11883
|
+
operation: PERPS_ERROR_OPERATION.PositionManagement,
|
|
11884
|
+
action: PERPS_ERROR_ACTION.UpdateMargin,
|
|
11885
|
+
}, {
|
|
11886
|
+
symbol: params.symbol,
|
|
11887
|
+
amount: params.amount,
|
|
11888
|
+
});
|
|
11800
11889
|
this.#deps.debugLogger.log('[LighterProvider] updateMargin failed', {
|
|
11801
11890
|
error: String(wrappedError),
|
|
11802
11891
|
...this.#getErrorContext('updateMargin'),
|