@metamask-previews/perps-controller 15.1.0-preview-e12b5ece6 → 16.0.0-preview-2f57247
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 +13 -1
- package/dist/perpsErrorCodes.cjs +1 -0
- package/dist/perpsErrorCodes.cjs.map +1 -1
- package/dist/perpsErrorCodes.d.cts +1 -0
- package/dist/perpsErrorCodes.d.cts.map +1 -1
- package/dist/perpsErrorCodes.d.mts +1 -0
- package/dist/perpsErrorCodes.d.mts.map +1 -1
- package/dist/perpsErrorCodes.mjs +1 -0
- package/dist/perpsErrorCodes.mjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.cjs +29 -10
- package/dist/providers/HyperLiquidProvider.cjs.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.cts.map +1 -1
- package/dist/providers/HyperLiquidProvider.d.mts.map +1 -1
- package/dist/providers/HyperLiquidProvider.mjs +29 -10
- package/dist/providers/HyperLiquidProvider.mjs.map +1 -1
- package/dist/services/TradingService.cjs +18 -8
- package/dist/services/TradingService.cjs.map +1 -1
- package/dist/services/TradingService.d.cts.map +1 -1
- package/dist/services/TradingService.d.mts.map +1 -1
- package/dist/services/TradingService.mjs +18 -8
- package/dist/services/TradingService.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Revalidate HyperLiquid positions over HTTP before reporting a WebSocket cache miss during a TP/SL update ([#10101](https://github.com/MetaMask/core/pull/10101)).
|
|
13
|
+
|
|
14
|
+
## [16.0.0]
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Add `reduce_only` intent to every `Perp Trade Transaction` lifecycle event while preserving canonical `order_type` values ([#10091](https://github.com/MetaMask/core/pull/10091))
|
|
19
|
+
- Add `POSITION_NOT_FOUND` as the provider-neutral error code for operations targeting a position the venue no longer holds ([#10083](https://github.com/MetaMask/core/pull/10083))
|
|
20
|
+
|
|
10
21
|
### Changed
|
|
11
22
|
|
|
12
23
|
- Bump `@metamask/transaction-controller` from `^69.7.0` to `^69.8.0` ([#10080](https://github.com/MetaMask/core/pull/10080))
|
|
@@ -859,7 +870,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
859
870
|
|
|
860
871
|
- Bump `@metamask/controller-utils` from `^11.18.0` to `^11.19.0` ([#7995](https://github.com/MetaMask/core/pull/7995))
|
|
861
872
|
|
|
862
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@
|
|
873
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@16.0.0...HEAD
|
|
874
|
+
[16.0.0]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@15.1.0...@metamask/perps-controller@16.0.0
|
|
863
875
|
[15.1.0]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@15.0.0...@metamask/perps-controller@15.1.0
|
|
864
876
|
[15.0.0]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@14.0.0...@metamask/perps-controller@15.0.0
|
|
865
877
|
[14.0.0]: https://github.com/MetaMask/core/compare/@metamask/perps-controller@13.1.0...@metamask/perps-controller@14.0.0
|
package/dist/perpsErrorCodes.cjs
CHANGED
|
@@ -113,6 +113,7 @@ exports.PERPS_ERROR_CODES = {
|
|
|
113
113
|
INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',
|
|
114
114
|
REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',
|
|
115
115
|
POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',
|
|
116
|
+
POSITION_NOT_FOUND: 'POSITION_NOT_FOUND',
|
|
116
117
|
MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',
|
|
117
118
|
TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',
|
|
118
119
|
TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perpsErrorCodes.cjs","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error codes for PerpsController\n * These codes are returned to the UI layer for translation\n * Extracted to separate file to avoid circular dependencies with translatePerpsError\n */\nexport const PERPS_ERROR_CODES = {\n CLIENT_NOT_INITIALIZED: 'CLIENT_NOT_INITIALIZED',\n CLIENT_REINITIALIZING: 'CLIENT_REINITIALIZING',\n PROVIDER_NOT_AVAILABLE: 'PROVIDER_NOT_AVAILABLE',\n PROVIDER_NOT_FOUND: 'PROVIDER_NOT_FOUND',\n PROVIDER_LIFECYCLE_STALE: 'PROVIDER_LIFECYCLE_STALE',\n TOKEN_NOT_SUPPORTED: 'TOKEN_NOT_SUPPORTED',\n BRIDGE_CONTRACT_NOT_FOUND: 'BRIDGE_CONTRACT_NOT_FOUND',\n WITHDRAW_FAILED: 'WITHDRAW_FAILED',\n POSITIONS_FAILED: 'POSITIONS_FAILED',\n ACCOUNT_STATE_FAILED: 'ACCOUNT_STATE_FAILED',\n MARKETS_FAILED: 'MARKETS_FAILED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n // Provider-agnostic order errors\n ORDER_LEVERAGE_REDUCTION_FAILED: 'ORDER_LEVERAGE_REDUCTION_FAILED',\n // HyperLiquid-specific order errors\n IOC_CANCEL: 'IOC_CANCEL', // Order could not immediately match (insufficient liquidity)\n // Connection errors\n CONNECTION_TIMEOUT: 'CONNECTION_TIMEOUT',\n // Validation errors - withdraw\n WITHDRAW_ASSET_ID_REQUIRED: 'WITHDRAW_ASSET_ID_REQUIRED',\n WITHDRAW_AMOUNT_REQUIRED: 'WITHDRAW_AMOUNT_REQUIRED',\n WITHDRAW_AMOUNT_POSITIVE: 'WITHDRAW_AMOUNT_POSITIVE',\n WITHDRAW_INVALID_DESTINATION: 'WITHDRAW_INVALID_DESTINATION',\n WITHDRAW_ASSET_NOT_SUPPORTED: 'WITHDRAW_ASSET_NOT_SUPPORTED',\n WITHDRAW_INSUFFICIENT_BALANCE: 'WITHDRAW_INSUFFICIENT_BALANCE',\n // Validation errors - deposit\n DEPOSIT_ASSET_ID_REQUIRED: 'DEPOSIT_ASSET_ID_REQUIRED',\n DEPOSIT_AMOUNT_REQUIRED: 'DEPOSIT_AMOUNT_REQUIRED',\n DEPOSIT_AMOUNT_POSITIVE: 'DEPOSIT_AMOUNT_POSITIVE',\n DEPOSIT_MINIMUM_AMOUNT: 'DEPOSIT_MINIMUM_AMOUNT',\n // Validation errors - order\n ORDER_COIN_REQUIRED: 'ORDER_COIN_REQUIRED',\n ORDER_LIMIT_PRICE_REQUIRED: 'ORDER_LIMIT_PRICE_REQUIRED',\n ORDER_PRICE_POSITIVE: 'ORDER_PRICE_POSITIVE',\n ORDER_UNKNOWN_COIN: 'ORDER_UNKNOWN_COIN',\n ORDER_SIZE_POSITIVE: 'ORDER_SIZE_POSITIVE',\n ORDER_PRICE_REQUIRED: 'ORDER_PRICE_REQUIRED',\n ORDER_SIZE_MIN: 'ORDER_SIZE_MIN',\n ORDER_LEVERAGE_INVALID: 'ORDER_LEVERAGE_INVALID',\n ORDER_LEVERAGE_BELOW_POSITION: 'ORDER_LEVERAGE_BELOW_POSITION',\n ORDER_MAX_VALUE_EXCEEDED: 'ORDER_MAX_VALUE_EXCEEDED',\n // Validation errors - trigger placement (stop / take profit) and partial TP/SL\n ORDER_TRIGGER_PRICE_REQUIRED: 'ORDER_TRIGGER_PRICE_REQUIRED', // stop_*/take_profit_* placed without a trigger price\n ORDER_TRIGGER_PRICE_POSITIVE: 'ORDER_TRIGGER_PRICE_POSITIVE',\n ORDER_TRIGGER_PRICE_NOT_SUPPORTED: 'ORDER_TRIGGER_PRICE_NOT_SUPPORTED', // Trigger price supplied for a market/limit order\n ORDER_TRIGGER_TPSL_UNSUPPORTED: 'ORDER_TRIGGER_TPSL_UNSUPPORTED', // Attached TP/SL on a trigger placement\n ORDER_TPSL_SIZE_INVALID: 'ORDER_TPSL_SIZE_INVALID', // Partial TP/SL size non-positive, larger than the order, or missing its price\n ORDER_EDIT_TRIGGER_UNSUPPORTED: 'ORDER_EDIT_TRIGGER_UNSUPPORTED', // editOrder cannot turn a resting order into a trigger placement\n ORDER_TPSL_LINKAGE_CONFLICT: 'ORDER_TPSL_LINKAGE_CONFLICT', // tpslLinkage and the deprecated grouping disagree\n ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED:\n 'ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED', // Position-linked TP/SL requested on an order placement; use updatePositionTPSL\n ORDER_TPSL_LINKAGE_REQUIRED: 'ORDER_TPSL_LINKAGE_REQUIRED', // Attached TP/SL requested with no linkage to parent or position\n ORDER_EDIT_ORDER_UNVERIFIABLE: 'ORDER_EDIT_ORDER_UNVERIFIABLE', // editOrder cannot confirm the resting order's placement type\n ORDER_TIME_IN_FORCE_NOT_SUPPORTED: 'ORDER_TIME_IN_FORCE_NOT_SUPPORTED', // Time in force supplied for an order shape that cannot carry one\n // Validation errors - strategy placement (twap / scale / chase)\n ORDER_STRATEGY_PARAMS_NOT_SUPPORTED: 'ORDER_STRATEGY_PARAMS_NOT_SUPPORTED', // Strategy field supplied on an order type that does not own it\n ORDER_STRATEGY_FIELD_UNSUPPORTED: 'ORDER_STRATEGY_FIELD_UNSUPPORTED', // price / triggerPrice / timeInForce / attached TP/SL supplied on a strategy placement\n ORDER_STRATEGY_MARKET_UNSUPPORTED: 'ORDER_STRATEGY_MARKET_UNSUPPORTED', // The provider cannot run a strategy placement on this market\n ORDER_STRATEGY_ROUTE_UNAVAILABLE: 'ORDER_STRATEGY_ROUTE_UNAVAILABLE', // The requested strategy provider route does not match the active direct provider\n ORDER_STRATEGY_HANDLE_UNKNOWN: 'ORDER_STRATEGY_HANDLE_UNKNOWN', // Strategy cancel handle is invalid or this provider session does not hold it\n ORDER_EDIT_STRATEGY_UNSUPPORTED: 'ORDER_EDIT_STRATEGY_UNSUPPORTED', // editOrder cannot modify a strategy placement; cancel by its handle and place again\n ORDER_STRATEGY_CANCEL_INCOMPLETE: 'ORDER_STRATEGY_CANCEL_INCOMPLETE', // Part of a strategy placement is still resting after a cancel; the handle stays valid for a retry\n ORDER_TWAP_DURATION_REQUIRED: 'ORDER_TWAP_DURATION_REQUIRED', // TWAP placed without twapDuration\n ORDER_TWAP_DURATION_INVALID: 'ORDER_TWAP_DURATION_INVALID', // twapDuration not a whole number of minutes within the venue's bounds\n ORDER_SCALE_RANGE_REQUIRED: 'ORDER_SCALE_RANGE_REQUIRED', // Scale placed without both ladder bounds\n ORDER_SCALE_RANGE_INVALID: 'ORDER_SCALE_RANGE_INVALID', // Scale ladder bounds or skew are invalid\n ORDER_SCALE_COUNT_INVALID: 'ORDER_SCALE_COUNT_INVALID', // scaleNumOrders missing, non-integer, or outside the supported ladder size\n ORDER_SCALE_SIZE_TOO_SMALL: 'ORDER_SCALE_SIZE_TOO_SMALL', // Total size cannot give every ladder rung a non-zero slice\n ORDER_SCALE_NOTIONAL_TOO_SMALL: 'ORDER_SCALE_NOTIONAL_TOO_SMALL', // Ladder notional split across the rungs leaves each below the venue's per-order minimum\n ORDER_TWAP_NOTIONAL_TOO_SMALL: 'ORDER_TWAP_NOTIONAL_TOO_SMALL', // TWAP total below the venue's documented minimum TWAP order size\n ORDER_CHASE_INTERVAL_INVALID: 'ORDER_CHASE_INTERVAL_INVALID', // chaseIntervalMs below the minimum poll interval\n ORDER_CHASE_DURATION_INVALID: 'ORDER_CHASE_DURATION_INVALID', // chaseMaxDurationMs shorter than one poll interval, or chaseMaxRepricings non-positive\n ORDER_CHASE_MAX_DISTANCE_INVALID: 'ORDER_CHASE_MAX_DISTANCE_INVALID', // chaseMaxDistanceBps must be finite, greater than 0, and less than 10,000 when supplied\n ORDER_CHASE_ABANDONED: 'ORDER_CHASE_ABANDONED', // The provider was torn down while the chase was being placed; its order rests but no strategy runs\n ORDER_CHASE_LIMIT_REACHED: 'ORDER_CHASE_LIMIT_REACHED', // The venue's cap on simultaneously active chase orders is already in use\n ORDER_CHASE_TOUCH_UNAVAILABLE: 'ORDER_CHASE_TOUCH_UNAVAILABLE', // The order book returned no price on the side the chase must rest at\n // HyperLiquid client/service errors\n EXCHANGE_CLIENT_NOT_AVAILABLE: 'EXCHANGE_CLIENT_NOT_AVAILABLE',\n INFO_CLIENT_NOT_AVAILABLE: 'INFO_CLIENT_NOT_AVAILABLE',\n SUBSCRIPTION_CLIENT_NOT_AVAILABLE: 'SUBSCRIPTION_CLIENT_NOT_AVAILABLE',\n // Wallet/account errors\n NO_ACCOUNT_SELECTED: 'NO_ACCOUNT_SELECTED',\n KEYRING_LOCKED: 'KEYRING_LOCKED',\n INVALID_ADDRESS_FORMAT: 'INVALID_ADDRESS_FORMAT',\n // Wallet has no account on the exchange yet (HyperLiquid creates accounts\n // server-side on the first USDC credit). Actionable: the user must fund the\n // account before any order can be placed.\n EXCHANGE_ACCOUNT_NOT_FOUND: 'EXCHANGE_ACCOUNT_NOT_FOUND',\n // HyperLiquid exchange rejects agent-signed writes for multi-sig accounts\n // without a multi-sig wrapper, or when the action nonce is stale/reused.\n EXCHANGE_MULTI_SIG_REQUIRED: 'EXCHANGE_MULTI_SIG_REQUIRED',\n EXCHANGE_INVALID_NONCE: 'EXCHANGE_INVALID_NONCE',\n // Transfer/swap errors\n TRANSFER_FAILED: 'TRANSFER_FAILED',\n SWAP_FAILED: 'SWAP_FAILED',\n SPOT_PAIR_NOT_FOUND: 'SPOT_PAIR_NOT_FOUND',\n PRICE_UNAVAILABLE: 'PRICE_UNAVAILABLE',\n // Market/collateral errors\n UNSUPPORTED_COLLATERAL: 'UNSUPPORTED_COLLATERAL', // DEX collateral token is not USDC (TAT-3304)\n // Batch operation errors\n BATCH_CANCEL_FAILED: 'BATCH_CANCEL_FAILED',\n BATCH_CLOSE_FAILED: 'BATCH_CLOSE_FAILED',\n // Position/margin errors\n INSUFFICIENT_MARGIN: 'INSUFFICIENT_MARGIN',\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',\n POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',\n MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',\n TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',\n TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',\n // Order execution errors\n ORDER_REJECTED: 'ORDER_REJECTED',\n SLIPPAGE_EXCEEDED: 'SLIPPAGE_EXCEEDED',\n RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',\n // Network/service errors\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n NETWORK_ERROR: 'NETWORK_ERROR',\n} as const;\n\nexport type PerpsErrorCode =\n (typeof PERPS_ERROR_CODES)[keyof typeof PERPS_ERROR_CODES];\n"]}
|
|
1
|
+
{"version":3,"file":"perpsErrorCodes.cjs","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error codes for PerpsController\n * These codes are returned to the UI layer for translation\n * Extracted to separate file to avoid circular dependencies with translatePerpsError\n */\nexport const PERPS_ERROR_CODES = {\n CLIENT_NOT_INITIALIZED: 'CLIENT_NOT_INITIALIZED',\n CLIENT_REINITIALIZING: 'CLIENT_REINITIALIZING',\n PROVIDER_NOT_AVAILABLE: 'PROVIDER_NOT_AVAILABLE',\n PROVIDER_NOT_FOUND: 'PROVIDER_NOT_FOUND',\n PROVIDER_LIFECYCLE_STALE: 'PROVIDER_LIFECYCLE_STALE',\n TOKEN_NOT_SUPPORTED: 'TOKEN_NOT_SUPPORTED',\n BRIDGE_CONTRACT_NOT_FOUND: 'BRIDGE_CONTRACT_NOT_FOUND',\n WITHDRAW_FAILED: 'WITHDRAW_FAILED',\n POSITIONS_FAILED: 'POSITIONS_FAILED',\n ACCOUNT_STATE_FAILED: 'ACCOUNT_STATE_FAILED',\n MARKETS_FAILED: 'MARKETS_FAILED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n // Provider-agnostic order errors\n ORDER_LEVERAGE_REDUCTION_FAILED: 'ORDER_LEVERAGE_REDUCTION_FAILED',\n // HyperLiquid-specific order errors\n IOC_CANCEL: 'IOC_CANCEL', // Order could not immediately match (insufficient liquidity)\n // Connection errors\n CONNECTION_TIMEOUT: 'CONNECTION_TIMEOUT',\n // Validation errors - withdraw\n WITHDRAW_ASSET_ID_REQUIRED: 'WITHDRAW_ASSET_ID_REQUIRED',\n WITHDRAW_AMOUNT_REQUIRED: 'WITHDRAW_AMOUNT_REQUIRED',\n WITHDRAW_AMOUNT_POSITIVE: 'WITHDRAW_AMOUNT_POSITIVE',\n WITHDRAW_INVALID_DESTINATION: 'WITHDRAW_INVALID_DESTINATION',\n WITHDRAW_ASSET_NOT_SUPPORTED: 'WITHDRAW_ASSET_NOT_SUPPORTED',\n WITHDRAW_INSUFFICIENT_BALANCE: 'WITHDRAW_INSUFFICIENT_BALANCE',\n // Validation errors - deposit\n DEPOSIT_ASSET_ID_REQUIRED: 'DEPOSIT_ASSET_ID_REQUIRED',\n DEPOSIT_AMOUNT_REQUIRED: 'DEPOSIT_AMOUNT_REQUIRED',\n DEPOSIT_AMOUNT_POSITIVE: 'DEPOSIT_AMOUNT_POSITIVE',\n DEPOSIT_MINIMUM_AMOUNT: 'DEPOSIT_MINIMUM_AMOUNT',\n // Validation errors - order\n ORDER_COIN_REQUIRED: 'ORDER_COIN_REQUIRED',\n ORDER_LIMIT_PRICE_REQUIRED: 'ORDER_LIMIT_PRICE_REQUIRED',\n ORDER_PRICE_POSITIVE: 'ORDER_PRICE_POSITIVE',\n ORDER_UNKNOWN_COIN: 'ORDER_UNKNOWN_COIN',\n ORDER_SIZE_POSITIVE: 'ORDER_SIZE_POSITIVE',\n ORDER_PRICE_REQUIRED: 'ORDER_PRICE_REQUIRED',\n ORDER_SIZE_MIN: 'ORDER_SIZE_MIN',\n ORDER_LEVERAGE_INVALID: 'ORDER_LEVERAGE_INVALID',\n ORDER_LEVERAGE_BELOW_POSITION: 'ORDER_LEVERAGE_BELOW_POSITION',\n ORDER_MAX_VALUE_EXCEEDED: 'ORDER_MAX_VALUE_EXCEEDED',\n // Validation errors - trigger placement (stop / take profit) and partial TP/SL\n ORDER_TRIGGER_PRICE_REQUIRED: 'ORDER_TRIGGER_PRICE_REQUIRED', // stop_*/take_profit_* placed without a trigger price\n ORDER_TRIGGER_PRICE_POSITIVE: 'ORDER_TRIGGER_PRICE_POSITIVE',\n ORDER_TRIGGER_PRICE_NOT_SUPPORTED: 'ORDER_TRIGGER_PRICE_NOT_SUPPORTED', // Trigger price supplied for a market/limit order\n ORDER_TRIGGER_TPSL_UNSUPPORTED: 'ORDER_TRIGGER_TPSL_UNSUPPORTED', // Attached TP/SL on a trigger placement\n ORDER_TPSL_SIZE_INVALID: 'ORDER_TPSL_SIZE_INVALID', // Partial TP/SL size non-positive, larger than the order, or missing its price\n ORDER_EDIT_TRIGGER_UNSUPPORTED: 'ORDER_EDIT_TRIGGER_UNSUPPORTED', // editOrder cannot turn a resting order into a trigger placement\n ORDER_TPSL_LINKAGE_CONFLICT: 'ORDER_TPSL_LINKAGE_CONFLICT', // tpslLinkage and the deprecated grouping disagree\n ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED:\n 'ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED', // Position-linked TP/SL requested on an order placement; use updatePositionTPSL\n ORDER_TPSL_LINKAGE_REQUIRED: 'ORDER_TPSL_LINKAGE_REQUIRED', // Attached TP/SL requested with no linkage to parent or position\n ORDER_EDIT_ORDER_UNVERIFIABLE: 'ORDER_EDIT_ORDER_UNVERIFIABLE', // editOrder cannot confirm the resting order's placement type\n ORDER_TIME_IN_FORCE_NOT_SUPPORTED: 'ORDER_TIME_IN_FORCE_NOT_SUPPORTED', // Time in force supplied for an order shape that cannot carry one\n // Validation errors - strategy placement (twap / scale / chase)\n ORDER_STRATEGY_PARAMS_NOT_SUPPORTED: 'ORDER_STRATEGY_PARAMS_NOT_SUPPORTED', // Strategy field supplied on an order type that does not own it\n ORDER_STRATEGY_FIELD_UNSUPPORTED: 'ORDER_STRATEGY_FIELD_UNSUPPORTED', // price / triggerPrice / timeInForce / attached TP/SL supplied on a strategy placement\n ORDER_STRATEGY_MARKET_UNSUPPORTED: 'ORDER_STRATEGY_MARKET_UNSUPPORTED', // The provider cannot run a strategy placement on this market\n ORDER_STRATEGY_ROUTE_UNAVAILABLE: 'ORDER_STRATEGY_ROUTE_UNAVAILABLE', // The requested strategy provider route does not match the active direct provider\n ORDER_STRATEGY_HANDLE_UNKNOWN: 'ORDER_STRATEGY_HANDLE_UNKNOWN', // Strategy cancel handle is invalid or this provider session does not hold it\n ORDER_EDIT_STRATEGY_UNSUPPORTED: 'ORDER_EDIT_STRATEGY_UNSUPPORTED', // editOrder cannot modify a strategy placement; cancel by its handle and place again\n ORDER_STRATEGY_CANCEL_INCOMPLETE: 'ORDER_STRATEGY_CANCEL_INCOMPLETE', // Part of a strategy placement is still resting after a cancel; the handle stays valid for a retry\n ORDER_TWAP_DURATION_REQUIRED: 'ORDER_TWAP_DURATION_REQUIRED', // TWAP placed without twapDuration\n ORDER_TWAP_DURATION_INVALID: 'ORDER_TWAP_DURATION_INVALID', // twapDuration not a whole number of minutes within the venue's bounds\n ORDER_SCALE_RANGE_REQUIRED: 'ORDER_SCALE_RANGE_REQUIRED', // Scale placed without both ladder bounds\n ORDER_SCALE_RANGE_INVALID: 'ORDER_SCALE_RANGE_INVALID', // Scale ladder bounds or skew are invalid\n ORDER_SCALE_COUNT_INVALID: 'ORDER_SCALE_COUNT_INVALID', // scaleNumOrders missing, non-integer, or outside the supported ladder size\n ORDER_SCALE_SIZE_TOO_SMALL: 'ORDER_SCALE_SIZE_TOO_SMALL', // Total size cannot give every ladder rung a non-zero slice\n ORDER_SCALE_NOTIONAL_TOO_SMALL: 'ORDER_SCALE_NOTIONAL_TOO_SMALL', // Ladder notional split across the rungs leaves each below the venue's per-order minimum\n ORDER_TWAP_NOTIONAL_TOO_SMALL: 'ORDER_TWAP_NOTIONAL_TOO_SMALL', // TWAP total below the venue's documented minimum TWAP order size\n ORDER_CHASE_INTERVAL_INVALID: 'ORDER_CHASE_INTERVAL_INVALID', // chaseIntervalMs below the minimum poll interval\n ORDER_CHASE_DURATION_INVALID: 'ORDER_CHASE_DURATION_INVALID', // chaseMaxDurationMs shorter than one poll interval, or chaseMaxRepricings non-positive\n ORDER_CHASE_MAX_DISTANCE_INVALID: 'ORDER_CHASE_MAX_DISTANCE_INVALID', // chaseMaxDistanceBps must be finite, greater than 0, and less than 10,000 when supplied\n ORDER_CHASE_ABANDONED: 'ORDER_CHASE_ABANDONED', // The provider was torn down while the chase was being placed; its order rests but no strategy runs\n ORDER_CHASE_LIMIT_REACHED: 'ORDER_CHASE_LIMIT_REACHED', // The venue's cap on simultaneously active chase orders is already in use\n ORDER_CHASE_TOUCH_UNAVAILABLE: 'ORDER_CHASE_TOUCH_UNAVAILABLE', // The order book returned no price on the side the chase must rest at\n // HyperLiquid client/service errors\n EXCHANGE_CLIENT_NOT_AVAILABLE: 'EXCHANGE_CLIENT_NOT_AVAILABLE',\n INFO_CLIENT_NOT_AVAILABLE: 'INFO_CLIENT_NOT_AVAILABLE',\n SUBSCRIPTION_CLIENT_NOT_AVAILABLE: 'SUBSCRIPTION_CLIENT_NOT_AVAILABLE',\n // Wallet/account errors\n NO_ACCOUNT_SELECTED: 'NO_ACCOUNT_SELECTED',\n KEYRING_LOCKED: 'KEYRING_LOCKED',\n INVALID_ADDRESS_FORMAT: 'INVALID_ADDRESS_FORMAT',\n // Wallet has no account on the exchange yet (HyperLiquid creates accounts\n // server-side on the first USDC credit). Actionable: the user must fund the\n // account before any order can be placed.\n EXCHANGE_ACCOUNT_NOT_FOUND: 'EXCHANGE_ACCOUNT_NOT_FOUND',\n // HyperLiquid exchange rejects agent-signed writes for multi-sig accounts\n // without a multi-sig wrapper, or when the action nonce is stale/reused.\n EXCHANGE_MULTI_SIG_REQUIRED: 'EXCHANGE_MULTI_SIG_REQUIRED',\n EXCHANGE_INVALID_NONCE: 'EXCHANGE_INVALID_NONCE',\n // Transfer/swap errors\n TRANSFER_FAILED: 'TRANSFER_FAILED',\n SWAP_FAILED: 'SWAP_FAILED',\n SPOT_PAIR_NOT_FOUND: 'SPOT_PAIR_NOT_FOUND',\n PRICE_UNAVAILABLE: 'PRICE_UNAVAILABLE',\n // Market/collateral errors\n UNSUPPORTED_COLLATERAL: 'UNSUPPORTED_COLLATERAL', // DEX collateral token is not USDC (TAT-3304)\n // Batch operation errors\n BATCH_CANCEL_FAILED: 'BATCH_CANCEL_FAILED',\n BATCH_CLOSE_FAILED: 'BATCH_CLOSE_FAILED',\n // Position/margin errors\n INSUFFICIENT_MARGIN: 'INSUFFICIENT_MARGIN',\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',\n POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',\n POSITION_NOT_FOUND: 'POSITION_NOT_FOUND',\n MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',\n TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',\n TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',\n // Order execution errors\n ORDER_REJECTED: 'ORDER_REJECTED',\n SLIPPAGE_EXCEEDED: 'SLIPPAGE_EXCEEDED',\n RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',\n // Network/service errors\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n NETWORK_ERROR: 'NETWORK_ERROR',\n} as const;\n\nexport type PerpsErrorCode =\n (typeof PERPS_ERROR_CODES)[keyof typeof PERPS_ERROR_CODES];\n"]}
|
|
@@ -91,6 +91,7 @@ export declare const PERPS_ERROR_CODES: {
|
|
|
91
91
|
readonly INSUFFICIENT_BALANCE: "INSUFFICIENT_BALANCE";
|
|
92
92
|
readonly REDUCE_ONLY_VIOLATION: "REDUCE_ONLY_VIOLATION";
|
|
93
93
|
readonly POSITION_WOULD_FLIP: "POSITION_WOULD_FLIP";
|
|
94
|
+
readonly POSITION_NOT_FOUND: "POSITION_NOT_FOUND";
|
|
94
95
|
readonly MARGIN_ADJUSTMENT_FAILED: "MARGIN_ADJUSTMENT_FAILED";
|
|
95
96
|
readonly TPSL_UPDATE_FAILED: "TPSL_UPDATE_FAILED";
|
|
96
97
|
readonly TPSL_PROTECTION_LOST: "TPSL_PROTECTION_LOST";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perpsErrorCodes.d.cts","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"perpsErrorCodes.d.cts","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHpB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -91,6 +91,7 @@ export declare const PERPS_ERROR_CODES: {
|
|
|
91
91
|
readonly INSUFFICIENT_BALANCE: "INSUFFICIENT_BALANCE";
|
|
92
92
|
readonly REDUCE_ONLY_VIOLATION: "REDUCE_ONLY_VIOLATION";
|
|
93
93
|
readonly POSITION_WOULD_FLIP: "POSITION_WOULD_FLIP";
|
|
94
|
+
readonly POSITION_NOT_FOUND: "POSITION_NOT_FOUND";
|
|
94
95
|
readonly MARGIN_ADJUSTMENT_FAILED: "MARGIN_ADJUSTMENT_FAILED";
|
|
95
96
|
readonly TPSL_UPDATE_FAILED: "TPSL_UPDATE_FAILED";
|
|
96
97
|
readonly TPSL_PROTECTION_LOST: "TPSL_PROTECTION_LOST";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perpsErrorCodes.d.mts","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"perpsErrorCodes.d.mts","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHpB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/perpsErrorCodes.mjs
CHANGED
|
@@ -110,6 +110,7 @@ export const PERPS_ERROR_CODES = {
|
|
|
110
110
|
INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',
|
|
111
111
|
REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',
|
|
112
112
|
POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',
|
|
113
|
+
POSITION_NOT_FOUND: 'POSITION_NOT_FOUND',
|
|
113
114
|
MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',
|
|
114
115
|
TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',
|
|
115
116
|
TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perpsErrorCodes.mjs","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error codes for PerpsController\n * These codes are returned to the UI layer for translation\n * Extracted to separate file to avoid circular dependencies with translatePerpsError\n */\nexport const PERPS_ERROR_CODES = {\n CLIENT_NOT_INITIALIZED: 'CLIENT_NOT_INITIALIZED',\n CLIENT_REINITIALIZING: 'CLIENT_REINITIALIZING',\n PROVIDER_NOT_AVAILABLE: 'PROVIDER_NOT_AVAILABLE',\n PROVIDER_NOT_FOUND: 'PROVIDER_NOT_FOUND',\n PROVIDER_LIFECYCLE_STALE: 'PROVIDER_LIFECYCLE_STALE',\n TOKEN_NOT_SUPPORTED: 'TOKEN_NOT_SUPPORTED',\n BRIDGE_CONTRACT_NOT_FOUND: 'BRIDGE_CONTRACT_NOT_FOUND',\n WITHDRAW_FAILED: 'WITHDRAW_FAILED',\n POSITIONS_FAILED: 'POSITIONS_FAILED',\n ACCOUNT_STATE_FAILED: 'ACCOUNT_STATE_FAILED',\n MARKETS_FAILED: 'MARKETS_FAILED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n // Provider-agnostic order errors\n ORDER_LEVERAGE_REDUCTION_FAILED: 'ORDER_LEVERAGE_REDUCTION_FAILED',\n // HyperLiquid-specific order errors\n IOC_CANCEL: 'IOC_CANCEL', // Order could not immediately match (insufficient liquidity)\n // Connection errors\n CONNECTION_TIMEOUT: 'CONNECTION_TIMEOUT',\n // Validation errors - withdraw\n WITHDRAW_ASSET_ID_REQUIRED: 'WITHDRAW_ASSET_ID_REQUIRED',\n WITHDRAW_AMOUNT_REQUIRED: 'WITHDRAW_AMOUNT_REQUIRED',\n WITHDRAW_AMOUNT_POSITIVE: 'WITHDRAW_AMOUNT_POSITIVE',\n WITHDRAW_INVALID_DESTINATION: 'WITHDRAW_INVALID_DESTINATION',\n WITHDRAW_ASSET_NOT_SUPPORTED: 'WITHDRAW_ASSET_NOT_SUPPORTED',\n WITHDRAW_INSUFFICIENT_BALANCE: 'WITHDRAW_INSUFFICIENT_BALANCE',\n // Validation errors - deposit\n DEPOSIT_ASSET_ID_REQUIRED: 'DEPOSIT_ASSET_ID_REQUIRED',\n DEPOSIT_AMOUNT_REQUIRED: 'DEPOSIT_AMOUNT_REQUIRED',\n DEPOSIT_AMOUNT_POSITIVE: 'DEPOSIT_AMOUNT_POSITIVE',\n DEPOSIT_MINIMUM_AMOUNT: 'DEPOSIT_MINIMUM_AMOUNT',\n // Validation errors - order\n ORDER_COIN_REQUIRED: 'ORDER_COIN_REQUIRED',\n ORDER_LIMIT_PRICE_REQUIRED: 'ORDER_LIMIT_PRICE_REQUIRED',\n ORDER_PRICE_POSITIVE: 'ORDER_PRICE_POSITIVE',\n ORDER_UNKNOWN_COIN: 'ORDER_UNKNOWN_COIN',\n ORDER_SIZE_POSITIVE: 'ORDER_SIZE_POSITIVE',\n ORDER_PRICE_REQUIRED: 'ORDER_PRICE_REQUIRED',\n ORDER_SIZE_MIN: 'ORDER_SIZE_MIN',\n ORDER_LEVERAGE_INVALID: 'ORDER_LEVERAGE_INVALID',\n ORDER_LEVERAGE_BELOW_POSITION: 'ORDER_LEVERAGE_BELOW_POSITION',\n ORDER_MAX_VALUE_EXCEEDED: 'ORDER_MAX_VALUE_EXCEEDED',\n // Validation errors - trigger placement (stop / take profit) and partial TP/SL\n ORDER_TRIGGER_PRICE_REQUIRED: 'ORDER_TRIGGER_PRICE_REQUIRED', // stop_*/take_profit_* placed without a trigger price\n ORDER_TRIGGER_PRICE_POSITIVE: 'ORDER_TRIGGER_PRICE_POSITIVE',\n ORDER_TRIGGER_PRICE_NOT_SUPPORTED: 'ORDER_TRIGGER_PRICE_NOT_SUPPORTED', // Trigger price supplied for a market/limit order\n ORDER_TRIGGER_TPSL_UNSUPPORTED: 'ORDER_TRIGGER_TPSL_UNSUPPORTED', // Attached TP/SL on a trigger placement\n ORDER_TPSL_SIZE_INVALID: 'ORDER_TPSL_SIZE_INVALID', // Partial TP/SL size non-positive, larger than the order, or missing its price\n ORDER_EDIT_TRIGGER_UNSUPPORTED: 'ORDER_EDIT_TRIGGER_UNSUPPORTED', // editOrder cannot turn a resting order into a trigger placement\n ORDER_TPSL_LINKAGE_CONFLICT: 'ORDER_TPSL_LINKAGE_CONFLICT', // tpslLinkage and the deprecated grouping disagree\n ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED:\n 'ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED', // Position-linked TP/SL requested on an order placement; use updatePositionTPSL\n ORDER_TPSL_LINKAGE_REQUIRED: 'ORDER_TPSL_LINKAGE_REQUIRED', // Attached TP/SL requested with no linkage to parent or position\n ORDER_EDIT_ORDER_UNVERIFIABLE: 'ORDER_EDIT_ORDER_UNVERIFIABLE', // editOrder cannot confirm the resting order's placement type\n ORDER_TIME_IN_FORCE_NOT_SUPPORTED: 'ORDER_TIME_IN_FORCE_NOT_SUPPORTED', // Time in force supplied for an order shape that cannot carry one\n // Validation errors - strategy placement (twap / scale / chase)\n ORDER_STRATEGY_PARAMS_NOT_SUPPORTED: 'ORDER_STRATEGY_PARAMS_NOT_SUPPORTED', // Strategy field supplied on an order type that does not own it\n ORDER_STRATEGY_FIELD_UNSUPPORTED: 'ORDER_STRATEGY_FIELD_UNSUPPORTED', // price / triggerPrice / timeInForce / attached TP/SL supplied on a strategy placement\n ORDER_STRATEGY_MARKET_UNSUPPORTED: 'ORDER_STRATEGY_MARKET_UNSUPPORTED', // The provider cannot run a strategy placement on this market\n ORDER_STRATEGY_ROUTE_UNAVAILABLE: 'ORDER_STRATEGY_ROUTE_UNAVAILABLE', // The requested strategy provider route does not match the active direct provider\n ORDER_STRATEGY_HANDLE_UNKNOWN: 'ORDER_STRATEGY_HANDLE_UNKNOWN', // Strategy cancel handle is invalid or this provider session does not hold it\n ORDER_EDIT_STRATEGY_UNSUPPORTED: 'ORDER_EDIT_STRATEGY_UNSUPPORTED', // editOrder cannot modify a strategy placement; cancel by its handle and place again\n ORDER_STRATEGY_CANCEL_INCOMPLETE: 'ORDER_STRATEGY_CANCEL_INCOMPLETE', // Part of a strategy placement is still resting after a cancel; the handle stays valid for a retry\n ORDER_TWAP_DURATION_REQUIRED: 'ORDER_TWAP_DURATION_REQUIRED', // TWAP placed without twapDuration\n ORDER_TWAP_DURATION_INVALID: 'ORDER_TWAP_DURATION_INVALID', // twapDuration not a whole number of minutes within the venue's bounds\n ORDER_SCALE_RANGE_REQUIRED: 'ORDER_SCALE_RANGE_REQUIRED', // Scale placed without both ladder bounds\n ORDER_SCALE_RANGE_INVALID: 'ORDER_SCALE_RANGE_INVALID', // Scale ladder bounds or skew are invalid\n ORDER_SCALE_COUNT_INVALID: 'ORDER_SCALE_COUNT_INVALID', // scaleNumOrders missing, non-integer, or outside the supported ladder size\n ORDER_SCALE_SIZE_TOO_SMALL: 'ORDER_SCALE_SIZE_TOO_SMALL', // Total size cannot give every ladder rung a non-zero slice\n ORDER_SCALE_NOTIONAL_TOO_SMALL: 'ORDER_SCALE_NOTIONAL_TOO_SMALL', // Ladder notional split across the rungs leaves each below the venue's per-order minimum\n ORDER_TWAP_NOTIONAL_TOO_SMALL: 'ORDER_TWAP_NOTIONAL_TOO_SMALL', // TWAP total below the venue's documented minimum TWAP order size\n ORDER_CHASE_INTERVAL_INVALID: 'ORDER_CHASE_INTERVAL_INVALID', // chaseIntervalMs below the minimum poll interval\n ORDER_CHASE_DURATION_INVALID: 'ORDER_CHASE_DURATION_INVALID', // chaseMaxDurationMs shorter than one poll interval, or chaseMaxRepricings non-positive\n ORDER_CHASE_MAX_DISTANCE_INVALID: 'ORDER_CHASE_MAX_DISTANCE_INVALID', // chaseMaxDistanceBps must be finite, greater than 0, and less than 10,000 when supplied\n ORDER_CHASE_ABANDONED: 'ORDER_CHASE_ABANDONED', // The provider was torn down while the chase was being placed; its order rests but no strategy runs\n ORDER_CHASE_LIMIT_REACHED: 'ORDER_CHASE_LIMIT_REACHED', // The venue's cap on simultaneously active chase orders is already in use\n ORDER_CHASE_TOUCH_UNAVAILABLE: 'ORDER_CHASE_TOUCH_UNAVAILABLE', // The order book returned no price on the side the chase must rest at\n // HyperLiquid client/service errors\n EXCHANGE_CLIENT_NOT_AVAILABLE: 'EXCHANGE_CLIENT_NOT_AVAILABLE',\n INFO_CLIENT_NOT_AVAILABLE: 'INFO_CLIENT_NOT_AVAILABLE',\n SUBSCRIPTION_CLIENT_NOT_AVAILABLE: 'SUBSCRIPTION_CLIENT_NOT_AVAILABLE',\n // Wallet/account errors\n NO_ACCOUNT_SELECTED: 'NO_ACCOUNT_SELECTED',\n KEYRING_LOCKED: 'KEYRING_LOCKED',\n INVALID_ADDRESS_FORMAT: 'INVALID_ADDRESS_FORMAT',\n // Wallet has no account on the exchange yet (HyperLiquid creates accounts\n // server-side on the first USDC credit). Actionable: the user must fund the\n // account before any order can be placed.\n EXCHANGE_ACCOUNT_NOT_FOUND: 'EXCHANGE_ACCOUNT_NOT_FOUND',\n // HyperLiquid exchange rejects agent-signed writes for multi-sig accounts\n // without a multi-sig wrapper, or when the action nonce is stale/reused.\n EXCHANGE_MULTI_SIG_REQUIRED: 'EXCHANGE_MULTI_SIG_REQUIRED',\n EXCHANGE_INVALID_NONCE: 'EXCHANGE_INVALID_NONCE',\n // Transfer/swap errors\n TRANSFER_FAILED: 'TRANSFER_FAILED',\n SWAP_FAILED: 'SWAP_FAILED',\n SPOT_PAIR_NOT_FOUND: 'SPOT_PAIR_NOT_FOUND',\n PRICE_UNAVAILABLE: 'PRICE_UNAVAILABLE',\n // Market/collateral errors\n UNSUPPORTED_COLLATERAL: 'UNSUPPORTED_COLLATERAL', // DEX collateral token is not USDC (TAT-3304)\n // Batch operation errors\n BATCH_CANCEL_FAILED: 'BATCH_CANCEL_FAILED',\n BATCH_CLOSE_FAILED: 'BATCH_CLOSE_FAILED',\n // Position/margin errors\n INSUFFICIENT_MARGIN: 'INSUFFICIENT_MARGIN',\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',\n POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',\n MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',\n TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',\n TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',\n // Order execution errors\n ORDER_REJECTED: 'ORDER_REJECTED',\n SLIPPAGE_EXCEEDED: 'SLIPPAGE_EXCEEDED',\n RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',\n // Network/service errors\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n NETWORK_ERROR: 'NETWORK_ERROR',\n} as const;\n\nexport type PerpsErrorCode =\n (typeof PERPS_ERROR_CODES)[keyof typeof PERPS_ERROR_CODES];\n"]}
|
|
1
|
+
{"version":3,"file":"perpsErrorCodes.mjs","sourceRoot":"","sources":["../src/perpsErrorCodes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error codes for PerpsController\n * These codes are returned to the UI layer for translation\n * Extracted to separate file to avoid circular dependencies with translatePerpsError\n */\nexport const PERPS_ERROR_CODES = {\n CLIENT_NOT_INITIALIZED: 'CLIENT_NOT_INITIALIZED',\n CLIENT_REINITIALIZING: 'CLIENT_REINITIALIZING',\n PROVIDER_NOT_AVAILABLE: 'PROVIDER_NOT_AVAILABLE',\n PROVIDER_NOT_FOUND: 'PROVIDER_NOT_FOUND',\n PROVIDER_LIFECYCLE_STALE: 'PROVIDER_LIFECYCLE_STALE',\n TOKEN_NOT_SUPPORTED: 'TOKEN_NOT_SUPPORTED',\n BRIDGE_CONTRACT_NOT_FOUND: 'BRIDGE_CONTRACT_NOT_FOUND',\n WITHDRAW_FAILED: 'WITHDRAW_FAILED',\n POSITIONS_FAILED: 'POSITIONS_FAILED',\n ACCOUNT_STATE_FAILED: 'ACCOUNT_STATE_FAILED',\n MARKETS_FAILED: 'MARKETS_FAILED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n // Provider-agnostic order errors\n ORDER_LEVERAGE_REDUCTION_FAILED: 'ORDER_LEVERAGE_REDUCTION_FAILED',\n // HyperLiquid-specific order errors\n IOC_CANCEL: 'IOC_CANCEL', // Order could not immediately match (insufficient liquidity)\n // Connection errors\n CONNECTION_TIMEOUT: 'CONNECTION_TIMEOUT',\n // Validation errors - withdraw\n WITHDRAW_ASSET_ID_REQUIRED: 'WITHDRAW_ASSET_ID_REQUIRED',\n WITHDRAW_AMOUNT_REQUIRED: 'WITHDRAW_AMOUNT_REQUIRED',\n WITHDRAW_AMOUNT_POSITIVE: 'WITHDRAW_AMOUNT_POSITIVE',\n WITHDRAW_INVALID_DESTINATION: 'WITHDRAW_INVALID_DESTINATION',\n WITHDRAW_ASSET_NOT_SUPPORTED: 'WITHDRAW_ASSET_NOT_SUPPORTED',\n WITHDRAW_INSUFFICIENT_BALANCE: 'WITHDRAW_INSUFFICIENT_BALANCE',\n // Validation errors - deposit\n DEPOSIT_ASSET_ID_REQUIRED: 'DEPOSIT_ASSET_ID_REQUIRED',\n DEPOSIT_AMOUNT_REQUIRED: 'DEPOSIT_AMOUNT_REQUIRED',\n DEPOSIT_AMOUNT_POSITIVE: 'DEPOSIT_AMOUNT_POSITIVE',\n DEPOSIT_MINIMUM_AMOUNT: 'DEPOSIT_MINIMUM_AMOUNT',\n // Validation errors - order\n ORDER_COIN_REQUIRED: 'ORDER_COIN_REQUIRED',\n ORDER_LIMIT_PRICE_REQUIRED: 'ORDER_LIMIT_PRICE_REQUIRED',\n ORDER_PRICE_POSITIVE: 'ORDER_PRICE_POSITIVE',\n ORDER_UNKNOWN_COIN: 'ORDER_UNKNOWN_COIN',\n ORDER_SIZE_POSITIVE: 'ORDER_SIZE_POSITIVE',\n ORDER_PRICE_REQUIRED: 'ORDER_PRICE_REQUIRED',\n ORDER_SIZE_MIN: 'ORDER_SIZE_MIN',\n ORDER_LEVERAGE_INVALID: 'ORDER_LEVERAGE_INVALID',\n ORDER_LEVERAGE_BELOW_POSITION: 'ORDER_LEVERAGE_BELOW_POSITION',\n ORDER_MAX_VALUE_EXCEEDED: 'ORDER_MAX_VALUE_EXCEEDED',\n // Validation errors - trigger placement (stop / take profit) and partial TP/SL\n ORDER_TRIGGER_PRICE_REQUIRED: 'ORDER_TRIGGER_PRICE_REQUIRED', // stop_*/take_profit_* placed without a trigger price\n ORDER_TRIGGER_PRICE_POSITIVE: 'ORDER_TRIGGER_PRICE_POSITIVE',\n ORDER_TRIGGER_PRICE_NOT_SUPPORTED: 'ORDER_TRIGGER_PRICE_NOT_SUPPORTED', // Trigger price supplied for a market/limit order\n ORDER_TRIGGER_TPSL_UNSUPPORTED: 'ORDER_TRIGGER_TPSL_UNSUPPORTED', // Attached TP/SL on a trigger placement\n ORDER_TPSL_SIZE_INVALID: 'ORDER_TPSL_SIZE_INVALID', // Partial TP/SL size non-positive, larger than the order, or missing its price\n ORDER_EDIT_TRIGGER_UNSUPPORTED: 'ORDER_EDIT_TRIGGER_UNSUPPORTED', // editOrder cannot turn a resting order into a trigger placement\n ORDER_TPSL_LINKAGE_CONFLICT: 'ORDER_TPSL_LINKAGE_CONFLICT', // tpslLinkage and the deprecated grouping disagree\n ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED:\n 'ORDER_TPSL_POSITION_LINKAGE_UNSUPPORTED', // Position-linked TP/SL requested on an order placement; use updatePositionTPSL\n ORDER_TPSL_LINKAGE_REQUIRED: 'ORDER_TPSL_LINKAGE_REQUIRED', // Attached TP/SL requested with no linkage to parent or position\n ORDER_EDIT_ORDER_UNVERIFIABLE: 'ORDER_EDIT_ORDER_UNVERIFIABLE', // editOrder cannot confirm the resting order's placement type\n ORDER_TIME_IN_FORCE_NOT_SUPPORTED: 'ORDER_TIME_IN_FORCE_NOT_SUPPORTED', // Time in force supplied for an order shape that cannot carry one\n // Validation errors - strategy placement (twap / scale / chase)\n ORDER_STRATEGY_PARAMS_NOT_SUPPORTED: 'ORDER_STRATEGY_PARAMS_NOT_SUPPORTED', // Strategy field supplied on an order type that does not own it\n ORDER_STRATEGY_FIELD_UNSUPPORTED: 'ORDER_STRATEGY_FIELD_UNSUPPORTED', // price / triggerPrice / timeInForce / attached TP/SL supplied on a strategy placement\n ORDER_STRATEGY_MARKET_UNSUPPORTED: 'ORDER_STRATEGY_MARKET_UNSUPPORTED', // The provider cannot run a strategy placement on this market\n ORDER_STRATEGY_ROUTE_UNAVAILABLE: 'ORDER_STRATEGY_ROUTE_UNAVAILABLE', // The requested strategy provider route does not match the active direct provider\n ORDER_STRATEGY_HANDLE_UNKNOWN: 'ORDER_STRATEGY_HANDLE_UNKNOWN', // Strategy cancel handle is invalid or this provider session does not hold it\n ORDER_EDIT_STRATEGY_UNSUPPORTED: 'ORDER_EDIT_STRATEGY_UNSUPPORTED', // editOrder cannot modify a strategy placement; cancel by its handle and place again\n ORDER_STRATEGY_CANCEL_INCOMPLETE: 'ORDER_STRATEGY_CANCEL_INCOMPLETE', // Part of a strategy placement is still resting after a cancel; the handle stays valid for a retry\n ORDER_TWAP_DURATION_REQUIRED: 'ORDER_TWAP_DURATION_REQUIRED', // TWAP placed without twapDuration\n ORDER_TWAP_DURATION_INVALID: 'ORDER_TWAP_DURATION_INVALID', // twapDuration not a whole number of minutes within the venue's bounds\n ORDER_SCALE_RANGE_REQUIRED: 'ORDER_SCALE_RANGE_REQUIRED', // Scale placed without both ladder bounds\n ORDER_SCALE_RANGE_INVALID: 'ORDER_SCALE_RANGE_INVALID', // Scale ladder bounds or skew are invalid\n ORDER_SCALE_COUNT_INVALID: 'ORDER_SCALE_COUNT_INVALID', // scaleNumOrders missing, non-integer, or outside the supported ladder size\n ORDER_SCALE_SIZE_TOO_SMALL: 'ORDER_SCALE_SIZE_TOO_SMALL', // Total size cannot give every ladder rung a non-zero slice\n ORDER_SCALE_NOTIONAL_TOO_SMALL: 'ORDER_SCALE_NOTIONAL_TOO_SMALL', // Ladder notional split across the rungs leaves each below the venue's per-order minimum\n ORDER_TWAP_NOTIONAL_TOO_SMALL: 'ORDER_TWAP_NOTIONAL_TOO_SMALL', // TWAP total below the venue's documented minimum TWAP order size\n ORDER_CHASE_INTERVAL_INVALID: 'ORDER_CHASE_INTERVAL_INVALID', // chaseIntervalMs below the minimum poll interval\n ORDER_CHASE_DURATION_INVALID: 'ORDER_CHASE_DURATION_INVALID', // chaseMaxDurationMs shorter than one poll interval, or chaseMaxRepricings non-positive\n ORDER_CHASE_MAX_DISTANCE_INVALID: 'ORDER_CHASE_MAX_DISTANCE_INVALID', // chaseMaxDistanceBps must be finite, greater than 0, and less than 10,000 when supplied\n ORDER_CHASE_ABANDONED: 'ORDER_CHASE_ABANDONED', // The provider was torn down while the chase was being placed; its order rests but no strategy runs\n ORDER_CHASE_LIMIT_REACHED: 'ORDER_CHASE_LIMIT_REACHED', // The venue's cap on simultaneously active chase orders is already in use\n ORDER_CHASE_TOUCH_UNAVAILABLE: 'ORDER_CHASE_TOUCH_UNAVAILABLE', // The order book returned no price on the side the chase must rest at\n // HyperLiquid client/service errors\n EXCHANGE_CLIENT_NOT_AVAILABLE: 'EXCHANGE_CLIENT_NOT_AVAILABLE',\n INFO_CLIENT_NOT_AVAILABLE: 'INFO_CLIENT_NOT_AVAILABLE',\n SUBSCRIPTION_CLIENT_NOT_AVAILABLE: 'SUBSCRIPTION_CLIENT_NOT_AVAILABLE',\n // Wallet/account errors\n NO_ACCOUNT_SELECTED: 'NO_ACCOUNT_SELECTED',\n KEYRING_LOCKED: 'KEYRING_LOCKED',\n INVALID_ADDRESS_FORMAT: 'INVALID_ADDRESS_FORMAT',\n // Wallet has no account on the exchange yet (HyperLiquid creates accounts\n // server-side on the first USDC credit). Actionable: the user must fund the\n // account before any order can be placed.\n EXCHANGE_ACCOUNT_NOT_FOUND: 'EXCHANGE_ACCOUNT_NOT_FOUND',\n // HyperLiquid exchange rejects agent-signed writes for multi-sig accounts\n // without a multi-sig wrapper, or when the action nonce is stale/reused.\n EXCHANGE_MULTI_SIG_REQUIRED: 'EXCHANGE_MULTI_SIG_REQUIRED',\n EXCHANGE_INVALID_NONCE: 'EXCHANGE_INVALID_NONCE',\n // Transfer/swap errors\n TRANSFER_FAILED: 'TRANSFER_FAILED',\n SWAP_FAILED: 'SWAP_FAILED',\n SPOT_PAIR_NOT_FOUND: 'SPOT_PAIR_NOT_FOUND',\n PRICE_UNAVAILABLE: 'PRICE_UNAVAILABLE',\n // Market/collateral errors\n UNSUPPORTED_COLLATERAL: 'UNSUPPORTED_COLLATERAL', // DEX collateral token is not USDC (TAT-3304)\n // Batch operation errors\n BATCH_CANCEL_FAILED: 'BATCH_CANCEL_FAILED',\n BATCH_CLOSE_FAILED: 'BATCH_CLOSE_FAILED',\n // Position/margin errors\n INSUFFICIENT_MARGIN: 'INSUFFICIENT_MARGIN',\n INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',\n REDUCE_ONLY_VIOLATION: 'REDUCE_ONLY_VIOLATION',\n POSITION_WOULD_FLIP: 'POSITION_WOULD_FLIP',\n POSITION_NOT_FOUND: 'POSITION_NOT_FOUND',\n MARGIN_ADJUSTMENT_FAILED: 'MARGIN_ADJUSTMENT_FAILED',\n TPSL_UPDATE_FAILED: 'TPSL_UPDATE_FAILED',\n TPSL_PROTECTION_LOST: 'TPSL_PROTECTION_LOST',\n // Order execution errors\n ORDER_REJECTED: 'ORDER_REJECTED',\n SLIPPAGE_EXCEEDED: 'SLIPPAGE_EXCEEDED',\n RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',\n // Network/service errors\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n NETWORK_ERROR: 'NETWORK_ERROR',\n} as const;\n\nexport type PerpsErrorCode =\n (typeof PERPS_ERROR_CODES)[keyof typeof PERPS_ERROR_CODES];\n"]}
|
|
@@ -2188,7 +2188,7 @@ class HyperLiquidProvider {
|
|
|
2188
2188
|
// when available, otherwise query that DEX over HTTP. If neither source
|
|
2189
2189
|
// answers, fail closed: trusting the snapshot would recreate the stale
|
|
2190
2190
|
// side/size reduce-only rejection this method is meant to prevent.
|
|
2191
|
-
const currentPositions = await __classPrivateFieldGet(this, _HyperLiquidProvider_instances, "m", _HyperLiquidProvider_getPositionsForOperation).call(this, (0, hyperLiquidAdapter_js_1.parseAssetName)(symbol).dex ?? '');
|
|
2191
|
+
const currentPositions = await __classPrivateFieldGet(this, _HyperLiquidProvider_instances, "m", _HyperLiquidProvider_getPositionsForOperation).call(this, (0, hyperLiquidAdapter_js_1.parseAssetName)(symbol).dex ?? '', { revalidateMissingSymbol: symbol });
|
|
2192
2192
|
const position = currentPositions.find((pos) => pos.symbol === symbol);
|
|
2193
2193
|
if (livePosition &&
|
|
2194
2194
|
position &&
|
|
@@ -2200,7 +2200,7 @@ class HyperLiquidProvider {
|
|
|
2200
2200
|
});
|
|
2201
2201
|
}
|
|
2202
2202
|
if (!position) {
|
|
2203
|
-
throw new Error(
|
|
2203
|
+
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.POSITION_NOT_FOUND);
|
|
2204
2204
|
}
|
|
2205
2205
|
const positionSize = Math.abs(parseFloat(position.size));
|
|
2206
2206
|
const isLong = parseFloat(position.size) > 0;
|
|
@@ -2761,7 +2761,7 @@ class HyperLiquidProvider {
|
|
|
2761
2761
|
});
|
|
2762
2762
|
}
|
|
2763
2763
|
if (!position) {
|
|
2764
|
-
throw new Error(
|
|
2764
|
+
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.POSITION_NOT_FOUND);
|
|
2765
2765
|
}
|
|
2766
2766
|
const positionSize = parseFloat(position.size);
|
|
2767
2767
|
const isBuy = positionSize < 0;
|
|
@@ -2902,7 +2902,7 @@ class HyperLiquidProvider {
|
|
|
2902
2902
|
const positions = await __classPrivateFieldGet(this, _HyperLiquidProvider_instances, "m", _HyperLiquidProvider_getPositionsForOperation).call(this, (0, hyperLiquidAdapter_js_1.parseAssetName)(symbol).dex ?? '');
|
|
2903
2903
|
const position = positions.find((pos) => pos.symbol === symbol);
|
|
2904
2904
|
if (!position) {
|
|
2905
|
-
throw new Error(
|
|
2905
|
+
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.POSITION_NOT_FOUND);
|
|
2906
2906
|
}
|
|
2907
2907
|
// Determine position direction
|
|
2908
2908
|
const isBuy = parseFloat(position.size) > 0; // true for long, false for short
|
|
@@ -10246,8 +10246,11 @@ async function _HyperLiquidProvider_getStandaloneValidatedDexs() {
|
|
|
10246
10246
|
*
|
|
10247
10247
|
* A symbol-specific caller can use its current-connection DEX slice directly.
|
|
10248
10248
|
* The current-epoch slice wins before any REST request because it is the
|
|
10249
|
-
* provider's live subscription source for that exact DEX.
|
|
10250
|
-
*
|
|
10249
|
+
* provider's live subscription source for that exact DEX. A caller may opt
|
|
10250
|
+
* into one targeted REST revalidation when a required symbol is absent, which
|
|
10251
|
+
* covers the post-fill window before the next WebSocket position update. If
|
|
10252
|
+
* the target DEX has not published, the caller uses REST instead of a stale
|
|
10253
|
+
* aggregate.
|
|
10251
10254
|
*
|
|
10252
10255
|
* A whole-list caller uses one shallow-copied WebSocket snapshot only when
|
|
10253
10256
|
* every configured DEX is current. Otherwise it falls back to REST. No path
|
|
@@ -10256,15 +10259,31 @@ async function _HyperLiquidProvider_getStandaloneValidatedDexs() {
|
|
|
10256
10259
|
*
|
|
10257
10260
|
* @param targetDex - DEX for a single-symbol lookup, or undefined for a full
|
|
10258
10261
|
* position list.
|
|
10262
|
+
* @param options - Optional lookup behavior for a symbol-specific operation.
|
|
10263
|
+
* @param options.revalidateMissingSymbol - Query the target DEX over REST when
|
|
10264
|
+
* its current WebSocket slice does not contain this symbol.
|
|
10259
10265
|
* @returns Positions from one provenance-safe cache/REST path.
|
|
10260
10266
|
*/
|
|
10261
|
-
async function _HyperLiquidProvider_getPositionsForOperation(targetDex) {
|
|
10267
|
+
async function _HyperLiquidProvider_getPositionsForOperation(targetDex, options = {}) {
|
|
10262
10268
|
if (targetDex !== undefined) {
|
|
10263
10269
|
const targetPositions = __classPrivateFieldGet(this, _HyperLiquidProvider_subscriptionService, "f").getCachedPositionsForDex(targetDex);
|
|
10264
|
-
if (targetPositions
|
|
10265
|
-
|
|
10270
|
+
if (targetPositions === null) {
|
|
10271
|
+
__classPrivateFieldGet(this, _HyperLiquidProvider_deps, "f").debugLogger.log('Target DEX position cache unavailable: fetching REST positions', { dex: targetDex || 'main' });
|
|
10272
|
+
}
|
|
10273
|
+
else {
|
|
10274
|
+
const { revalidateMissingSymbol } = options;
|
|
10275
|
+
const shouldRevalidate = revalidateMissingSymbol !== undefined &&
|
|
10276
|
+
targetPositions.find((position) => position.symbol === revalidateMissingSymbol) === undefined;
|
|
10277
|
+
if (shouldRevalidate) {
|
|
10278
|
+
__classPrivateFieldGet(this, _HyperLiquidProvider_deps, "f").debugLogger.log('Target symbol missing from position cache: revalidating REST positions', {
|
|
10279
|
+
dex: targetDex || 'main',
|
|
10280
|
+
symbol: revalidateMissingSymbol,
|
|
10281
|
+
});
|
|
10282
|
+
}
|
|
10283
|
+
else {
|
|
10284
|
+
return [...targetPositions];
|
|
10285
|
+
}
|
|
10266
10286
|
}
|
|
10267
|
-
__classPrivateFieldGet(this, _HyperLiquidProvider_deps, "f").debugLogger.log('Target DEX position cache unavailable: fetching REST positions', { dex: targetDex || 'main' });
|
|
10268
10287
|
const { answered, positions } = await __classPrivateFieldGet(this, _HyperLiquidProvider_instances, "m", _HyperLiquidProvider_queryDexPositions).call(this, targetDex || null);
|
|
10269
10288
|
if (!answered) {
|
|
10270
10289
|
throw new Error(perpsErrorCodes_js_1.PERPS_ERROR_CODES.PROVIDER_NOT_AVAILABLE);
|