@pear-protocol/hyperliquid-sdk 0.0.12 → 0.0.13

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.
@@ -4,3 +4,4 @@ export { useCalculatedOpenPositions } from './useCalculatedPositions';
4
4
  export { useCalculatedAccountSummary } from './useCalculatedAccountSummary';
5
5
  export { useTokenSelection } from './useTokenSelection';
6
6
  export type { TokenSelectorConfig, UseTokenSelectionReturn } from './useTokenSelection';
7
+ export { useWebData2 } from './use-webdata2';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hook to access webData2 and native WebSocket state
3
+ */
4
+ export declare const useWebData2: () => {
5
+ webData2: import("..").WebData2Response | null;
6
+ allMids: import("..").WsAllMidsData | null;
7
+ isConnected: boolean;
8
+ connectionStatus: import("react-use-websocket").ReadyState;
9
+ error: string | null;
10
+ };
@@ -15,6 +15,7 @@ export interface UseTokenSelectionReturn {
15
15
  sumNetFunding: number;
16
16
  maxLeverage: number;
17
17
  minMargin: number;
18
+ leverageMatched: boolean;
18
19
  setLongTokens: (tokens: TokenSelection[]) => void;
19
20
  setShortTokens: (tokens: TokenSelection[]) => void;
20
21
  updateTokenWeight: (isLong: boolean, index: number, newWeight: number) => void;
@@ -1,13 +1,15 @@
1
1
  import { ReadyState } from 'react-use-websocket';
2
- import type { WebData2Response, WsAllMidsData } from './types';
2
+ import type { WebData2Response, WsAllMidsData, ActiveAssetData } from './types';
3
3
  export interface UseHyperliquidNativeWebSocketProps {
4
4
  address: string | null;
5
+ tokens?: string[];
5
6
  }
6
7
  export interface UseHyperliquidNativeWebSocketReturn {
7
8
  webData2: WebData2Response | null;
8
9
  allMids: WsAllMidsData | null;
10
+ activeAssetData: Record<string, ActiveAssetData> | null;
9
11
  connectionStatus: ReadyState;
10
12
  isConnected: boolean;
11
13
  lastError: string | null;
12
14
  }
13
- export declare const useHyperliquidNativeWebSocket: ({ address }: UseHyperliquidNativeWebSocketProps) => UseHyperliquidNativeWebSocketReturn;
15
+ export declare const useHyperliquidNativeWebSocket: ({ address, tokens }: UseHyperliquidNativeWebSocketProps) => UseHyperliquidNativeWebSocketReturn;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
+ import * as react_use_websocket from 'react-use-websocket';
2
3
  import { ReadyState } from 'react-use-websocket';
3
4
 
4
5
  /**
@@ -215,7 +216,7 @@ type WebSocketConnectionState = 'connecting' | 'connected' | 'disconnected' | 'e
215
216
  /**
216
217
  * WebSocket channels
217
218
  */
218
- type WebSocketChannel = 'trade-histories' | 'open-positions' | 'open-orders' | 'account-summary' | 'webData2' | 'allMids';
219
+ type WebSocketChannel = 'trade-histories' | 'open-positions' | 'open-orders' | 'account-summary' | 'webData2' | 'allMids' | 'activeAssetData';
219
220
  /**
220
221
  * WebSocket subscription message
221
222
  */
@@ -542,6 +543,24 @@ interface RawPositionDto {
542
543
  longAssets: RawAssetDto[];
543
544
  shortAssets: RawAssetDto[];
544
545
  }
546
+ /**
547
+ * Leverage information from activeAssetData
548
+ */
549
+ interface LeverageInfo {
550
+ type: string;
551
+ value: number;
552
+ }
553
+ /**
554
+ * Active asset data from WebSocket
555
+ */
556
+ interface ActiveAssetData {
557
+ user: string;
558
+ coin: string;
559
+ leverage: LeverageInfo;
560
+ maxTradeSzs: [string, string];
561
+ availableToTrade: [string, string];
562
+ markPx: string;
563
+ }
545
564
  /**
546
565
  * Token metadata from WebData2 and AllMids
547
566
  */
@@ -556,6 +575,9 @@ interface TokenMetadata {
556
575
  oraclePrice: number;
557
576
  openInterest: string;
558
577
  dayVolume: string;
578
+ leverage?: LeverageInfo;
579
+ maxTradeSzs?: [string, string];
580
+ availableToTrade?: [string, string];
559
581
  }
560
582
  /**
561
583
  * Enhanced token selection with weight and metadata for basket trading
@@ -764,6 +786,7 @@ interface UseTokenSelectionReturn {
764
786
  sumNetFunding: number;
765
787
  maxLeverage: number;
766
788
  minMargin: number;
789
+ leverageMatched: boolean;
767
790
  setLongTokens: (tokens: TokenSelection[]) => void;
768
791
  setShortTokens: (tokens: TokenSelection[]) => void;
769
792
  updateTokenWeight: (isLong: boolean, index: number, newWeight: number) => void;
@@ -781,6 +804,17 @@ interface UseTokenSelectionReturn {
781
804
  */
782
805
  declare const useTokenSelection: () => UseTokenSelectionReturn;
783
806
 
807
+ /**
808
+ * Hook to access webData2 and native WebSocket state
809
+ */
810
+ declare const useWebData2: () => {
811
+ webData2: WebData2Response | null;
812
+ allMids: WsAllMidsData | null;
813
+ isConnected: boolean;
814
+ connectionStatus: react_use_websocket.ReadyState;
815
+ error: string | null;
816
+ };
817
+
784
818
  interface WebSocketData {
785
819
  tradeHistories: TradeHistoryDataDto[] | null;
786
820
  openPositions: RawPositionDto[] | null;
@@ -801,15 +835,17 @@ declare const useHyperliquidWebSocket: ({ wsUrl, address }: UseHyperliquidWebSoc
801
835
 
802
836
  interface UseHyperliquidNativeWebSocketProps {
803
837
  address: string | null;
838
+ tokens?: string[];
804
839
  }
805
840
  interface UseHyperliquidNativeWebSocketReturn {
806
841
  webData2: WebData2Response | null;
807
842
  allMids: WsAllMidsData | null;
843
+ activeAssetData: Record<string, ActiveAssetData> | null;
808
844
  connectionStatus: ReadyState;
809
845
  isConnected: boolean;
810
846
  lastError: string | null;
811
847
  }
812
- declare const useHyperliquidNativeWebSocket: ({ address }: UseHyperliquidNativeWebSocketProps) => UseHyperliquidNativeWebSocketReturn;
848
+ declare const useHyperliquidNativeWebSocket: ({ address, tokens }: UseHyperliquidNativeWebSocketProps) => UseHyperliquidNativeWebSocketReturn;
813
849
 
814
850
  /**
815
851
  * Account summary calculation utility class
@@ -875,17 +911,19 @@ declare class TokenMetadataExtractor {
875
911
  * @param symbol - Token symbol
876
912
  * @param webData2 - WebData2 response containing asset context and universe data
877
913
  * @param allMids - AllMids data containing current prices
914
+ * @param activeAssetData - Optional active asset data containing leverage information
878
915
  * @returns TokenMetadata or null if token not found
879
916
  */
880
- static extractTokenMetadata(symbol: string, webData2: WebData2Response | null, allMids: WsAllMidsData | null): TokenMetadata | null;
917
+ static extractTokenMetadata(symbol: string, webData2: WebData2Response | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null): TokenMetadata | null;
881
918
  /**
882
919
  * Extracts metadata for multiple tokens
883
920
  * @param symbols - Array of token symbols
884
921
  * @param webData2 - WebData2 response
885
922
  * @param allMids - AllMids data
923
+ * @param activeAssetData - Optional active asset data containing leverage information
886
924
  * @returns Record of symbol to TokenMetadata
887
925
  */
888
- static extractMultipleTokensMetadata(symbols: string[], webData2: WebData2Response | null, allMids: WsAllMidsData | null): Record<string, TokenMetadata | null>;
926
+ static extractMultipleTokensMetadata(symbols: string[], webData2: WebData2Response | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null): Record<string, TokenMetadata | null>;
889
927
  /**
890
928
  * Checks if token data is available in WebData2
891
929
  * @param symbol - Token symbol
@@ -895,5 +933,5 @@ declare class TokenMetadataExtractor {
895
933
  static isTokenAvailable(symbol: string, webData2: WebData2Response | null): boolean;
896
934
  }
897
935
 
898
- export { AccountSummaryCalculator, ConflictDetector, PearHyperliquidClient, PearHyperliquidProvider, PearMigrationSDK, TokenMetadataExtractor, PearHyperliquidClient as default, useAccountSummary, useAddress, useCalculatedAccountSummary, useCalculatedOpenPositions, useHyperliquidNativeWebSocket, useHyperliquidWebSocket, useMigrationSDK, useOpenOrders, useOpenPositions, usePearHyperliquidClient, useTokenSelection, useTradeHistories };
936
+ export { AccountSummaryCalculator, ConflictDetector, PearHyperliquidClient, PearHyperliquidProvider, PearMigrationSDK, TokenMetadataExtractor, PearHyperliquidClient as default, useAccountSummary, useAddress, useCalculatedAccountSummary, useCalculatedOpenPositions, useHyperliquidNativeWebSocket, useHyperliquidWebSocket, useMigrationSDK, useOpenOrders, useOpenPositions, usePearHyperliquidClient, useTokenSelection, useTradeHistories, useWebData2 };
899
937
  export type { AccountSummaryResponseDto, AgentWalletDto, ApiErrorResponse, ApiResponse, AssetCtx, AssetInformationDetail, AssetPosition, BalanceSummaryDto, CrossMarginSummaryDto, CumFundingDto, MarginSummaryDto, MigrationHookState, MigrationHooks, OpenLimitOrderDto, OpenOrderV1Dto, OpenPositionDto, OpenPositionV1Dto, OrderAssetDto, OrderStatus, PearHyperliquidConfig, PnlDto, PositionAssetDetailDto, PositionSideDto, PositionSyncStatus, RawValueDto, SyncOpenOrderDto, SyncOpenOrderResponseDto, SyncOpenPositionDto, SyncOpenPositionResponseDto, SyncTradeHistoryDto, SyncTradeHistoryResponseDto, TokenConflict, TokenMetadata, TokenSelection, TokenSelectorConfig, TpSlDto, TradeHistoryAssetDataDto, TradeHistoryDataDto, TradeHistoryV1Dto, UniverseAsset, UseTokenSelectionReturn, WebData2Response, WebSocketChannel, WebSocketConnectionState, WebSocketDataMessage, WebSocketMessage, WebSocketResponse, WebSocketSubscribeMessage, WsAllMidsData };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var et=Object.defineProperty;var d=(t,e)=>et(t,"name",{value:e,configurable:!0});import tt from"axios";import ve,{useState as B,useEffect as ce,useRef as nt,createContext as rt,useMemo as D,useContext as ee,useCallback as z}from"react";import ot from"react-dom";class Me{static{d(this,"PearHyperliquidClient")}constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.httpClient=tt.create({baseURL:this.baseUrl,timeout:e.timeout||3e4,headers:{"Content-Type":"application/json",...e.headers}}),this.httpClient.interceptors.response.use(n=>n,n=>{var a,r,o,s,f;const c={statusCode:((a=n.response)===null||a===void 0?void 0:a.status)||500,message:((o=(r=n.response)===null||r===void 0?void 0:r.data)===null||o===void 0?void 0:o.message)||n.message,error:(f=(s=n.response)===null||s===void 0?void 0:s.data)===null||f===void 0?void 0:f.error};return Promise.reject(c)})}getBaseUrl(){return this.baseUrl}setHeaders(e){this.httpClient.defaults.headers={...this.httpClient.defaults.headers,...e}}setAuthToken(e){this.setHeaders({Authorization:`Bearer ${e}`})}async makeRequest(e,n,a){const r=await this.httpClient.request({method:e,url:n,data:a});return{data:r.data,status:r.status,headers:r.headers}}async syncTradeHistory(e){return this.makeRequest("POST","/syncer/trade-histories",e)}async syncOpenPositions(e){return this.makeRequest("POST","/syncer/open-positions",e)}async syncOpenOrders(e){return this.makeRequest("POST","/syncer/open-orders",e)}}class je{static{d(this,"PearMigrationSDK")}constructor(e){this.isTradeHistorySyncRunning=!1,this.isOpenPositionsSyncRunning=!1,this.isOpenOrdersSyncRunning=!1,this.client=e}async syncTradeHistory(e){if(this.isTradeHistorySyncRunning)return null;try{return this.isTradeHistorySyncRunning=!0,await this.client.syncTradeHistory(e)}finally{this.isTradeHistorySyncRunning=!1}}async syncOpenPositions(e){if(this.isOpenPositionsSyncRunning)return null;try{return this.isOpenPositionsSyncRunning=!0,await this.client.syncOpenPositions(e)}finally{this.isOpenPositionsSyncRunning=!1}}async syncOpenOrders(e){if(this.isOpenOrdersSyncRunning)return null;try{return this.isOpenOrdersSyncRunning=!0,await this.client.syncOpenOrders(e)}finally{this.isOpenOrdersSyncRunning=!1}}isSyncInProgress(){return this.isTradeHistorySyncRunning||this.isOpenPositionsSyncRunning||this.isOpenOrdersSyncRunning}isTradeHistorySyncInProgress(){return this.isTradeHistorySyncRunning}isOpenPositionsSyncInProgress(){return this.isOpenPositionsSyncRunning}isOpenOrdersSyncInProgress(){return this.isOpenOrdersSyncRunning}getClient(){return this.client}setAuthToken(e){this.client.setAuthToken(e)}setHeaders(e){this.client.setHeaders(e)}getBaseUrl(){return this.client.getBaseUrl()}}var A=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function at(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}d(at,"getDefaultExportFromCjs");var Re={exports:{}},ue={};/**
1
+ var et=Object.defineProperty;var d=(t,e)=>et(t,"name",{value:e,configurable:!0});import tt from"axios";import ve,{useState as V,useEffect as se,useRef as nt,createContext as rt,useMemo as W,useContext as Z,useCallback as q}from"react";import ot from"react-dom";class Me{static{d(this,"PearHyperliquidClient")}constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.httpClient=tt.create({baseURL:this.baseUrl,timeout:e.timeout||3e4,headers:{"Content-Type":"application/json",...e.headers}}),this.httpClient.interceptors.response.use(n=>n,n=>{var a,o,r,s,c;const l={statusCode:((a=n.response)===null||a===void 0?void 0:a.status)||500,message:((r=(o=n.response)===null||o===void 0?void 0:o.data)===null||r===void 0?void 0:r.message)||n.message,error:(c=(s=n.response)===null||s===void 0?void 0:s.data)===null||c===void 0?void 0:c.error};return Promise.reject(l)})}getBaseUrl(){return this.baseUrl}setHeaders(e){this.httpClient.defaults.headers={...this.httpClient.defaults.headers,...e}}setAuthToken(e){this.setHeaders({Authorization:`Bearer ${e}`})}async makeRequest(e,n,a){const o=await this.httpClient.request({method:e,url:n,data:a});return{data:o.data,status:o.status,headers:o.headers}}async syncTradeHistory(e){return this.makeRequest("POST","/syncer/trade-histories",e)}async syncOpenPositions(e){return this.makeRequest("POST","/syncer/open-positions",e)}async syncOpenOrders(e){return this.makeRequest("POST","/syncer/open-orders",e)}}class je{static{d(this,"PearMigrationSDK")}constructor(e){this.isTradeHistorySyncRunning=!1,this.isOpenPositionsSyncRunning=!1,this.isOpenOrdersSyncRunning=!1,this.client=e}async syncTradeHistory(e){if(this.isTradeHistorySyncRunning)return null;try{return this.isTradeHistorySyncRunning=!0,await this.client.syncTradeHistory(e)}finally{this.isTradeHistorySyncRunning=!1}}async syncOpenPositions(e){if(this.isOpenPositionsSyncRunning)return null;try{return this.isOpenPositionsSyncRunning=!0,await this.client.syncOpenPositions(e)}finally{this.isOpenPositionsSyncRunning=!1}}async syncOpenOrders(e){if(this.isOpenOrdersSyncRunning)return null;try{return this.isOpenOrdersSyncRunning=!0,await this.client.syncOpenOrders(e)}finally{this.isOpenOrdersSyncRunning=!1}}isSyncInProgress(){return this.isTradeHistorySyncRunning||this.isOpenPositionsSyncRunning||this.isOpenOrdersSyncRunning}isTradeHistorySyncInProgress(){return this.isTradeHistorySyncRunning}isOpenPositionsSyncInProgress(){return this.isOpenPositionsSyncRunning}isOpenOrdersSyncInProgress(){return this.isOpenOrdersSyncRunning}getClient(){return this.client}setAuthToken(e){this.client.setAuthToken(e)}setHeaders(e){this.client.setHeaders(e)}getBaseUrl(){return this.client.getBaseUrl()}}var L=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function at(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}d(at,"getDefaultExportFromCjs");var Re={exports:{}},ue={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
@@ -6,7 +6,7 @@ var et=Object.defineProperty;var d=(t,e)=>et(t,"name",{value:e,configurable:!0})
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var Fe;function st(){if(Fe)return ue;Fe=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(a,r,o){var s=null;if(o!==void 0&&(s=""+o),r.key!==void 0&&(s=""+r.key),"key"in r){o={};for(var f in r)f!=="key"&&(o[f]=r[f])}else o=r;return r=o.ref,{$$typeof:t,type:a,key:s,ref:r!==void 0?r:null,props:o}}return d(n,"jsxProd"),ue.Fragment=e,ue.jsx=n,ue.jsxs=n,ue}d(st,"requireReactJsxRuntime_production");var le={};/**
9
+ */var Fe;function st(){if(Fe)return ue;Fe=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(a,o,r){var s=null;if(r!==void 0&&(s=""+r),o.key!==void 0&&(s=""+o.key),"key"in o){r={};for(var c in o)c!=="key"&&(r[c]=o[c])}else r=o;return o=r.ref,{$$typeof:t,type:a,key:s,ref:o!==void 0?o:null,props:r}}return d(n,"jsxProd"),ue.Fragment=e,ue.jsx=n,ue.jsxs=n,ue}d(st,"requireReactJsxRuntime_production");var le={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,9 +14,9 @@ var et=Object.defineProperty;var d=(t,e)=>et(t,"name",{value:e,configurable:!0})
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var He;function it(){return He||(He=1,process.env.NODE_ENV!=="production"&&(function(){function t(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===b?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case O:return"Fragment";case T:return"Profiler";case w:return"StrictMode";case X:return"Suspense";case Y:return"SuspenseList";case m:return"Activity"}if(typeof l=="object")switch(typeof l.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),l.$$typeof){case S:return"Portal";case F:return(l.displayName||"Context")+".Provider";case P:return(l._context.displayName||"Context")+".Consumer";case W:var _=l.render;return l=l.displayName,l||(l=_.displayName||_.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case k:return _=l.displayName||null,_!==null?_:t(l.type)||"Memo";case y:_=l._payload,l=l._init;try{return t(l(_))}catch{}}return null}d(t,"getComponentNameFromType");function e(l){return""+l}d(e,"testStringCoercion");function n(l){try{e(l);var _=!1}catch{_=!0}if(_){_=console;var N=_.error,L=typeof Symbol=="function"&&Symbol.toStringTag&&l[Symbol.toStringTag]||l.constructor.name||"Object";return N.call(_,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",L),e(l)}}d(n,"checkKeyStringCoercion");function a(l){if(l===O)return"<>";if(typeof l=="object"&&l!==null&&l.$$typeof===y)return"<...>";try{var _=t(l);return _?"<"+_+">":"<...>"}catch{return"<...>"}}d(a,"getTaskName");function r(){var l=E.A;return l===null?null:l.getOwner()}d(r,"getOwner");function o(){return Error("react-stack-top-frame")}d(o,"UnknownOwner");function s(l){if(p.call(l,"key")){var _=Object.getOwnPropertyDescriptor(l,"key").get;if(_&&_.isReactWarning)return!1}return l.key!==void 0}d(s,"hasValidKey");function f(l,_){function N(){j||(j=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",_))}d(N,"warnAboutAccessingKey"),N.isReactWarning=!0,Object.defineProperty(l,"key",{get:N,configurable:!0})}d(f,"defineKeyPropWarningGetter");function c(){var l=t(this.type);return $[l]||($[l]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),l=this.props.ref,l!==void 0?l:null}d(c,"elementRefGetterWithDeprecationWarning");function i(l,_,N,L,Z,q,Ce,Ae){return N=q.ref,l={$$typeof:u,type:l,key:_,props:q,_owner:Z},(N!==void 0?N:null)!==null?Object.defineProperty(l,"ref",{enumerable:!1,get:c}):Object.defineProperty(l,"ref",{enumerable:!1,value:null}),l._store={},Object.defineProperty(l._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(l,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(l,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Ce}),Object.defineProperty(l,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Ae}),Object.freeze&&(Object.freeze(l.props),Object.freeze(l)),l}d(i,"ReactElement");function v(l,_,N,L,Z,q,Ce,Ae){var I=_.children;if(I!==void 0)if(L)if(C(I)){for(L=0;L<I.length;L++)h(I[L]);Object.freeze&&Object.freeze(I)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else h(I);if(p.call(_,"key")){I=t(l);var ae=Object.keys(_).filter(function(Ze){return Ze!=="key"});L=0<ae.length?"{key: someKey, "+ae.join(": ..., ")+": ...}":"{key: someKey}",Q[I+L]||(ae=0<ae.length?"{"+ae.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var He;function it(){return He||(He=1,process.env.NODE_ENV!=="production"&&(function(){function t(v){if(v==null)return null;if(typeof v=="function")return v.$$typeof===T?null:v.displayName||v.name||null;if(typeof v=="string")return v;switch(v){case A:return"Fragment";case m:return"Profiler";case E:return"StrictMode";case I:return"Suspense";case j:return"SuspenseList";case J:return"Activity"}if(typeof v=="object")switch(typeof v.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),v.$$typeof){case S:return"Portal";case w:return(v.displayName||"Context")+".Provider";case k:return(v._context.displayName||"Context")+".Consumer";case O:var p=v.render;return v=v.displayName,v||(v=p.displayName||p.name||"",v=v!==""?"ForwardRef("+v+")":"ForwardRef"),v;case N:return p=v.displayName||null,p!==null?p:t(v.type)||"Memo";case U:p=v._payload,v=v._init;try{return t(v(p))}catch{}}return null}d(t,"getComponentNameFromType");function e(v){return""+v}d(e,"testStringCoercion");function n(v){try{e(v);var p=!1}catch{p=!0}if(p){p=console;var C=p.error,R=typeof Symbol=="function"&&Symbol.toStringTag&&v[Symbol.toStringTag]||v.constructor.name||"Object";return C.call(p,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",R),e(v)}}d(n,"checkKeyStringCoercion");function a(v){if(v===A)return"<>";if(typeof v=="object"&&v!==null&&v.$$typeof===U)return"<...>";try{var p=t(v);return p?"<"+p+">":"<...>"}catch{return"<...>"}}d(a,"getTaskName");function o(){var v=y.A;return v===null?null:v.getOwner()}d(o,"getOwner");function r(){return Error("react-stack-top-frame")}d(r,"UnknownOwner");function s(v){if(b.call(v,"key")){var p=Object.getOwnPropertyDescriptor(v,"key").get;if(p&&p.isReactWarning)return!1}return v.key!==void 0}d(s,"hasValidKey");function c(v,p){function C(){M||(M=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",p))}d(C,"warnAboutAccessingKey"),C.isReactWarning=!0,Object.defineProperty(v,"key",{get:C,configurable:!0})}d(c,"defineKeyPropWarningGetter");function l(){var v=t(this.type);return D[v]||(D[v]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),v=this.props.ref,v!==void 0?v:null}d(l,"elementRefGetterWithDeprecationWarning");function i(v,p,C,R,ee,G,Ce,Ae){return C=G.ref,v={$$typeof:f,type:v,key:p,props:G,_owner:ee},(C!==void 0?C:null)!==null?Object.defineProperty(v,"ref",{enumerable:!1,get:l}):Object.defineProperty(v,"ref",{enumerable:!1,value:null}),v._store={},Object.defineProperty(v._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(v,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(v,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Ce}),Object.defineProperty(v,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Ae}),Object.freeze&&(Object.freeze(v.props),Object.freeze(v)),v}d(i,"ReactElement");function u(v,p,C,R,ee,G,Ce,Ae){var F=p.children;if(F!==void 0)if(R)if(_(F)){for(R=0;R<F.length;R++)h(F[R]);Object.freeze&&Object.freeze(F)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else h(F);if(b.call(p,"key")){F=t(v);var ae=Object.keys(p).filter(function(Ze){return Ze!=="key"});R=0<ae.length?"{key: someKey, "+ae.join(": ..., ")+": ...}":"{key: someKey}",$[F+R]||(ae=0<ae.length?"{"+ae.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
18
  let props = %s;
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,L,I,ae,I),Q[I+L]=!0)}if(I=null,N!==void 0&&(n(N),I=""+N),s(_)&&(n(_.key),I=""+_.key),"key"in _){N={};for(var Ne in _)Ne!=="key"&&(N[Ne]=_[Ne])}else N=_;return I&&f(N,typeof l=="function"?l.displayName||l.name||"Unknown":l),i(l,I,q,Z,r(),N,Ce,Ae)}d(v,"jsxDEVImpl");function h(l){typeof l=="object"&&l!==null&&l.$$typeof===u&&l._store&&(l._store.validated=1)}d(h,"validateChildKeys");var g=ve,u=Symbol.for("react.transitional.element"),S=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),w=Symbol.for("react.strict_mode"),T=Symbol.for("react.profiler"),P=Symbol.for("react.consumer"),F=Symbol.for("react.context"),W=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),Y=Symbol.for("react.suspense_list"),k=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),m=Symbol.for("react.activity"),b=Symbol.for("react.client.reference"),E=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,p=Object.prototype.hasOwnProperty,C=Array.isArray,M=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:d(function(l){return l()},"react_stack_bottom_frame")};var j,$={},R=g.react_stack_bottom_frame.bind(g,o)(),H=M(a(o)),Q={};le.Fragment=O,le.jsx=function(l,_,N,L,Z){var q=1e4>E.recentlyCreatedOwnerStacks++;return v(l,_,N,!1,L,Z,q?Error("react-stack-top-frame"):R,q?M(a(l)):H)},le.jsxs=function(l,_,N,L,Z){var q=1e4>E.recentlyCreatedOwnerStacks++;return v(l,_,N,!0,L,Z,q?Error("react-stack-top-frame"):R,q?M(a(l)):H)}})()),le}d(it,"requireReactJsxRuntime_development"),process.env.NODE_ENV==="production"?Re.exports=st():Re.exports=it();var ct=Re.exports,he={},se={},V={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.isEventSourceSupported=t.isReactNative=t.ReadyState=t.DEFAULT_HEARTBEAT=t.UNPARSABLE_JSON_OBJECT=t.DEFAULT_RECONNECT_INTERVAL_MS=t.DEFAULT_RECONNECT_LIMIT=t.SOCKET_IO_PING_CODE=t.SOCKET_IO_PATH=t.SOCKET_IO_PING_INTERVAL=t.DEFAULT_EVENT_SOURCE_OPTIONS=t.EMPTY_EVENT_HANDLERS=t.DEFAULT_OPTIONS=void 0;var e=1,n=1e3*e;t.DEFAULT_OPTIONS={},t.EMPTY_EVENT_HANDLERS={},t.DEFAULT_EVENT_SOURCE_OPTIONS={withCredentials:!1,events:t.EMPTY_EVENT_HANDLERS},t.SOCKET_IO_PING_INTERVAL=25*n,t.SOCKET_IO_PATH="/socket.io/?EIO=3&transport=websocket",t.SOCKET_IO_PING_CODE="2",t.DEFAULT_RECONNECT_LIMIT=20,t.DEFAULT_RECONNECT_INTERVAL_MS=5e3,t.UNPARSABLE_JSON_OBJECT={},t.DEFAULT_HEARTBEAT={message:"ping",timeout:6e4,interval:25e3};var a;(function(o){o[o.UNINSTANTIATED=-1]="UNINSTANTIATED",o[o.CONNECTING=0]="CONNECTING",o[o.OPEN=1]="OPEN",o[o.CLOSING=2]="CLOSING",o[o.CLOSED=3]="CLOSED"})(a||(t.ReadyState=a={}));var r=d(function(){try{return"EventSource"in globalThis}catch{return!1}},"eventSourceSupported");t.isReactNative=typeof navigator<"u"&&navigator.product==="ReactNative",t.isEventSourceSupported=!t.isReactNative&&r()})(V);var ge={},Se={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetWebSockets=t.sharedWebSockets=void 0,t.sharedWebSockets={};var e=d(function(n){if(n&&t.sharedWebSockets.hasOwnProperty(n))delete t.sharedWebSockets[n];else for(var a in t.sharedWebSockets)t.sharedWebSockets.hasOwnProperty(a)&&delete t.sharedWebSockets[a]},"resetWebSockets");t.resetWebSockets=e})(Se);var ye={},x={};Object.defineProperty(x,"__esModule",{value:!0}),x.setUpSocketIOPing=x.appendQueryParams=x.parseSocketIOUrl=void 0;var me=V,ut=d(function(t){if(t){var e=/^https|wss/.test(t),n=t.replace(/^(https?|wss?)(:\/\/)?/,""),a=n.replace(/\/$/,""),r=e?"wss":"ws";return"".concat(r,"://").concat(a).concat(me.SOCKET_IO_PATH)}else if(t===""){var e=/^https/.test(window.location.protocol),r=e?"wss":"ws",o=window.location.port?":".concat(window.location.port):"";return"".concat(r,"://").concat(window.location.hostname).concat(o).concat(me.SOCKET_IO_PATH)}return t},"parseSocketIOUrl");x.parseSocketIOUrl=ut;var lt=d(function(t,e){e===void 0&&(e={});var n=/\?([\w]+=[\w]+)/,a=n.test(t),r="".concat(Object.entries(e).reduce(function(o,s){var f=s[0],c=s[1];return o+"".concat(f,"=").concat(c,"&")},"").slice(0,-1));return"".concat(t).concat(a?"&":"?").concat(r)},"appendQueryParams");x.appendQueryParams=lt;var dt=d(function(t,e){e===void 0&&(e=me.SOCKET_IO_PING_INTERVAL);var n=d(function(){return t(me.SOCKET_IO_PING_CODE)},"ping");return window.setInterval(n,e)},"setUpSocketIOPing");x.setUpSocketIOPing=dt;var be={};Object.defineProperty(be,"__esModule",{value:!0}),be.heartbeat=vt;var Le=V;function ft(t){return Array.isArray(t)?t.reduce(function(e,n){return e.current>n.current?e:n}).current:t.current}d(ft,"getLastMessageTime");function vt(t,e,n){var a=n||{},r=a.interval,o=r===void 0?Le.DEFAULT_HEARTBEAT.interval:r,s=a.timeout,f=s===void 0?Le.DEFAULT_HEARTBEAT.timeout:s,c=a.message,i=c===void 0?Le.DEFAULT_HEARTBEAT.message:c,v=Math.max(100,o/10),h=Date.now(),g=setInterval(function(){var u=Date.now(),S=ft(e);if(S+f<=u)console.warn("Heartbeat timed out, closing connection, last message received ".concat(u-S,"ms ago, last ping sent ").concat(u-h,"ms ago")),t.close();else if(S+o<=u&&h+o<=u)try{typeof i=="function"?t.send(i()):t.send(i),h=u}catch(O){console.error("Heartbeat failed, closing connection",O instanceof Error?O.message:O),t.close()}},v);return t.addEventListener("close",function(){clearInterval(g)}),function(){}}d(vt,"heartbeat");var ie={},Te={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetSubscribers=t.removeSubscriber=t.addSubscriber=t.hasSubscribers=t.getSubscribers=void 0;var e={},n=[],a=d(function(c){return(0,t.hasSubscribers)(c)?Array.from(e[c]):n},"getSubscribers");t.getSubscribers=a;var r=d(function(c){var i;return((i=e[c])===null||i===void 0?void 0:i.size)>0},"hasSubscribers");t.hasSubscribers=r;var o=d(function(c,i){e[c]=e[c]||new Set,e[c].add(i)},"addSubscriber");t.addSubscriber=o;var s=d(function(c,i){e[c].delete(i)},"removeSubscriber");t.removeSubscriber=s;var f=d(function(c){if(c&&e.hasOwnProperty(c))delete e[c];else for(var i in e)e.hasOwnProperty(i)&&delete e[i]},"resetSubscribers");t.resetSubscribers=f})(Te),Object.defineProperty(ie,"__esModule",{value:!0}),ie.assertIsWebSocket=St,ie.resetGlobalState=yt;var ht=Se,gt=Te;function St(t,e){if(!e&&!(t instanceof WebSocket))throw new Error("")}d(St,"assertIsWebSocket");function yt(t){(0,gt.resetSubscribers)(t),(0,ht.resetWebSockets)(t)}d(yt,"resetGlobalState");var Ee=A&&A.__assign||function(){return Ee=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},Ee.apply(this,arguments)};Object.defineProperty(ye,"__esModule",{value:!0}),ye.attachListeners=void 0;var mt=x,bt=be,J=V,Tt=ie,Et=d(function(t,e,n,a){t.onmessage=function(r){var o;e.current.onMessage&&e.current.onMessage(r),typeof a?.current=="number"&&(a.current=Date.now()),!(typeof e.current.filter=="function"&&e.current.filter(r)!==!0)&&(e.current.heartbeat&&typeof e.current.heartbeat!="boolean"&&((o=e.current.heartbeat)===null||o===void 0?void 0:o.returnMessage)===r.data||n(r))}},"bindMessageHandler$1"),_t=d(function(t,e,n,a,r){t.onopen=function(o){if(e.current.onOpen&&e.current.onOpen(o),a.current=0,n(J.ReadyState.OPEN),e.current.heartbeat&&t instanceof WebSocket){var s=typeof e.current.heartbeat=="boolean"?void 0:e.current.heartbeat;r.current=Date.now(),(0,bt.heartbeat)(t,r,s)}}},"bindOpenHandler$1"),Ot=d(function(t,e,n,a,r){if(J.isEventSourceSupported&&t instanceof EventSource)return function(){};(0,Tt.assertIsWebSocket)(t,e.current.skipAssert);var o;return t.onclose=function(s){var f;if(e.current.onClose&&e.current.onClose(s),n(J.ReadyState.CLOSED),e.current.shouldReconnect&&e.current.shouldReconnect(s)){var c=(f=e.current.reconnectAttempts)!==null&&f!==void 0?f:J.DEFAULT_RECONNECT_LIMIT;if(r.current<c){var i=typeof e.current.reconnectInterval=="function"?e.current.reconnectInterval(r.current):e.current.reconnectInterval;o=window.setTimeout(function(){r.current++,a()},i??J.DEFAULT_RECONNECT_INTERVAL_MS)}else e.current.onReconnectStop&&e.current.onReconnectStop(c),console.warn("Max reconnect attempts of ".concat(c," exceeded"))}},function(){return o&&window.clearTimeout(o)}},"bindCloseHandler$1"),pt=d(function(t,e,n,a,r){var o;return t.onerror=function(s){var f;if(e.current.onError&&e.current.onError(s),J.isEventSourceSupported&&t instanceof EventSource&&(e.current.onClose&&e.current.onClose(Ee(Ee({},s),{code:1006,reason:"An error occurred with the EventSource: ".concat(s),wasClean:!1})),n(J.ReadyState.CLOSED),t.close()),e.current.retryOnError)if(r.current<((f=e.current.reconnectAttempts)!==null&&f!==void 0?f:J.DEFAULT_RECONNECT_LIMIT)){var c=typeof e.current.reconnectInterval=="function"?e.current.reconnectInterval(r.current):e.current.reconnectInterval;o=window.setTimeout(function(){r.current++,a()},c??J.DEFAULT_RECONNECT_INTERVAL_MS)}else e.current.onReconnectStop&&e.current.onReconnectStop(e.current.reconnectAttempts),console.warn("Max reconnect attempts of ".concat(e.current.reconnectAttempts," exceeded"))},function(){return o&&window.clearTimeout(o)}},"bindErrorHandler$1"),wt=d(function(t,e,n,a,r,o,s){var f=e.setLastMessage,c=e.setReadyState,i,v,h;return n.current.fromSocketIO&&(i=(0,mt.setUpSocketIOPing)(s)),Et(t,n,f,o),_t(t,n,c,r,o),v=Ot(t,n,c,a,r),h=pt(t,n,c,a,r),function(){c(J.ReadyState.CLOSING),v(),h(),t.close(),i&&clearInterval(i)}},"attachListeners");ye.attachListeners=wt;var _e={},Oe=A&&A.__assign||function(){return Oe=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},Oe.apply(this,arguments)};Object.defineProperty(_e,"__esModule",{value:!0}),_e.attachSharedListeners=void 0;var Pt=Se,oe=V,de=Te,kt=x,Ct=be,At=d(function(t,e,n){t.onmessage=function(a){(0,de.getSubscribers)(e).forEach(function(r){var o;r.optionsRef.current.onMessage&&r.optionsRef.current.onMessage(a),typeof((o=r?.lastMessageTime)===null||o===void 0?void 0:o.current)=="number"&&(r.lastMessageTime.current=Date.now()),!(typeof r.optionsRef.current.filter=="function"&&r.optionsRef.current.filter(a)!==!0)&&(n&&typeof n!="boolean"&&n?.returnMessage===a.data||r.setLastMessage(a))})}},"bindMessageHandler"),Nt=d(function(t,e,n){t.onopen=function(a){var r=(0,de.getSubscribers)(e);r.forEach(function(o){o.reconnectCount.current=0,o.optionsRef.current.onOpen&&o.optionsRef.current.onOpen(a),o.setReadyState(oe.ReadyState.OPEN),n&&t instanceof WebSocket&&(o.lastMessageTime.current=Date.now())}),n&&t instanceof WebSocket&&(0,Ct.heartbeat)(t,r.map(function(o){return o.lastMessageTime}),typeof n=="boolean"?void 0:n)}},"bindOpenHandler"),Mt=d(function(t,e){t instanceof WebSocket&&(t.onclose=function(n){(0,de.getSubscribers)(e).forEach(function(a){a.optionsRef.current.onClose&&a.optionsRef.current.onClose(n),a.setReadyState(oe.ReadyState.CLOSED)}),delete Pt.sharedWebSockets[e],(0,de.getSubscribers)(e).forEach(function(a){var r;if(a.optionsRef.current.shouldReconnect&&a.optionsRef.current.shouldReconnect(n)){var o=(r=a.optionsRef.current.reconnectAttempts)!==null&&r!==void 0?r:oe.DEFAULT_RECONNECT_LIMIT;if(a.reconnectCount.current<o){var s=typeof a.optionsRef.current.reconnectInterval=="function"?a.optionsRef.current.reconnectInterval(a.reconnectCount.current):a.optionsRef.current.reconnectInterval;setTimeout(function(){a.reconnectCount.current++,a.reconnect.current()},s??oe.DEFAULT_RECONNECT_INTERVAL_MS)}else a.optionsRef.current.onReconnectStop&&a.optionsRef.current.onReconnectStop(a.optionsRef.current.reconnectAttempts),console.warn("Max reconnect attempts of ".concat(o," exceeded"))}})})},"bindCloseHandler"),Rt=d(function(t,e){t.onerror=function(n){(0,de.getSubscribers)(e).forEach(function(a){a.optionsRef.current.onError&&a.optionsRef.current.onError(n),oe.isEventSourceSupported&&t instanceof EventSource&&(a.optionsRef.current.onClose&&a.optionsRef.current.onClose(Oe(Oe({},n),{code:1006,reason:"An error occurred with the EventSource: ".concat(n),wasClean:!1})),a.setReadyState(oe.ReadyState.CLOSED))}),oe.isEventSourceSupported&&t instanceof EventSource&&t.close()}},"bindErrorHandler"),Lt=d(function(t,e,n,a){var r;return n.current.fromSocketIO&&(r=(0,kt.setUpSocketIOPing)(a)),At(t,e,n.current.heartbeat),Mt(t,e),Nt(t,e,n.current.heartbeat),Rt(t,e),function(){r&&clearInterval(r)}},"attachSharedListeners");_e.attachSharedListeners=Lt,Object.defineProperty(ge,"__esModule",{value:!0}),ge.createOrJoinSocket=void 0;var te=Se,fe=V,It=ye,Dt=_e,Ie=Te,Ut=d(function(t,e,n,a,r){return function(){if((0,Ie.removeSubscriber)(t,e),!(0,Ie.hasSubscribers)(t)){try{var o=te.sharedWebSockets[t];o instanceof WebSocket&&(o.onclose=function(s){n.current.onClose&&n.current.onClose(s),a(fe.ReadyState.CLOSED)}),o.close()}catch{}r&&r(),delete te.sharedWebSockets[t]}}},"cleanSubscribers"),Wt=d(function(t,e,n,a,r,o,s,f,c){if(!fe.isEventSourceSupported&&a.current.eventSourceOptions)throw fe.isReactNative?new Error("EventSource is not supported in ReactNative"):new Error("EventSource is not supported");if(a.current.share){var i=null;te.sharedWebSockets[e]===void 0?(te.sharedWebSockets[e]=a.current.eventSourceOptions?new EventSource(e,a.current.eventSourceOptions):new WebSocket(e,a.current.protocols),t.current=te.sharedWebSockets[e],n(fe.ReadyState.CONNECTING),i=(0,Dt.attachSharedListeners)(te.sharedWebSockets[e],e,a,c)):(t.current=te.sharedWebSockets[e],n(te.sharedWebSockets[e].readyState));var v={setLastMessage:r,setReadyState:n,optionsRef:a,reconnectCount:s,lastMessageTime:f,reconnect:o};return(0,Ie.addSubscriber)(e,v),Ut(e,v,a,n,i)}else{if(t.current=a.current.eventSourceOptions?new EventSource(e,a.current.eventSourceOptions):new WebSocket(e,a.current.protocols),n(fe.ReadyState.CONNECTING),!t.current)throw new Error("WebSocket failed to be created");return(0,It.attachListeners)(t.current,{setLastMessage:r,setReadyState:n},a,o.current,s,f,c)}},"createOrJoinSocket");ge.createOrJoinSocket=Wt;var $e={};(function(t){var e=A&&A.__awaiter||function(c,i,v,h){function g(u){return u instanceof v?u:new v(function(S){S(u)})}return d(g,"adopt"),new(v||(v=Promise))(function(u,S){function O(P){try{T(h.next(P))}catch(F){S(F)}}d(O,"fulfilled");function w(P){try{T(h.throw(P))}catch(F){S(F)}}d(w,"rejected");function T(P){P.done?u(P.value):g(P.value).then(O,w)}d(T,"step"),T((h=h.apply(c,i||[])).next())})},n=A&&A.__generator||function(c,i){var v={label:0,sent:d(function(){if(u[0]&1)throw u[1];return u[1]},"sent"),trys:[],ops:[]},h,g,u,S=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return S.next=O(0),S.throw=O(1),S.return=O(2),typeof Symbol=="function"&&(S[Symbol.iterator]=function(){return this}),S;function O(T){return function(P){return w([T,P])}}function w(T){if(h)throw new TypeError("Generator is already executing.");for(;S&&(S=0,T[0]&&(v=0)),v;)try{if(h=1,g&&(u=T[0]&2?g.return:T[0]?g.throw||((u=g.return)&&u.call(g),0):g.next)&&!(u=u.call(g,T[1])).done)return u;switch(g=0,u&&(T=[T[0]&2,u.value]),T[0]){case 0:case 1:u=T;break;case 4:return v.label++,{value:T[1],done:!1};case 5:v.label++,g=T[1],T=[0];continue;case 7:T=v.ops.pop(),v.trys.pop();continue;default:if(u=v.trys,!(u=u.length>0&&u[u.length-1])&&(T[0]===6||T[0]===2)){v=0;continue}if(T[0]===3&&(!u||T[1]>u[0]&&T[1]<u[3])){v.label=T[1];break}if(T[0]===6&&v.label<u[1]){v.label=u[1],u=T;break}if(u&&v.label<u[2]){v.label=u[2],v.ops.push(T);break}u[2]&&v.ops.pop(),v.trys.pop();continue}T=i.call(c,v)}catch(P){T=[6,P],g=0}finally{h=u=0}if(T[0]&5)throw T[1];return{value:T[0]?T[1]:void 0,done:!0}}},a=A&&A.__spreadArray||function(c,i,v){if(v||arguments.length===2)for(var h=0,g=i.length,u;h<g;h++)(u||!(h in i))&&(u||(u=Array.prototype.slice.call(i,0,h)),u[h]=i[h]);return c.concat(u||Array.prototype.slice.call(i))};Object.defineProperty(t,"__esModule",{value:!0}),t.getUrl=void 0;var r=x,o=V,s=d(function(c){return new Promise(function(i){return window.setTimeout(i,c)})},"waitFor"),f=d(function(c,i){for(var v=[],h=2;h<arguments.length;h++)v[h-2]=arguments[h];return e(void 0,a([c,i],v,!0),void 0,function(g,u,S){var O,w,T,P,F,W,X,Y;return S===void 0&&(S=0),n(this,function(k){switch(k.label){case 0:if(typeof g!="function")return[3,10];k.label=1;case 1:return k.trys.push([1,3,,9]),[4,g()];case 2:return O=k.sent(),[3,9];case 3:return k.sent(),u.current.retryOnError?(w=(W=u.current.reconnectAttempts)!==null&&W!==void 0?W:o.DEFAULT_RECONNECT_LIMIT,S<w?(T=typeof u.current.reconnectInterval=="function"?u.current.reconnectInterval(S):u.current.reconnectInterval,[4,s(T??o.DEFAULT_RECONNECT_INTERVAL_MS)]):[3,5]):[3,7];case 4:return k.sent(),[2,(0,t.getUrl)(g,u,S+1)];case 5:return(Y=(X=u.current).onReconnectStop)===null||Y===void 0||Y.call(X,S),[2,null];case 6:return[3,8];case 7:return[2,null];case 8:return[3,9];case 9:return[3,11];case 10:O=g,k.label=11;case 11:return P=u.current.fromSocketIO?(0,r.parseSocketIOUrl)(O):O,F=u.current.queryParams?(0,r.appendQueryParams)(P,u.current.queryParams):P,[2,F]}})})},"getUrl");t.getUrl=f})($e);var ze={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.websocketWrapper=void 0;var e=d(function(n,a){return new Proxy(n,{get:d(function(r,o){var s=r[o];return o==="reconnect"?a:typeof s=="function"?(console.error("Calling methods directly on the websocket is not supported at this moment. You must use the methods returned by useWebSocket."),function(){}):s},"get"),set:d(function(r,o,s){return/^on/.test(o)?(console.warn("The websocket's event handlers should be defined through the options object passed into useWebSocket."),!1):(r[o]=s,!0)},"set")})},"websocketWrapper");t.websocketWrapper=e,t.default=t.websocketWrapper})(ze);var ne=A&&A.__assign||function(){return ne=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},ne.apply(this,arguments)},jt=A&&A.__awaiter||function(t,e,n,a){function r(o){return o instanceof n?o:new n(function(s){s(o)})}return d(r,"adopt"),new(n||(n=Promise))(function(o,s){function f(v){try{i(a.next(v))}catch(h){s(h)}}d(f,"fulfilled");function c(v){try{i(a.throw(v))}catch(h){s(h)}}d(c,"rejected");function i(v){v.done?o(v.value):r(v.value).then(f,c)}d(i,"step"),i((a=a.apply(t,e||[])).next())})},Ft=A&&A.__generator||function(t,e){var n={label:0,sent:d(function(){if(o[0]&1)throw o[1];return o[1]},"sent"),trys:[],ops:[]},a,r,o,s=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return s.next=f(0),s.throw=f(1),s.return=f(2),typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function f(i){return function(v){return c([i,v])}}function c(i){if(a)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(n=0)),n;)try{if(a=1,r&&(o=i[0]&2?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[i[0]&2,o.value]),i[0]){case 0:case 1:o=i;break;case 4:return n.label++,{value:i[1],done:!1};case 5:n.label++,r=i[1],i=[0];continue;case 7:i=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){n=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){n.label=i[1];break}if(i[0]===6&&n.label<o[1]){n.label=o[1],o=i;break}if(o&&n.label<o[2]){n.label=o[2],n.ops.push(i);break}o[2]&&n.ops.pop(),n.trys.pop();continue}i=e.call(t,n)}catch(v){i=[6,v],r=0}finally{a=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}},Ht=A&&A.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(se,"__esModule",{value:!0}),se.useWebSocket=void 0;var U=ve,De=ot,G=V,$t=ge,zt=$e,Vt=Ht(ze),Ve=ie,qt=d(function(t,e,n){e===void 0&&(e=G.DEFAULT_OPTIONS),n===void 0&&(n=!0);var a=(0,U.useState)(null),r=a[0],o=a[1],s=(0,U.useState)({}),f=s[0],c=s[1],i=(0,U.useMemo)(function(){if(!e.disableJson&&r)try{return JSON.parse(r.data)}catch{return G.UNPARSABLE_JSON_OBJECT}return null},[r,e.disableJson]),v=(0,U.useRef)(null),h=(0,U.useRef)(null),g=(0,U.useRef)(function(){}),u=(0,U.useRef)(0),S=(0,U.useRef)(Date.now()),O=(0,U.useRef)([]),w=(0,U.useRef)(null),T=(0,U.useRef)(e);T.current=e;var P=v.current&&f[v.current]!==void 0?f[v.current]:t!==null&&n===!0?G.ReadyState.CONNECTING:G.ReadyState.UNINSTANTIATED,F=e.queryParams?JSON.stringify(e.queryParams):null,W=(0,U.useCallback)(function(k,y){var m;if(y===void 0&&(y=!0),G.isEventSourceSupported&&h.current instanceof EventSource){console.warn("Unable to send a message from an eventSource");return}((m=h.current)===null||m===void 0?void 0:m.readyState)===G.ReadyState.OPEN?((0,Ve.assertIsWebSocket)(h.current,T.current.skipAssert),h.current.send(k)):y&&O.current.push(k)},[]),X=(0,U.useCallback)(function(k,y){y===void 0&&(y=!0),W(JSON.stringify(k),y)},[W]),Y=(0,U.useCallback)(function(){return T.current.share!==!0||G.isEventSourceSupported&&h.current instanceof EventSource?h.current:(w.current===null&&h.current&&((0,Ve.assertIsWebSocket)(h.current,T.current.skipAssert),w.current=(0,Vt.default)(h.current,g)),w.current)},[]);return(0,U.useEffect)(function(){if(t!==null&&n===!0){var k,y=!1,m=!0,b=d(function(){return jt(void 0,void 0,void 0,function(){var E,p,C;return Ft(this,function(M){switch(M.label){case 0:return E=v,[4,(0,zt.getUrl)(t,T)];case 1:return E.current=M.sent(),v.current===null?(console.error("Failed to get a valid URL. WebSocket connection aborted."),v.current="ABORTED",(0,De.flushSync)(function(){return c(function(j){return ne(ne({},j),{ABORTED:G.ReadyState.CLOSED})})}),[2]):(p=d(function(j){y||(0,De.flushSync)(function(){return o(j)})},"protectedSetLastMessage"),C=d(function(j){y||(0,De.flushSync)(function(){return c(function($){var R;return ne(ne({},$),v.current&&(R={},R[v.current]=j,R))})})},"protectedSetReadyState"),m&&(k=(0,$t.createOrJoinSocket)(h,v.current,C,T,p,g,u,S,W)),[2])}})})},"start_1");return g.current=function(){y||(w.current&&(w.current=null),k?.(),b())},b(),function(){y=!0,m=!1,w.current&&(w.current=null),k?.(),o(null)}}else(t===null||n===!1)&&(u.current=0,c(function(E){var p;return ne(ne({},E),v.current&&(p={},p[v.current]=G.ReadyState.CLOSED,p))}))},[t,n,F,W]),(0,U.useEffect)(function(){P===G.ReadyState.OPEN&&O.current.splice(0).forEach(function(k){W(k)})},[P]),{sendMessage:W,sendJsonMessage:X,lastMessage:r,lastJsonMessage:i,readyState:P,getWebSocket:Y}},"useWebSocket$1");se.useWebSocket=qt;var pe={},we=A&&A.__assign||function(){return we=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},we.apply(this,arguments)};Object.defineProperty(pe,"__esModule",{value:!0}),pe.useSocketIO=void 0;var qe=ve,xt=se,Jt=V,Ue={type:"empty",payload:null},Gt=d(function(t){if(!t||!t.data)return Ue;var e=t.data.match(/\[.*]/);if(!e)return Ue;var n=JSON.parse(e);return!Array.isArray(n)||!n[1]?Ue:{type:n[0],payload:n[1]}},"getSocketData"),Yt=d(function(t,e,n){e===void 0&&(e=Jt.DEFAULT_OPTIONS),n===void 0&&(n=!0);var a=(0,qe.useMemo)(function(){return we(we({},e),{fromSocketIO:!0})},[]),r=(0,xt.useWebSocket)(t,a,n),o=r.sendMessage,s=r.sendJsonMessage,f=r.lastMessage,c=r.readyState,i=r.getWebSocket,v=(0,qe.useMemo)(function(){return Gt(f)},[f]);return{sendMessage:o,sendJsonMessage:s,lastMessage:v,lastJsonMessage:v,readyState:c,getWebSocket:i}},"useSocketIO");pe.useSocketIO=Yt;var Pe={},ke=A&&A.__assign||function(){return ke=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},ke.apply(this,arguments)},Bt=A&&A.__rest||function(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,a=Object.getOwnPropertySymbols(t);r<a.length;r++)e.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(t,a[r])&&(n[a[r]]=t[a[r]]);return n};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.useEventSource=void 0;var xe=ve,Kt=se,Je=V,Xt=d(function(t,e,n){e===void 0&&(e=Je.DEFAULT_EVENT_SOURCE_OPTIONS);var a=e.withCredentials,r=e.events,o=Bt(e,["withCredentials","events"]);n===void 0&&(n=!0);var s=ke(ke({},o),{eventSourceOptions:{withCredentials:a}}),f=(0,xe.useRef)(Je.EMPTY_EVENT_HANDLERS);r&&(f.current=r);var c=(0,Kt.useWebSocket)(t,s,n),i=c.lastMessage,v=c.readyState,h=c.getWebSocket;return(0,xe.useEffect)(function(){i?.type&&Object.entries(f.current).forEach(function(g){var u=g[0],S=g[1];u===i.type&&S(i)})},[i]),{lastEvent:i,readyState:v,getEventSource:h}},"useEventSource");Pe.useEventSource=Xt,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetGlobalState=t.useEventSource=t.ReadyState=t.useSocketIO=t.default=void 0;var e=se;Object.defineProperty(t,"default",{enumerable:!0,get:d(function(){return e.useWebSocket},"get")});var n=pe;Object.defineProperty(t,"useSocketIO",{enumerable:!0,get:d(function(){return n.useSocketIO},"get")});var a=V;Object.defineProperty(t,"ReadyState",{enumerable:!0,get:d(function(){return a.ReadyState},"get")});var r=Pe;Object.defineProperty(t,"useEventSource",{enumerable:!0,get:d(function(){return r.useEventSource},"get")});var o=ie;Object.defineProperty(t,"resetGlobalState",{enumerable:!0,get:d(function(){return o.resetGlobalState},"get")})})(he);var Ge=at(he);const Ye=d(({wsUrl:t,address:e})=>{const[n,a]=B({tradeHistories:null,openPositions:null,openOrders:null,accountSummary:null}),[r,o]=B(null),[s,f]=B(null),{readyState:c,sendMessage:i}=Ge(t,{shouldReconnect:d(()=>!0,"shouldReconnect"),reconnectAttempts:5,reconnectInterval:3e3,onMessage:d(h=>{try{const g=JSON.parse(h.data);if(("success"in g||"error"in g)&&!("channel"in g)){g.error?o(g.error):o(null);return}if("channel"in g&&"data"in g){const u=g;if(u.data===null||u.data===void 0)return;switch(u.channel){case"trade-histories":Array.isArray(u.data)&&a(S=>({...S,tradeHistories:u.data}));break;case"open-positions":Array.isArray(u.data)&&a(S=>({...S,openPositions:u.data}));break;case"open-orders":Array.isArray(u.data)&&a(S=>({...S,openOrders:u.data}));break;case"account-summary":typeof u.data=="object"&&u.data!==null&&a(S=>({...S,accountSummary:u.data}));break}}}catch(g){o(`Failed to parse message: ${g instanceof Error?g.message:String(g)}`)}},"onMessage")}),v=c===he.ReadyState.OPEN;return ce(()=>{v&&e&&e!==s?(s&&i(JSON.stringify({action:"unsubscribe",address:s})),i(JSON.stringify({action:"subscribe",address:e})),f(e),o(null)):v&&!e&&s&&(i(JSON.stringify({action:"unsubscribe",address:s})),f(null))},[v,e,s,i]),ce(()=>{e!==s&&(a({tradeHistories:null,openPositions:null,openOrders:null,accountSummary:null}),o(null))},[e,s]),{data:n,connectionStatus:c,isConnected:v,lastError:r}},"useHyperliquidWebSocket"),Be=d(({address:t})=>{const[e,n]=B(null),[a,r]=B(null),[o,s]=B(null),[f,c]=B(null),i=nt(null),{readyState:v,sendJsonMessage:h}=Ge("wss://api.hyperliquid.xyz/ws",{shouldReconnect:d(()=>!0,"shouldReconnect"),reconnectAttempts:5,reconnectInterval:3e3,onOpen:d(()=>{},"onOpen"),onClose:d(()=>{},"onClose"),onError:d(u=>console.error("[HyperLiquid WS] Connection error:",u),"onError"),onReconnectStop:d(()=>console.error("[HyperLiquid WS] Reconnection stopped after 5 attempts"),"onReconnectStop"),onMessage:d(u=>{try{const S=JSON.parse(u.data);if("success"in S||"error"in S){S.error?(console.error("[HyperLiquid WS] Subscription error:",S.error),s(S.error)):s(null);return}if("channel"in S&&"data"in S){const O=S;switch(O.channel){case"webData2":n(O.data);break;case"allMids":r(O.data);break;default:console.warn(`[HyperLiquid WS] Unknown channel: ${O.channel}`)}}}catch(S){const O=`Failed to parse message: ${S instanceof Error?S.message:String(S)}`;console.error("[HyperLiquid WS] Parse error:",O,"Raw message:",u.data),s(O)}},"onMessage")}),g=v===he.ReadyState.OPEN;return ce(()=>(g?i.current=setInterval(()=>{h({method:"ping"})},3e4):i.current&&(clearInterval(i.current),i.current=null),()=>{i.current&&(clearInterval(i.current),i.current=null)}),[g,h]),ce(()=>{if(!g)return;const S=t||"0x0000000000000000000000000000000000000000";if(f===S)return;f&&h({method:"unsubscribe",subscription:{type:"webData2",user:f}});const O={method:"subscribe",subscription:{type:"webData2",user:S}},w={method:"subscribe",subscription:{type:"allMids"}};h(O),h(w),c(S),f&&f!==S&&n(null)},[g,t,f,h]),{webData2:e,allMids:a,connectionStatus:v,isConnected:g,lastError:o}},"useHyperliquidNativeWebSocket"),Qt={longTokens:[{symbol:"HYPE",weight:25},{symbol:"BTC",weight:25}],shortTokens:[{symbol:"AVAX",weight:10},{symbol:"SEI",weight:10},{symbol:"ADA",weight:10},{symbol:"TRUMP",weight:10},{symbol:"SUI",weight:10}],openTokenSelector:!1,selectorConfig:null,openConflictModal:!1,conflicts:[]},K=rt(void 0),Zt=d(({config:t,wsUrl:e="wss://hl-v2.pearprotocol.io/ws",children:n})=>{const a=D(()=>new Me(t),[t]),r=D(()=>new je(a),[a]),[o,s]=B(null),[f,c]=B(Qt),{data:i,connectionStatus:v,isConnected:h,lastError:g}=Ye({wsUrl:e,address:o}),{webData2:u,allMids:S,connectionStatus:O,isConnected:w,lastError:T}=Be({address:o}),P=D(()=>({client:a,migrationSDK:r,address:o,setAddress:s,connectionStatus:v,isConnected:h,data:i,lastError:g,nativeConnectionStatus:O,nativeIsConnected:w,nativeLastError:T,webData2:u,allMids:S,tokenSelection:f,setTokenSelection:c}),[a,r,o,v,h,i,g,O,w,T,u,S,f,c]);return ct.jsx(K.Provider,{value:P,children:n})},"PearHyperliquidProvider"),en=d(()=>{const t=ee(K);if(!t)throw new Error("usePearHyperliquidClient must be used within a PearHyperliquidProvider");return t.client},"usePearHyperliquidClient"),tn=d(()=>{const t=ee(K);if(!t)throw new Error("useMigrationSDK must be used within a PearHyperliquidProvider");return t.migrationSDK},"useMigrationSDK"),nn=d(()=>{const t=ee(K);if(!t)throw new Error("useAddress must be used within a PearHyperliquidProvider");return{address:t.address,setAddress:t.setAddress,clearAddress:d(()=>t.setAddress(null),"clearAddress"),isLoggedIn:!!t.address}},"useAddress");var re;(function(t){t.LONG="LONG",t.SHORT="SHORT"})(re||(re={}));class rn{static{d(this,"PositionProcessor")}constructor(e,n){this.webData2=e,this.allMids=n}execute(e){if(!e||e.length===0)return[];const n=this.getUserPositions(),a=this.calculatePlatformTotalsByAsset(e),r=new Map;(n||[]).forEach(s=>{var f;!((f=s.position)===null||f===void 0)&&f.coin&&r.set(s.position.coin,s)});const o=[];for(const s of e){const f=this.syncPositionWithAggregateData(s,r,a);o.push(f)}return o}getUserPositions(){var e,n;return((n=(e=this.webData2)===null||e===void 0?void 0:e.clearinghouseState)===null||n===void 0?void 0:n.assetPositions)||[]}getMarketPrice(e){var n;if(!(!((n=this.allMids)===null||n===void 0)&&n.mids))return 0;const a=this.allMids.mids[e];if(a)return Number(a);const r=this.extractBaseCurrency(e),o=this.allMids.mids[r];return o?Number(o):0}calculatePlatformTotalsByAsset(e){const n=new Map;for(const a of e){for(const r of a.longAssets||[]){const o=this.extractBaseCurrency(r.coin);n.has(o)||n.set(o,{totalSize:0,positions:[]});const s=n.get(o),f=Number(r.size||0);s.totalSize+=f,s.positions.push({positionId:a.positionId,asset:r,size:f})}for(const r of a.shortAssets||[]){const o=this.extractBaseCurrency(r.coin);n.has(o)||n.set(o,{totalSize:0,positions:[]});const s=n.get(o),f=Number(r.size||0);s.totalSize+=f,s.positions.push({positionId:a.positionId,asset:r,size:f})}}return n}extractBaseCurrency(e){return e.split("/")[0]||e}syncPositionWithAggregateData(e,n,a){const r=[];let o=!1,s=!0,f={total:0,closed:0},c={total:0,closed:0};for(const v of e.longAssets||[]){const h=this.extractBaseCurrency(v.coin),g=n.get(h),u=a.get(h),S=this.syncAssetWithAggregateData({...v,side:re.LONG},g,u?.totalSize||0);r.push(S),f.total++,S.actualSize===0&&f.closed++,S.isExternallyModified&&(o=!0),S.actualSize!==0&&(s=!1)}for(const v of e.shortAssets||[]){const h=this.extractBaseCurrency(v.coin),g=n.get(h),u=a.get(h),S=this.syncAssetWithAggregateData({...v,side:re.SHORT},g,u?.totalSize||0);r.push(S),c.total++,S.actualSize===0&&c.closed++,S.isExternallyModified&&(o=!0),S.actualSize!==0&&(s=!1)}const i=this.determineSyncStatus(o,s,f,c);return this.mapPositionToDtoWithSyncData(e,r,i)}determineSyncStatus(e,n,a,r){if(n)return"EXTERNALLY_CLOSED";const o=a.total>0&&a.closed===a.total,s=r.total>0&&r.closed===r.total;return o&&!s||!o&&s?"PAIR_BROKEN":e?"EXTERNALLY_MODIFIED":"SYNCED"}syncAssetWithAggregateData(e,n,a){const r=Number(e.size||0);if(!n||!n.position||!n.position.szi)return{asset:e,actualSize:0,isExternallyModified:!0,cumFunding:{allTime:0,sinceChange:0,sinceOpen:0},unrealizedPnl:0,liquidationPrice:0};const o=Math.abs(Number(n.position.szi||0)),s=Math.abs(o-a),f=a*.001,c=s>f,i=a>0?r/a:0,v=o*i,h=n.position.cumFunding,g={allTime:Number(h?.allTime||0),sinceChange:Number(h?.sinceChange||0)*i,sinceOpen:Number(h?.sinceOpen||0)*i},u=Number(n.position.unrealizedPnl||0)*i,S=Number(n.position.liquidationPx||0);return{asset:e,actualSize:v,isExternallyModified:c,cumFunding:g,unrealizedPnl:u,liquidationPrice:S}}mapPositionToDtoWithSyncData(e,n,a){var r,o;const s=((r=e.longAssets)===null||r===void 0?void 0:r.filter(g=>g))||[],f=((o=e.shortAssets)===null||o===void 0?void 0:o.filter(g=>g))||[],c=new Map;n.forEach(g=>{c.set(`${g.asset.coin}-${g.asset.side}`,g)});const i=this.calculateCurrentTotalPositionValue(n),h=this.calculateEntryTotalPositionValue(n)/e.leverage;return{syncStatus:a,positionId:e.positionId,address:e.address,leverage:e.leverage,stopLoss:e.stopLoss,takeProfit:e.takeProfit,entryRatio:this.calculateEntryRatio(n),markRatio:this.calculateMarkRatio(n),netFunding:this.calculateNetFundingFromSyncResults(n),positionValue:i,marginUsed:h,unrealizedPnl:this.calculateTotalUnrealizedPnlFromSyncResults(n),lastSyncAt:new Date().toISOString(),longAssets:s.map(g=>this.mapAssetToDetailDto(g,c.get(`${g.coin}-LONG`))),shortAssets:f.map(g=>this.mapAssetToDetailDto(g,c.get(`${g.coin}-SHORT`))),createdAt:e.createdAt,updatedAt:e.updatedAt}}mapAssetToDetailDto(e,n){const a=this.getMarketPrice(e.coin),r=n?.actualSize||Number(e.size||0),o=r*a,s=Number(e.size||0)*Number(e.entryPrice||0);return{coin:e.coin,entryPrice:Number(e.entryPrice||0),platformSize:Number(e.size||0),actualSize:r,isExternallyModified:n?.isExternallyModified||!1,cumFunding:n?.cumFunding||{allTime:0,sinceChange:0,sinceOpen:0},marginUsed:s,positionValue:o,unrealizedPnl:n?.unrealizedPnl||0,liquidationPrice:n?.liquidationPrice||0}}calculateEntryRatio(e){var n,a;const r=e.filter(c=>c.asset.side===re.LONG),o=e.filter(c=>c.asset.side===re.SHORT);if(r.length===0||o.length===0)return 0;const s=!((n=r[0])===null||n===void 0)&&n.asset.entryPrice?Number(r[0].asset.entryPrice):0,f=!((a=o[0])===null||a===void 0)&&a.asset.entryPrice?Number(o[0].asset.entryPrice):0;return f>0?s/f:0}calculateMarkRatio(e){var n,a;const r=e.filter(c=>c.asset.side===re.LONG),o=e.filter(c=>c.asset.side===re.SHORT);if(r.length===0||o.length===0)return 0;const s=!((n=r[0])===null||n===void 0)&&n.asset.coin?this.getMarketPrice(r[0].asset.coin):0,f=!((a=o[0])===null||a===void 0)&&a.asset.coin?this.getMarketPrice(o[0].asset.coin):0;return f>0?s/f:0}calculateNetFundingFromSyncResults(e){return e.reduce((a,r)=>{const o=r.cumFunding.sinceOpen;return a+o},0)}calculateTotalUnrealizedPnlFromSyncResults(e){return e.reduce((n,a)=>n+a.unrealizedPnl,0)}calculateCurrentTotalPositionValue(e){return e.reduce((n,a)=>{const r=this.getMarketPrice(a.asset.coin);return n+a.actualSize*r},0)}calculateEntryTotalPositionValue(e){return e.reduce((n,a)=>n+Number(a.asset.size||0)*Number(a.asset.entryPrice||0),0)}}const Ke=d((t,e,n)=>D(()=>!t||!e||!n?null:new rn(e,n).execute(t),[t,e,n]),"useCalculatedOpenPositions");class Xe{static{d(this,"AccountSummaryCalculator")}constructor(e){this.webData2=e}calculateAccountSummary(e,n,a,r){var o,s,f,c,i,v,h,g,u,S,O;if(!(!((o=this.webData2)===null||o===void 0)&&o.clearinghouseState))return e;const w=this.webData2.clearinghouseState,T=this.calculateTotalLimitOrderValue(n||[]),P=parseFloat(w.withdrawable||"0"),F=Math.max(0,P-T);return{balanceSummary:{crossMaintenanceMarginUsed:w.crossMaintenanceMarginUsed||"0",crossMarginSummary:{accountValue:((s=w.crossMarginSummary)===null||s===void 0?void 0:s.accountValue)||"0",totalMarginUsed:((f=w.crossMarginSummary)===null||f===void 0?void 0:f.totalMarginUsed)||"0",totalNtlPos:((c=w.crossMarginSummary)===null||c===void 0?void 0:c.totalNtlPos)||"0",totalRawUsd:((i=w.crossMarginSummary)===null||i===void 0?void 0:i.totalRawUsd)||"0"},marginSummary:{accountValue:((v=w.marginSummary)===null||v===void 0?void 0:v.accountValue)||"0",totalMarginUsed:((h=w.marginSummary)===null||h===void 0?void 0:h.totalMarginUsed)||"0",totalNtlPos:((g=w.marginSummary)===null||g===void 0?void 0:g.totalNtlPos)||"0",totalRawUsd:((u=w.marginSummary)===null||u===void 0?void 0:u.totalRawUsd)||"0"},time:w.time||Date.now(),withdrawable:F.toString()},agentWallet:{address:a||((S=e?.agentWallet)===null||S===void 0?void 0:S.address)||"",status:r||((O=e?.agentWallet)===null||O===void 0?void 0:O.status)||"UNKNOWN"}}}calculateTotalLimitOrderValue(e){return e?.length?e.filter(a=>a.status==="OPEN"||a.status==="PROCESSING").reduce((a,r)=>a+r.usdValue,0):0}getClearinghouseState(){var e;return((e=this.webData2)===null||e===void 0?void 0:e.clearinghouseState)||null}hasRealTimeData(){var e;return!!(!((e=this.webData2)===null||e===void 0)&&e.clearinghouseState)}}const Qe=d((t,e,n,a,r)=>D(()=>t?n?.clearinghouseState?new Xe(n).calculateAccountSummary(t,e,a,r):t:null,[t,e,n,a,r]),"useCalculatedAccountSummary"),on=d(()=>{const t=ee(K);if(!t)throw new Error("useTradeHistories must be used within a PearHyperliquidProvider");const e=D(()=>t.data.tradeHistories===null&&t.isConnected,[t.data.tradeHistories,t.isConnected]);return{data:t.data.tradeHistories,isLoading:e}},"useTradeHistories"),an=d(()=>{const t=ee(K);if(!t)throw new Error("useOpenPositions must be used within a PearHyperliquidProvider");const e=Ke(t.data.openPositions,t.webData2,t.allMids),n=D(()=>t.isConnected&&(t.data.openPositions===null||!t.webData2||!t.allMids),[t.data.openPositions,t.webData2,t.allMids,t.isConnected]);return{data:e,isLoading:n}},"useOpenPositions"),sn=d(()=>{const t=ee(K);if(!t)throw new Error("useOpenOrders must be used within a PearHyperliquidProvider");const e=D(()=>t.data.openOrders===null&&t.isConnected,[t.data.openOrders,t.isConnected]);return{data:t.data.openOrders,isLoading:e}},"useOpenOrders"),cn=d(()=>{var t,e,n,a;const r=ee(K);if(!r)throw new Error("useAccountSummary must be used within a PearHyperliquidProvider");const o=Qe(r.data.accountSummary,r.data.openOrders,r.webData2,(e=(t=r.data.accountSummary)===null||t===void 0?void 0:t.agentWallet)===null||e===void 0?void 0:e.address,(a=(n=r.data.accountSummary)===null||n===void 0?void 0:n.agentWallet)===null||a===void 0?void 0:a.status),s=D(()=>r.data.accountSummary===null&&r.isConnected,[r.data.accountSummary,r.isConnected]);return{data:o,isLoading:s}},"useAccountSummary");class We{static{d(this,"TokenMetadataExtractor")}static extractTokenMetadata(e,n,a){if(!n||!a)return null;const r=n.meta.universe.findIndex(O=>O.name===e);if(r===-1)return null;const o=n.meta.universe[r],s=n.assetCtxs[r];if(!s)return null;const f=a.mids[e],c=f?parseFloat(f):0,i=parseFloat(s.prevDayPx),v=c-i,h=i!==0?v/i*100:0,g=parseFloat(s.funding)*100,u=parseFloat(s.markPx),S=parseFloat(s.oraclePx);return{currentPrice:c,prevDayPrice:i,priceChange24h:v,priceChange24hPercent:h,netFunding:g,maxLeverage:o.maxLeverage,markPrice:u,oraclePrice:S,openInterest:s.openInterest,dayVolume:s.dayNtlVlm}}static extractMultipleTokensMetadata(e,n,a){const r={};for(const o of e)r[o]=this.extractTokenMetadata(o,n,a);return r}static isTokenAvailable(e,n){return n?n.meta.universe.some(a=>a.name===e):!1}}const un=d(()=>{var t;const e=ee(K);if(!e)throw new Error("useTokenSelection must be used within PearHyperliquidProvider");const{webData2:n,allMids:a,tokenSelection:r,setTokenSelection:o}=e,s=D(()=>!!(n&&a),[n,a]),f=D(()=>{if(!s)return!0;const y=[...r.longTokens,...r.shortTokens];return y.length===0?!1:y.some(m=>!m.metadata)},[s,r.longTokens,r.shortTokens]);ce(()=>{if(!n||!a)return;const y=[...r.longTokens,...r.shortTokens].map(b=>b.symbol);if(y.length===0)return;const m=We.extractMultipleTokensMetadata(y,n,a);o(b=>({...b,longTokens:b.longTokens.map(E=>({...E,metadata:m[E.symbol]||void 0})),shortTokens:b.shortTokens.map(E=>({...E,metadata:m[E.symbol]||void 0}))}))},[n,a,o]);const c=D(()=>{let y=1,m=1;return r.longTokens.forEach(b=>{var E;if(!((E=b.metadata)===null||E===void 0)&&E.currentPrice&&b.weight>0){const p=b.weight/100;y*=Math.pow(b.metadata.currentPrice,p)}}),r.shortTokens.forEach(b=>{var E;if(!((E=b.metadata)===null||E===void 0)&&E.currentPrice&&b.weight>0){const p=b.weight/100;m*=Math.pow(b.metadata.currentPrice,-p)}}),y*m},[r.longTokens,r.shortTokens]),i=D(()=>{let y=1,m=1;return r.longTokens.forEach(b=>{var E;if(!((E=b.metadata)===null||E===void 0)&&E.prevDayPrice&&b.weight>0){const p=b.weight/100;y*=Math.pow(b.metadata.prevDayPrice,p)}}),r.shortTokens.forEach(b=>{var E;if(!((E=b.metadata)===null||E===void 0)&&E.prevDayPrice&&b.weight>0){const p=b.weight/100;m*=Math.pow(b.metadata.prevDayPrice,-p)}}),y*m},[r.longTokens,r.shortTokens]),v=D(()=>{let y=0;return r.longTokens.forEach(m=>{var b;if(!((b=m.metadata)===null||b===void 0)&&b.netFunding&&m.weight>0){const E=m.weight/100;y+=m.metadata.netFunding*E}}),r.shortTokens.forEach(m=>{var b;if(!((b=m.metadata)===null||b===void 0)&&b.netFunding&&m.weight>0){const E=m.weight/100;y-=m.metadata.netFunding*E}}),y*100},[r.longTokens,r.shortTokens]),h=D(()=>{var y;if(!(!((y=n?.meta)===null||y===void 0)&&y.universe))return 0;const m=[...r.longTokens,...r.shortTokens].map(E=>E.symbol);if(m.length===0)return 0;let b=1/0;return m.forEach(E=>{const p=n.meta.universe.find(C=>C.name===E);p?.maxLeverage&&(b=Math.min(b,p.maxLeverage))}),b===1/0?0:b},[(t=n?.meta)===null||t===void 0?void 0:t.universe,r.longTokens,r.shortTokens]),g=D(()=>10*(r.longTokens.length+r.shortTokens.length),[r.longTokens.length,r.shortTokens.length]),u=z(y=>{o(m=>({...m,longTokens:y}))},[o]),S=z(y=>{o(m=>({...m,shortTokens:y}))},[o]),O=z((y,m,b)=>{const E=Math.max(1,Math.min(100,b));o(p=>{var C,M;const j=p.longTokens.reduce((R,H)=>R+H.weight,0),$=p.shortTokens.reduce((R,H)=>R+H.weight,0);if(y){const R=((C=p.longTokens[m])===null||C===void 0?void 0:C.weight)||0,H=E-R;if(j+H+$>100){const l=Math.max(1,100-$-(j-R)),_=[...p.longTokens];return _[m]={..._[m],weight:l},{...p,longTokens:_}}else{const l=[...p.longTokens];return l[m]={...l[m],weight:E},{...p,longTokens:l}}}else{const R=((M=p.shortTokens[m])===null||M===void 0?void 0:M.weight)||0,H=E-R,Q=$+H;if(j+Q>100){const l=Math.max(1,100-j-($-R)),_=[...p.shortTokens];return _[m]={..._[m],weight:l},{...p,shortTokens:_}}else{const l=[...p.shortTokens];return l[m]={...l[m],weight:E},{...p,shortTokens:l}}}})},[o]),w=z(y=>{const b=(y?r.longTokens:r.shortTokens).length;o(E=>({...E,selectorConfig:{isLong:y,index:b},openTokenSelector:!0}))},[r.longTokens,r.shortTokens,o]),T=z((y,m)=>{o(b=>{if(y){const E=b.longTokens.filter((p,C)=>C!==m);return{...b,longTokens:E}}else{const E=b.shortTokens.filter((p,C)=>C!==m);return{...b,shortTokens:E}}})},[o]),P=z(y=>{o(m=>({...m,openTokenSelector:y}))},[o]),F=z(y=>{o(m=>({...m,selectorConfig:y}))},[o]),W=z(y=>{o(m=>({...m,openConflictModal:y}))},[o]),X=z(y=>{o(m=>({...m,conflicts:y}))},[o]),Y=z(()=>{o(y=>({...y,longTokens:[{symbol:"HYPE",weight:25},{symbol:"BTC",weight:25}],shortTokens:[{symbol:"AVAX",weight:10},{symbol:"SEI",weight:10},{symbol:"ADA",weight:10},{symbol:"TRUMP",weight:10},{symbol:"SUI",weight:10}],openTokenSelector:!1,selectorConfig:null,openConflictModal:!1}))},[o]),k=z(y=>{if(!r.selectorConfig)return;const{isLong:m,index:b}=r.selectorConfig,E=m?r.longTokens:r.shortTokens;if(E.some(C=>C.symbol===y))return;const p=We.extractTokenMetadata(y,n,a);o(C=>{if(b>=E.length){const M=C.longTokens.reduce((l,_)=>l+_.weight,0),j=C.shortTokens.reduce((l,_)=>l+_.weight,0),$=M+j,R=Math.max(1,100-$),H=Math.min(20,R),Q={symbol:y,weight:H,metadata:p||void 0};return m?{...C,longTokens:[...C.longTokens,Q]}:{...C,shortTokens:[...C.shortTokens,Q]}}else if(m){const M=[...C.longTokens];return M[b]={...M[b],symbol:y,metadata:p||void 0},{...C,longTokens:M}}else{const M=[...C.shortTokens];return M[b]={...M[b],symbol:y,metadata:p||void 0},{...C,shortTokens:M}}})},[r.selectorConfig,r.longTokens,r.shortTokens,n,a,o]);return{longTokens:r.longTokens,shortTokens:r.shortTokens,openTokenSelector:r.openTokenSelector,selectorConfig:r.selectorConfig,openConflictModal:r.openConflictModal,conflicts:r.conflicts,isLoading:f,isPriceDataReady:s,weightedRatio:c,weightedRatio24h:i,sumNetFunding:v,maxLeverage:h,minMargin:g,setLongTokens:u,setShortTokens:S,updateTokenWeight:O,addToken:w,removeToken:T,handleTokenSelect:k,setOpenTokenSelector:P,setSelectorConfig:F,setOpenConflictModal:W,setConflicts:X,resetToDefaults:Y}},"useTokenSelection");class ln{static{d(this,"ConflictDetector")}static detectConflicts(e,n,a){const r=[];return a&&(e.forEach(o=>{a.find(f=>{var c;const i=f.coin||f.symbol||f.asset,v=(c=f.side)===null||c===void 0?void 0:c.toLowerCase();return i===o.symbol&&(v==="short"||v==="sell")})&&r.push({symbol:o.symbol,conflictType:"short",conflictMessage:`${o.symbol} Long conflicts with existing ${o.symbol} Short position`})}),n.forEach(o=>{a.find(f=>{var c;const i=f.coin||f.symbol||f.asset,v=(c=f.side)===null||c===void 0?void 0:c.toLowerCase();return i===o.symbol&&(v==="long"||v==="buy")})&&r.push({symbol:o.symbol,conflictType:"long",conflictMessage:`${o.symbol} Short conflicts with existing ${o.symbol} Long position`})})),r}}export{Xe as AccountSummaryCalculator,ln as ConflictDetector,Me as PearHyperliquidClient,Zt as PearHyperliquidProvider,je as PearMigrationSDK,We as TokenMetadataExtractor,Me as default,cn as useAccountSummary,nn as useAddress,Qe as useCalculatedAccountSummary,Ke as useCalculatedOpenPositions,Be as useHyperliquidNativeWebSocket,Ye as useHyperliquidWebSocket,tn as useMigrationSDK,sn as useOpenOrders,an as useOpenPositions,en as usePearHyperliquidClient,un as useTokenSelection,on as useTradeHistories};
22
+ <%s key={someKey} {...props} />`,R,F,ae,F),$[F+R]=!0)}if(F=null,C!==void 0&&(n(C),F=""+C),s(p)&&(n(p.key),F=""+p.key),"key"in p){C={};for(var Ne in p)Ne!=="key"&&(C[Ne]=p[Ne])}else C=p;return F&&c(C,typeof v=="function"?v.displayName||v.name||"Unknown":v),i(v,F,G,ee,o(),C,Ce,Ae)}d(u,"jsxDEVImpl");function h(v){typeof v=="object"&&v!==null&&v.$$typeof===f&&v._store&&(v._store.validated=1)}d(h,"validateChildKeys");var g=ve,f=Symbol.for("react.transitional.element"),S=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),m=Symbol.for("react.profiler"),k=Symbol.for("react.consumer"),w=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),J=Symbol.for("react.activity"),T=Symbol.for("react.client.reference"),y=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,b=Object.prototype.hasOwnProperty,_=Array.isArray,P=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:d(function(v){return v()},"react_stack_bottom_frame")};var M,D={},z=g.react_stack_bottom_frame.bind(g,r)(),Q=P(a(r)),$={};le.Fragment=A,le.jsx=function(v,p,C,R,ee){var G=1e4>y.recentlyCreatedOwnerStacks++;return u(v,p,C,!1,R,ee,G?Error("react-stack-top-frame"):z,G?P(a(v)):Q)},le.jsxs=function(v,p,C,R,ee){var G=1e4>y.recentlyCreatedOwnerStacks++;return u(v,p,C,!0,R,ee,G?Error("react-stack-top-frame"):z,G?P(a(v)):Q)}})()),le}d(it,"requireReactJsxRuntime_development"),process.env.NODE_ENV==="production"?Re.exports=st():Re.exports=it();var ct=Re.exports,he={},ie={},x={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.isEventSourceSupported=t.isReactNative=t.ReadyState=t.DEFAULT_HEARTBEAT=t.UNPARSABLE_JSON_OBJECT=t.DEFAULT_RECONNECT_INTERVAL_MS=t.DEFAULT_RECONNECT_LIMIT=t.SOCKET_IO_PING_CODE=t.SOCKET_IO_PATH=t.SOCKET_IO_PING_INTERVAL=t.DEFAULT_EVENT_SOURCE_OPTIONS=t.EMPTY_EVENT_HANDLERS=t.DEFAULT_OPTIONS=void 0;var e=1,n=1e3*e;t.DEFAULT_OPTIONS={},t.EMPTY_EVENT_HANDLERS={},t.DEFAULT_EVENT_SOURCE_OPTIONS={withCredentials:!1,events:t.EMPTY_EVENT_HANDLERS},t.SOCKET_IO_PING_INTERVAL=25*n,t.SOCKET_IO_PATH="/socket.io/?EIO=3&transport=websocket",t.SOCKET_IO_PING_CODE="2",t.DEFAULT_RECONNECT_LIMIT=20,t.DEFAULT_RECONNECT_INTERVAL_MS=5e3,t.UNPARSABLE_JSON_OBJECT={},t.DEFAULT_HEARTBEAT={message:"ping",timeout:6e4,interval:25e3};var a;(function(r){r[r.UNINSTANTIATED=-1]="UNINSTANTIATED",r[r.CONNECTING=0]="CONNECTING",r[r.OPEN=1]="OPEN",r[r.CLOSING=2]="CLOSING",r[r.CLOSED=3]="CLOSED"})(a||(t.ReadyState=a={}));var o=d(function(){try{return"EventSource"in globalThis}catch{return!1}},"eventSourceSupported");t.isReactNative=typeof navigator<"u"&&navigator.product==="ReactNative",t.isEventSourceSupported=!t.isReactNative&&o()})(x);var ge={},Se={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetWebSockets=t.sharedWebSockets=void 0,t.sharedWebSockets={};var e=d(function(n){if(n&&t.sharedWebSockets.hasOwnProperty(n))delete t.sharedWebSockets[n];else for(var a in t.sharedWebSockets)t.sharedWebSockets.hasOwnProperty(a)&&delete t.sharedWebSockets[a]},"resetWebSockets");t.resetWebSockets=e})(Se);var ye={},Y={};Object.defineProperty(Y,"__esModule",{value:!0}),Y.setUpSocketIOPing=Y.appendQueryParams=Y.parseSocketIOUrl=void 0;var be=x,ut=d(function(t){if(t){var e=/^https|wss/.test(t),n=t.replace(/^(https?|wss?)(:\/\/)?/,""),a=n.replace(/\/$/,""),o=e?"wss":"ws";return"".concat(o,"://").concat(a).concat(be.SOCKET_IO_PATH)}else if(t===""){var e=/^https/.test(window.location.protocol),o=e?"wss":"ws",r=window.location.port?":".concat(window.location.port):"";return"".concat(o,"://").concat(window.location.hostname).concat(r).concat(be.SOCKET_IO_PATH)}return t},"parseSocketIOUrl");Y.parseSocketIOUrl=ut;var lt=d(function(t,e){e===void 0&&(e={});var n=/\?([\w]+=[\w]+)/,a=n.test(t),o="".concat(Object.entries(e).reduce(function(r,s){var c=s[0],l=s[1];return r+"".concat(c,"=").concat(l,"&")},"").slice(0,-1));return"".concat(t).concat(a?"&":"?").concat(o)},"appendQueryParams");Y.appendQueryParams=lt;var dt=d(function(t,e){e===void 0&&(e=be.SOCKET_IO_PING_INTERVAL);var n=d(function(){return t(be.SOCKET_IO_PING_CODE)},"ping");return window.setInterval(n,e)},"setUpSocketIOPing");Y.setUpSocketIOPing=dt;var me={};Object.defineProperty(me,"__esModule",{value:!0}),me.heartbeat=vt;var Le=x;function ft(t){return Array.isArray(t)?t.reduce(function(e,n){return e.current>n.current?e:n}).current:t.current}d(ft,"getLastMessageTime");function vt(t,e,n){var a=n||{},o=a.interval,r=o===void 0?Le.DEFAULT_HEARTBEAT.interval:o,s=a.timeout,c=s===void 0?Le.DEFAULT_HEARTBEAT.timeout:s,l=a.message,i=l===void 0?Le.DEFAULT_HEARTBEAT.message:l,u=Math.max(100,r/10),h=Date.now(),g=setInterval(function(){var f=Date.now(),S=ft(e);if(S+c<=f)console.warn("Heartbeat timed out, closing connection, last message received ".concat(f-S,"ms ago, last ping sent ").concat(f-h,"ms ago")),t.close();else if(S+r<=f&&h+r<=f)try{typeof i=="function"?t.send(i()):t.send(i),h=f}catch(A){console.error("Heartbeat failed, closing connection",A instanceof Error?A.message:A),t.close()}},u);return t.addEventListener("close",function(){clearInterval(g)}),function(){}}d(vt,"heartbeat");var ce={},Te={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetSubscribers=t.removeSubscriber=t.addSubscriber=t.hasSubscribers=t.getSubscribers=void 0;var e={},n=[],a=d(function(l){return(0,t.hasSubscribers)(l)?Array.from(e[l]):n},"getSubscribers");t.getSubscribers=a;var o=d(function(l){var i;return((i=e[l])===null||i===void 0?void 0:i.size)>0},"hasSubscribers");t.hasSubscribers=o;var r=d(function(l,i){e[l]=e[l]||new Set,e[l].add(i)},"addSubscriber");t.addSubscriber=r;var s=d(function(l,i){e[l].delete(i)},"removeSubscriber");t.removeSubscriber=s;var c=d(function(l){if(l&&e.hasOwnProperty(l))delete e[l];else for(var i in e)e.hasOwnProperty(i)&&delete e[i]},"resetSubscribers");t.resetSubscribers=c})(Te),Object.defineProperty(ce,"__esModule",{value:!0}),ce.assertIsWebSocket=St,ce.resetGlobalState=yt;var ht=Se,gt=Te;function St(t,e){if(!e&&!(t instanceof WebSocket))throw new Error("")}d(St,"assertIsWebSocket");function yt(t){(0,gt.resetSubscribers)(t),(0,ht.resetWebSockets)(t)}d(yt,"resetGlobalState");var Ee=L&&L.__assign||function(){return Ee=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},Ee.apply(this,arguments)};Object.defineProperty(ye,"__esModule",{value:!0}),ye.attachListeners=void 0;var bt=Y,mt=me,B=x,Tt=ce,Et=d(function(t,e,n,a){t.onmessage=function(o){var r;e.current.onMessage&&e.current.onMessage(o),typeof a?.current=="number"&&(a.current=Date.now()),!(typeof e.current.filter=="function"&&e.current.filter(o)!==!0)&&(e.current.heartbeat&&typeof e.current.heartbeat!="boolean"&&((r=e.current.heartbeat)===null||r===void 0?void 0:r.returnMessage)===o.data||n(o))}},"bindMessageHandler$1"),_t=d(function(t,e,n,a,o){t.onopen=function(r){if(e.current.onOpen&&e.current.onOpen(r),a.current=0,n(B.ReadyState.OPEN),e.current.heartbeat&&t instanceof WebSocket){var s=typeof e.current.heartbeat=="boolean"?void 0:e.current.heartbeat;o.current=Date.now(),(0,mt.heartbeat)(t,o,s)}}},"bindOpenHandler$1"),Ot=d(function(t,e,n,a,o){if(B.isEventSourceSupported&&t instanceof EventSource)return function(){};(0,Tt.assertIsWebSocket)(t,e.current.skipAssert);var r;return t.onclose=function(s){var c;if(e.current.onClose&&e.current.onClose(s),n(B.ReadyState.CLOSED),e.current.shouldReconnect&&e.current.shouldReconnect(s)){var l=(c=e.current.reconnectAttempts)!==null&&c!==void 0?c:B.DEFAULT_RECONNECT_LIMIT;if(o.current<l){var i=typeof e.current.reconnectInterval=="function"?e.current.reconnectInterval(o.current):e.current.reconnectInterval;r=window.setTimeout(function(){o.current++,a()},i??B.DEFAULT_RECONNECT_INTERVAL_MS)}else e.current.onReconnectStop&&e.current.onReconnectStop(l),console.warn("Max reconnect attempts of ".concat(l," exceeded"))}},function(){return r&&window.clearTimeout(r)}},"bindCloseHandler$1"),pt=d(function(t,e,n,a,o){var r;return t.onerror=function(s){var c;if(e.current.onError&&e.current.onError(s),B.isEventSourceSupported&&t instanceof EventSource&&(e.current.onClose&&e.current.onClose(Ee(Ee({},s),{code:1006,reason:"An error occurred with the EventSource: ".concat(s),wasClean:!1})),n(B.ReadyState.CLOSED),t.close()),e.current.retryOnError)if(o.current<((c=e.current.reconnectAttempts)!==null&&c!==void 0?c:B.DEFAULT_RECONNECT_LIMIT)){var l=typeof e.current.reconnectInterval=="function"?e.current.reconnectInterval(o.current):e.current.reconnectInterval;r=window.setTimeout(function(){o.current++,a()},l??B.DEFAULT_RECONNECT_INTERVAL_MS)}else e.current.onReconnectStop&&e.current.onReconnectStop(e.current.reconnectAttempts),console.warn("Max reconnect attempts of ".concat(e.current.reconnectAttempts," exceeded"))},function(){return r&&window.clearTimeout(r)}},"bindErrorHandler$1"),wt=d(function(t,e,n,a,o,r,s){var c=e.setLastMessage,l=e.setReadyState,i,u,h;return n.current.fromSocketIO&&(i=(0,bt.setUpSocketIOPing)(s)),Et(t,n,c,r),_t(t,n,l,o,r),u=Ot(t,n,l,a,o),h=pt(t,n,l,a,o),function(){l(B.ReadyState.CLOSING),u(),h(),t.close(),i&&clearInterval(i)}},"attachListeners");ye.attachListeners=wt;var _e={},Oe=L&&L.__assign||function(){return Oe=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},Oe.apply(this,arguments)};Object.defineProperty(_e,"__esModule",{value:!0}),_e.attachSharedListeners=void 0;var Pt=Se,oe=x,de=Te,kt=Y,Ct=me,At=d(function(t,e,n){t.onmessage=function(a){(0,de.getSubscribers)(e).forEach(function(o){var r;o.optionsRef.current.onMessage&&o.optionsRef.current.onMessage(a),typeof((r=o?.lastMessageTime)===null||r===void 0?void 0:r.current)=="number"&&(o.lastMessageTime.current=Date.now()),!(typeof o.optionsRef.current.filter=="function"&&o.optionsRef.current.filter(a)!==!0)&&(n&&typeof n!="boolean"&&n?.returnMessage===a.data||o.setLastMessage(a))})}},"bindMessageHandler"),Nt=d(function(t,e,n){t.onopen=function(a){var o=(0,de.getSubscribers)(e);o.forEach(function(r){r.reconnectCount.current=0,r.optionsRef.current.onOpen&&r.optionsRef.current.onOpen(a),r.setReadyState(oe.ReadyState.OPEN),n&&t instanceof WebSocket&&(r.lastMessageTime.current=Date.now())}),n&&t instanceof WebSocket&&(0,Ct.heartbeat)(t,o.map(function(r){return r.lastMessageTime}),typeof n=="boolean"?void 0:n)}},"bindOpenHandler"),Mt=d(function(t,e){t instanceof WebSocket&&(t.onclose=function(n){(0,de.getSubscribers)(e).forEach(function(a){a.optionsRef.current.onClose&&a.optionsRef.current.onClose(n),a.setReadyState(oe.ReadyState.CLOSED)}),delete Pt.sharedWebSockets[e],(0,de.getSubscribers)(e).forEach(function(a){var o;if(a.optionsRef.current.shouldReconnect&&a.optionsRef.current.shouldReconnect(n)){var r=(o=a.optionsRef.current.reconnectAttempts)!==null&&o!==void 0?o:oe.DEFAULT_RECONNECT_LIMIT;if(a.reconnectCount.current<r){var s=typeof a.optionsRef.current.reconnectInterval=="function"?a.optionsRef.current.reconnectInterval(a.reconnectCount.current):a.optionsRef.current.reconnectInterval;setTimeout(function(){a.reconnectCount.current++,a.reconnect.current()},s??oe.DEFAULT_RECONNECT_INTERVAL_MS)}else a.optionsRef.current.onReconnectStop&&a.optionsRef.current.onReconnectStop(a.optionsRef.current.reconnectAttempts),console.warn("Max reconnect attempts of ".concat(r," exceeded"))}})})},"bindCloseHandler"),Rt=d(function(t,e){t.onerror=function(n){(0,de.getSubscribers)(e).forEach(function(a){a.optionsRef.current.onError&&a.optionsRef.current.onError(n),oe.isEventSourceSupported&&t instanceof EventSource&&(a.optionsRef.current.onClose&&a.optionsRef.current.onClose(Oe(Oe({},n),{code:1006,reason:"An error occurred with the EventSource: ".concat(n),wasClean:!1})),a.setReadyState(oe.ReadyState.CLOSED))}),oe.isEventSourceSupported&&t instanceof EventSource&&t.close()}},"bindErrorHandler"),Lt=d(function(t,e,n,a){var o;return n.current.fromSocketIO&&(o=(0,kt.setUpSocketIOPing)(a)),At(t,e,n.current.heartbeat),Mt(t,e),Nt(t,e,n.current.heartbeat),Rt(t,e),function(){o&&clearInterval(o)}},"attachSharedListeners");_e.attachSharedListeners=Lt,Object.defineProperty(ge,"__esModule",{value:!0}),ge.createOrJoinSocket=void 0;var te=Se,fe=x,It=ye,Dt=_e,Ie=Te,Wt=d(function(t,e,n,a,o){return function(){if((0,Ie.removeSubscriber)(t,e),!(0,Ie.hasSubscribers)(t)){try{var r=te.sharedWebSockets[t];r instanceof WebSocket&&(r.onclose=function(s){n.current.onClose&&n.current.onClose(s),a(fe.ReadyState.CLOSED)}),r.close()}catch{}o&&o(),delete te.sharedWebSockets[t]}}},"cleanSubscribers"),Ut=d(function(t,e,n,a,o,r,s,c,l){if(!fe.isEventSourceSupported&&a.current.eventSourceOptions)throw fe.isReactNative?new Error("EventSource is not supported in ReactNative"):new Error("EventSource is not supported");if(a.current.share){var i=null;te.sharedWebSockets[e]===void 0?(te.sharedWebSockets[e]=a.current.eventSourceOptions?new EventSource(e,a.current.eventSourceOptions):new WebSocket(e,a.current.protocols),t.current=te.sharedWebSockets[e],n(fe.ReadyState.CONNECTING),i=(0,Dt.attachSharedListeners)(te.sharedWebSockets[e],e,a,l)):(t.current=te.sharedWebSockets[e],n(te.sharedWebSockets[e].readyState));var u={setLastMessage:o,setReadyState:n,optionsRef:a,reconnectCount:s,lastMessageTime:c,reconnect:r};return(0,Ie.addSubscriber)(e,u),Wt(e,u,a,n,i)}else{if(t.current=a.current.eventSourceOptions?new EventSource(e,a.current.eventSourceOptions):new WebSocket(e,a.current.protocols),n(fe.ReadyState.CONNECTING),!t.current)throw new Error("WebSocket failed to be created");return(0,It.attachListeners)(t.current,{setLastMessage:o,setReadyState:n},a,r.current,s,c,l)}},"createOrJoinSocket");ge.createOrJoinSocket=Ut;var $e={};(function(t){var e=L&&L.__awaiter||function(l,i,u,h){function g(f){return f instanceof u?f:new u(function(S){S(f)})}return d(g,"adopt"),new(u||(u=Promise))(function(f,S){function A(k){try{m(h.next(k))}catch(w){S(w)}}d(A,"fulfilled");function E(k){try{m(h.throw(k))}catch(w){S(w)}}d(E,"rejected");function m(k){k.done?f(k.value):g(k.value).then(A,E)}d(m,"step"),m((h=h.apply(l,i||[])).next())})},n=L&&L.__generator||function(l,i){var u={label:0,sent:d(function(){if(f[0]&1)throw f[1];return f[1]},"sent"),trys:[],ops:[]},h,g,f,S=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return S.next=A(0),S.throw=A(1),S.return=A(2),typeof Symbol=="function"&&(S[Symbol.iterator]=function(){return this}),S;function A(m){return function(k){return E([m,k])}}function E(m){if(h)throw new TypeError("Generator is already executing.");for(;S&&(S=0,m[0]&&(u=0)),u;)try{if(h=1,g&&(f=m[0]&2?g.return:m[0]?g.throw||((f=g.return)&&f.call(g),0):g.next)&&!(f=f.call(g,m[1])).done)return f;switch(g=0,f&&(m=[m[0]&2,f.value]),m[0]){case 0:case 1:f=m;break;case 4:return u.label++,{value:m[1],done:!1};case 5:u.label++,g=m[1],m=[0];continue;case 7:m=u.ops.pop(),u.trys.pop();continue;default:if(f=u.trys,!(f=f.length>0&&f[f.length-1])&&(m[0]===6||m[0]===2)){u=0;continue}if(m[0]===3&&(!f||m[1]>f[0]&&m[1]<f[3])){u.label=m[1];break}if(m[0]===6&&u.label<f[1]){u.label=f[1],f=m;break}if(f&&u.label<f[2]){u.label=f[2],u.ops.push(m);break}f[2]&&u.ops.pop(),u.trys.pop();continue}m=i.call(l,u)}catch(k){m=[6,k],g=0}finally{h=f=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},a=L&&L.__spreadArray||function(l,i,u){if(u||arguments.length===2)for(var h=0,g=i.length,f;h<g;h++)(f||!(h in i))&&(f||(f=Array.prototype.slice.call(i,0,h)),f[h]=i[h]);return l.concat(f||Array.prototype.slice.call(i))};Object.defineProperty(t,"__esModule",{value:!0}),t.getUrl=void 0;var o=Y,r=x,s=d(function(l){return new Promise(function(i){return window.setTimeout(i,l)})},"waitFor"),c=d(function(l,i){for(var u=[],h=2;h<arguments.length;h++)u[h-2]=arguments[h];return e(void 0,a([l,i],u,!0),void 0,function(g,f,S){var A,E,m,k,w,O,I,j;return S===void 0&&(S=0),n(this,function(N){switch(N.label){case 0:if(typeof g!="function")return[3,10];N.label=1;case 1:return N.trys.push([1,3,,9]),[4,g()];case 2:return A=N.sent(),[3,9];case 3:return N.sent(),f.current.retryOnError?(E=(O=f.current.reconnectAttempts)!==null&&O!==void 0?O:r.DEFAULT_RECONNECT_LIMIT,S<E?(m=typeof f.current.reconnectInterval=="function"?f.current.reconnectInterval(S):f.current.reconnectInterval,[4,s(m??r.DEFAULT_RECONNECT_INTERVAL_MS)]):[3,5]):[3,7];case 4:return N.sent(),[2,(0,t.getUrl)(g,f,S+1)];case 5:return(j=(I=f.current).onReconnectStop)===null||j===void 0||j.call(I,S),[2,null];case 6:return[3,8];case 7:return[2,null];case 8:return[3,9];case 9:return[3,11];case 10:A=g,N.label=11;case 11:return k=f.current.fromSocketIO?(0,o.parseSocketIOUrl)(A):A,w=f.current.queryParams?(0,o.appendQueryParams)(k,f.current.queryParams):k,[2,w]}})})},"getUrl");t.getUrl=c})($e);var ze={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.websocketWrapper=void 0;var e=d(function(n,a){return new Proxy(n,{get:d(function(o,r){var s=o[r];return r==="reconnect"?a:typeof s=="function"?(console.error("Calling methods directly on the websocket is not supported at this moment. You must use the methods returned by useWebSocket."),function(){}):s},"get"),set:d(function(o,r,s){return/^on/.test(r)?(console.warn("The websocket's event handlers should be defined through the options object passed into useWebSocket."),!1):(o[r]=s,!0)},"set")})},"websocketWrapper");t.websocketWrapper=e,t.default=t.websocketWrapper})(ze);var ne=L&&L.__assign||function(){return ne=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},ne.apply(this,arguments)},jt=L&&L.__awaiter||function(t,e,n,a){function o(r){return r instanceof n?r:new n(function(s){s(r)})}return d(o,"adopt"),new(n||(n=Promise))(function(r,s){function c(u){try{i(a.next(u))}catch(h){s(h)}}d(c,"fulfilled");function l(u){try{i(a.throw(u))}catch(h){s(h)}}d(l,"rejected");function i(u){u.done?r(u.value):o(u.value).then(c,l)}d(i,"step"),i((a=a.apply(t,e||[])).next())})},Ft=L&&L.__generator||function(t,e){var n={label:0,sent:d(function(){if(r[0]&1)throw r[1];return r[1]},"sent"),trys:[],ops:[]},a,o,r,s=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return s.next=c(0),s.throw=c(1),s.return=c(2),typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function c(i){return function(u){return l([i,u])}}function l(i){if(a)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(n=0)),n;)try{if(a=1,o&&(r=i[0]&2?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[i[0]&2,r.value]),i[0]){case 0:case 1:r=i;break;case 4:return n.label++,{value:i[1],done:!1};case 5:n.label++,o=i[1],i=[0];continue;case 7:i=n.ops.pop(),n.trys.pop();continue;default:if(r=n.trys,!(r=r.length>0&&r[r.length-1])&&(i[0]===6||i[0]===2)){n=0;continue}if(i[0]===3&&(!r||i[1]>r[0]&&i[1]<r[3])){n.label=i[1];break}if(i[0]===6&&n.label<r[1]){n.label=r[1],r=i;break}if(r&&n.label<r[2]){n.label=r[2],n.ops.push(i);break}r[2]&&n.ops.pop(),n.trys.pop();continue}i=e.call(t,n)}catch(u){i=[6,u],o=0}finally{a=r=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}},Ht=L&&L.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ie,"__esModule",{value:!0}),ie.useWebSocket=void 0;var H=ve,De=ot,K=x,$t=ge,zt=$e,Vt=Ht(ze),Ve=ce,qt=d(function(t,e,n){e===void 0&&(e=K.DEFAULT_OPTIONS),n===void 0&&(n=!0);var a=(0,H.useState)(null),o=a[0],r=a[1],s=(0,H.useState)({}),c=s[0],l=s[1],i=(0,H.useMemo)(function(){if(!e.disableJson&&o)try{return JSON.parse(o.data)}catch{return K.UNPARSABLE_JSON_OBJECT}return null},[o,e.disableJson]),u=(0,H.useRef)(null),h=(0,H.useRef)(null),g=(0,H.useRef)(function(){}),f=(0,H.useRef)(0),S=(0,H.useRef)(Date.now()),A=(0,H.useRef)([]),E=(0,H.useRef)(null),m=(0,H.useRef)(e);m.current=e;var k=u.current&&c[u.current]!==void 0?c[u.current]:t!==null&&n===!0?K.ReadyState.CONNECTING:K.ReadyState.UNINSTANTIATED,w=e.queryParams?JSON.stringify(e.queryParams):null,O=(0,H.useCallback)(function(N,U){var J;if(U===void 0&&(U=!0),K.isEventSourceSupported&&h.current instanceof EventSource){console.warn("Unable to send a message from an eventSource");return}((J=h.current)===null||J===void 0?void 0:J.readyState)===K.ReadyState.OPEN?((0,Ve.assertIsWebSocket)(h.current,m.current.skipAssert),h.current.send(N)):U&&A.current.push(N)},[]),I=(0,H.useCallback)(function(N,U){U===void 0&&(U=!0),O(JSON.stringify(N),U)},[O]),j=(0,H.useCallback)(function(){return m.current.share!==!0||K.isEventSourceSupported&&h.current instanceof EventSource?h.current:(E.current===null&&h.current&&((0,Ve.assertIsWebSocket)(h.current,m.current.skipAssert),E.current=(0,Vt.default)(h.current,g)),E.current)},[]);return(0,H.useEffect)(function(){if(t!==null&&n===!0){var N,U=!1,J=!0,T=d(function(){return jt(void 0,void 0,void 0,function(){var y,b,_;return Ft(this,function(P){switch(P.label){case 0:return y=u,[4,(0,zt.getUrl)(t,m)];case 1:return y.current=P.sent(),u.current===null?(console.error("Failed to get a valid URL. WebSocket connection aborted."),u.current="ABORTED",(0,De.flushSync)(function(){return l(function(M){return ne(ne({},M),{ABORTED:K.ReadyState.CLOSED})})}),[2]):(b=d(function(M){U||(0,De.flushSync)(function(){return r(M)})},"protectedSetLastMessage"),_=d(function(M){U||(0,De.flushSync)(function(){return l(function(D){var z;return ne(ne({},D),u.current&&(z={},z[u.current]=M,z))})})},"protectedSetReadyState"),J&&(N=(0,$t.createOrJoinSocket)(h,u.current,_,m,b,g,f,S,O)),[2])}})})},"start_1");return g.current=function(){U||(E.current&&(E.current=null),N?.(),T())},T(),function(){U=!0,J=!1,E.current&&(E.current=null),N?.(),r(null)}}else(t===null||n===!1)&&(f.current=0,l(function(y){var b;return ne(ne({},y),u.current&&(b={},b[u.current]=K.ReadyState.CLOSED,b))}))},[t,n,w,O]),(0,H.useEffect)(function(){k===K.ReadyState.OPEN&&A.current.splice(0).forEach(function(N){O(N)})},[k]),{sendMessage:O,sendJsonMessage:I,lastMessage:o,lastJsonMessage:i,readyState:k,getWebSocket:j}},"useWebSocket$1");ie.useWebSocket=qt;var pe={},we=L&&L.__assign||function(){return we=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},we.apply(this,arguments)};Object.defineProperty(pe,"__esModule",{value:!0}),pe.useSocketIO=void 0;var qe=ve,xt=ie,Jt=x,We={type:"empty",payload:null},Gt=d(function(t){if(!t||!t.data)return We;var e=t.data.match(/\[.*]/);if(!e)return We;var n=JSON.parse(e);return!Array.isArray(n)||!n[1]?We:{type:n[0],payload:n[1]}},"getSocketData"),Yt=d(function(t,e,n){e===void 0&&(e=Jt.DEFAULT_OPTIONS),n===void 0&&(n=!0);var a=(0,qe.useMemo)(function(){return we(we({},e),{fromSocketIO:!0})},[]),o=(0,xt.useWebSocket)(t,a,n),r=o.sendMessage,s=o.sendJsonMessage,c=o.lastMessage,l=o.readyState,i=o.getWebSocket,u=(0,qe.useMemo)(function(){return Gt(c)},[c]);return{sendMessage:r,sendJsonMessage:s,lastMessage:u,lastJsonMessage:u,readyState:l,getWebSocket:i}},"useSocketIO");pe.useSocketIO=Yt;var Pe={},ke=L&&L.__assign||function(){return ke=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},ke.apply(this,arguments)},Bt=L&&L.__rest||function(t,e){var n={};for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&e.indexOf(a)<0&&(n[a]=t[a]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,a=Object.getOwnPropertySymbols(t);o<a.length;o++)e.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(t,a[o])&&(n[a[o]]=t[a[o]]);return n};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.useEventSource=void 0;var xe=ve,Kt=ie,Je=x,Xt=d(function(t,e,n){e===void 0&&(e=Je.DEFAULT_EVENT_SOURCE_OPTIONS);var a=e.withCredentials,o=e.events,r=Bt(e,["withCredentials","events"]);n===void 0&&(n=!0);var s=ke(ke({},r),{eventSourceOptions:{withCredentials:a}}),c=(0,xe.useRef)(Je.EMPTY_EVENT_HANDLERS);o&&(c.current=o);var l=(0,Kt.useWebSocket)(t,s,n),i=l.lastMessage,u=l.readyState,h=l.getWebSocket;return(0,xe.useEffect)(function(){i?.type&&Object.entries(c.current).forEach(function(g){var f=g[0],S=g[1];f===i.type&&S(i)})},[i]),{lastEvent:i,readyState:u,getEventSource:h}},"useEventSource");Pe.useEventSource=Xt,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.resetGlobalState=t.useEventSource=t.ReadyState=t.useSocketIO=t.default=void 0;var e=ie;Object.defineProperty(t,"default",{enumerable:!0,get:d(function(){return e.useWebSocket},"get")});var n=pe;Object.defineProperty(t,"useSocketIO",{enumerable:!0,get:d(function(){return n.useSocketIO},"get")});var a=x;Object.defineProperty(t,"ReadyState",{enumerable:!0,get:d(function(){return a.ReadyState},"get")});var o=Pe;Object.defineProperty(t,"useEventSource",{enumerable:!0,get:d(function(){return o.useEventSource},"get")});var r=ce;Object.defineProperty(t,"resetGlobalState",{enumerable:!0,get:d(function(){return r.resetGlobalState},"get")})})(he);var Ge=at(he);const Ye=d(({wsUrl:t,address:e})=>{const[n,a]=V({tradeHistories:null,openPositions:null,openOrders:null,accountSummary:null}),[o,r]=V(null),[s,c]=V(null),{readyState:l,sendMessage:i}=Ge(t,{shouldReconnect:d(()=>!0,"shouldReconnect"),reconnectAttempts:5,reconnectInterval:3e3,onMessage:d(h=>{try{const g=JSON.parse(h.data);if(("success"in g||"error"in g)&&!("channel"in g)){g.error?r(g.error):r(null);return}if("channel"in g&&"data"in g){const f=g;if(f.data===null||f.data===void 0)return;switch(f.channel){case"trade-histories":Array.isArray(f.data)&&a(S=>({...S,tradeHistories:f.data}));break;case"open-positions":Array.isArray(f.data)&&a(S=>({...S,openPositions:f.data}));break;case"open-orders":Array.isArray(f.data)&&a(S=>({...S,openOrders:f.data}));break;case"account-summary":typeof f.data=="object"&&f.data!==null&&a(S=>({...S,accountSummary:f.data}));break}}}catch(g){r(`Failed to parse message: ${g instanceof Error?g.message:String(g)}`)}},"onMessage")}),u=l===he.ReadyState.OPEN;return se(()=>{u&&e&&e!==s?(s&&i(JSON.stringify({action:"unsubscribe",address:s})),i(JSON.stringify({action:"subscribe",address:e})),c(e),r(null)):u&&!e&&s&&(i(JSON.stringify({action:"unsubscribe",address:s})),c(null))},[u,e,s,i]),se(()=>{e!==s&&(a({tradeHistories:null,openPositions:null,openOrders:null,accountSummary:null}),r(null))},[e,s]),{data:n,connectionStatus:l,isConnected:u,lastError:o}},"useHyperliquidWebSocket"),Be=d(({address:t,tokens:e=[]})=>{const[n,a]=V(null),[o,r]=V(null),[s,c]=V(null),[l,i]=V(null),[u,h]=V(null),[g,f]=V([]),S=nt(null),{readyState:A,sendJsonMessage:E}=Ge("wss://api.hyperliquid.xyz/ws",{shouldReconnect:d(()=>!0,"shouldReconnect"),reconnectAttempts:5,reconnectInterval:3e3,onOpen:d(()=>{},"onOpen"),onClose:d(()=>{},"onClose"),onError:d(k=>console.error("[HyperLiquid WS] Connection error:",k),"onError"),onReconnectStop:d(()=>console.error("[HyperLiquid WS] Reconnection stopped after 5 attempts"),"onReconnectStop"),onMessage:d(k=>{try{const w=JSON.parse(k.data);if("success"in w||"error"in w){w.error?(console.error("[HyperLiquid WS] Subscription error:",w.error),i(w.error)):i(null);return}if("channel"in w&&"data"in w){const O=w;switch(O.channel){case"webData2":a(O.data);break;case"allMids":r(O.data);break;case"activeAssetData":const I=O.data;c(j=>({...j,[I.coin]:I}));break;default:console.warn(`[HyperLiquid WS] Unknown channel: ${O.channel}`)}}}catch(w){const O=`Failed to parse message: ${w instanceof Error?w.message:String(w)}`;console.error("[HyperLiquid WS] Parse error:",O,"Raw message:",k.data),i(O)}},"onMessage")}),m=A===he.ReadyState.OPEN;return se(()=>(m?S.current=setInterval(()=>{E({method:"ping"})},3e4):S.current&&(clearInterval(S.current),S.current=null),()=>{S.current&&(clearInterval(S.current),S.current=null)}),[m,E]),se(()=>{if(!m)return;const w=t||"0x0000000000000000000000000000000000000000";if(u===w)return;u&&E({method:"unsubscribe",subscription:{type:"webData2",user:u}});const O={method:"subscribe",subscription:{type:"webData2",user:w}},I={method:"subscribe",subscription:{type:"allMids"}};E(O),E(I),h(w),u&&u!==w&&a(null)},[m,t,u,E]),se(()=>{if(!m||!t)return;const k=e.filter(O=>O&&!g.includes(O)),w=g.filter(O=>!e.includes(O));w.forEach(O=>{E({method:"unsubscribe",subscription:{type:"activeAssetData",user:t,coin:O}})}),k.forEach(O=>{E({method:"subscribe",subscription:{type:"activeAssetData",user:t,coin:O}})}),(k.length>0||w.length>0)&&(f(e.filter(O=>O)),w.length>0&&c(O=>{if(!O)return O;const I={...O};return w.forEach(j=>{delete I[j]}),Object.keys(I).length>0?I:null}))},[m,t,e,g,E]),{webData2:n,allMids:o,activeAssetData:s,connectionStatus:A,isConnected:m,lastError:l}},"useHyperliquidNativeWebSocket"),Qt={longTokens:[{symbol:"HYPE",weight:25},{symbol:"BTC",weight:25}],shortTokens:[{symbol:"AVAX",weight:10},{symbol:"SEI",weight:10},{symbol:"ADA",weight:10},{symbol:"TRUMP",weight:10},{symbol:"SUI",weight:10}],openTokenSelector:!1,selectorConfig:null,openConflictModal:!1,conflicts:[],leverageMatched:!1},X=rt(void 0),Zt=d(({config:t,wsUrl:e="wss://hl-v2.pearprotocol.io/ws",children:n})=>{const a=W(()=>new Me(t),[t]),o=W(()=>new je(a),[a]),[r,s]=V(null),[c,l]=V(Qt),i=W(()=>{const I=c.longTokens.map(N=>N.symbol),j=c.shortTokens.map(N=>N.symbol);return[...new Set([...I,...j])]},[c.longTokens,c.shortTokens]),{data:u,connectionStatus:h,isConnected:g,lastError:f}=Ye({wsUrl:e,address:r}),{webData2:S,allMids:A,activeAssetData:E,connectionStatus:m,isConnected:k,lastError:w}=Be({address:r,tokens:i}),O=W(()=>({client:a,migrationSDK:o,address:r,setAddress:s,connectionStatus:h,isConnected:g,data:u,lastError:f,nativeConnectionStatus:m,nativeIsConnected:k,nativeLastError:w,webData2:S,allMids:A,activeAssetData:E,tokenSelection:c,setTokenSelection:l}),[a,o,r,h,g,u,f,m,k,w,S,A,E,c,l]);return ct.jsx(X.Provider,{value:O,children:n})},"PearHyperliquidProvider"),en=d(()=>{const t=Z(X);if(!t)throw new Error("usePearHyperliquidClient must be used within a PearHyperliquidProvider");return t.client},"usePearHyperliquidClient"),tn=d(()=>{const t=Z(X);if(!t)throw new Error("useMigrationSDK must be used within a PearHyperliquidProvider");return t.migrationSDK},"useMigrationSDK"),nn=d(()=>{const t=Z(X);if(!t)throw new Error("useAddress must be used within a PearHyperliquidProvider");return{address:t.address,setAddress:t.setAddress,clearAddress:d(()=>t.setAddress(null),"clearAddress"),isLoggedIn:!!t.address}},"useAddress");var re;(function(t){t.LONG="LONG",t.SHORT="SHORT"})(re||(re={}));class rn{static{d(this,"PositionProcessor")}constructor(e,n){this.webData2=e,this.allMids=n}execute(e){if(!e||e.length===0)return[];const n=this.getUserPositions(),a=this.calculatePlatformTotalsByAsset(e),o=new Map;(n||[]).forEach(s=>{var c;!((c=s.position)===null||c===void 0)&&c.coin&&o.set(s.position.coin,s)});const r=[];for(const s of e){const c=this.syncPositionWithAggregateData(s,o,a);r.push(c)}return r}getUserPositions(){var e,n;return((n=(e=this.webData2)===null||e===void 0?void 0:e.clearinghouseState)===null||n===void 0?void 0:n.assetPositions)||[]}getMarketPrice(e){var n;if(!(!((n=this.allMids)===null||n===void 0)&&n.mids))return 0;const a=this.allMids.mids[e];if(a)return Number(a);const o=this.extractBaseCurrency(e),r=this.allMids.mids[o];return r?Number(r):0}calculatePlatformTotalsByAsset(e){const n=new Map;for(const a of e){for(const o of a.longAssets||[]){const r=this.extractBaseCurrency(o.coin);n.has(r)||n.set(r,{totalSize:0,positions:[]});const s=n.get(r),c=Number(o.size||0);s.totalSize+=c,s.positions.push({positionId:a.positionId,asset:o,size:c})}for(const o of a.shortAssets||[]){const r=this.extractBaseCurrency(o.coin);n.has(r)||n.set(r,{totalSize:0,positions:[]});const s=n.get(r),c=Number(o.size||0);s.totalSize+=c,s.positions.push({positionId:a.positionId,asset:o,size:c})}}return n}extractBaseCurrency(e){return e.split("/")[0]||e}syncPositionWithAggregateData(e,n,a){const o=[];let r=!1,s=!0,c={total:0,closed:0},l={total:0,closed:0};for(const u of e.longAssets||[]){const h=this.extractBaseCurrency(u.coin),g=n.get(h),f=a.get(h),S=this.syncAssetWithAggregateData({...u,side:re.LONG},g,f?.totalSize||0);o.push(S),c.total++,S.actualSize===0&&c.closed++,S.isExternallyModified&&(r=!0),S.actualSize!==0&&(s=!1)}for(const u of e.shortAssets||[]){const h=this.extractBaseCurrency(u.coin),g=n.get(h),f=a.get(h),S=this.syncAssetWithAggregateData({...u,side:re.SHORT},g,f?.totalSize||0);o.push(S),l.total++,S.actualSize===0&&l.closed++,S.isExternallyModified&&(r=!0),S.actualSize!==0&&(s=!1)}const i=this.determineSyncStatus(r,s,c,l);return this.mapPositionToDtoWithSyncData(e,o,i)}determineSyncStatus(e,n,a,o){if(n)return"EXTERNALLY_CLOSED";const r=a.total>0&&a.closed===a.total,s=o.total>0&&o.closed===o.total;return r&&!s||!r&&s?"PAIR_BROKEN":e?"EXTERNALLY_MODIFIED":"SYNCED"}syncAssetWithAggregateData(e,n,a){const o=Number(e.size||0);if(!n||!n.position||!n.position.szi)return{asset:e,actualSize:0,isExternallyModified:!0,cumFunding:{allTime:0,sinceChange:0,sinceOpen:0},unrealizedPnl:0,liquidationPrice:0};const r=Math.abs(Number(n.position.szi||0)),s=Math.abs(r-a),c=a*.001,l=s>c,i=a>0?o/a:0,u=r*i,h=n.position.cumFunding,g={allTime:Number(h?.allTime||0),sinceChange:Number(h?.sinceChange||0)*i,sinceOpen:Number(h?.sinceOpen||0)*i},f=Number(n.position.unrealizedPnl||0)*i,S=Number(n.position.liquidationPx||0);return{asset:e,actualSize:u,isExternallyModified:l,cumFunding:g,unrealizedPnl:f,liquidationPrice:S}}mapPositionToDtoWithSyncData(e,n,a){var o,r;const s=((o=e.longAssets)===null||o===void 0?void 0:o.filter(g=>g))||[],c=((r=e.shortAssets)===null||r===void 0?void 0:r.filter(g=>g))||[],l=new Map;n.forEach(g=>{l.set(`${g.asset.coin}-${g.asset.side}`,g)});const i=this.calculateCurrentTotalPositionValue(n),h=this.calculateEntryTotalPositionValue(n)/e.leverage;return{syncStatus:a,positionId:e.positionId,address:e.address,leverage:e.leverage,stopLoss:e.stopLoss,takeProfit:e.takeProfit,entryRatio:this.calculateEntryRatio(n),markRatio:this.calculateMarkRatio(n),netFunding:this.calculateNetFundingFromSyncResults(n),positionValue:i,marginUsed:h,unrealizedPnl:this.calculateTotalUnrealizedPnlFromSyncResults(n),lastSyncAt:new Date().toISOString(),longAssets:s.map(g=>this.mapAssetToDetailDto(g,l.get(`${g.coin}-LONG`))),shortAssets:c.map(g=>this.mapAssetToDetailDto(g,l.get(`${g.coin}-SHORT`))),createdAt:e.createdAt,updatedAt:e.updatedAt}}mapAssetToDetailDto(e,n){const a=this.getMarketPrice(e.coin),o=n?.actualSize||Number(e.size||0),r=o*a,s=Number(e.size||0)*Number(e.entryPrice||0);return{coin:e.coin,entryPrice:Number(e.entryPrice||0),platformSize:Number(e.size||0),actualSize:o,isExternallyModified:n?.isExternallyModified||!1,cumFunding:n?.cumFunding||{allTime:0,sinceChange:0,sinceOpen:0},marginUsed:s,positionValue:r,unrealizedPnl:n?.unrealizedPnl||0,liquidationPrice:n?.liquidationPrice||0}}calculateEntryRatio(e){var n,a;const o=e.filter(l=>l.asset.side===re.LONG),r=e.filter(l=>l.asset.side===re.SHORT);if(o.length===0||r.length===0)return 0;const s=!((n=o[0])===null||n===void 0)&&n.asset.entryPrice?Number(o[0].asset.entryPrice):0,c=!((a=r[0])===null||a===void 0)&&a.asset.entryPrice?Number(r[0].asset.entryPrice):0;return c>0?s/c:0}calculateMarkRatio(e){var n,a;const o=e.filter(l=>l.asset.side===re.LONG),r=e.filter(l=>l.asset.side===re.SHORT);if(o.length===0||r.length===0)return 0;const s=!((n=o[0])===null||n===void 0)&&n.asset.coin?this.getMarketPrice(o[0].asset.coin):0,c=!((a=r[0])===null||a===void 0)&&a.asset.coin?this.getMarketPrice(r[0].asset.coin):0;return c>0?s/c:0}calculateNetFundingFromSyncResults(e){return e.reduce((a,o)=>{const r=o.cumFunding.sinceOpen;return a+r},0)}calculateTotalUnrealizedPnlFromSyncResults(e){return e.reduce((n,a)=>n+a.unrealizedPnl,0)}calculateCurrentTotalPositionValue(e){return e.reduce((n,a)=>{const o=this.getMarketPrice(a.asset.coin);return n+a.actualSize*o},0)}calculateEntryTotalPositionValue(e){return e.reduce((n,a)=>n+Number(a.asset.size||0)*Number(a.asset.entryPrice||0),0)}}const Ke=d((t,e,n)=>W(()=>!t||!e||!n?null:new rn(e,n).execute(t),[t,e,n]),"useCalculatedOpenPositions");class Xe{static{d(this,"AccountSummaryCalculator")}constructor(e){this.webData2=e}calculateAccountSummary(e,n,a,o){var r,s,c,l,i,u,h,g,f,S,A;if(!(!((r=this.webData2)===null||r===void 0)&&r.clearinghouseState))return e;const E=this.webData2.clearinghouseState,m=this.calculateTotalLimitOrderValue(n||[]),k=parseFloat(E.withdrawable||"0"),w=Math.max(0,k-m);return{balanceSummary:{crossMaintenanceMarginUsed:E.crossMaintenanceMarginUsed||"0",crossMarginSummary:{accountValue:((s=E.crossMarginSummary)===null||s===void 0?void 0:s.accountValue)||"0",totalMarginUsed:((c=E.crossMarginSummary)===null||c===void 0?void 0:c.totalMarginUsed)||"0",totalNtlPos:((l=E.crossMarginSummary)===null||l===void 0?void 0:l.totalNtlPos)||"0",totalRawUsd:((i=E.crossMarginSummary)===null||i===void 0?void 0:i.totalRawUsd)||"0"},marginSummary:{accountValue:((u=E.marginSummary)===null||u===void 0?void 0:u.accountValue)||"0",totalMarginUsed:((h=E.marginSummary)===null||h===void 0?void 0:h.totalMarginUsed)||"0",totalNtlPos:((g=E.marginSummary)===null||g===void 0?void 0:g.totalNtlPos)||"0",totalRawUsd:((f=E.marginSummary)===null||f===void 0?void 0:f.totalRawUsd)||"0"},time:E.time||Date.now(),withdrawable:w.toString()},agentWallet:{address:a||((S=e?.agentWallet)===null||S===void 0?void 0:S.address)||"",status:o||((A=e?.agentWallet)===null||A===void 0?void 0:A.status)||"UNKNOWN"}}}calculateTotalLimitOrderValue(e){return e?.length?e.filter(a=>a.status==="OPEN"||a.status==="PROCESSING").reduce((a,o)=>a+o.usdValue,0):0}getClearinghouseState(){var e;return((e=this.webData2)===null||e===void 0?void 0:e.clearinghouseState)||null}hasRealTimeData(){var e;return!!(!((e=this.webData2)===null||e===void 0)&&e.clearinghouseState)}}const Qe=d((t,e,n,a,o)=>W(()=>t?n?.clearinghouseState?new Xe(n).calculateAccountSummary(t,e,a,o):t:null,[t,e,n,a,o]),"useCalculatedAccountSummary"),on=d(()=>{const t=Z(X);if(!t)throw new Error("useTradeHistories must be used within a PearHyperliquidProvider");const e=W(()=>t.data.tradeHistories===null&&t.isConnected,[t.data.tradeHistories,t.isConnected]);return{data:t.data.tradeHistories,isLoading:e}},"useTradeHistories"),an=d(()=>{const t=Z(X);if(!t)throw new Error("useOpenPositions must be used within a PearHyperliquidProvider");const e=Ke(t.data.openPositions,t.webData2,t.allMids),n=W(()=>t.isConnected&&(t.data.openPositions===null||!t.webData2||!t.allMids),[t.data.openPositions,t.webData2,t.allMids,t.isConnected]);return{data:e,isLoading:n}},"useOpenPositions"),sn=d(()=>{const t=Z(X);if(!t)throw new Error("useOpenOrders must be used within a PearHyperliquidProvider");const e=W(()=>t.data.openOrders===null&&t.isConnected,[t.data.openOrders,t.isConnected]);return{data:t.data.openOrders,isLoading:e}},"useOpenOrders"),cn=d(()=>{var t,e,n,a;const o=Z(X);if(!o)throw new Error("useAccountSummary must be used within a PearHyperliquidProvider");const r=Qe(o.data.accountSummary,o.data.openOrders,o.webData2,(e=(t=o.data.accountSummary)===null||t===void 0?void 0:t.agentWallet)===null||e===void 0?void 0:e.address,(a=(n=o.data.accountSummary)===null||n===void 0?void 0:n.agentWallet)===null||a===void 0?void 0:a.status),s=W(()=>o.data.accountSummary===null&&o.isConnected,[o.data.accountSummary,o.isConnected]);return{data:r,isLoading:s}},"useAccountSummary");class Ue{static{d(this,"TokenMetadataExtractor")}static extractTokenMetadata(e,n,a,o){if(!n||!a)return null;const r=n.meta.universe.findIndex(O=>O.name===e);if(r===-1)return null;const s=n.meta.universe[r],c=n.assetCtxs[r];if(!c)return null;const l=a.mids[e],i=l?parseFloat(l):0,u=parseFloat(c.prevDayPx),h=i-u,g=u!==0?h/u*100:0,f=parseFloat(c.funding)*100,S=parseFloat(c.markPx),A=parseFloat(c.oraclePx),E=o?.[e],m=E?.leverage,k=E?.maxTradeSzs,w=E?.availableToTrade;return{currentPrice:i,prevDayPrice:u,priceChange24h:h,priceChange24hPercent:g,netFunding:f,maxLeverage:s.maxLeverage,markPrice:S,oraclePrice:A,openInterest:c.openInterest,dayVolume:c.dayNtlVlm,leverage:m,maxTradeSzs:k,availableToTrade:w}}static extractMultipleTokensMetadata(e,n,a,o){const r={};for(const s of e)r[s]=this.extractTokenMetadata(s,n,a,o);return r}static isTokenAvailable(e,n){return n?n.meta.universe.some(a=>a.name===e):!1}}const un=d(()=>{var t;const e=Z(X);if(!e)throw new Error("useTokenSelection must be used within PearHyperliquidProvider");const{webData2:n,allMids:a,activeAssetData:o,tokenSelection:r,setTokenSelection:s}=e,c=W(()=>!!(n&&a),[n,a]),l=W(()=>{if(!c)return!0;const T=[...r.longTokens,...r.shortTokens];return T.length===0?!1:T.some(y=>!y.metadata)},[c,r.longTokens,r.shortTokens]);se(()=>{if(!n||!a)return;const T=[...r.longTokens,...r.shortTokens].map(b=>b.symbol);if(T.length===0)return;const y=Ue.extractMultipleTokensMetadata(T,n,a,o);s(b=>({...b,longTokens:b.longTokens.map(_=>({..._,metadata:y[_.symbol]||void 0})),shortTokens:b.shortTokens.map(_=>({..._,metadata:y[_.symbol]||void 0}))}))},[n,a,o,s]);const i=W(()=>{let T=1,y=1;return r.longTokens.forEach(b=>{var _;if(!((_=b.metadata)===null||_===void 0)&&_.currentPrice&&b.weight>0){const P=b.weight/100;T*=Math.pow(b.metadata.currentPrice,P)}}),r.shortTokens.forEach(b=>{var _;if(!((_=b.metadata)===null||_===void 0)&&_.currentPrice&&b.weight>0){const P=b.weight/100;y*=Math.pow(b.metadata.currentPrice,-P)}}),T*y},[r.longTokens,r.shortTokens]),u=W(()=>{let T=1,y=1;return r.longTokens.forEach(b=>{var _;if(!((_=b.metadata)===null||_===void 0)&&_.prevDayPrice&&b.weight>0){const P=b.weight/100;T*=Math.pow(b.metadata.prevDayPrice,P)}}),r.shortTokens.forEach(b=>{var _;if(!((_=b.metadata)===null||_===void 0)&&_.prevDayPrice&&b.weight>0){const P=b.weight/100;y*=Math.pow(b.metadata.prevDayPrice,-P)}}),T*y},[r.longTokens,r.shortTokens]),h=W(()=>{let T=0;return r.longTokens.forEach(y=>{var b;if(!((b=y.metadata)===null||b===void 0)&&b.netFunding&&y.weight>0){const _=y.weight/100;T+=y.metadata.netFunding*_}}),r.shortTokens.forEach(y=>{var b;if(!((b=y.metadata)===null||b===void 0)&&b.netFunding&&y.weight>0){const _=y.weight/100;T-=y.metadata.netFunding*_}}),T*100},[r.longTokens,r.shortTokens]),g=W(()=>{var T;if(!(!((T=n?.meta)===null||T===void 0)&&T.universe))return 0;const y=[...r.longTokens,...r.shortTokens].map(_=>_.symbol);if(y.length===0)return 0;let b=1/0;return y.forEach(_=>{const P=n.meta.universe.find(M=>M.name===_);P?.maxLeverage&&(b=Math.min(b,P.maxLeverage))}),b===1/0?0:b},[(t=n?.meta)===null||t===void 0?void 0:t.universe,r.longTokens,r.shortTokens]),f=W(()=>10*(r.longTokens.length+r.shortTokens.length),[r.longTokens.length,r.shortTokens.length]),S=W(()=>{const T=[...r.longTokens,...r.shortTokens];if(T.length===0)return!0;const y=T.filter(_=>{var P;return(P=_.metadata)===null||P===void 0?void 0:P.leverage});if(y.length===0||y.length<T.length)return!1;const b=y[0].metadata.leverage;return y.every(_=>_.metadata.leverage.type===b.type&&_.metadata.leverage.value===b.value)},[r.longTokens,r.shortTokens]),A=q(T=>{s(y=>({...y,longTokens:T}))},[s]),E=q(T=>{s(y=>({...y,shortTokens:T}))},[s]),m=q((T,y,b)=>{const _=Math.max(1,Math.min(100,b));s(P=>{var M,D;const z=P.longTokens.reduce(($,v)=>$+v.weight,0),Q=P.shortTokens.reduce(($,v)=>$+v.weight,0);if(T){const $=((M=P.longTokens[y])===null||M===void 0?void 0:M.weight)||0,v=_-$;if(z+v+Q>100){const C=Math.max(1,100-Q-(z-$)),R=[...P.longTokens];return R[y]={...R[y],weight:C},{...P,longTokens:R}}else{const C=[...P.longTokens];return C[y]={...C[y],weight:_},{...P,longTokens:C}}}else{const $=((D=P.shortTokens[y])===null||D===void 0?void 0:D.weight)||0,v=_-$,p=Q+v;if(z+p>100){const C=Math.max(1,100-z-(Q-$)),R=[...P.shortTokens];return R[y]={...R[y],weight:C},{...P,shortTokens:R}}else{const C=[...P.shortTokens];return C[y]={...C[y],weight:_},{...P,shortTokens:C}}}})},[s]),k=q(T=>{const b=(T?r.longTokens:r.shortTokens).length;s(_=>({..._,selectorConfig:{isLong:T,index:b},openTokenSelector:!0}))},[r.longTokens,r.shortTokens,s]),w=q((T,y)=>{s(b=>{if(T){const _=b.longTokens.filter((P,M)=>M!==y);return{...b,longTokens:_}}else{const _=b.shortTokens.filter((P,M)=>M!==y);return{...b,shortTokens:_}}})},[s]),O=q(T=>{s(y=>({...y,openTokenSelector:T}))},[s]),I=q(T=>{s(y=>({...y,selectorConfig:T}))},[s]),j=q(T=>{s(y=>({...y,openConflictModal:T}))},[s]),N=q(T=>{s(y=>({...y,conflicts:T}))},[s]),U=q(()=>{s(T=>({...T,longTokens:[{symbol:"HYPE",weight:25},{symbol:"BTC",weight:25}],shortTokens:[{symbol:"AVAX",weight:10},{symbol:"SEI",weight:10},{symbol:"ADA",weight:10},{symbol:"TRUMP",weight:10},{symbol:"SUI",weight:10}],openTokenSelector:!1,selectorConfig:null,openConflictModal:!1,leverageMatched:!1}))},[s]),J=q(T=>{if(!r.selectorConfig)return;const{isLong:y,index:b}=r.selectorConfig,_=y?r.longTokens:r.shortTokens;if(_.some(M=>M.symbol===T))return;const P=Ue.extractTokenMetadata(T,n,a,o);s(M=>{if(b>=_.length){const D=M.longTokens.reduce((C,R)=>C+R.weight,0),z=M.shortTokens.reduce((C,R)=>C+R.weight,0),Q=D+z,$=Math.max(1,100-Q),v=Math.min(20,$),p={symbol:T,weight:v,metadata:P||void 0};return y?{...M,longTokens:[...M.longTokens,p]}:{...M,shortTokens:[...M.shortTokens,p]}}else if(y){const D=[...M.longTokens];return D[b]={...D[b],symbol:T,metadata:P||void 0},{...M,longTokens:D}}else{const D=[...M.shortTokens];return D[b]={...D[b],symbol:T,metadata:P||void 0},{...M,shortTokens:D}}})},[r.selectorConfig,r.longTokens,r.shortTokens,n,a,o,s]);return{longTokens:r.longTokens,shortTokens:r.shortTokens,openTokenSelector:r.openTokenSelector,selectorConfig:r.selectorConfig,openConflictModal:r.openConflictModal,conflicts:r.conflicts,isLoading:l,isPriceDataReady:c,weightedRatio:i,weightedRatio24h:u,sumNetFunding:h,maxLeverage:g,minMargin:f,leverageMatched:S,setLongTokens:A,setShortTokens:E,updateTokenWeight:m,addToken:k,removeToken:w,handleTokenSelect:J,setOpenTokenSelector:O,setSelectorConfig:I,setOpenConflictModal:j,setConflicts:N,resetToDefaults:U}},"useTokenSelection"),ln=d(()=>{const t=Z(X);if(!t)throw new Error("useWebData2 must be used within a PearHyperliquidProvider");return{webData2:t.webData2,allMids:t.allMids,isConnected:t.nativeIsConnected,connectionStatus:t.nativeConnectionStatus,error:t.nativeLastError}},"useWebData2");class dn{static{d(this,"ConflictDetector")}static detectConflicts(e,n,a){const o=[];return a&&(e.forEach(r=>{a.find(c=>{var l;const i=c.coin||c.symbol||c.asset,u=(l=c.side)===null||l===void 0?void 0:l.toLowerCase();return i===r.symbol&&(u==="short"||u==="sell")})&&o.push({symbol:r.symbol,conflictType:"short",conflictMessage:`${r.symbol} Long conflicts with existing ${r.symbol} Short position`})}),n.forEach(r=>{a.find(c=>{var l;const i=c.coin||c.symbol||c.asset,u=(l=c.side)===null||l===void 0?void 0:l.toLowerCase();return i===r.symbol&&(u==="long"||u==="buy")})&&o.push({symbol:r.symbol,conflictType:"long",conflictMessage:`${r.symbol} Short conflicts with existing ${r.symbol} Long position`})})),o}}export{Xe as AccountSummaryCalculator,dn as ConflictDetector,Me as PearHyperliquidClient,Zt as PearHyperliquidProvider,je as PearMigrationSDK,Ue as TokenMetadataExtractor,Me as default,cn as useAccountSummary,nn as useAddress,Qe as useCalculatedAccountSummary,Ke as useCalculatedOpenPositions,Be as useHyperliquidNativeWebSocket,Ye as useHyperliquidWebSocket,tn as useMigrationSDK,sn as useOpenOrders,an as useOpenPositions,en as usePearHyperliquidClient,un as useTokenSelection,on as useTradeHistories,ln as useWebData2};
@@ -3,7 +3,7 @@ import { ReadyState } from 'react-use-websocket';
3
3
  import { PearHyperliquidClient } from './client';
4
4
  import { PearHyperliquidConfig } from './types';
5
5
  import { PearMigrationSDK } from './migration-sdk';
6
- import type { RawPositionDto, OpenLimitOrderDto, AccountSummaryResponseDto, WebData2Response, WsAllMidsData, TradeHistoryDataDto, TokenSelection, TokenConflict } from './types';
6
+ import type { RawPositionDto, OpenLimitOrderDto, AccountSummaryResponseDto, WebData2Response, WsAllMidsData, TradeHistoryDataDto, TokenSelection, TokenConflict, ActiveAssetData } from './types';
7
7
  interface WebSocketData {
8
8
  tradeHistories: TradeHistoryDataDto[] | null;
9
9
  openPositions: RawPositionDto[] | null;
@@ -21,6 +21,7 @@ interface TokenSelectionState {
21
21
  selectorConfig: TokenSelectorConfig | null;
22
22
  openConflictModal: boolean;
23
23
  conflicts: TokenConflict[];
24
+ leverageMatched: boolean;
24
25
  }
25
26
  export interface PearHyperliquidContextType {
26
27
  client: PearHyperliquidClient;
@@ -36,6 +37,7 @@ export interface PearHyperliquidContextType {
36
37
  nativeLastError: string | null;
37
38
  webData2: WebData2Response | null;
38
39
  allMids: WsAllMidsData | null;
40
+ activeAssetData: Record<string, ActiveAssetData> | null;
39
41
  tokenSelection: TokenSelectionState;
40
42
  setTokenSelection: React.Dispatch<React.SetStateAction<TokenSelectionState>>;
41
43
  }
package/dist/types.d.ts CHANGED
@@ -212,7 +212,7 @@ export type WebSocketConnectionState = 'connecting' | 'connected' | 'disconnecte
212
212
  /**
213
213
  * WebSocket channels
214
214
  */
215
- export type WebSocketChannel = 'trade-histories' | 'open-positions' | 'open-orders' | 'account-summary' | 'webData2' | 'allMids';
215
+ export type WebSocketChannel = 'trade-histories' | 'open-positions' | 'open-orders' | 'account-summary' | 'webData2' | 'allMids' | 'activeAssetData';
216
216
  /**
217
217
  * WebSocket subscription message
218
218
  */
@@ -548,6 +548,24 @@ export interface RawPositionDto {
548
548
  longAssets: RawAssetDto[];
549
549
  shortAssets: RawAssetDto[];
550
550
  }
551
+ /**
552
+ * Leverage information from activeAssetData
553
+ */
554
+ export interface LeverageInfo {
555
+ type: string;
556
+ value: number;
557
+ }
558
+ /**
559
+ * Active asset data from WebSocket
560
+ */
561
+ export interface ActiveAssetData {
562
+ user: string;
563
+ coin: string;
564
+ leverage: LeverageInfo;
565
+ maxTradeSzs: [string, string];
566
+ availableToTrade: [string, string];
567
+ markPx: string;
568
+ }
551
569
  /**
552
570
  * Token metadata from WebData2 and AllMids
553
571
  */
@@ -562,6 +580,9 @@ export interface TokenMetadata {
562
580
  oraclePrice: number;
563
581
  openInterest: string;
564
582
  dayVolume: string;
583
+ leverage?: LeverageInfo;
584
+ maxTradeSzs?: [string, string];
585
+ availableToTrade?: [string, string];
565
586
  }
566
587
  /**
567
588
  * Enhanced token selection with weight and metadata for basket trading
@@ -1,4 +1,4 @@
1
- import type { WebData2Response, WsAllMidsData, TokenMetadata } from '../types';
1
+ import type { WebData2Response, WsAllMidsData, TokenMetadata, ActiveAssetData } from '../types';
2
2
  /**
3
3
  * Extracts token metadata from WebData2 and AllMids data
4
4
  */
@@ -8,17 +8,19 @@ export declare class TokenMetadataExtractor {
8
8
  * @param symbol - Token symbol
9
9
  * @param webData2 - WebData2 response containing asset context and universe data
10
10
  * @param allMids - AllMids data containing current prices
11
+ * @param activeAssetData - Optional active asset data containing leverage information
11
12
  * @returns TokenMetadata or null if token not found
12
13
  */
13
- static extractTokenMetadata(symbol: string, webData2: WebData2Response | null, allMids: WsAllMidsData | null): TokenMetadata | null;
14
+ static extractTokenMetadata(symbol: string, webData2: WebData2Response | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null): TokenMetadata | null;
14
15
  /**
15
16
  * Extracts metadata for multiple tokens
16
17
  * @param symbols - Array of token symbols
17
18
  * @param webData2 - WebData2 response
18
19
  * @param allMids - AllMids data
20
+ * @param activeAssetData - Optional active asset data containing leverage information
19
21
  * @returns Record of symbol to TokenMetadata
20
22
  */
21
- static extractMultipleTokensMetadata(symbols: string[], webData2: WebData2Response | null, allMids: WsAllMidsData | null): Record<string, TokenMetadata | null>;
23
+ static extractMultipleTokensMetadata(symbols: string[], webData2: WebData2Response | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null): Record<string, TokenMetadata | null>;
22
24
  /**
23
25
  * Checks if token data is available in WebData2
24
26
  * @param symbol - Token symbol
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/hyperliquid-sdk",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "React SDK for Pear Protocol Hyperliquid API integration",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -15,12 +15,12 @@
15
15
  "clean": "rimraf dist"
16
16
  },
17
17
  "dependencies": {
18
- "axios": "^1.6.0"
18
+ "react-use-websocket": "^4.8.1"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "react": ">=16.8.0",
22
22
  "react-dom": ">=16.8.0",
23
- "react-use-websocket": "^4.8.1"
23
+ "axios": "^1.6.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@rollup/plugin-commonjs": "^25.0.0",