@metamask-previews/perps-controller 19.0.0-preview-3a5622e8c → 19.0.0-preview-cdde826
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 +14 -0
- package/README.md +28 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/LighterClientService.js +2 -2
- package/dist/services/LighterClientService.js.map +1 -1
- package/dist/services/MarketDataService.d.ts.map +1 -1
- package/dist/services/MarketDataService.js +14 -3
- package/dist/services/MarketDataService.js.map +1 -1
- package/dist/services/RewardsIntegrationService.d.ts +5 -4
- package/dist/services/RewardsIntegrationService.d.ts.map +1 -1
- package/dist/services/RewardsIntegrationService.js +35 -20
- package/dist/services/RewardsIntegrationService.js.map +1 -1
- package/dist/types/index.d.ts +56 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/lighter-types.d.ts +7 -6
- package/dist/types/lighter-types.d.ts.map +1 -1
- package/dist/types/lighter-types.js.map +1 -1
- package/dist/utils/lighterAdapter.d.ts +2 -2
- package/dist/utils/lighterAdapter.d.ts.map +1 -1
- package/dist/utils/lighterAdapter.js +23 -17
- package/dist/utils/lighterAdapter.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Expose the applied builder fee resolution through `FeeCalculationResult.feeResolution`, including its winning source and targeted rewards participation when known. ([#10587](https://github.com/MetaMask/core/pull/10587))
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **BREAKING:** Widen `PerpsPlatformDependencies.rewards.getPerpsDiscountForAccount` to return `number | RewardsDiscountResponse | null`, allowing clients to supply a combined discount and targeted participation together.
|
|
17
|
+
- Existing numeric implementations remain supported. Code consuming the DI result directly must narrow the structured response before doing numeric operations. The client remains responsible for combining VIP, season, and targeted discounts.
|
|
18
|
+
- **BREAKING:** `OrderFill.pnl` is optional when the venue omits realized PnL. Consumers must preserve missing amounts as unknown when aggregating or displaying fills; only a reported `'0'` is zero ([#10605](https://github.com/MetaMask/core/pull/10605))
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Accept Lighter trades that omit position-sign flags, preserve omitted account PnL as unknown, and reject known reductions without realized PnL. Retain side-only fill directions when lifecycle context is ambiguous ([#10605](https://github.com/MetaMask/core/pull/10605))
|
|
23
|
+
|
|
10
24
|
## [19.0.0]
|
|
11
25
|
|
|
12
26
|
### Added
|
package/README.md
CHANGED
|
@@ -49,6 +49,34 @@ The package exports the controller's parameter, result, provider, and
|
|
|
49
49
|
messenger types for client integrations. Provider availability and aggregated
|
|
50
50
|
routing are controlled by client configuration and feature flags.
|
|
51
51
|
|
|
52
|
+
## Rewards discounts and fee previews
|
|
53
|
+
|
|
54
|
+
The client-owned RewardsController combines VIP, season, and targeted grants into one discount through `PerpsPlatformDependencies.rewards.getPerpsDiscountForAccount`.
|
|
55
|
+
Core compares that rewards result against the default fee and subscription waiver; targeted grants are not a fourth fee source.
|
|
56
|
+
|
|
57
|
+
The method accepts a CAIP account ID and the base builder fee in basis points.
|
|
58
|
+
It returns `Promise<number | RewardsDiscountResponse | null>`. Existing clients can keep returning a numeric discount. Clients that know targeted participation can return the structured form:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import type { RewardsDiscountResponse } from '@metamask/perps-controller';
|
|
62
|
+
// Example response from the client's getPerpsDiscountForAccount implementation.
|
|
63
|
+
const discount: RewardsDiscountResponse = {
|
|
64
|
+
discountBips: 6500, // 65% off the base builder fee.
|
|
65
|
+
targetedDiscountApplied: true,
|
|
66
|
+
};
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`targetedDiscountApplied: true` means a targeted grant contributes to the returned discount; `false` explicitly reports no targeted participation.
|
|
70
|
+
A numeric response leaves participation unknown, even if its amount matches a known VIP discount. `null` means the discount is unavailable, not zero; avoid caching it and retry on the next fee calculation.
|
|
71
|
+
`PerpsController.calculateFees` returns an optional `feeResolution` with the winning `source`, discount, and participation. When rewards wins, structured responses preserve their participation boolean; numeric responses omit it.
|
|
72
|
+
Default and subscription winners omit the participation field. A grant merely existing on the profile does not mean it was applied to the quote. The whole `feeResolution` field is omitted when the preview cannot apply a resolution or the placement does not charge a builder fee. Subscription eligibility is still
|
|
73
|
+
reported separately when available.
|
|
74
|
+
|
|
75
|
+
Rewards wins a tie with default. Subscription must be strictly cheaper after venue quantization to win, so ties do not spend subscription allowance. Preview attribution comes from the same resolution used to calculate the quoted rates.
|
|
76
|
+
|
|
77
|
+
The client owns discount combination and cache freshness. Grants can change independently of VIP tier or season. Core reads the DI result on every resolution, but does not fetch grants, invalidate client caches, or implement the client UI.
|
|
78
|
+
Updated clients must supply participation before their UI can identify targeted discounts; legacy numeric responses cannot provide that attribution.
|
|
79
|
+
|
|
52
80
|
## Error codes
|
|
53
81
|
|
|
54
82
|
`PERPS_ERROR_CODES` / `PerpsErrorCode` are the structured codes returned to
|
package/dist/index.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export type { PerpsControllerApproveSubscriptionBuilderFeeAction, PerpsControlle
|
|
|
32
32
|
export { HyperLiquidProvider } from './providers/HyperLiquidProvider.js';
|
|
33
33
|
export { ChaseOrderSuspensionError } from './providers/AggregatedPerpsProvider.js';
|
|
34
34
|
export { WebSocketConnectionState, PerpsAnalyticsEvent, MARKET_CATEGORIES, MarketCategory, } from './types/index.js';
|
|
35
|
-
export type { RawLedgerUpdate, UserHistoryItem, GetUserHistoryParams, TradeConfiguration, OrderType, TriggerOrderType, StrategyOrderType, OrdinaryOrderType, OrderExecution, TriggerDirection, TpslLinkage, PositionTriggerOrder, MarketType, MarketTypeFilter, InputMethod, TradeAction, TrackingData, TPSLTrackingData, OrderParams, MarginMode, OrderResult, ScaleOrderChild, ChaseOrder, ChaseOrderMaxDistanceReached, ChaseOrderStatus, TwapOrder, TwapOrderFill, TwapOrderStatus, PerpsPendingManualRecovery, PerpsRecoveredDispatch, Position, AccountState, ClosePositionParams, ClosePositionsParams, ClosePositionsResult, UpdateMarginParams, MarginResult, FlipPositionParams, InitializeResult, ReadyToTradeResult, DisconnectResult, MarketInfo, PerpsMarketData, ToggleTestnetResult, AssetRoute, SwitchProviderResult, CancelOrderParams, CancelOrderResult, BatchCancelOrdersParams, CancelOrdersParams, CancelOrdersResult, EditOrderParams, DepositParams, DepositWithConfirmationParams, DepositResult, DepositStatus, DepositFlowType, DepositStepInfo, WithdrawParams, WithdrawResult, TransferBetweenDexsParams, TransferBetweenDexsResult, GetHistoricalPortfolioParams, HistoricalPortfolioResult, LiveDataConfig, PerpsControllerConfig, PriceUpdate, OrderFill, CheckEligibilityParams, GetPositionsParams, GetAccountStateParams, GetUserDataSnapshotParams, PerpsUserDataSnapshot, GetOrderFillsParams, GetOrFetchFillsParams, GetOrdersParams, GetFundingParams, GetSupportedPathsParams, GetAvailableDexsParams, GetMarketsParams, GetMarketDataWithPricesParams, SortField, SortDirection, SubscribePricesParams, SubscribePositionsParams, SubscribeOrderFillsParams, SubscribeOrdersParams, SubscribeTwapOrdersParams, SubscribeAccountParams, SubscribeOICapsParams, SubscribeCandlesParams, OrderBookLevel, OrderBookData, SubscribeOrderBookParams, LiquidationPriceParams, MaintenanceMarginParams, PositionModifyPreviewParams, PositionModifyPreviewResult, PositionModifyPreviewSource, PositionModifyPreviewKind, PositionPreviewValue, PositionModifyPreviewCurrent, PositionModifyPreviewOpen, PositionModifyPreviewFullClose, PositionModifyPreviewUnsupported, PositionModifyPreviewNone, FeeCalculationParams, FeeCalculationResult, GetOrderCapabilitiesParams, GetMarginModeLockParams, MarginModeLockReason, MarginModeLockUnavailableReason, PerpsMarginModeLock, GetScalePriceLadderParams, OrderCapabilitiesUnavailableReason, DirectProviderOrderCapabilitiesUnavailableReason, RoutedOrderCapabilitiesUnavailableReason, DirectProviderScalePriceLadderUnavailableReason, ScalePriceLadderUnavailableReason, DirectProviderOrderCapabilities, PerpsOrderCapabilities, PerpsScalePriceLadder, PerpsSubscriptionBenefits, PerpsSubscriptionUsage, PerpsSubscriptionFeeWaiverStatus, PerpsFeeSource, PerpsFeeResolution, UpdatePositionTPSLParams, Order, Funding, PerpsProvider, PerpsProviderType, PerpsActiveProviderMode, AggregationMode, RoutingStrategy, AggregatedProviderConfig, ProviderError, AggregatedAccountState, PerpsLogger, PerpsTraceName, PerpsTraceValue, PerpsAnalyticsProperties, PerpsAttributionContext, PerpsMetrics, PerpsDebugLogger, PerpsStreamManager, PerpsPerformance, PerpsTracer, PerpsTypedMessageParams, PerpsTypedDataPayload, PerpsAccountSigner, PerpsAgentAccount, PerpsAgentSigner, PerpsTransactionParams, PerpsAddTransactionOptions, PerpsInternalAccount, PerpsRemoteFeatureFlagState, PerpsPlatformDependencies, PerpsTerminalMarketService, PerpsGlobalSnapshotRequest, PerpsGlobalSnapshotResult, TerminalAssetMetadata, PerpsCacheType, InvalidateCacheParams, PerpsCacheInvalidator, MarketDataFormatters, PaymentToken, PerpsSelectedPaymentToken, VersionGatedFeatureFlag, } from './types/index.js';
|
|
35
|
+
export type { RawLedgerUpdate, UserHistoryItem, GetUserHistoryParams, TradeConfiguration, OrderType, TriggerOrderType, StrategyOrderType, OrdinaryOrderType, OrderExecution, TriggerDirection, TpslLinkage, PositionTriggerOrder, MarketType, MarketTypeFilter, InputMethod, TradeAction, TrackingData, TPSLTrackingData, OrderParams, MarginMode, OrderResult, ScaleOrderChild, ChaseOrder, ChaseOrderMaxDistanceReached, ChaseOrderStatus, TwapOrder, TwapOrderFill, TwapOrderStatus, PerpsPendingManualRecovery, PerpsRecoveredDispatch, Position, AccountState, ClosePositionParams, ClosePositionsParams, ClosePositionsResult, UpdateMarginParams, MarginResult, FlipPositionParams, InitializeResult, ReadyToTradeResult, DisconnectResult, MarketInfo, PerpsMarketData, ToggleTestnetResult, AssetRoute, SwitchProviderResult, CancelOrderParams, CancelOrderResult, BatchCancelOrdersParams, CancelOrdersParams, CancelOrdersResult, EditOrderParams, DepositParams, DepositWithConfirmationParams, DepositResult, DepositStatus, DepositFlowType, DepositStepInfo, WithdrawParams, WithdrawResult, TransferBetweenDexsParams, TransferBetweenDexsResult, GetHistoricalPortfolioParams, HistoricalPortfolioResult, LiveDataConfig, PerpsControllerConfig, PriceUpdate, OrderFill, CheckEligibilityParams, GetPositionsParams, GetAccountStateParams, GetUserDataSnapshotParams, PerpsUserDataSnapshot, GetOrderFillsParams, GetOrFetchFillsParams, GetOrdersParams, GetFundingParams, GetSupportedPathsParams, GetAvailableDexsParams, GetMarketsParams, GetMarketDataWithPricesParams, SortField, SortDirection, SubscribePricesParams, SubscribePositionsParams, SubscribeOrderFillsParams, SubscribeOrdersParams, SubscribeTwapOrdersParams, SubscribeAccountParams, SubscribeOICapsParams, SubscribeCandlesParams, OrderBookLevel, OrderBookData, SubscribeOrderBookParams, LiquidationPriceParams, MaintenanceMarginParams, PositionModifyPreviewParams, PositionModifyPreviewResult, PositionModifyPreviewSource, PositionModifyPreviewKind, PositionPreviewValue, PositionModifyPreviewCurrent, PositionModifyPreviewOpen, PositionModifyPreviewFullClose, PositionModifyPreviewUnsupported, PositionModifyPreviewNone, FeeCalculationParams, FeeCalculationResult, GetOrderCapabilitiesParams, GetMarginModeLockParams, MarginModeLockReason, MarginModeLockUnavailableReason, PerpsMarginModeLock, GetScalePriceLadderParams, OrderCapabilitiesUnavailableReason, DirectProviderOrderCapabilitiesUnavailableReason, RoutedOrderCapabilitiesUnavailableReason, DirectProviderScalePriceLadderUnavailableReason, ScalePriceLadderUnavailableReason, DirectProviderOrderCapabilities, PerpsOrderCapabilities, PerpsScalePriceLadder, PerpsSubscriptionBenefits, PerpsSubscriptionUsage, PerpsSubscriptionFeeWaiverStatus, PerpsFeeSource, PerpsFeeResolution, RewardsDiscountResponse, UpdatePositionTPSLParams, Order, Funding, PerpsProvider, PerpsProviderType, PerpsActiveProviderMode, AggregationMode, RoutingStrategy, AggregatedProviderConfig, ProviderError, AggregatedAccountState, PerpsLogger, PerpsTraceName, PerpsTraceValue, PerpsAnalyticsProperties, PerpsAttributionContext, PerpsMetrics, PerpsDebugLogger, PerpsStreamManager, PerpsPerformance, PerpsTracer, PerpsTypedMessageParams, PerpsTypedDataPayload, PerpsAccountSigner, PerpsAgentAccount, PerpsAgentSigner, PerpsTransactionParams, PerpsAddTransactionOptions, PerpsInternalAccount, PerpsRemoteFeatureFlagState, PerpsPlatformDependencies, PerpsTerminalMarketService, PerpsGlobalSnapshotRequest, PerpsGlobalSnapshotResult, TerminalAssetMetadata, PerpsCacheType, InvalidateCacheParams, PerpsCacheInvalidator, MarketDataFormatters, PaymentToken, PerpsSelectedPaymentToken, VersionGatedFeatureFlag, } from './types/index.js';
|
|
36
36
|
export { PerpsTraceNames, PerpsTraceOperations, isVersionGatedFeatureFlag, } from './types/index.js';
|
|
37
37
|
export type { TestResultStatus, TestResult, SDKTestType, HyperliquidAsset, CandleStick, CandleData, OrderFormState, OrderDirection, ReconnectOptions, ExtendedAssetMeta, ExtendedPerpDex, } from './types/index.js';
|
|
38
38
|
export type { BaseTransactionResult, LastTransactionResult, TransactionStatus, TransactionRecord, } from './types/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * PerpsController - Protocol-agnostic perpetuals trading controller\n *\n * This module provides a unified interface for perpetual futures trading\n * across multiple protocols with high-performance real-time data handling.\n *\n * Key Features:\n * - Protocol abstraction (HyperLiquid first, extensible to GMX, dYdX, etc.)\n * - Dual data flow: Redux for persistence, direct callbacks for live data\n * - MetaMask native integration with BaseController pattern\n * - Mobile-optimized with throttling and performance considerations\n *\n * Usage:\n * ```typescript\n * import { usePerpsController } from './controllers.js';\n *\n * const { placeOrder, getPositions } = usePerpsController();\n * // Live prices hooks removed with Live Market Prices component\n *\n * // Place a market order\n * await placeOrder({\n * coin: 'ETH',\n * is_buy: true,\n * sz: '0.1',\n * order_type: 'market'\n * });\n * ```\n */\n\n// Core controller and types\nexport {\n PerpsController,\n getDefaultPerpsControllerState,\n InitializationState,\n PerpsMode,\n DEFAULT_ORDER_BOOK_PREFERENCES,\n DEFAULT_PERPS_MODE,\n DEFAULT_PRO_LAYOUT_PREFERENCES,\n DEFAULT_SELECTED_ORDER_TYPE,\n} from './PerpsController.js';\nexport type {\n OrderBookListCurrency,\n OrderBookListMetric,\n OrderBookPreferences,\n PerpsControllerState,\n PerpsControllerOptions,\n PerpsControllerMessenger,\n PerpsControllerGetStateAction,\n PerpsControllerActions,\n PerpsControllerChaseOrderMaxDistanceReachedEvent,\n PerpsControllerEvents,\n ProLayoutPreferences,\n ProOrdersSideFilter,\n ProOrdersSortDirection,\n ProOrdersSortField,\n ProPositionsSideFilter,\n ProPositionsSortDirection,\n ProPositionsSortField,\n} from './PerpsController.js';\nexport type {\n PerpsControllerApproveSubscriptionBuilderFeeAction,\n PerpsControllerCalculateFeesAction,\n PerpsControllerCalculateLiquidationPriceAction,\n PerpsControllerCalculateMaintenanceMarginAction,\n PerpsControllerPreviewPositionModifyAction,\n PerpsControllerCancelOrderAction,\n PerpsControllerCancelOrdersAction,\n PerpsControllerClearDepositResultAction,\n PerpsControllerClearPendingTradeConfigurationAction,\n PerpsControllerClearPendingTransactionRequestsAction,\n PerpsControllerClearWithdrawResultAction,\n PerpsControllerClosePositionAction,\n PerpsControllerClosePositionsAction,\n PerpsControllerClearAgentSignersAction,\n PerpsControllerClearAttributionContextAction,\n PerpsControllerCompleteWithdrawalFromHistoryAction,\n PerpsControllerDepositWithConfirmationAction,\n PerpsControllerDepositWithOrderAction,\n PerpsControllerDisconnectAction,\n PerpsControllerEditOrderAction,\n PerpsControllerFetchHistoricalCandlesAction,\n PerpsControllerFlipPositionAction,\n PerpsControllerGetAccountStateAction,\n PerpsControllerGetActiveProviderAction,\n PerpsControllerGetActiveProviderOrNullAction,\n PerpsControllerGetAttributionContextAction,\n PerpsControllerGetAvailableDexsAction,\n PerpsControllerGetBlockExplorerUrlAction,\n PerpsControllerGetCachedMarketDataForActiveProviderAction,\n PerpsControllerGetCachedUserDataForActiveProviderAction,\n PerpsControllerGetUserDataSnapshotAction,\n PerpsControllerGetCurrentNetworkAction,\n PerpsControllerGetFundingAction,\n PerpsControllerGetChaseOrdersAction,\n PerpsControllerGetTwapOrdersAction,\n PerpsControllerGetHistoricalPortfolioAction,\n PerpsControllerGetMarketDataWithPricesAction,\n PerpsControllerGetMarketFilterPreferencesAction,\n PerpsControllerGetMarketCategoriesAction,\n PerpsControllerGetMarketsAction,\n PerpsControllerGetMarginModeAction,\n PerpsControllerGetMaxLeverageAction,\n PerpsControllerGetOpenOrdersAction,\n PerpsControllerGetOrderBookGroupingAction,\n PerpsControllerGetOrderBookPreferencesAction,\n PerpsControllerGetOrderCapabilitiesAction,\n PerpsControllerGetMarginModeLockAction,\n PerpsControllerGetScalePriceLadderAction,\n PerpsControllerGetOrderFillsAction,\n PerpsControllerGetOrdersAction,\n PerpsControllerGetPendingManualRecoveriesAction,\n PerpsControllerGetPendingTradeConfigurationAction,\n PerpsControllerGetPositionsAction,\n PerpsControllerGetSelectedOrderTypeAction,\n PerpsControllerGetRecoveredDispatchesAction,\n PerpsControllerAcknowledgeRecoveredDispatchAction,\n PerpsControllerGetTradeConfigurationAction,\n PerpsControllerGetRecentlyViewedMarketsAction,\n PerpsControllerGetWatchlistMarketsAction,\n PerpsControllerGetVisibleCandleCountAction,\n PerpsControllerGetWebSocketConnectionStateAction,\n PerpsControllerGetWithdrawalProgressAction,\n PerpsControllerGetWithdrawalRoutesAction,\n PerpsControllerInitAction,\n PerpsControllerInvalidateSubscriptionBenefitsAction,\n PerpsControllerIsCurrentlyReinitializingAction,\n PerpsControllerIsFirstTimeUserOnCurrentNetworkAction,\n PerpsControllerIsWatchlistMarketAction,\n PerpsControllerMarkFirstOrderCompletedAction,\n PerpsControllerMarkTutorialCompletedAction,\n PerpsControllerPlaceOrderAction,\n PerpsControllerPrepareTradingWalletAction,\n PerpsControllerReconnectAction,\n PerpsControllerRecordMarketViewedAction,\n PerpsControllerRefreshEligibilityAction,\n PerpsControllerResetFirstTimeUserStateAction,\n PerpsControllerResetSelectedPaymentTokenAction,\n PerpsControllerSaveMarginModeAction,\n PerpsControllerSaveMarketFilterPreferencesAction,\n PerpsControllerGetProLayoutPreferencesAction,\n PerpsControllerSetProLayoutPreferencesAction,\n PerpsControllerSetPerpsModeAction,\n PerpsControllerSetOrderBookPreferencesAction,\n PerpsControllerSetSelectedOrderTypeAction,\n PerpsControllerSaveOrderBookGroupingAction,\n PerpsControllerSavePendingTradeConfigurationAction,\n PerpsControllerSaveTradeConfigurationAction,\n PerpsControllerSetAgentSignerAction,\n PerpsControllerSetAttributionContextAction,\n PerpsControllerSetLiveDataConfigAction,\n PerpsControllerSetSelectedPaymentTokenAction,\n PerpsControllerSetVisibleCandleCountAction,\n PerpsControllerStartEligibilityMonitoringAction,\n PerpsControllerStartMarketDataPreloadAction,\n PerpsControllerSuspendChaseOrdersAction,\n PerpsControllerStopEligibilityMonitoringAction,\n PerpsControllerStopMarketDataPreloadAction,\n PerpsControllerSubscribeToAccountAction,\n PerpsControllerSubscribeToCandlesAction,\n PerpsControllerSubscribeToConnectionStateAction,\n PerpsControllerSubscribeToOICapsAction,\n PerpsControllerSubscribeToOrderBookAction,\n PerpsControllerSubscribeToOrderFillsAction,\n PerpsControllerSubscribeToOrdersAction,\n PerpsControllerSubscribeToTwapOrdersAction,\n PerpsControllerSubscribeToPositionsAction,\n PerpsControllerSubscribeToPricesAction,\n PerpsControllerSwitchProviderAction,\n PerpsControllerToggleTestnetAction,\n PerpsControllerToggleWatchlistMarketAction,\n PerpsControllerUpdateMarginAction,\n PerpsControllerUpdatePositionTPSLAction,\n PerpsControllerUpdateWithdrawalProgressAction,\n PerpsControllerUpdateWithdrawalStatusAction,\n PerpsControllerValidateClosePositionAction,\n PerpsControllerValidateOrderAction,\n PerpsControllerValidateWithdrawalAction,\n PerpsControllerWithdrawAction,\n} from './PerpsController-method-action-types.js';\n\n// Provider interfaces and implementations\nexport { HyperLiquidProvider } from './providers/HyperLiquidProvider.js';\nexport { ChaseOrderSuspensionError } from './providers/AggregatedPerpsProvider.js';\n\n// Type definitions (explicit named exports)\nexport {\n WebSocketConnectionState,\n PerpsAnalyticsEvent,\n MARKET_CATEGORIES,\n MarketCategory,\n} from './types/index.js';\nexport type {\n RawLedgerUpdate,\n UserHistoryItem,\n GetUserHistoryParams,\n TradeConfiguration,\n OrderType,\n TriggerOrderType,\n StrategyOrderType,\n OrdinaryOrderType,\n OrderExecution,\n TriggerDirection,\n TpslLinkage,\n PositionTriggerOrder,\n MarketType,\n MarketTypeFilter,\n InputMethod,\n TradeAction,\n TrackingData,\n TPSLTrackingData,\n OrderParams,\n MarginMode,\n OrderResult,\n ScaleOrderChild,\n ChaseOrder,\n ChaseOrderMaxDistanceReached,\n ChaseOrderStatus,\n TwapOrder,\n TwapOrderFill,\n TwapOrderStatus,\n PerpsPendingManualRecovery,\n PerpsRecoveredDispatch,\n Position,\n AccountState,\n ClosePositionParams,\n ClosePositionsParams,\n ClosePositionsResult,\n UpdateMarginParams,\n MarginResult,\n FlipPositionParams,\n InitializeResult,\n ReadyToTradeResult,\n DisconnectResult,\n MarketInfo,\n PerpsMarketData,\n ToggleTestnetResult,\n AssetRoute,\n SwitchProviderResult,\n CancelOrderParams,\n CancelOrderResult,\n BatchCancelOrdersParams,\n CancelOrdersParams,\n CancelOrdersResult,\n EditOrderParams,\n DepositParams,\n DepositWithConfirmationParams,\n DepositResult,\n DepositStatus,\n DepositFlowType,\n DepositStepInfo,\n WithdrawParams,\n WithdrawResult,\n TransferBetweenDexsParams,\n TransferBetweenDexsResult,\n GetHistoricalPortfolioParams,\n HistoricalPortfolioResult,\n LiveDataConfig,\n PerpsControllerConfig,\n PriceUpdate,\n OrderFill,\n CheckEligibilityParams,\n GetPositionsParams,\n GetAccountStateParams,\n GetUserDataSnapshotParams,\n PerpsUserDataSnapshot,\n GetOrderFillsParams,\n GetOrFetchFillsParams,\n GetOrdersParams,\n GetFundingParams,\n GetSupportedPathsParams,\n GetAvailableDexsParams,\n GetMarketsParams,\n GetMarketDataWithPricesParams,\n SortField,\n SortDirection,\n SubscribePricesParams,\n SubscribePositionsParams,\n SubscribeOrderFillsParams,\n SubscribeOrdersParams,\n SubscribeTwapOrdersParams,\n SubscribeAccountParams,\n SubscribeOICapsParams,\n SubscribeCandlesParams,\n OrderBookLevel,\n OrderBookData,\n SubscribeOrderBookParams,\n LiquidationPriceParams,\n MaintenanceMarginParams,\n PositionModifyPreviewParams,\n PositionModifyPreviewResult,\n PositionModifyPreviewSource,\n PositionModifyPreviewKind,\n PositionPreviewValue,\n PositionModifyPreviewCurrent,\n PositionModifyPreviewOpen,\n PositionModifyPreviewFullClose,\n PositionModifyPreviewUnsupported,\n PositionModifyPreviewNone,\n FeeCalculationParams,\n FeeCalculationResult,\n GetOrderCapabilitiesParams,\n GetMarginModeLockParams,\n MarginModeLockReason,\n MarginModeLockUnavailableReason,\n PerpsMarginModeLock,\n GetScalePriceLadderParams,\n OrderCapabilitiesUnavailableReason,\n DirectProviderOrderCapabilitiesUnavailableReason,\n RoutedOrderCapabilitiesUnavailableReason,\n DirectProviderScalePriceLadderUnavailableReason,\n ScalePriceLadderUnavailableReason,\n DirectProviderOrderCapabilities,\n PerpsOrderCapabilities,\n PerpsScalePriceLadder,\n PerpsSubscriptionBenefits,\n PerpsSubscriptionUsage,\n PerpsSubscriptionFeeWaiverStatus,\n PerpsFeeSource,\n PerpsFeeResolution,\n UpdatePositionTPSLParams,\n Order,\n Funding,\n PerpsProvider,\n PerpsProviderType,\n PerpsActiveProviderMode,\n AggregationMode,\n RoutingStrategy,\n AggregatedProviderConfig,\n ProviderError,\n AggregatedAccountState,\n PerpsLogger,\n PerpsTraceName,\n PerpsTraceValue,\n PerpsAnalyticsProperties,\n PerpsAttributionContext,\n PerpsMetrics,\n PerpsDebugLogger,\n PerpsStreamManager,\n PerpsPerformance,\n PerpsTracer,\n PerpsTypedMessageParams,\n PerpsTypedDataPayload,\n PerpsAccountSigner,\n PerpsAgentAccount,\n PerpsAgentSigner,\n PerpsTransactionParams,\n PerpsAddTransactionOptions,\n PerpsInternalAccount,\n PerpsRemoteFeatureFlagState,\n PerpsPlatformDependencies,\n PerpsTerminalMarketService,\n PerpsGlobalSnapshotRequest,\n PerpsGlobalSnapshotResult,\n TerminalAssetMetadata,\n PerpsCacheType,\n InvalidateCacheParams,\n PerpsCacheInvalidator,\n MarketDataFormatters,\n PaymentToken,\n PerpsSelectedPaymentToken,\n VersionGatedFeatureFlag,\n} from './types/index.js';\nexport {\n PerpsTraceNames,\n PerpsTraceOperations,\n isVersionGatedFeatureFlag,\n} from './types/index.js';\n\n// Types from sub-modules (re-exported via types/index.ts)\nexport type {\n TestResultStatus,\n TestResult,\n SDKTestType,\n HyperliquidAsset,\n CandleStick,\n CandleData,\n OrderFormState,\n OrderDirection,\n ReconnectOptions,\n ExtendedAssetMeta,\n ExtendedPerpDex,\n} from './types/index.js';\nexport type {\n BaseTransactionResult,\n LastTransactionResult,\n TransactionStatus,\n TransactionRecord,\n} from './types/index.js';\nexport { isTransactionRecord, isLastTransactionResult } from './types/index.js';\nexport type {\n AssetPosition,\n SpotBalance,\n PerpsUniverse,\n PerpsAssetCtx,\n PredictedFunding,\n FrontendOrder,\n SDKOrderParams,\n ClearinghouseStateResponse,\n SpotClearinghouseStateResponse,\n MetaResponse,\n FrontendOpenOrdersResponse,\n AllMidsResponse,\n MetaAndAssetCtxsResponse,\n PredictedFundingsResponse,\n SpotMetaResponse,\n} from './types/index.js';\nexport type {\n HyperLiquidEndpoints,\n AssetNetworkConfig,\n HyperLiquidAssetConfigs,\n BridgeContractConfig,\n HyperLiquidBridgeContracts,\n TransportReconnectConfig,\n TransportKeepAliveConfig,\n HyperLiquidTransportConfig,\n TradingAmountConfig,\n TradingDefaultsConfig,\n FeeRatesConfig,\n HyperLiquidNetwork,\n} from './types/index.js';\nexport type { PerpsToken } from './types/index.js';\n\n// Constants (explicit named exports)\nexport {\n CandlePeriod,\n TimeDuration,\n ChartInterval,\n MAX_CANDLE_COUNT,\n VISIBLE_CANDLE_COUNT_CONFIG,\n DURATION_CANDLE_PERIODS,\n CANDLE_PERIODS,\n DEFAULT_CANDLE_PERIOD,\n getCandlePeriodsForDuration,\n getDefaultCandlePeriodForDuration,\n calculateCandleCount,\n} from './constants/index.js';\nexport { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from './constants/index.js';\nexport { DETAILED_ORDER_TYPES, isTPSLOrder } from './constants/index.js';\nexport { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from './constants/index.js';\nexport {\n ARBITRUM_MAINNET_CHAIN_ID_HEX,\n ARBITRUM_MAINNET_CHAIN_ID,\n ARBITRUM_TESTNET_CHAIN_ID,\n ARBITRUM_MAINNET_CAIP_CHAIN_ID,\n ARBITRUM_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_MAINNET_CHAIN_ID,\n HYPERLIQUID_TESTNET_CHAIN_ID,\n HYPERLIQUID_MAINNET_CAIP_CHAIN_ID,\n HYPERLIQUID_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_NETWORK_NAME,\n USDC_SYMBOL,\n USDC_NAME,\n USDC_DECIMALS,\n TOKEN_DECIMALS,\n ZERO_ADDRESS,\n ZERO_BALANCE,\n ARBITRUM_SEPOLIA_CHAIN_ID,\n USDC_ETHEREUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_TESTNET_ADDRESS,\n USDC_TOKEN_ICON_URL,\n HYPERLIQUID_ENDPOINTS,\n HYPERLIQUID_ASSET_ICONS_BASE_URL,\n METAMASK_PERPS_ICONS_BASE_URL,\n HYPERLIQUID_ASSET_CONFIGS,\n HYPERLIQUID_BRIDGE_CONTRACTS,\n HYPERLIQUID_TRANSPORT_CONFIG,\n TRADING_DEFAULTS,\n FEE_RATES,\n HIP3_FEE_CONFIG,\n BUILDER_FEE_CONFIG,\n HYPERLIQUID_L1_ACTION_DOMAIN_NAME,\n HYPERLIQUID_L1_ACTION_PRIMARY_TYPE,\n REFERRAL_CONFIG,\n DEPOSIT_CONFIG,\n HYPERLIQUID_WITHDRAWAL_MINUTES,\n getWebSocketEndpoint,\n getChainId,\n getCaipChainId,\n getBridgeInfo,\n getSupportedAssets,\n CAIP_ASSET_NAMESPACES,\n HYPERLIQUID_CONFIG,\n HIP3_ASSET_ID_CONFIG,\n BASIS_POINTS_DIVISOR,\n SPOT_ASSET_ID_OFFSET,\n HIP3_ASSET_MARKET_TYPES,\n TESTNET_HIP3_CONFIG,\n MAINNET_HIP3_CONFIG,\n HIP3_MARGIN_CONFIG,\n INITIAL_AMOUNT_UI_PROGRESS,\n WITHDRAWAL_PROGRESS_STAGES,\n PROGRESS_BAR_COMPLETION_DELAY_MS,\n} from './constants/index.js';\nexport type { SupportedAsset } from './constants/index.js';\nexport { PerpsMeasurementName } from './constants/index.js';\nexport {\n LIGHTER_MAINNET_CHAIN_ID,\n LIGHTER_TESTNET_CHAIN_ID,\n getLighterChainId,\n LIGHTER_ENDPOINTS,\n getLighterHttpEndpoint,\n LIGHTER_DEFAULT_API_KEY_INDEX,\n LIGHTER_HTTP_TIMEOUT_MS,\n LIGHTER_PRICE_POLLING_INTERVAL_MS,\n LIGHTER_MAX_LEVERAGE,\n toLighterInteger,\n fromLighterInteger,\n computeLighterMinOrderSize,\n} from './constants/index.js';\nexport type {\n LighterNetwork,\n LighterCreateClientParams,\n LighterSignerBridge,\n LighterWebSocketCtor,\n LighterWebSocketLike,\n LighterWasmCall,\n LighterAuthConfig,\n} from './types/lighter-types.js';\nexport {\n PERPS_CONSTANTS,\n WITHDRAWAL_CONSTANTS,\n VALIDATION_THRESHOLDS,\n ORDER_SLIPPAGE_CONFIG,\n CHASE_ORDER_CONFIG,\n CHASE_ORDER_STATUS,\n MAX_SLIPPAGE_BOUNDS,\n PERFORMANCE_CONFIG,\n TP_SL_CONFIG,\n HYPERLIQUID_ORDER_LIMITS,\n HYPERLIQUID_TWAP_LIMITS,\n CLOSE_POSITION_CONFIG,\n MARGIN_ADJUSTMENT_CONFIG,\n DATA_LAKE_API_CONFIG,\n DECIMAL_PRECISION_CONFIG,\n MARKET_SORTING_CONFIG,\n PROVIDER_CONFIG,\n FUNDING_RATE_CONFIG,\n} from './constants/index.js';\nexport type { SortOptionId } from './constants/index.js';\n\n// Utilities (explicit named exports)\nexport {\n findEvmAccount,\n getEvmAccountFromAccountGroup,\n getSelectedEvmAccount,\n calculateWeightedReturnOnEquity,\n aggregateAccountStates,\n} from './utils/index.js';\nexport type { ReturnOnEquityInput } from './utils/index.js';\nexport { ensureError, isAbortError } from './utils/index.js';\nexport type {\n OrderBookCacheEntry,\n ProcessL2BookDataParams,\n ProcessBboDataParams,\n} from './utils/index.js';\nexport { processL2BookData, processBboData } from './utils/index.js';\nexport type { ValidationDebugLogger } from './utils/index.js';\nexport {\n createErrorResult,\n validateWithdrawalParams,\n validateDepositParams,\n validateAssetSupport,\n validateBalance,\n applyPathFilters,\n getSupportedPaths,\n getMaxOrderValue,\n validateOrderParams,\n validateCoinExists,\n} from './utils/index.js';\nexport {\n TRIGGER_ORDER_TYPES,\n STRATEGY_ORDER_TYPES,\n SCALE_ORDER_COUNT,\n isTriggerOrderType,\n isStrategyOrderType,\n isLimitExecutionOrderType,\n getTriggerExecution,\n getTriggerDirection,\n buildTriggerOrderType,\n buildPositionTriggerOrderFromOrder,\n computeScalePriceLadder,\n computeChaseQuotePrice,\n getPriceTick,\n splitScaleSizes,\n} from './utils/index.js';\nexport {\n adaptTriggerOrderTypeFromSDK,\n adaptPositionTriggerOrderFromSDK,\n adaptTpslLinkageToGrouping,\n} from './utils/index.js';\nexport {\n generatePerpsId,\n generateDepositId,\n generateWithdrawalId,\n generateOrderId,\n generateTransactionId,\n} from './utils/index.js';\nexport {\n calculateOpenInterestUSD,\n isMarketTradable,\n transformMarketData,\n formatChange,\n} from './utils/index.js';\nexport type { HyperLiquidMarketData } from './utils/index.js';\nexport {\n getPerpsConnectionAttemptContext,\n withPerpsConnectionAttemptContext,\n} from './utils/perpsConnectionAttemptContext.js';\nexport type { PerpsConnectionAttemptContext } from './utils/perpsConnectionAttemptContext.js';\nexport {\n MAX_MARKET_PATTERN_LENGTH,\n escapeRegex,\n validateMarketPattern,\n compileMarketPattern,\n matchesMarketPattern,\n shouldIncludeMarket,\n getPerpsDisplaySymbol,\n getPerpsDexFromSymbol,\n calculateFundingCountdown,\n calculate24hHighLow,\n filterMarketsByQuery,\n matchesCategory,\n getMarketTypeFilter,\n applyMarketFilters,\n isHip3Market,\n rankMarketsByQuery,\n getMarketMatchRank,\n} from './utils/index.js';\nexport { MarketMatchRank } from './utils/index.js';\nexport type {\n MarketPatternMatcher,\n CompiledMarketPattern,\n} from './utils/index.js';\nexport type {\n OrderCalculationsDebugLogger,\n CalculateFinalPositionSizeParams,\n CalculateFinalPositionSizeResult,\n CalculateOrderPriceAndSizeParams,\n CalculateOrderPriceAndSizeResult,\n BuildOrdersArrayParams,\n BuildOrdersArrayResult,\n} from './utils/index.js';\nexport {\n calculatePositionSize,\n calculateMarginRequired,\n getMaxAllowedAmount,\n calculateFinalPositionSize,\n calculateOrderPriceAndSize,\n buildOrdersArray,\n} from './utils/index.js';\nexport {\n formatAccountToCaipAccountId,\n isCaipAccountId,\n handleRewardsError,\n} from './utils/index.js';\nexport {\n countSignificantFigures,\n hasExceededSignificantFigures,\n roundToSignificantFigures,\n} from './utils/index.js';\nexport type { SortMarketsParams } from './utils/index.js';\nexport { parseVolume, sortMarkets } from './utils/index.js';\nexport type { StandaloneInfoClientOptions } from './utils/index.js';\nexport {\n createStandaloneInfoClient,\n queryStandaloneClearinghouseStates,\n queryStandaloneOpenOrders,\n} from './utils/index.js';\nexport { stripQuotes, parseCommaSeparatedString } from './utils/index.js';\nexport { generateERC20TransferData } from './utils/index.js';\nexport { wait } from './utils/index.js';\nexport {\n adaptOrderToSDK,\n adaptPositionFromSDK,\n adaptOrderFromSDK,\n adaptMarketFromSDK,\n adaptAccountStateFromSDK,\n buildAssetMapping,\n formatHyperLiquidPrice,\n formatHyperLiquidSize,\n calculateHip3AssetId,\n parseAssetName,\n adaptHyperLiquidLedgerUpdateToUserHistoryItem,\n} from './utils/index.js';\nexport {\n previewHyperLiquidIsolatedPositionModify,\n resolveHyperLiquidMarginTiers,\n buildMaintenanceSchedule,\n estimateIsolatedLiquidationPrice,\n estimateIsolatedLiquidationPriceAtTier,\n} from './utils/index.js';\nexport type { HyperLiquidMarginTier } from './utils/index.js';\nexport { getEnvironment } from './utils/index.js';\nexport type { FiatRangeConfig } from './utils/index.js';\nexport {\n PRICE_THRESHOLD,\n formatWithSignificantDigits,\n PRICE_RANGES_MINIMAL_VIEW,\n PRICE_RANGES_UNIVERSAL,\n formatPerpsFiat,\n formatPositionSize,\n formatPnl,\n formatPercentage,\n formatFundingRate,\n} from './utils/index.js';\n\n// Error codes (explicit named exports)\nexport { PERPS_ERROR_CODES } from './perpsErrorCodes.js';\nexport type { PerpsErrorCode } from './perpsErrorCodes.js';\n\n// Selectors (explicit named exports)\nexport {\n selectIsFirstTimeUser,\n selectHasPlacedFirstOrder,\n selectWatchlistMarkets,\n selectIsWatchlistMarket,\n selectRecentlyViewedMarkets,\n selectTradeConfiguration,\n selectPendingTradeConfiguration,\n selectMarketFilterPreferences,\n selectOrderBookGrouping,\n selectMarginMode,\n selectOrderBookPreferences,\n selectProLayoutPreferences,\n selectSelectedOrderType,\n selectVisibleCandleCount,\n selectPerpsMode,\n} from './selectors.js';\n\n// Services (only externally consumed items)\nexport { TradingReadinessCache } from './services/TradingReadinessCache.js';\nexport type { ServiceContext } from './services/ServiceContext.js';\nexport {\n AggregatedOrderBookConnection,\n processAggregatedOrderBook,\n} from './services/AggregatedOrderBookConnection.js';\nexport type {\n OrderBookConnectionStatus,\n SubscribeAggregatedOrderBookParams,\n AggregatedOrderBookConnectionOptions,\n} from './services/AggregatedOrderBookConnection.js';\n\n// Removed with Live Market Prices component:\n// - usePerpsPrices\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,4BAA4B;AAC5B,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,EACnB,SAAS,EACT,8BAA8B,EAC9B,kBAAkB,EAClB,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AA6I9B,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,4CAA4C;AAC5C,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC;AA6K1B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAsB1B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAkChF,qCAAqC;AACrC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,iCAAiC,EACjC,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,iCAAiC,EACjC,iCAAiC,EACjC,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,EAChC,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,iCAAiC,EACjC,kCAAkC,EAClC,eAAe,EACf,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,iCAAiC,EACjC,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAG9B,qCAAqC;AACrC,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,kCAAkC,EAClC,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAcnD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,6CAA6C,GAC9C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wCAAwC,EACxC,6BAA6B,EAC7B,wBAAwB,EACxB,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,uCAAuC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,qCAAqC;AACrC,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,6CAA6C,CAAC;AAOrD,6CAA6C;AAC7C,mBAAmB","sourcesContent":["/**\n * PerpsController - Protocol-agnostic perpetuals trading controller\n *\n * This module provides a unified interface for perpetual futures trading\n * across multiple protocols with high-performance real-time data handling.\n *\n * Key Features:\n * - Protocol abstraction (HyperLiquid first, extensible to GMX, dYdX, etc.)\n * - Dual data flow: Redux for persistence, direct callbacks for live data\n * - MetaMask native integration with BaseController pattern\n * - Mobile-optimized with throttling and performance considerations\n *\n * Usage:\n * ```typescript\n * import { usePerpsController } from './controllers.js';\n *\n * const { placeOrder, getPositions } = usePerpsController();\n * // Live prices hooks removed with Live Market Prices component\n *\n * // Place a market order\n * await placeOrder({\n * coin: 'ETH',\n * is_buy: true,\n * sz: '0.1',\n * order_type: 'market'\n * });\n * ```\n */\n\n// Core controller and types\nexport {\n PerpsController,\n getDefaultPerpsControllerState,\n InitializationState,\n PerpsMode,\n DEFAULT_ORDER_BOOK_PREFERENCES,\n DEFAULT_PERPS_MODE,\n DEFAULT_PRO_LAYOUT_PREFERENCES,\n DEFAULT_SELECTED_ORDER_TYPE,\n} from './PerpsController.js';\nexport type {\n OrderBookListCurrency,\n OrderBookListMetric,\n OrderBookPreferences,\n PerpsControllerState,\n PerpsControllerOptions,\n PerpsControllerMessenger,\n PerpsControllerGetStateAction,\n PerpsControllerActions,\n PerpsControllerChaseOrderMaxDistanceReachedEvent,\n PerpsControllerEvents,\n ProLayoutPreferences,\n ProOrdersSideFilter,\n ProOrdersSortDirection,\n ProOrdersSortField,\n ProPositionsSideFilter,\n ProPositionsSortDirection,\n ProPositionsSortField,\n} from './PerpsController.js';\nexport type {\n PerpsControllerApproveSubscriptionBuilderFeeAction,\n PerpsControllerCalculateFeesAction,\n PerpsControllerCalculateLiquidationPriceAction,\n PerpsControllerCalculateMaintenanceMarginAction,\n PerpsControllerPreviewPositionModifyAction,\n PerpsControllerCancelOrderAction,\n PerpsControllerCancelOrdersAction,\n PerpsControllerClearDepositResultAction,\n PerpsControllerClearPendingTradeConfigurationAction,\n PerpsControllerClearPendingTransactionRequestsAction,\n PerpsControllerClearWithdrawResultAction,\n PerpsControllerClosePositionAction,\n PerpsControllerClosePositionsAction,\n PerpsControllerClearAgentSignersAction,\n PerpsControllerClearAttributionContextAction,\n PerpsControllerCompleteWithdrawalFromHistoryAction,\n PerpsControllerDepositWithConfirmationAction,\n PerpsControllerDepositWithOrderAction,\n PerpsControllerDisconnectAction,\n PerpsControllerEditOrderAction,\n PerpsControllerFetchHistoricalCandlesAction,\n PerpsControllerFlipPositionAction,\n PerpsControllerGetAccountStateAction,\n PerpsControllerGetActiveProviderAction,\n PerpsControllerGetActiveProviderOrNullAction,\n PerpsControllerGetAttributionContextAction,\n PerpsControllerGetAvailableDexsAction,\n PerpsControllerGetBlockExplorerUrlAction,\n PerpsControllerGetCachedMarketDataForActiveProviderAction,\n PerpsControllerGetCachedUserDataForActiveProviderAction,\n PerpsControllerGetUserDataSnapshotAction,\n PerpsControllerGetCurrentNetworkAction,\n PerpsControllerGetFundingAction,\n PerpsControllerGetChaseOrdersAction,\n PerpsControllerGetTwapOrdersAction,\n PerpsControllerGetHistoricalPortfolioAction,\n PerpsControllerGetMarketDataWithPricesAction,\n PerpsControllerGetMarketFilterPreferencesAction,\n PerpsControllerGetMarketCategoriesAction,\n PerpsControllerGetMarketsAction,\n PerpsControllerGetMarginModeAction,\n PerpsControllerGetMaxLeverageAction,\n PerpsControllerGetOpenOrdersAction,\n PerpsControllerGetOrderBookGroupingAction,\n PerpsControllerGetOrderBookPreferencesAction,\n PerpsControllerGetOrderCapabilitiesAction,\n PerpsControllerGetMarginModeLockAction,\n PerpsControllerGetScalePriceLadderAction,\n PerpsControllerGetOrderFillsAction,\n PerpsControllerGetOrdersAction,\n PerpsControllerGetPendingManualRecoveriesAction,\n PerpsControllerGetPendingTradeConfigurationAction,\n PerpsControllerGetPositionsAction,\n PerpsControllerGetSelectedOrderTypeAction,\n PerpsControllerGetRecoveredDispatchesAction,\n PerpsControllerAcknowledgeRecoveredDispatchAction,\n PerpsControllerGetTradeConfigurationAction,\n PerpsControllerGetRecentlyViewedMarketsAction,\n PerpsControllerGetWatchlistMarketsAction,\n PerpsControllerGetVisibleCandleCountAction,\n PerpsControllerGetWebSocketConnectionStateAction,\n PerpsControllerGetWithdrawalProgressAction,\n PerpsControllerGetWithdrawalRoutesAction,\n PerpsControllerInitAction,\n PerpsControllerInvalidateSubscriptionBenefitsAction,\n PerpsControllerIsCurrentlyReinitializingAction,\n PerpsControllerIsFirstTimeUserOnCurrentNetworkAction,\n PerpsControllerIsWatchlistMarketAction,\n PerpsControllerMarkFirstOrderCompletedAction,\n PerpsControllerMarkTutorialCompletedAction,\n PerpsControllerPlaceOrderAction,\n PerpsControllerPrepareTradingWalletAction,\n PerpsControllerReconnectAction,\n PerpsControllerRecordMarketViewedAction,\n PerpsControllerRefreshEligibilityAction,\n PerpsControllerResetFirstTimeUserStateAction,\n PerpsControllerResetSelectedPaymentTokenAction,\n PerpsControllerSaveMarginModeAction,\n PerpsControllerSaveMarketFilterPreferencesAction,\n PerpsControllerGetProLayoutPreferencesAction,\n PerpsControllerSetProLayoutPreferencesAction,\n PerpsControllerSetPerpsModeAction,\n PerpsControllerSetOrderBookPreferencesAction,\n PerpsControllerSetSelectedOrderTypeAction,\n PerpsControllerSaveOrderBookGroupingAction,\n PerpsControllerSavePendingTradeConfigurationAction,\n PerpsControllerSaveTradeConfigurationAction,\n PerpsControllerSetAgentSignerAction,\n PerpsControllerSetAttributionContextAction,\n PerpsControllerSetLiveDataConfigAction,\n PerpsControllerSetSelectedPaymentTokenAction,\n PerpsControllerSetVisibleCandleCountAction,\n PerpsControllerStartEligibilityMonitoringAction,\n PerpsControllerStartMarketDataPreloadAction,\n PerpsControllerSuspendChaseOrdersAction,\n PerpsControllerStopEligibilityMonitoringAction,\n PerpsControllerStopMarketDataPreloadAction,\n PerpsControllerSubscribeToAccountAction,\n PerpsControllerSubscribeToCandlesAction,\n PerpsControllerSubscribeToConnectionStateAction,\n PerpsControllerSubscribeToOICapsAction,\n PerpsControllerSubscribeToOrderBookAction,\n PerpsControllerSubscribeToOrderFillsAction,\n PerpsControllerSubscribeToOrdersAction,\n PerpsControllerSubscribeToTwapOrdersAction,\n PerpsControllerSubscribeToPositionsAction,\n PerpsControllerSubscribeToPricesAction,\n PerpsControllerSwitchProviderAction,\n PerpsControllerToggleTestnetAction,\n PerpsControllerToggleWatchlistMarketAction,\n PerpsControllerUpdateMarginAction,\n PerpsControllerUpdatePositionTPSLAction,\n PerpsControllerUpdateWithdrawalProgressAction,\n PerpsControllerUpdateWithdrawalStatusAction,\n PerpsControllerValidateClosePositionAction,\n PerpsControllerValidateOrderAction,\n PerpsControllerValidateWithdrawalAction,\n PerpsControllerWithdrawAction,\n} from './PerpsController-method-action-types.js';\n\n// Provider interfaces and implementations\nexport { HyperLiquidProvider } from './providers/HyperLiquidProvider.js';\nexport { ChaseOrderSuspensionError } from './providers/AggregatedPerpsProvider.js';\n\n// Type definitions (explicit named exports)\nexport {\n WebSocketConnectionState,\n PerpsAnalyticsEvent,\n MARKET_CATEGORIES,\n MarketCategory,\n} from './types/index.js';\nexport type {\n RawLedgerUpdate,\n UserHistoryItem,\n GetUserHistoryParams,\n TradeConfiguration,\n OrderType,\n TriggerOrderType,\n StrategyOrderType,\n OrdinaryOrderType,\n OrderExecution,\n TriggerDirection,\n TpslLinkage,\n PositionTriggerOrder,\n MarketType,\n MarketTypeFilter,\n InputMethod,\n TradeAction,\n TrackingData,\n TPSLTrackingData,\n OrderParams,\n MarginMode,\n OrderResult,\n ScaleOrderChild,\n ChaseOrder,\n ChaseOrderMaxDistanceReached,\n ChaseOrderStatus,\n TwapOrder,\n TwapOrderFill,\n TwapOrderStatus,\n PerpsPendingManualRecovery,\n PerpsRecoveredDispatch,\n Position,\n AccountState,\n ClosePositionParams,\n ClosePositionsParams,\n ClosePositionsResult,\n UpdateMarginParams,\n MarginResult,\n FlipPositionParams,\n InitializeResult,\n ReadyToTradeResult,\n DisconnectResult,\n MarketInfo,\n PerpsMarketData,\n ToggleTestnetResult,\n AssetRoute,\n SwitchProviderResult,\n CancelOrderParams,\n CancelOrderResult,\n BatchCancelOrdersParams,\n CancelOrdersParams,\n CancelOrdersResult,\n EditOrderParams,\n DepositParams,\n DepositWithConfirmationParams,\n DepositResult,\n DepositStatus,\n DepositFlowType,\n DepositStepInfo,\n WithdrawParams,\n WithdrawResult,\n TransferBetweenDexsParams,\n TransferBetweenDexsResult,\n GetHistoricalPortfolioParams,\n HistoricalPortfolioResult,\n LiveDataConfig,\n PerpsControllerConfig,\n PriceUpdate,\n OrderFill,\n CheckEligibilityParams,\n GetPositionsParams,\n GetAccountStateParams,\n GetUserDataSnapshotParams,\n PerpsUserDataSnapshot,\n GetOrderFillsParams,\n GetOrFetchFillsParams,\n GetOrdersParams,\n GetFundingParams,\n GetSupportedPathsParams,\n GetAvailableDexsParams,\n GetMarketsParams,\n GetMarketDataWithPricesParams,\n SortField,\n SortDirection,\n SubscribePricesParams,\n SubscribePositionsParams,\n SubscribeOrderFillsParams,\n SubscribeOrdersParams,\n SubscribeTwapOrdersParams,\n SubscribeAccountParams,\n SubscribeOICapsParams,\n SubscribeCandlesParams,\n OrderBookLevel,\n OrderBookData,\n SubscribeOrderBookParams,\n LiquidationPriceParams,\n MaintenanceMarginParams,\n PositionModifyPreviewParams,\n PositionModifyPreviewResult,\n PositionModifyPreviewSource,\n PositionModifyPreviewKind,\n PositionPreviewValue,\n PositionModifyPreviewCurrent,\n PositionModifyPreviewOpen,\n PositionModifyPreviewFullClose,\n PositionModifyPreviewUnsupported,\n PositionModifyPreviewNone,\n FeeCalculationParams,\n FeeCalculationResult,\n GetOrderCapabilitiesParams,\n GetMarginModeLockParams,\n MarginModeLockReason,\n MarginModeLockUnavailableReason,\n PerpsMarginModeLock,\n GetScalePriceLadderParams,\n OrderCapabilitiesUnavailableReason,\n DirectProviderOrderCapabilitiesUnavailableReason,\n RoutedOrderCapabilitiesUnavailableReason,\n DirectProviderScalePriceLadderUnavailableReason,\n ScalePriceLadderUnavailableReason,\n DirectProviderOrderCapabilities,\n PerpsOrderCapabilities,\n PerpsScalePriceLadder,\n PerpsSubscriptionBenefits,\n PerpsSubscriptionUsage,\n PerpsSubscriptionFeeWaiverStatus,\n PerpsFeeSource,\n PerpsFeeResolution,\n RewardsDiscountResponse,\n UpdatePositionTPSLParams,\n Order,\n Funding,\n PerpsProvider,\n PerpsProviderType,\n PerpsActiveProviderMode,\n AggregationMode,\n RoutingStrategy,\n AggregatedProviderConfig,\n ProviderError,\n AggregatedAccountState,\n PerpsLogger,\n PerpsTraceName,\n PerpsTraceValue,\n PerpsAnalyticsProperties,\n PerpsAttributionContext,\n PerpsMetrics,\n PerpsDebugLogger,\n PerpsStreamManager,\n PerpsPerformance,\n PerpsTracer,\n PerpsTypedMessageParams,\n PerpsTypedDataPayload,\n PerpsAccountSigner,\n PerpsAgentAccount,\n PerpsAgentSigner,\n PerpsTransactionParams,\n PerpsAddTransactionOptions,\n PerpsInternalAccount,\n PerpsRemoteFeatureFlagState,\n PerpsPlatformDependencies,\n PerpsTerminalMarketService,\n PerpsGlobalSnapshotRequest,\n PerpsGlobalSnapshotResult,\n TerminalAssetMetadata,\n PerpsCacheType,\n InvalidateCacheParams,\n PerpsCacheInvalidator,\n MarketDataFormatters,\n PaymentToken,\n PerpsSelectedPaymentToken,\n VersionGatedFeatureFlag,\n} from './types/index.js';\nexport {\n PerpsTraceNames,\n PerpsTraceOperations,\n isVersionGatedFeatureFlag,\n} from './types/index.js';\n\n// Types from sub-modules (re-exported via types/index.ts)\nexport type {\n TestResultStatus,\n TestResult,\n SDKTestType,\n HyperliquidAsset,\n CandleStick,\n CandleData,\n OrderFormState,\n OrderDirection,\n ReconnectOptions,\n ExtendedAssetMeta,\n ExtendedPerpDex,\n} from './types/index.js';\nexport type {\n BaseTransactionResult,\n LastTransactionResult,\n TransactionStatus,\n TransactionRecord,\n} from './types/index.js';\nexport { isTransactionRecord, isLastTransactionResult } from './types/index.js';\nexport type {\n AssetPosition,\n SpotBalance,\n PerpsUniverse,\n PerpsAssetCtx,\n PredictedFunding,\n FrontendOrder,\n SDKOrderParams,\n ClearinghouseStateResponse,\n SpotClearinghouseStateResponse,\n MetaResponse,\n FrontendOpenOrdersResponse,\n AllMidsResponse,\n MetaAndAssetCtxsResponse,\n PredictedFundingsResponse,\n SpotMetaResponse,\n} from './types/index.js';\nexport type {\n HyperLiquidEndpoints,\n AssetNetworkConfig,\n HyperLiquidAssetConfigs,\n BridgeContractConfig,\n HyperLiquidBridgeContracts,\n TransportReconnectConfig,\n TransportKeepAliveConfig,\n HyperLiquidTransportConfig,\n TradingAmountConfig,\n TradingDefaultsConfig,\n FeeRatesConfig,\n HyperLiquidNetwork,\n} from './types/index.js';\nexport type { PerpsToken } from './types/index.js';\n\n// Constants (explicit named exports)\nexport {\n CandlePeriod,\n TimeDuration,\n ChartInterval,\n MAX_CANDLE_COUNT,\n VISIBLE_CANDLE_COUNT_CONFIG,\n DURATION_CANDLE_PERIODS,\n CANDLE_PERIODS,\n DEFAULT_CANDLE_PERIOD,\n getCandlePeriodsForDuration,\n getDefaultCandlePeriodForDuration,\n calculateCandleCount,\n} from './constants/index.js';\nexport { PERPS_EVENT_PROPERTY, PERPS_EVENT_VALUE } from './constants/index.js';\nexport { DETAILED_ORDER_TYPES, isTPSLOrder } from './constants/index.js';\nexport { PERPS_TRANSACTIONS_HISTORY_CONSTANTS } from './constants/index.js';\nexport {\n ARBITRUM_MAINNET_CHAIN_ID_HEX,\n ARBITRUM_MAINNET_CHAIN_ID,\n ARBITRUM_TESTNET_CHAIN_ID,\n ARBITRUM_MAINNET_CAIP_CHAIN_ID,\n ARBITRUM_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_MAINNET_CHAIN_ID,\n HYPERLIQUID_TESTNET_CHAIN_ID,\n HYPERLIQUID_MAINNET_CAIP_CHAIN_ID,\n HYPERLIQUID_TESTNET_CAIP_CHAIN_ID,\n HYPERLIQUID_NETWORK_NAME,\n USDC_SYMBOL,\n USDC_NAME,\n USDC_DECIMALS,\n TOKEN_DECIMALS,\n ZERO_ADDRESS,\n ZERO_BALANCE,\n ARBITRUM_SEPOLIA_CHAIN_ID,\n USDC_ETHEREUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_MAINNET_ADDRESS,\n USDC_ARBITRUM_TESTNET_ADDRESS,\n USDC_TOKEN_ICON_URL,\n HYPERLIQUID_ENDPOINTS,\n HYPERLIQUID_ASSET_ICONS_BASE_URL,\n METAMASK_PERPS_ICONS_BASE_URL,\n HYPERLIQUID_ASSET_CONFIGS,\n HYPERLIQUID_BRIDGE_CONTRACTS,\n HYPERLIQUID_TRANSPORT_CONFIG,\n TRADING_DEFAULTS,\n FEE_RATES,\n HIP3_FEE_CONFIG,\n BUILDER_FEE_CONFIG,\n HYPERLIQUID_L1_ACTION_DOMAIN_NAME,\n HYPERLIQUID_L1_ACTION_PRIMARY_TYPE,\n REFERRAL_CONFIG,\n DEPOSIT_CONFIG,\n HYPERLIQUID_WITHDRAWAL_MINUTES,\n getWebSocketEndpoint,\n getChainId,\n getCaipChainId,\n getBridgeInfo,\n getSupportedAssets,\n CAIP_ASSET_NAMESPACES,\n HYPERLIQUID_CONFIG,\n HIP3_ASSET_ID_CONFIG,\n BASIS_POINTS_DIVISOR,\n SPOT_ASSET_ID_OFFSET,\n HIP3_ASSET_MARKET_TYPES,\n TESTNET_HIP3_CONFIG,\n MAINNET_HIP3_CONFIG,\n HIP3_MARGIN_CONFIG,\n INITIAL_AMOUNT_UI_PROGRESS,\n WITHDRAWAL_PROGRESS_STAGES,\n PROGRESS_BAR_COMPLETION_DELAY_MS,\n} from './constants/index.js';\nexport type { SupportedAsset } from './constants/index.js';\nexport { PerpsMeasurementName } from './constants/index.js';\nexport {\n LIGHTER_MAINNET_CHAIN_ID,\n LIGHTER_TESTNET_CHAIN_ID,\n getLighterChainId,\n LIGHTER_ENDPOINTS,\n getLighterHttpEndpoint,\n LIGHTER_DEFAULT_API_KEY_INDEX,\n LIGHTER_HTTP_TIMEOUT_MS,\n LIGHTER_PRICE_POLLING_INTERVAL_MS,\n LIGHTER_MAX_LEVERAGE,\n toLighterInteger,\n fromLighterInteger,\n computeLighterMinOrderSize,\n} from './constants/index.js';\nexport type {\n LighterNetwork,\n LighterCreateClientParams,\n LighterSignerBridge,\n LighterWebSocketCtor,\n LighterWebSocketLike,\n LighterWasmCall,\n LighterAuthConfig,\n} from './types/lighter-types.js';\nexport {\n PERPS_CONSTANTS,\n WITHDRAWAL_CONSTANTS,\n VALIDATION_THRESHOLDS,\n ORDER_SLIPPAGE_CONFIG,\n CHASE_ORDER_CONFIG,\n CHASE_ORDER_STATUS,\n MAX_SLIPPAGE_BOUNDS,\n PERFORMANCE_CONFIG,\n TP_SL_CONFIG,\n HYPERLIQUID_ORDER_LIMITS,\n HYPERLIQUID_TWAP_LIMITS,\n CLOSE_POSITION_CONFIG,\n MARGIN_ADJUSTMENT_CONFIG,\n DATA_LAKE_API_CONFIG,\n DECIMAL_PRECISION_CONFIG,\n MARKET_SORTING_CONFIG,\n PROVIDER_CONFIG,\n FUNDING_RATE_CONFIG,\n} from './constants/index.js';\nexport type { SortOptionId } from './constants/index.js';\n\n// Utilities (explicit named exports)\nexport {\n findEvmAccount,\n getEvmAccountFromAccountGroup,\n getSelectedEvmAccount,\n calculateWeightedReturnOnEquity,\n aggregateAccountStates,\n} from './utils/index.js';\nexport type { ReturnOnEquityInput } from './utils/index.js';\nexport { ensureError, isAbortError } from './utils/index.js';\nexport type {\n OrderBookCacheEntry,\n ProcessL2BookDataParams,\n ProcessBboDataParams,\n} from './utils/index.js';\nexport { processL2BookData, processBboData } from './utils/index.js';\nexport type { ValidationDebugLogger } from './utils/index.js';\nexport {\n createErrorResult,\n validateWithdrawalParams,\n validateDepositParams,\n validateAssetSupport,\n validateBalance,\n applyPathFilters,\n getSupportedPaths,\n getMaxOrderValue,\n validateOrderParams,\n validateCoinExists,\n} from './utils/index.js';\nexport {\n TRIGGER_ORDER_TYPES,\n STRATEGY_ORDER_TYPES,\n SCALE_ORDER_COUNT,\n isTriggerOrderType,\n isStrategyOrderType,\n isLimitExecutionOrderType,\n getTriggerExecution,\n getTriggerDirection,\n buildTriggerOrderType,\n buildPositionTriggerOrderFromOrder,\n computeScalePriceLadder,\n computeChaseQuotePrice,\n getPriceTick,\n splitScaleSizes,\n} from './utils/index.js';\nexport {\n adaptTriggerOrderTypeFromSDK,\n adaptPositionTriggerOrderFromSDK,\n adaptTpslLinkageToGrouping,\n} from './utils/index.js';\nexport {\n generatePerpsId,\n generateDepositId,\n generateWithdrawalId,\n generateOrderId,\n generateTransactionId,\n} from './utils/index.js';\nexport {\n calculateOpenInterestUSD,\n isMarketTradable,\n transformMarketData,\n formatChange,\n} from './utils/index.js';\nexport type { HyperLiquidMarketData } from './utils/index.js';\nexport {\n getPerpsConnectionAttemptContext,\n withPerpsConnectionAttemptContext,\n} from './utils/perpsConnectionAttemptContext.js';\nexport type { PerpsConnectionAttemptContext } from './utils/perpsConnectionAttemptContext.js';\nexport {\n MAX_MARKET_PATTERN_LENGTH,\n escapeRegex,\n validateMarketPattern,\n compileMarketPattern,\n matchesMarketPattern,\n shouldIncludeMarket,\n getPerpsDisplaySymbol,\n getPerpsDexFromSymbol,\n calculateFundingCountdown,\n calculate24hHighLow,\n filterMarketsByQuery,\n matchesCategory,\n getMarketTypeFilter,\n applyMarketFilters,\n isHip3Market,\n rankMarketsByQuery,\n getMarketMatchRank,\n} from './utils/index.js';\nexport { MarketMatchRank } from './utils/index.js';\nexport type {\n MarketPatternMatcher,\n CompiledMarketPattern,\n} from './utils/index.js';\nexport type {\n OrderCalculationsDebugLogger,\n CalculateFinalPositionSizeParams,\n CalculateFinalPositionSizeResult,\n CalculateOrderPriceAndSizeParams,\n CalculateOrderPriceAndSizeResult,\n BuildOrdersArrayParams,\n BuildOrdersArrayResult,\n} from './utils/index.js';\nexport {\n calculatePositionSize,\n calculateMarginRequired,\n getMaxAllowedAmount,\n calculateFinalPositionSize,\n calculateOrderPriceAndSize,\n buildOrdersArray,\n} from './utils/index.js';\nexport {\n formatAccountToCaipAccountId,\n isCaipAccountId,\n handleRewardsError,\n} from './utils/index.js';\nexport {\n countSignificantFigures,\n hasExceededSignificantFigures,\n roundToSignificantFigures,\n} from './utils/index.js';\nexport type { SortMarketsParams } from './utils/index.js';\nexport { parseVolume, sortMarkets } from './utils/index.js';\nexport type { StandaloneInfoClientOptions } from './utils/index.js';\nexport {\n createStandaloneInfoClient,\n queryStandaloneClearinghouseStates,\n queryStandaloneOpenOrders,\n} from './utils/index.js';\nexport { stripQuotes, parseCommaSeparatedString } from './utils/index.js';\nexport { generateERC20TransferData } from './utils/index.js';\nexport { wait } from './utils/index.js';\nexport {\n adaptOrderToSDK,\n adaptPositionFromSDK,\n adaptOrderFromSDK,\n adaptMarketFromSDK,\n adaptAccountStateFromSDK,\n buildAssetMapping,\n formatHyperLiquidPrice,\n formatHyperLiquidSize,\n calculateHip3AssetId,\n parseAssetName,\n adaptHyperLiquidLedgerUpdateToUserHistoryItem,\n} from './utils/index.js';\nexport {\n previewHyperLiquidIsolatedPositionModify,\n resolveHyperLiquidMarginTiers,\n buildMaintenanceSchedule,\n estimateIsolatedLiquidationPrice,\n estimateIsolatedLiquidationPriceAtTier,\n} from './utils/index.js';\nexport type { HyperLiquidMarginTier } from './utils/index.js';\nexport { getEnvironment } from './utils/index.js';\nexport type { FiatRangeConfig } from './utils/index.js';\nexport {\n PRICE_THRESHOLD,\n formatWithSignificantDigits,\n PRICE_RANGES_MINIMAL_VIEW,\n PRICE_RANGES_UNIVERSAL,\n formatPerpsFiat,\n formatPositionSize,\n formatPnl,\n formatPercentage,\n formatFundingRate,\n} from './utils/index.js';\n\n// Error codes (explicit named exports)\nexport { PERPS_ERROR_CODES } from './perpsErrorCodes.js';\nexport type { PerpsErrorCode } from './perpsErrorCodes.js';\n\n// Selectors (explicit named exports)\nexport {\n selectIsFirstTimeUser,\n selectHasPlacedFirstOrder,\n selectWatchlistMarkets,\n selectIsWatchlistMarket,\n selectRecentlyViewedMarkets,\n selectTradeConfiguration,\n selectPendingTradeConfiguration,\n selectMarketFilterPreferences,\n selectOrderBookGrouping,\n selectMarginMode,\n selectOrderBookPreferences,\n selectProLayoutPreferences,\n selectSelectedOrderType,\n selectVisibleCandleCount,\n selectPerpsMode,\n} from './selectors.js';\n\n// Services (only externally consumed items)\nexport { TradingReadinessCache } from './services/TradingReadinessCache.js';\nexport type { ServiceContext } from './services/ServiceContext.js';\nexport {\n AggregatedOrderBookConnection,\n processAggregatedOrderBook,\n} from './services/AggregatedOrderBookConnection.js';\nexport type {\n OrderBookConnectionStatus,\n SubscribeAggregatedOrderBookParams,\n AggregatedOrderBookConnectionOptions,\n} from './services/AggregatedOrderBookConnection.js';\n\n// Removed with Live Market Prices component:\n// - usePerpsPrices\n"]}
|
|
@@ -178,8 +178,8 @@ const TradeStruct = type({
|
|
|
178
178
|
makerFee: optional(NonNegativeFinancialNumberStruct),
|
|
179
179
|
takerPositionSizeBefore: NonNegativeDecimalStringStruct,
|
|
180
180
|
makerPositionSizeBefore: NonNegativeDecimalStringStruct,
|
|
181
|
-
takerPositionSignChanged: boolean(),
|
|
182
|
-
makerPositionSignChanged: boolean(),
|
|
181
|
+
takerPositionSignChanged: optional(boolean()),
|
|
182
|
+
makerPositionSignChanged: optional(boolean()),
|
|
183
183
|
});
|
|
184
184
|
const ResponseStructs = {
|
|
185
185
|
orderBooks: type({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LighterClientService.js","sourceRoot":"","sources":["../../src/services/LighterClientService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Lighter Client Service\n *\n * Thin REST client for the zkLighter API. No SDK dependency — endpoints are\n * called with the platform `fetch` global. Each successful endpoint response\n * is decoded before it reaches provider signing or trading logic.\n *\n * Endpoints used (https://apidocs.lighter.xyz):\n * - GET /api/v1/orderBooks market metadata\n * - GET /api/v1/orderBookDetails market stats\n * - GET /api/v1/account account (+positions) by index\n * - GET /api/v1/accountsByL1Address account discovery\n * - GET /api/v1/apikeys registered venue keys\n * - GET /api/v1/nextNonce per-key nonce\n * - GET /api/v1/accountActiveOrders open orders (auth token header)\n * - POST /api/v1/sendTx submit signed L2 transaction\n */\n\nimport type { Struct } from '@metamask/superstruct';\nimport {\n array,\n assert,\n boolean,\n define,\n optional,\n record,\n refine,\n string,\n type,\n union,\n} from '@metamask/superstruct';\n\nimport {\n getLighterHttpEndpoint,\n LIGHTER_DATA_INTEGRITY_PREFIX,\n LIGHTER_HTTP_TIMEOUT_MS,\n} from '../constants/lighterConfig.js';\nimport type { PerpsPlatformDependencies } from '../types/index.js';\nimport type {\n LighterAccountResponse,\n LighterAccountsByL1AddressResponse,\n LighterActiveOrdersResponse,\n LighterApiKeysResponse,\n LighterNetwork,\n LighterNextNonceResponse,\n LighterTxLookupResponse,\n LighterOrderBookMeta,\n LighterOrderBookDetailsResponse,\n LighterOrderBooksResponse,\n LighterCandlesResponse,\n LighterDepositHistoryResponse,\n LighterInactiveOrdersResponse,\n LighterPnlResponse,\n LighterPositionFundingsResponse,\n LighterSendTxResponse,\n LighterTradesResponse,\n LighterTradesQuery,\n LighterTransferType,\n LighterTransferHistoryResponse,\n LighterWithdrawHistoryResponse,\n} from '../types/lighter-types.js';\n\n/**\n * Duration market metadata stays cached before a refetch.\n */\nconst MARKETS_CACHE_TTL_MS = 5 * 60 * 1000;\n\nconst FiniteNumberStruct = define<number>('finite number', (value) =>\n typeof value === 'number' ? Number.isFinite(value) : false,\n);\nconst SafeIntegerStruct = define<number>('safe integer', (value) =>\n typeof value === 'number' ? Number.isSafeInteger(value) : false,\n);\nconst NonNegativeIntegerStruct = define<number>(\n 'non-negative safe integer',\n (value) =>\n typeof value === 'number'\n ? Number.isSafeInteger(value) && value >= 0\n : false,\n);\nconst parseStrictDecimalString = (value: unknown): number | null => {\n if (\n typeof value !== 'string' ||\n !/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u.test(value)\n ) {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n};\nconst SignedDecimalStringStruct = define<string>(\n 'finite decimal string',\n (value) => parseStrictDecimalString(value) !== null,\n);\nconst NonNegativeDecimalStringStruct = define<string>(\n 'non-negative finite decimal string',\n (value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed >= 0;\n },\n);\nconst TransferTypeStruct = define<LighterTransferType>(\n 'Lighter transfer type',\n (value) => value === 'L2TransferInflow' || value === 'L2TransferOutflow',\n);\nconst PositiveDecimalStringStruct = define<string>(\n 'positive finite decimal string',\n (value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed > 0;\n },\n);\nconst NonNegativeFiniteNumberStruct = define<number>(\n 'non-negative finite number',\n (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0,\n);\nconst NonNegativeMarginFractionStruct = define<number>(\n 'margin fraction in [0, 10000]',\n (value) =>\n typeof value === 'number' &&\n Number.isSafeInteger(value) &&\n value >= 0 &&\n value <= 10_000,\n);\nconst NonNegativeFinancialNumberStruct = union([\n NonNegativeFiniteNumberStruct,\n NonNegativeDecimalStringStruct,\n]);\nconst BaseResponseStruct = type({\n code: SafeIntegerStruct,\n message: optional(string()),\n});\nconst PositionStruct = type({\n marketId: NonNegativeIntegerStruct,\n symbol: string(),\n initialMarginFraction: NonNegativeDecimalStringStruct,\n openOrderCount: NonNegativeIntegerStruct,\n sign: SafeIntegerStruct,\n position: NonNegativeDecimalStringStruct,\n avgEntryPrice: NonNegativeDecimalStringStruct,\n positionValue: NonNegativeDecimalStringStruct,\n unrealizedPnl: SignedDecimalStringStruct,\n realizedPnl: SignedDecimalStringStruct,\n liquidationPrice: NonNegativeDecimalStringStruct,\n marginMode: optional(SafeIntegerStruct),\n});\nconst AccountStruct = type({\n code: SafeIntegerStruct,\n accountType: SafeIntegerStruct,\n index: NonNegativeIntegerStruct,\n l1Address: string(),\n cancelAllTime: NonNegativeIntegerStruct,\n totalOrderCount: NonNegativeIntegerStruct,\n pendingOrderCount: NonNegativeIntegerStruct,\n status: SafeIntegerStruct,\n collateral: NonNegativeDecimalStringStruct,\n availableBalance: NonNegativeDecimalStringStruct,\n positions: optional(array(PositionStruct)),\n});\n// The address-discovery endpoint is an identity lookup, not a financial read:\n// live responses can carry sparse balance fields (for example an empty\n// `availableBalance`). Validate only the fields its sole consumer needs. Full\n// account reads retain AccountStruct and its strict financial validation.\nconst AccountSummaryStruct = type({\n accountType: SafeIntegerStruct,\n index: NonNegativeIntegerStruct,\n l1Address: string(),\n});\nconst MarketBaseStruct = type({\n symbol: string(),\n marketId: NonNegativeIntegerStruct,\n marketType: string(),\n status: string(),\n takerFee: SignedDecimalStringStruct,\n makerFee: SignedDecimalStringStruct,\n minBaseAmount: NonNegativeDecimalStringStruct,\n minQuoteAmount: NonNegativeDecimalStringStruct,\n supportedSizeDecimals: NonNegativeIntegerStruct,\n supportedPriceDecimals: NonNegativeIntegerStruct,\n supportedQuoteDecimals: NonNegativeIntegerStruct,\n});\nconst hasValidMarketMinimums = (\n market: Pick<\n LighterOrderBookMeta,\n 'status' | 'minBaseAmount' | 'minQuoteAmount'\n >,\n): boolean =>\n market.status === 'inactive' ||\n [market.minBaseAmount, market.minQuoteAmount].every((value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed > 0;\n });\nconst MarketStruct = refine(\n MarketBaseStruct,\n 'positive minimum amounts for tradable markets',\n hasValidMarketMinimums,\n);\nconst MarketDetailBaseStruct = type({\n ...MarketBaseStruct.schema,\n lastTradePrice: NonNegativeFiniteNumberStruct,\n defaultInitialMarginFraction: optional(NonNegativeMarginFractionStruct),\n minInitialMarginFraction: optional(NonNegativeMarginFractionStruct),\n maintenanceMarginFraction: optional(NonNegativeMarginFractionStruct),\n dailyTradesCount: NonNegativeFiniteNumberStruct,\n dailyBaseTokenVolume: NonNegativeFiniteNumberStruct,\n dailyQuoteTokenVolume: NonNegativeFiniteNumberStruct,\n dailyPriceLow: NonNegativeFiniteNumberStruct,\n dailyPriceHigh: NonNegativeFiniteNumberStruct,\n dailyPriceChange: FiniteNumberStruct,\n openInterest: NonNegativeFiniteNumberStruct,\n dailyChart: record(string(), FiniteNumberStruct),\n});\nconst hasValidMarketMarginFractions = (market: {\n status: string;\n defaultInitialMarginFraction?: number;\n minInitialMarginFraction?: number;\n maintenanceMarginFraction?: number;\n}): boolean =>\n market.status === 'inactive' ||\n [\n market.defaultInitialMarginFraction,\n market.minInitialMarginFraction,\n market.maintenanceMarginFraction,\n ].every((value) => value === undefined || value > 0);\nconst MarketDetailStruct = refine(\n refine(\n MarketDetailBaseStruct,\n 'positive minimum amounts for tradable markets',\n hasValidMarketMinimums,\n ),\n 'positive margin fractions for tradable markets',\n hasValidMarketMarginFractions,\n);\nconst OrderStruct = type({\n orderIndex: NonNegativeIntegerStruct,\n clientOrderIndex: NonNegativeIntegerStruct,\n marketIndex: NonNegativeIntegerStruct,\n ownerAccountIndex: NonNegativeIntegerStruct,\n initialBaseAmount: PositiveDecimalStringStruct,\n remainingBaseAmount: NonNegativeDecimalStringStruct,\n filledBaseAmount: optional(NonNegativeDecimalStringStruct),\n price: PositiveDecimalStringStruct,\n isAsk: boolean(),\n type: string(),\n timeInForce: string(),\n reduceOnly: union([FiniteNumberStruct, boolean()]),\n status: string(),\n orderExpiry: SafeIntegerStruct,\n timestamp: NonNegativeIntegerStruct,\n triggerPrice: optional(NonNegativeDecimalStringStruct),\n orderId: optional(string()),\n parentOrderIndex: optional(NonNegativeIntegerStruct),\n parentOrderId: optional(string()),\n toCancelOrderId0: optional(string()),\n toTriggerOrderId0: optional(string()),\n toTriggerOrderId1: optional(string()),\n});\nconst TradeStruct = type({\n tradeId: NonNegativeIntegerStruct,\n txHash: string(),\n type: string(),\n marketId: NonNegativeIntegerStruct,\n size: PositiveDecimalStringStruct,\n price: PositiveDecimalStringStruct,\n usdAmount: PositiveDecimalStringStruct,\n askId: NonNegativeIntegerStruct,\n bidId: NonNegativeIntegerStruct,\n askAccountId: NonNegativeIntegerStruct,\n bidAccountId: NonNegativeIntegerStruct,\n isMakerAsk: boolean(),\n timestamp: NonNegativeIntegerStruct,\n askAccountPnl: optional(SignedDecimalStringStruct),\n bidAccountPnl: optional(SignedDecimalStringStruct),\n takerFee: optional(NonNegativeFinancialNumberStruct),\n makerFee: optional(NonNegativeFinancialNumberStruct),\n takerPositionSizeBefore: NonNegativeDecimalStringStruct,\n makerPositionSizeBefore: NonNegativeDecimalStringStruct,\n takerPositionSignChanged: boolean(),\n makerPositionSignChanged: boolean(),\n});\n\nconst ResponseStructs = {\n orderBooks: type({\n ...BaseResponseStruct.schema,\n orderBooks: array(MarketStruct),\n }),\n orderBookDetails: type({\n ...BaseResponseStruct.schema,\n orderBookDetails: array(MarketDetailStruct),\n }),\n account: type({\n ...BaseResponseStruct.schema,\n accounts: array(AccountStruct),\n }),\n accountsByAddress: type({\n ...BaseResponseStruct.schema,\n l1Address: string(),\n subAccounts: array(AccountSummaryStruct),\n }),\n apiKeys: type({\n ...BaseResponseStruct.schema,\n apiKeys: array(\n type({\n accountIndex: NonNegativeIntegerStruct,\n apiKeyIndex: NonNegativeIntegerStruct,\n nonce: NonNegativeIntegerStruct,\n publicKey: string(),\n }),\n ),\n }),\n nextNonce: type({\n ...BaseResponseStruct.schema,\n nonce: NonNegativeIntegerStruct,\n }),\n transaction: type({\n ...BaseResponseStruct.schema,\n hash: string(),\n accountIndex: NonNegativeIntegerStruct,\n apiKeyIndex: NonNegativeIntegerStruct,\n nonce: NonNegativeIntegerStruct,\n status: SafeIntegerStruct,\n }),\n sendTransaction: type({\n ...BaseResponseStruct.schema,\n txHash: string(),\n }),\n activeOrders: type({\n ...BaseResponseStruct.schema,\n orders: array(OrderStruct),\n }),\n inactiveOrders: type({\n ...BaseResponseStruct.schema,\n nextCursor: optional(string()),\n orders: array(OrderStruct),\n }),\n deposits: type({\n ...BaseResponseStruct.schema,\n deposits: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n status: string(),\n l1TxHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n withdrawals: type({\n ...BaseResponseStruct.schema,\n withdraws: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n status: string(),\n type: string(),\n l1TxHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n transfers: type({\n ...BaseResponseStruct.schema,\n transfers: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n fee: NonNegativeDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n type: TransferTypeStruct,\n fromL1Address: string(),\n toL1Address: string(),\n fromAccountIndex: NonNegativeIntegerStruct,\n toAccountIndex: NonNegativeIntegerStruct,\n txHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n trades: type({\n ...BaseResponseStruct.schema,\n nextCursor: optional(string()),\n trades: array(TradeStruct),\n }),\n fundings: type({\n ...BaseResponseStruct.schema,\n positionFundings: array(\n type({\n timestamp: NonNegativeIntegerStruct,\n marketId: NonNegativeIntegerStruct,\n fundingId: NonNegativeIntegerStruct,\n change: SignedDecimalStringStruct,\n rate: SignedDecimalStringStruct,\n positionSize: NonNegativeDecimalStringStruct,\n positionSide: string(),\n }),\n ),\n }),\n pnl: type({\n ...BaseResponseStruct.schema,\n resolution: optional(string()),\n pnl: optional(\n array(\n type({\n timestamp: NonNegativeIntegerStruct,\n tradePnl: FiniteNumberStruct,\n inflow: FiniteNumberStruct,\n outflow: FiniteNumberStruct,\n volume: FiniteNumberStruct,\n }),\n ),\n ),\n }),\n candles: type({\n ...BaseResponseStruct.schema,\n r: optional(string()),\n c: optional(\n array(\n type({\n t: NonNegativeIntegerStruct,\n o: FiniteNumberStruct,\n h: FiniteNumberStruct,\n l: FiniteNumberStruct,\n c: FiniteNumberStruct,\n v: FiniteNumberStruct,\n }),\n ),\n ),\n }),\n} as const;\n\n/**\n * Convert a snake_case wire key to camelCase.\n *\n * @param key - Wire key (e.g. `min_base_amount`).\n * @returns camelCase key (e.g. `minBaseAmount`).\n */\nfunction toCamelKey(key: string): string {\n return key.replace(/_([a-z0-9])/gu, (_match, char: string) =>\n char.toUpperCase(),\n );\n}\n\n/**\n * Recursively convert all object keys from snake_case to camelCase.\n * The zkLighter wire format is snake_case; parsed shapes in this package\n * follow camelCase conventions (see types/lighter-types.ts).\n *\n * @param value - Parsed JSON value.\n * @returns The value with camelCase keys.\n */\nexport function convertKeysToCamelCase(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(convertKeysToCamelCase);\n }\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, entry]) => [\n toCamelKey(key),\n convertKeysToCamelCase(entry),\n ]),\n );\n }\n return value;\n}\n\n/**\n * Error thrown for non-2xx HTTP responses or API-level error codes.\n */\nexport class LighterApiError extends Error {\n readonly code: number | undefined;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'LighterApiError';\n this.code = code;\n }\n}\n\n/**\n * REST client for the zkLighter API.\n */\nexport class LighterClientService {\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #isTestnet: boolean;\n\n #marketsCache: LighterOrderBookMeta[] | null = null;\n\n #marketsCacheTime = 0;\n\n constructor(deps: PerpsPlatformDependencies, config: { isTestnet: boolean }) {\n this.#deps = deps;\n this.#isTestnet = config.isTestnet;\n }\n\n get network(): LighterNetwork {\n return this.#isTestnet ? 'testnet' : 'mainnet';\n }\n\n get baseUrl(): string {\n return getLighterHttpEndpoint(this.network);\n }\n\n /**\n * Fetch market metadata, cached for 5 minutes.\n *\n * @param forceRefresh - Skip the cache and refetch.\n * @returns Market metadata entries.\n */\n async getOrderBooks(forceRefresh = false): Promise<LighterOrderBookMeta[]> {\n const now = Date.now();\n if (\n !forceRefresh &&\n this.#marketsCache &&\n now - this.#marketsCacheTime < MARKETS_CACHE_TTL_MS\n ) {\n return this.#marketsCache;\n }\n\n const response = await this.#get<LighterOrderBooksResponse>(\n '/api/v1/orderBooks',\n ResponseStructs.orderBooks,\n );\n this.#marketsCache = response.orderBooks;\n this.#marketsCacheTime = now;\n return response.orderBooks;\n }\n\n /**\n * Fetch market stats for all markets.\n *\n * @returns Order book details entries.\n */\n async getOrderBookDetails(): Promise<LighterOrderBookDetailsResponse> {\n return await this.#get<LighterOrderBookDetailsResponse>(\n '/api/v1/orderBookDetails',\n ResponseStructs.orderBookDetails,\n );\n }\n\n /**\n * Fetch an account (including positions) by its Lighter index.\n *\n * @param accountIndex - The Lighter account index.\n * @returns Account payload.\n */\n async getAccountByIndex(\n accountIndex: number,\n ): Promise<LighterAccountResponse> {\n return await this.#get<LighterAccountResponse>(\n `/api/v1/account?by=index&value=${accountIndex}`,\n ResponseStructs.account,\n );\n }\n\n /**\n * Discover Lighter accounts owned by an L1 address.\n *\n * @param l1Address - The owning EVM address.\n * @returns Accounts payload.\n */\n async getAccountsByL1Address(\n l1Address: string,\n ): Promise<LighterAccountsByL1AddressResponse> {\n return await this.#get<LighterAccountsByL1AddressResponse>(\n `/api/v1/accountsByL1Address?l1_address=${l1Address}`,\n ResponseStructs.accountsByAddress,\n );\n }\n\n /**\n * Fetch registered API keys for an account.\n *\n * @param accountIndex - The Lighter account index.\n * @param apiKeyIndex - Key slot, or 255 for all slots.\n * @returns API keys payload.\n */\n async getApiKeys(\n accountIndex: number,\n apiKeyIndex = 255,\n ): Promise<LighterApiKeysResponse> {\n return await this.#get<LighterApiKeysResponse>(\n `/api/v1/apikeys?account_index=${accountIndex}&api_key_index=${apiKeyIndex}`,\n ResponseStructs.apiKeys,\n );\n }\n\n /**\n * Fetch the next nonce for a key slot.\n *\n * @param accountIndex - The Lighter account index.\n * @param apiKeyIndex - Key slot.\n * @returns Next nonce payload.\n */\n async getNextNonce(\n accountIndex: number,\n apiKeyIndex: number,\n ): Promise<LighterNextNonceResponse> {\n return await this.#get<LighterNextNonceResponse>(\n `/api/v1/nextNonce?account_index=${accountIndex}&api_key_index=${apiKeyIndex}`,\n ResponseStructs.nextNonce,\n );\n }\n\n /**\n * Look up a transaction by its exact hash (`GET /api/v1/tx`). Used to\n * resolve submission-acceptance ambiguity authoritatively: an exact-hash\n * match proves the signed payload reached the sequencer.\n *\n * Contract: a venue-confirmed \"transaction not found\" (API error code\n * 21500) resolves to NULL; transport failures and every other API error\n * RETHROW — they are ambiguity, never evidence of non-acceptance.\n *\n * @param txHash - The signed transaction hash.\n * @returns The venue's transaction payload, or null when the venue\n * confirms the hash is unknown.\n */\n async getTx(txHash: string): Promise<LighterTxLookupResponse | null> {\n try {\n return await this.#get<LighterTxLookupResponse>(\n `/api/v1/tx?by=hash&value=${encodeURIComponent(txHash)}`,\n ResponseStructs.transaction,\n );\n } catch (error) {\n if (error instanceof LighterApiError && error.code === 21500) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Fetch active (open) orders for an account.\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer (`_createAuthToken`).\n * @param marketId - Optional market filter (255 = all markets).\n * @returns Active orders payload.\n */\n async getActiveOrders(\n accountIndex: number,\n authToken: string,\n marketId = 255,\n ): Promise<LighterActiveOrdersResponse> {\n return await this.#get<LighterActiveOrdersResponse>(\n `/api/v1/accountActiveOrders?account_index=${accountIndex}&market_id=${marketId}`,\n ResponseStructs.activeOrders,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch historical (inactive) orders: filled and canceled lifecycle\n * states, newest first (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param limit - Maximum entries per page.\n * @param cursor - Pagination cursor from a previous page's `nextCursor`.\n * @param marketId - Optional market filter (official `market_id` query\n * param) — sharply bounds history scans to one symbol.\n * @returns Inactive orders payload.\n */\n async getInactiveOrders(\n accountIndex: number,\n authToken: string,\n limit = 50,\n cursor?: string,\n marketId?: number,\n ): Promise<LighterInactiveOrdersResponse> {\n return await this.#get<LighterInactiveOrdersResponse>(\n `/api/v1/accountInactiveOrders?account_index=${accountIndex}&limit=${limit}${\n cursor === undefined ? '' : `&cursor=${encodeURIComponent(cursor)}`\n }${marketId === undefined ? '' : `&market_id=${marketId}`}`,\n ResponseStructs.inactiveOrders,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L1→L2 deposit history (auth token required). The venue requires\n * both the account index and its L1 address on this endpoint.\n *\n * @param accountIndex - The Lighter account index.\n * @param l1Address - The account's L1 address.\n * @param authToken - Auth token minted by the signer.\n * @returns Deposit history payload (newest first, cursor-paged).\n */\n async getDepositHistory(\n accountIndex: number,\n l1Address: string,\n authToken: string,\n ): Promise<LighterDepositHistoryResponse> {\n return await this.#get<LighterDepositHistoryResponse>(\n `/api/v1/deposit/history?account_index=${accountIndex}&l1_address=${l1Address}`,\n ResponseStructs.deposits,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L2→L1 withdrawal history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @returns Withdrawal history payload (newest first, cursor-paged).\n */\n async getWithdrawHistory(\n accountIndex: number,\n authToken: string,\n ): Promise<LighterWithdrawHistoryResponse> {\n return await this.#get<LighterWithdrawHistoryResponse>(\n `/api/v1/withdraw/history?account_index=${accountIndex}`,\n ResponseStructs.withdrawals,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L2 transfer history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @returns Transfer history payload (newest first, cursor-paged).\n */\n async getTransferHistory(\n accountIndex: number,\n authToken: string,\n ): Promise<LighterTransferHistoryResponse> {\n return await this.#get<LighterTransferHistoryResponse>(\n `/api/v1/transfer/history?account_index=${accountIndex}`,\n ResponseStructs.transfers,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch account trade history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param query - Pagination, range, and market filters.\n * @returns Trades payload (newest first).\n */\n async getTrades(\n accountIndex: number,\n authToken: string,\n query: LighterTradesQuery,\n ): Promise<LighterTradesResponse> {\n const { limit, cursor, from, marketId } = query;\n return await this.#get<LighterTradesResponse>(\n `/api/v1/trades?sort_by=timestamp&sort_dir=desc&limit=${limit}&account_index=${accountIndex}&market_type=perp${\n cursor === undefined ? '' : `&cursor=${encodeURIComponent(cursor)}`\n }${from === undefined ? '' : `&from=${from}`}${\n marketId === undefined ? '' : `&market_id=${marketId}`\n }`,\n ResponseStructs.trades,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch user funding payment history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param limit - Max entries.\n * @returns Position fundings payload.\n */\n async getPositionFundings(\n accountIndex: number,\n authToken: string,\n limit = 50,\n ): Promise<LighterPositionFundingsResponse> {\n return await this.#get<LighterPositionFundingsResponse>(\n `/api/v1/positionFunding?account_index=${accountIndex}&market_id=255&limit=${limit}&sort_by=timestamp&side=all`,\n ResponseStructs.fundings,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch account PnL history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param startTimestamp - Range start (ms).\n * @param endTimestamp - Range end (ms).\n * @param countBack - Records counted back from range end.\n * @returns PnL payload.\n */\n async getPnl(\n accountIndex: number,\n authToken: string,\n startTimestamp: number,\n endTimestamp: number,\n countBack: number,\n ): Promise<LighterPnlResponse> {\n return await this.#get<LighterPnlResponse>(\n `/api/v1/pnl?by=index&value=${accountIndex}&resolution=1d&count_back=${countBack}&start_timestamp=${startTimestamp}&end_timestamp=${endTimestamp}`,\n ResponseStructs.pnl,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch an OHLCV candle series for a market.\n *\n * @param marketId - Numeric Lighter market id.\n * @param resolution - Candle resolution (e.g. `1m`, `15m`, `1h`, `1d`).\n * @param startTimestamp - Range start (ms).\n * @param endTimestamp - Range end (ms).\n * @param countBack - Number of candles counted back from the range end.\n * @returns Candle series payload.\n */\n async getCandles(\n marketId: number,\n resolution: string,\n startTimestamp: number,\n endTimestamp: number,\n countBack: number,\n ): Promise<LighterCandlesResponse> {\n return await this.#get<LighterCandlesResponse>(\n `/api/v1/candles?market_id=${marketId}&resolution=${resolution}&start_timestamp=${startTimestamp}&end_timestamp=${endTimestamp}&count_back=${countBack}`,\n ResponseStructs.candles,\n );\n }\n\n /**\n * Submit a signed L2 transaction.\n *\n * @param txType - L2 transaction type code (see lighterConfig).\n * @param txInfo - Serialized signed transaction JSON.\n * @returns Send result payload.\n */\n async sendTx(txType: number, txInfo: string): Promise<LighterSendTxResponse> {\n const body = new URLSearchParams({\n tx_type: String(txType),\n tx_info: txInfo,\n });\n\n const response = await this.#request<LighterSendTxResponse>(\n '/api/v1/sendTx',\n {\n method: 'POST',\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n },\n ResponseStructs.sendTransaction,\n );\n return response;\n }\n\n readonly #get = async <Result extends { code: number; message?: string }>(\n path: string,\n responseStruct: Struct<Result, unknown>,\n headers?: Record<string, string>,\n ): Promise<Result> => {\n return await this.#request<Result>(\n path,\n { method: 'GET', headers },\n responseStruct,\n );\n };\n\n readonly #request = async <Result extends { code: number; message?: string }>(\n path: string,\n init: { method: string; headers?: Record<string, string>; body?: string },\n responseStruct: Struct<Result, unknown>,\n ): Promise<Result> => {\n const url = `${this.baseUrl}${path}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n LIGHTER_HTTP_TIMEOUT_MS,\n );\n\n try {\n const response = await fetch(url, {\n method: init.method,\n headers: init.headers,\n body: init.body,\n signal: controller.signal,\n });\n\n const payload: unknown = convertKeysToCamelCase(await response.json());\n assert(payload, BaseResponseStruct);\n\n // Lighter returns HTTP 200 with an application-level error code, and\n // 4xx/5xx with `{code, message}` bodies — treat both uniformly.\n if (!response.ok || payload.code !== 200) {\n throw new LighterApiError(\n payload.message ?? `Lighter API error (HTTP ${response.status})`,\n payload.code ?? response.status,\n );\n }\n try {\n assert(payload, responseStruct);\n } catch (error) {\n throw new LighterApiError(\n `${LIGHTER_DATA_INTEGRITY_PREFIX} response for ${path}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n return payload;\n } catch (error) {\n if (error instanceof LighterApiError) {\n throw error;\n }\n this.#deps.debugLogger?.log?.('LighterClientService request failed', {\n url,\n error,\n });\n throw new LighterApiError(\n error instanceof Error ? error.message : String(error),\n );\n } finally {\n clearTimeout(timeout);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LighterClientService.js","sourceRoot":"","sources":["../../src/services/LighterClientService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Lighter Client Service\n *\n * Thin REST client for the zkLighter API. No SDK dependency — endpoints are\n * called with the platform `fetch` global. Each successful endpoint response\n * is decoded before it reaches provider signing or trading logic.\n *\n * Endpoints used (https://apidocs.lighter.xyz):\n * - GET /api/v1/orderBooks market metadata\n * - GET /api/v1/orderBookDetails market stats\n * - GET /api/v1/account account (+positions) by index\n * - GET /api/v1/accountsByL1Address account discovery\n * - GET /api/v1/apikeys registered venue keys\n * - GET /api/v1/nextNonce per-key nonce\n * - GET /api/v1/accountActiveOrders open orders (auth token header)\n * - POST /api/v1/sendTx submit signed L2 transaction\n */\n\nimport type { Struct } from '@metamask/superstruct';\nimport {\n array,\n assert,\n boolean,\n define,\n optional,\n record,\n refine,\n string,\n type,\n union,\n} from '@metamask/superstruct';\n\nimport {\n getLighterHttpEndpoint,\n LIGHTER_DATA_INTEGRITY_PREFIX,\n LIGHTER_HTTP_TIMEOUT_MS,\n} from '../constants/lighterConfig.js';\nimport type { PerpsPlatformDependencies } from '../types/index.js';\nimport type {\n LighterAccountResponse,\n LighterAccountsByL1AddressResponse,\n LighterActiveOrdersResponse,\n LighterApiKeysResponse,\n LighterNetwork,\n LighterNextNonceResponse,\n LighterTxLookupResponse,\n LighterOrderBookMeta,\n LighterOrderBookDetailsResponse,\n LighterOrderBooksResponse,\n LighterCandlesResponse,\n LighterDepositHistoryResponse,\n LighterInactiveOrdersResponse,\n LighterPnlResponse,\n LighterPositionFundingsResponse,\n LighterSendTxResponse,\n LighterTradesResponse,\n LighterTradesQuery,\n LighterTransferType,\n LighterTransferHistoryResponse,\n LighterWithdrawHistoryResponse,\n} from '../types/lighter-types.js';\n\n/**\n * Duration market metadata stays cached before a refetch.\n */\nconst MARKETS_CACHE_TTL_MS = 5 * 60 * 1000;\n\nconst FiniteNumberStruct = define<number>('finite number', (value) =>\n typeof value === 'number' ? Number.isFinite(value) : false,\n);\nconst SafeIntegerStruct = define<number>('safe integer', (value) =>\n typeof value === 'number' ? Number.isSafeInteger(value) : false,\n);\nconst NonNegativeIntegerStruct = define<number>(\n 'non-negative safe integer',\n (value) =>\n typeof value === 'number'\n ? Number.isSafeInteger(value) && value >= 0\n : false,\n);\nconst parseStrictDecimalString = (value: unknown): number | null => {\n if (\n typeof value !== 'string' ||\n !/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u.test(value)\n ) {\n return null;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n};\nconst SignedDecimalStringStruct = define<string>(\n 'finite decimal string',\n (value) => parseStrictDecimalString(value) !== null,\n);\nconst NonNegativeDecimalStringStruct = define<string>(\n 'non-negative finite decimal string',\n (value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed >= 0;\n },\n);\nconst TransferTypeStruct = define<LighterTransferType>(\n 'Lighter transfer type',\n (value) => value === 'L2TransferInflow' || value === 'L2TransferOutflow',\n);\nconst PositiveDecimalStringStruct = define<string>(\n 'positive finite decimal string',\n (value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed > 0;\n },\n);\nconst NonNegativeFiniteNumberStruct = define<number>(\n 'non-negative finite number',\n (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0,\n);\nconst NonNegativeMarginFractionStruct = define<number>(\n 'margin fraction in [0, 10000]',\n (value) =>\n typeof value === 'number' &&\n Number.isSafeInteger(value) &&\n value >= 0 &&\n value <= 10_000,\n);\nconst NonNegativeFinancialNumberStruct = union([\n NonNegativeFiniteNumberStruct,\n NonNegativeDecimalStringStruct,\n]);\nconst BaseResponseStruct = type({\n code: SafeIntegerStruct,\n message: optional(string()),\n});\nconst PositionStruct = type({\n marketId: NonNegativeIntegerStruct,\n symbol: string(),\n initialMarginFraction: NonNegativeDecimalStringStruct,\n openOrderCount: NonNegativeIntegerStruct,\n sign: SafeIntegerStruct,\n position: NonNegativeDecimalStringStruct,\n avgEntryPrice: NonNegativeDecimalStringStruct,\n positionValue: NonNegativeDecimalStringStruct,\n unrealizedPnl: SignedDecimalStringStruct,\n realizedPnl: SignedDecimalStringStruct,\n liquidationPrice: NonNegativeDecimalStringStruct,\n marginMode: optional(SafeIntegerStruct),\n});\nconst AccountStruct = type({\n code: SafeIntegerStruct,\n accountType: SafeIntegerStruct,\n index: NonNegativeIntegerStruct,\n l1Address: string(),\n cancelAllTime: NonNegativeIntegerStruct,\n totalOrderCount: NonNegativeIntegerStruct,\n pendingOrderCount: NonNegativeIntegerStruct,\n status: SafeIntegerStruct,\n collateral: NonNegativeDecimalStringStruct,\n availableBalance: NonNegativeDecimalStringStruct,\n positions: optional(array(PositionStruct)),\n});\n// The address-discovery endpoint is an identity lookup, not a financial read:\n// live responses can carry sparse balance fields (for example an empty\n// `availableBalance`). Validate only the fields its sole consumer needs. Full\n// account reads retain AccountStruct and its strict financial validation.\nconst AccountSummaryStruct = type({\n accountType: SafeIntegerStruct,\n index: NonNegativeIntegerStruct,\n l1Address: string(),\n});\nconst MarketBaseStruct = type({\n symbol: string(),\n marketId: NonNegativeIntegerStruct,\n marketType: string(),\n status: string(),\n takerFee: SignedDecimalStringStruct,\n makerFee: SignedDecimalStringStruct,\n minBaseAmount: NonNegativeDecimalStringStruct,\n minQuoteAmount: NonNegativeDecimalStringStruct,\n supportedSizeDecimals: NonNegativeIntegerStruct,\n supportedPriceDecimals: NonNegativeIntegerStruct,\n supportedQuoteDecimals: NonNegativeIntegerStruct,\n});\nconst hasValidMarketMinimums = (\n market: Pick<\n LighterOrderBookMeta,\n 'status' | 'minBaseAmount' | 'minQuoteAmount'\n >,\n): boolean =>\n market.status === 'inactive' ||\n [market.minBaseAmount, market.minQuoteAmount].every((value) => {\n const parsed = parseStrictDecimalString(value);\n return parsed !== null && parsed > 0;\n });\nconst MarketStruct = refine(\n MarketBaseStruct,\n 'positive minimum amounts for tradable markets',\n hasValidMarketMinimums,\n);\nconst MarketDetailBaseStruct = type({\n ...MarketBaseStruct.schema,\n lastTradePrice: NonNegativeFiniteNumberStruct,\n defaultInitialMarginFraction: optional(NonNegativeMarginFractionStruct),\n minInitialMarginFraction: optional(NonNegativeMarginFractionStruct),\n maintenanceMarginFraction: optional(NonNegativeMarginFractionStruct),\n dailyTradesCount: NonNegativeFiniteNumberStruct,\n dailyBaseTokenVolume: NonNegativeFiniteNumberStruct,\n dailyQuoteTokenVolume: NonNegativeFiniteNumberStruct,\n dailyPriceLow: NonNegativeFiniteNumberStruct,\n dailyPriceHigh: NonNegativeFiniteNumberStruct,\n dailyPriceChange: FiniteNumberStruct,\n openInterest: NonNegativeFiniteNumberStruct,\n dailyChart: record(string(), FiniteNumberStruct),\n});\nconst hasValidMarketMarginFractions = (market: {\n status: string;\n defaultInitialMarginFraction?: number;\n minInitialMarginFraction?: number;\n maintenanceMarginFraction?: number;\n}): boolean =>\n market.status === 'inactive' ||\n [\n market.defaultInitialMarginFraction,\n market.minInitialMarginFraction,\n market.maintenanceMarginFraction,\n ].every((value) => value === undefined || value > 0);\nconst MarketDetailStruct = refine(\n refine(\n MarketDetailBaseStruct,\n 'positive minimum amounts for tradable markets',\n hasValidMarketMinimums,\n ),\n 'positive margin fractions for tradable markets',\n hasValidMarketMarginFractions,\n);\nconst OrderStruct = type({\n orderIndex: NonNegativeIntegerStruct,\n clientOrderIndex: NonNegativeIntegerStruct,\n marketIndex: NonNegativeIntegerStruct,\n ownerAccountIndex: NonNegativeIntegerStruct,\n initialBaseAmount: PositiveDecimalStringStruct,\n remainingBaseAmount: NonNegativeDecimalStringStruct,\n filledBaseAmount: optional(NonNegativeDecimalStringStruct),\n price: PositiveDecimalStringStruct,\n isAsk: boolean(),\n type: string(),\n timeInForce: string(),\n reduceOnly: union([FiniteNumberStruct, boolean()]),\n status: string(),\n orderExpiry: SafeIntegerStruct,\n timestamp: NonNegativeIntegerStruct,\n triggerPrice: optional(NonNegativeDecimalStringStruct),\n orderId: optional(string()),\n parentOrderIndex: optional(NonNegativeIntegerStruct),\n parentOrderId: optional(string()),\n toCancelOrderId0: optional(string()),\n toTriggerOrderId0: optional(string()),\n toTriggerOrderId1: optional(string()),\n});\nconst TradeStruct = type({\n tradeId: NonNegativeIntegerStruct,\n txHash: string(),\n type: string(),\n marketId: NonNegativeIntegerStruct,\n size: PositiveDecimalStringStruct,\n price: PositiveDecimalStringStruct,\n usdAmount: PositiveDecimalStringStruct,\n askId: NonNegativeIntegerStruct,\n bidId: NonNegativeIntegerStruct,\n askAccountId: NonNegativeIntegerStruct,\n bidAccountId: NonNegativeIntegerStruct,\n isMakerAsk: boolean(),\n timestamp: NonNegativeIntegerStruct,\n askAccountPnl: optional(SignedDecimalStringStruct),\n bidAccountPnl: optional(SignedDecimalStringStruct),\n takerFee: optional(NonNegativeFinancialNumberStruct),\n makerFee: optional(NonNegativeFinancialNumberStruct),\n takerPositionSizeBefore: NonNegativeDecimalStringStruct,\n makerPositionSizeBefore: NonNegativeDecimalStringStruct,\n takerPositionSignChanged: optional(boolean()),\n makerPositionSignChanged: optional(boolean()),\n});\n\nconst ResponseStructs = {\n orderBooks: type({\n ...BaseResponseStruct.schema,\n orderBooks: array(MarketStruct),\n }),\n orderBookDetails: type({\n ...BaseResponseStruct.schema,\n orderBookDetails: array(MarketDetailStruct),\n }),\n account: type({\n ...BaseResponseStruct.schema,\n accounts: array(AccountStruct),\n }),\n accountsByAddress: type({\n ...BaseResponseStruct.schema,\n l1Address: string(),\n subAccounts: array(AccountSummaryStruct),\n }),\n apiKeys: type({\n ...BaseResponseStruct.schema,\n apiKeys: array(\n type({\n accountIndex: NonNegativeIntegerStruct,\n apiKeyIndex: NonNegativeIntegerStruct,\n nonce: NonNegativeIntegerStruct,\n publicKey: string(),\n }),\n ),\n }),\n nextNonce: type({\n ...BaseResponseStruct.schema,\n nonce: NonNegativeIntegerStruct,\n }),\n transaction: type({\n ...BaseResponseStruct.schema,\n hash: string(),\n accountIndex: NonNegativeIntegerStruct,\n apiKeyIndex: NonNegativeIntegerStruct,\n nonce: NonNegativeIntegerStruct,\n status: SafeIntegerStruct,\n }),\n sendTransaction: type({\n ...BaseResponseStruct.schema,\n txHash: string(),\n }),\n activeOrders: type({\n ...BaseResponseStruct.schema,\n orders: array(OrderStruct),\n }),\n inactiveOrders: type({\n ...BaseResponseStruct.schema,\n nextCursor: optional(string()),\n orders: array(OrderStruct),\n }),\n deposits: type({\n ...BaseResponseStruct.schema,\n deposits: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n status: string(),\n l1TxHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n withdrawals: type({\n ...BaseResponseStruct.schema,\n withdraws: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n status: string(),\n type: string(),\n l1TxHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n transfers: type({\n ...BaseResponseStruct.schema,\n transfers: array(\n type({\n id: string(),\n assetId: NonNegativeIntegerStruct,\n amount: PositiveDecimalStringStruct,\n fee: NonNegativeDecimalStringStruct,\n timestamp: NonNegativeIntegerStruct,\n type: TransferTypeStruct,\n fromL1Address: string(),\n toL1Address: string(),\n fromAccountIndex: NonNegativeIntegerStruct,\n toAccountIndex: NonNegativeIntegerStruct,\n txHash: string(),\n }),\n ),\n cursor: optional(string()),\n }),\n trades: type({\n ...BaseResponseStruct.schema,\n nextCursor: optional(string()),\n trades: array(TradeStruct),\n }),\n fundings: type({\n ...BaseResponseStruct.schema,\n positionFundings: array(\n type({\n timestamp: NonNegativeIntegerStruct,\n marketId: NonNegativeIntegerStruct,\n fundingId: NonNegativeIntegerStruct,\n change: SignedDecimalStringStruct,\n rate: SignedDecimalStringStruct,\n positionSize: NonNegativeDecimalStringStruct,\n positionSide: string(),\n }),\n ),\n }),\n pnl: type({\n ...BaseResponseStruct.schema,\n resolution: optional(string()),\n pnl: optional(\n array(\n type({\n timestamp: NonNegativeIntegerStruct,\n tradePnl: FiniteNumberStruct,\n inflow: FiniteNumberStruct,\n outflow: FiniteNumberStruct,\n volume: FiniteNumberStruct,\n }),\n ),\n ),\n }),\n candles: type({\n ...BaseResponseStruct.schema,\n r: optional(string()),\n c: optional(\n array(\n type({\n t: NonNegativeIntegerStruct,\n o: FiniteNumberStruct,\n h: FiniteNumberStruct,\n l: FiniteNumberStruct,\n c: FiniteNumberStruct,\n v: FiniteNumberStruct,\n }),\n ),\n ),\n }),\n} as const;\n\n/**\n * Convert a snake_case wire key to camelCase.\n *\n * @param key - Wire key (e.g. `min_base_amount`).\n * @returns camelCase key (e.g. `minBaseAmount`).\n */\nfunction toCamelKey(key: string): string {\n return key.replace(/_([a-z0-9])/gu, (_match, char: string) =>\n char.toUpperCase(),\n );\n}\n\n/**\n * Recursively convert all object keys from snake_case to camelCase.\n * The zkLighter wire format is snake_case; parsed shapes in this package\n * follow camelCase conventions (see types/lighter-types.ts).\n *\n * @param value - Parsed JSON value.\n * @returns The value with camelCase keys.\n */\nexport function convertKeysToCamelCase(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(convertKeysToCamelCase);\n }\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, entry]) => [\n toCamelKey(key),\n convertKeysToCamelCase(entry),\n ]),\n );\n }\n return value;\n}\n\n/**\n * Error thrown for non-2xx HTTP responses or API-level error codes.\n */\nexport class LighterApiError extends Error {\n readonly code: number | undefined;\n\n constructor(message: string, code?: number) {\n super(message);\n this.name = 'LighterApiError';\n this.code = code;\n }\n}\n\n/**\n * REST client for the zkLighter API.\n */\nexport class LighterClientService {\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #isTestnet: boolean;\n\n #marketsCache: LighterOrderBookMeta[] | null = null;\n\n #marketsCacheTime = 0;\n\n constructor(deps: PerpsPlatformDependencies, config: { isTestnet: boolean }) {\n this.#deps = deps;\n this.#isTestnet = config.isTestnet;\n }\n\n get network(): LighterNetwork {\n return this.#isTestnet ? 'testnet' : 'mainnet';\n }\n\n get baseUrl(): string {\n return getLighterHttpEndpoint(this.network);\n }\n\n /**\n * Fetch market metadata, cached for 5 minutes.\n *\n * @param forceRefresh - Skip the cache and refetch.\n * @returns Market metadata entries.\n */\n async getOrderBooks(forceRefresh = false): Promise<LighterOrderBookMeta[]> {\n const now = Date.now();\n if (\n !forceRefresh &&\n this.#marketsCache &&\n now - this.#marketsCacheTime < MARKETS_CACHE_TTL_MS\n ) {\n return this.#marketsCache;\n }\n\n const response = await this.#get<LighterOrderBooksResponse>(\n '/api/v1/orderBooks',\n ResponseStructs.orderBooks,\n );\n this.#marketsCache = response.orderBooks;\n this.#marketsCacheTime = now;\n return response.orderBooks;\n }\n\n /**\n * Fetch market stats for all markets.\n *\n * @returns Order book details entries.\n */\n async getOrderBookDetails(): Promise<LighterOrderBookDetailsResponse> {\n return await this.#get<LighterOrderBookDetailsResponse>(\n '/api/v1/orderBookDetails',\n ResponseStructs.orderBookDetails,\n );\n }\n\n /**\n * Fetch an account (including positions) by its Lighter index.\n *\n * @param accountIndex - The Lighter account index.\n * @returns Account payload.\n */\n async getAccountByIndex(\n accountIndex: number,\n ): Promise<LighterAccountResponse> {\n return await this.#get<LighterAccountResponse>(\n `/api/v1/account?by=index&value=${accountIndex}`,\n ResponseStructs.account,\n );\n }\n\n /**\n * Discover Lighter accounts owned by an L1 address.\n *\n * @param l1Address - The owning EVM address.\n * @returns Accounts payload.\n */\n async getAccountsByL1Address(\n l1Address: string,\n ): Promise<LighterAccountsByL1AddressResponse> {\n return await this.#get<LighterAccountsByL1AddressResponse>(\n `/api/v1/accountsByL1Address?l1_address=${l1Address}`,\n ResponseStructs.accountsByAddress,\n );\n }\n\n /**\n * Fetch registered API keys for an account.\n *\n * @param accountIndex - The Lighter account index.\n * @param apiKeyIndex - Key slot, or 255 for all slots.\n * @returns API keys payload.\n */\n async getApiKeys(\n accountIndex: number,\n apiKeyIndex = 255,\n ): Promise<LighterApiKeysResponse> {\n return await this.#get<LighterApiKeysResponse>(\n `/api/v1/apikeys?account_index=${accountIndex}&api_key_index=${apiKeyIndex}`,\n ResponseStructs.apiKeys,\n );\n }\n\n /**\n * Fetch the next nonce for a key slot.\n *\n * @param accountIndex - The Lighter account index.\n * @param apiKeyIndex - Key slot.\n * @returns Next nonce payload.\n */\n async getNextNonce(\n accountIndex: number,\n apiKeyIndex: number,\n ): Promise<LighterNextNonceResponse> {\n return await this.#get<LighterNextNonceResponse>(\n `/api/v1/nextNonce?account_index=${accountIndex}&api_key_index=${apiKeyIndex}`,\n ResponseStructs.nextNonce,\n );\n }\n\n /**\n * Look up a transaction by its exact hash (`GET /api/v1/tx`). Used to\n * resolve submission-acceptance ambiguity authoritatively: an exact-hash\n * match proves the signed payload reached the sequencer.\n *\n * Contract: a venue-confirmed \"transaction not found\" (API error code\n * 21500) resolves to NULL; transport failures and every other API error\n * RETHROW — they are ambiguity, never evidence of non-acceptance.\n *\n * @param txHash - The signed transaction hash.\n * @returns The venue's transaction payload, or null when the venue\n * confirms the hash is unknown.\n */\n async getTx(txHash: string): Promise<LighterTxLookupResponse | null> {\n try {\n return await this.#get<LighterTxLookupResponse>(\n `/api/v1/tx?by=hash&value=${encodeURIComponent(txHash)}`,\n ResponseStructs.transaction,\n );\n } catch (error) {\n if (error instanceof LighterApiError && error.code === 21500) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Fetch active (open) orders for an account.\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer (`_createAuthToken`).\n * @param marketId - Optional market filter (255 = all markets).\n * @returns Active orders payload.\n */\n async getActiveOrders(\n accountIndex: number,\n authToken: string,\n marketId = 255,\n ): Promise<LighterActiveOrdersResponse> {\n return await this.#get<LighterActiveOrdersResponse>(\n `/api/v1/accountActiveOrders?account_index=${accountIndex}&market_id=${marketId}`,\n ResponseStructs.activeOrders,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch historical (inactive) orders: filled and canceled lifecycle\n * states, newest first (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param limit - Maximum entries per page.\n * @param cursor - Pagination cursor from a previous page's `nextCursor`.\n * @param marketId - Optional market filter (official `market_id` query\n * param) — sharply bounds history scans to one symbol.\n * @returns Inactive orders payload.\n */\n async getInactiveOrders(\n accountIndex: number,\n authToken: string,\n limit = 50,\n cursor?: string,\n marketId?: number,\n ): Promise<LighterInactiveOrdersResponse> {\n return await this.#get<LighterInactiveOrdersResponse>(\n `/api/v1/accountInactiveOrders?account_index=${accountIndex}&limit=${limit}${\n cursor === undefined ? '' : `&cursor=${encodeURIComponent(cursor)}`\n }${marketId === undefined ? '' : `&market_id=${marketId}`}`,\n ResponseStructs.inactiveOrders,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L1→L2 deposit history (auth token required). The venue requires\n * both the account index and its L1 address on this endpoint.\n *\n * @param accountIndex - The Lighter account index.\n * @param l1Address - The account's L1 address.\n * @param authToken - Auth token minted by the signer.\n * @returns Deposit history payload (newest first, cursor-paged).\n */\n async getDepositHistory(\n accountIndex: number,\n l1Address: string,\n authToken: string,\n ): Promise<LighterDepositHistoryResponse> {\n return await this.#get<LighterDepositHistoryResponse>(\n `/api/v1/deposit/history?account_index=${accountIndex}&l1_address=${l1Address}`,\n ResponseStructs.deposits,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L2→L1 withdrawal history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @returns Withdrawal history payload (newest first, cursor-paged).\n */\n async getWithdrawHistory(\n accountIndex: number,\n authToken: string,\n ): Promise<LighterWithdrawHistoryResponse> {\n return await this.#get<LighterWithdrawHistoryResponse>(\n `/api/v1/withdraw/history?account_index=${accountIndex}`,\n ResponseStructs.withdrawals,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch L2 transfer history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @returns Transfer history payload (newest first, cursor-paged).\n */\n async getTransferHistory(\n accountIndex: number,\n authToken: string,\n ): Promise<LighterTransferHistoryResponse> {\n return await this.#get<LighterTransferHistoryResponse>(\n `/api/v1/transfer/history?account_index=${accountIndex}`,\n ResponseStructs.transfers,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch account trade history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param query - Pagination, range, and market filters.\n * @returns Trades payload (newest first).\n */\n async getTrades(\n accountIndex: number,\n authToken: string,\n query: LighterTradesQuery,\n ): Promise<LighterTradesResponse> {\n const { limit, cursor, from, marketId } = query;\n return await this.#get<LighterTradesResponse>(\n `/api/v1/trades?sort_by=timestamp&sort_dir=desc&limit=${limit}&account_index=${accountIndex}&market_type=perp${\n cursor === undefined ? '' : `&cursor=${encodeURIComponent(cursor)}`\n }${from === undefined ? '' : `&from=${from}`}${\n marketId === undefined ? '' : `&market_id=${marketId}`\n }`,\n ResponseStructs.trades,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch user funding payment history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param limit - Max entries.\n * @returns Position fundings payload.\n */\n async getPositionFundings(\n accountIndex: number,\n authToken: string,\n limit = 50,\n ): Promise<LighterPositionFundingsResponse> {\n return await this.#get<LighterPositionFundingsResponse>(\n `/api/v1/positionFunding?account_index=${accountIndex}&market_id=255&limit=${limit}&sort_by=timestamp&side=all`,\n ResponseStructs.fundings,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch account PnL history (auth token required).\n *\n * @param accountIndex - The Lighter account index.\n * @param authToken - Auth token minted by the signer.\n * @param startTimestamp - Range start (ms).\n * @param endTimestamp - Range end (ms).\n * @param countBack - Records counted back from range end.\n * @returns PnL payload.\n */\n async getPnl(\n accountIndex: number,\n authToken: string,\n startTimestamp: number,\n endTimestamp: number,\n countBack: number,\n ): Promise<LighterPnlResponse> {\n return await this.#get<LighterPnlResponse>(\n `/api/v1/pnl?by=index&value=${accountIndex}&resolution=1d&count_back=${countBack}&start_timestamp=${startTimestamp}&end_timestamp=${endTimestamp}`,\n ResponseStructs.pnl,\n { authorization: authToken },\n );\n }\n\n /**\n * Fetch an OHLCV candle series for a market.\n *\n * @param marketId - Numeric Lighter market id.\n * @param resolution - Candle resolution (e.g. `1m`, `15m`, `1h`, `1d`).\n * @param startTimestamp - Range start (ms).\n * @param endTimestamp - Range end (ms).\n * @param countBack - Number of candles counted back from the range end.\n * @returns Candle series payload.\n */\n async getCandles(\n marketId: number,\n resolution: string,\n startTimestamp: number,\n endTimestamp: number,\n countBack: number,\n ): Promise<LighterCandlesResponse> {\n return await this.#get<LighterCandlesResponse>(\n `/api/v1/candles?market_id=${marketId}&resolution=${resolution}&start_timestamp=${startTimestamp}&end_timestamp=${endTimestamp}&count_back=${countBack}`,\n ResponseStructs.candles,\n );\n }\n\n /**\n * Submit a signed L2 transaction.\n *\n * @param txType - L2 transaction type code (see lighterConfig).\n * @param txInfo - Serialized signed transaction JSON.\n * @returns Send result payload.\n */\n async sendTx(txType: number, txInfo: string): Promise<LighterSendTxResponse> {\n const body = new URLSearchParams({\n tx_type: String(txType),\n tx_info: txInfo,\n });\n\n const response = await this.#request<LighterSendTxResponse>(\n '/api/v1/sendTx',\n {\n method: 'POST',\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n },\n ResponseStructs.sendTransaction,\n );\n return response;\n }\n\n readonly #get = async <Result extends { code: number; message?: string }>(\n path: string,\n responseStruct: Struct<Result, unknown>,\n headers?: Record<string, string>,\n ): Promise<Result> => {\n return await this.#request<Result>(\n path,\n { method: 'GET', headers },\n responseStruct,\n );\n };\n\n readonly #request = async <Result extends { code: number; message?: string }>(\n path: string,\n init: { method: string; headers?: Record<string, string>; body?: string },\n responseStruct: Struct<Result, unknown>,\n ): Promise<Result> => {\n const url = `${this.baseUrl}${path}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n LIGHTER_HTTP_TIMEOUT_MS,\n );\n\n try {\n const response = await fetch(url, {\n method: init.method,\n headers: init.headers,\n body: init.body,\n signal: controller.signal,\n });\n\n const payload: unknown = convertKeysToCamelCase(await response.json());\n assert(payload, BaseResponseStruct);\n\n // Lighter returns HTTP 200 with an application-level error code, and\n // 4xx/5xx with `{code, message}` bodies — treat both uniformly.\n if (!response.ok || payload.code !== 200) {\n throw new LighterApiError(\n payload.message ?? `Lighter API error (HTTP ${response.status})`,\n payload.code ?? response.status,\n );\n }\n try {\n assert(payload, responseStruct);\n } catch (error) {\n throw new LighterApiError(\n `${LIGHTER_DATA_INTEGRITY_PREFIX} response for ${path}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n return payload;\n } catch (error) {\n if (error instanceof LighterApiError) {\n throw error;\n }\n this.#deps.debugLogger?.log?.('LighterClientService request failed', {\n url,\n error,\n });\n throw new LighterApiError(\n error instanceof Error ? error.message : String(error),\n );\n } finally {\n clearTimeout(timeout);\n }\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketDataService.d.ts","sourceRoot":"","sources":["../../src/services/MarketDataService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MarketDataService.d.ts","sourceRoot":"","sources":["../../src/services/MarketDataService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,eAAe,EACf,UAAU,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;;IAG5B;;;;OAIG;IACH,YAAY,IAAI,EAAE,yBAAyB,EAE1C;IAED;;;;;;;;;OASG;IACG,YAAY,CAAC,OAAO,EAAE;QAC1B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;QAC5B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAuDtB;IAED;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,OAAO,EAAE,cAAc,CAAC;QACxB;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA0FvB;IAED;;;;;;;;;;;OAWG;IACG,SAAS,CAAC,OAAO,EAAE;QACvB,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,OAAO,EAAE,cAAc,CAAC;QACxB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAiFnB;IAED;;;;;;;;;OASG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CA2DnB;IAED;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,OAAO,EAAE,cAAc,CAAC;QACxB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAkFrB;IAED;;;;;;;;;OASG;IACG,eAAe,CAAC,OAAO,EAAE;QAC7B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,qBAAqB,CAAC;QAC/B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkFxB;IAED;;;;;;;;;OASG;IACG,sBAAsB,CAAC,OAAO,EAAE;QACpC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,4BAA4B,CAAC;QACtC,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAqErC;IAED;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,OAAO,EAAE,cAAc,CAAC;QACxB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;KAC/C,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgJxB;IAED;;;;;;;;;;;OAWG;IACG,uBAAuB,CAAC,OAAO,EAAE;QACrC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,6BAA6B,CAAC;QACvC,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA8I7B;IAED;;;;;;;;OAQG;IACG,gBAAgB,CAAC,OAAO,EAAE;QAC9B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,CAAC,EAAE,sBAAsB,CAAC;QAChC,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBpB;IAED;;;;;;;;;;;;OAYG;IACG,sBAAsB,CAAC,OAAO,EAAE;QACpC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,YAAY,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyFtB;IAED;;;;;;;;OAQG;IACG,yBAAyB,CAAC,OAAO,EAAE;QACvC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,sBAAsB,CAAC;QAC/B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;IAED;;;;;;;;OAQG;IACG,qBAAqB,CAAC,OAAO,EAAE;QACnC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,2BAA2B,CAAC;QACpC,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAiBvC;IAED;;;;;;;;OAQG;IACG,0BAA0B,CAAC,OAAO,EAAE;QACxC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,uBAAuB,CAAC;QAChC,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;IAED;;;;;;;;;OASG;IACG,cAAc,CAAC,OAAO,EAAE;QAC5B,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,iBAAiB,CAAC;QAC/B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlB;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiDhC;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAiBhD;IAED;;;;;;;;OAQG;IACG,qBAAqB,CAAC,OAAO,EAAE;QACnC,QAAQ,EAAE,aAAa,CAAC;QACxB,MAAM,EAAE,mBAAmB,CAAC;QAC5B,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAiBhD;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG,UAAU,EAAE,CAStE;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,OAAO,EAAE;QAC3B,QAAQ,EAAE,aAAa,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,MAAM,CAGT;CAqCF"}
|
|
@@ -1050,9 +1050,20 @@ export class MarketDataService {
|
|
|
1050
1050
|
// Read-only preview of the same cached benefits snapshot the fee resolver
|
|
1051
1051
|
// reads. Surfacing eligibility and the remaining notional must not mutate
|
|
1052
1052
|
// the cap or the cache.
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1053
|
+
// Match the repricing guards and exclude placements explicitly reported
|
|
1054
|
+
// as carrying no builder fee. Attribute only the snapshot used above;
|
|
1055
|
+
// another rewards read could describe a different grant or fee.
|
|
1056
|
+
const resolutionApplies = context.feeResolution !== undefined &&
|
|
1057
|
+
fees.metamaskFeeRate !== undefined &&
|
|
1058
|
+
fees.chargesMetamaskBuilderFee !== false &&
|
|
1059
|
+
(fees.metamaskFeeRate !== 0 || fees.chargesMetamaskBuilderFee === true);
|
|
1060
|
+
return {
|
|
1061
|
+
...priced,
|
|
1062
|
+
...(resolutionApplies && { feeResolution: context.feeResolution }),
|
|
1063
|
+
...(context.subscriptionFeeWaiver && {
|
|
1064
|
+
subscription: context.subscriptionFeeWaiver,
|
|
1065
|
+
}),
|
|
1066
|
+
};
|
|
1056
1067
|
}
|
|
1057
1068
|
catch (error) {
|
|
1058
1069
|
this.#deps.logger.error(ensureError(error, 'MarketDataService.calculateFees'), {
|